JacobLinCool commited on
Commit
2368e93
·
verified ·
1 Parent(s): 0fbfe42

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +464 -0
  2. diff2flow.py +400 -0
  3. generate_reflow_pairs.py +161 -0
  4. results/diff2flow_full_image/0_rain_flow.png +3 -0
  5. results/diff2flow_full_image/0_rain_input.png +3 -0
  6. results/diff2flow_full_image/10_rain_flow.png +3 -0
  7. results/diff2flow_full_image/10_rain_input.png +3 -0
  8. results/diff2flow_full_image/11_rain_flow.png +3 -0
  9. results/diff2flow_full_image/11_rain_input.png +3 -0
  10. results/diff2flow_full_image/12_rain_flow.png +3 -0
  11. results/diff2flow_full_image/12_rain_input.png +3 -0
  12. results/diff2flow_full_image/13_rain_flow.png +3 -0
  13. results/diff2flow_full_image/13_rain_input.png +3 -0
  14. results/diff2flow_full_image/14_rain_flow.png +3 -0
  15. results/diff2flow_full_image/14_rain_input.png +3 -0
  16. results/diff2flow_full_image/15_rain_flow.png +3 -0
  17. results/diff2flow_full_image/15_rain_input.png +3 -0
  18. results/diff2flow_full_image/16_rain_flow.png +3 -0
  19. results/diff2flow_full_image/16_rain_input.png +3 -0
  20. results/diff2flow_full_image/17_rain_flow.png +3 -0
  21. results/diff2flow_full_image/17_rain_input.png +3 -0
  22. results/diff2flow_full_image/18_rain_flow.png +3 -0
  23. results/diff2flow_full_image/18_rain_input.png +3 -0
  24. results/diff2flow_full_image/19_rain_flow.png +3 -0
  25. results/diff2flow_full_image/19_rain_input.png +3 -0
  26. results/diff2flow_full_image/1_rain_flow.png +3 -0
  27. results/diff2flow_full_image/1_rain_input.png +3 -0
  28. results/diff2flow_full_image/20_rain_flow.png +3 -0
  29. results/diff2flow_full_image/20_rain_input.png +3 -0
  30. results/diff2flow_full_image/21_rain_flow.png +3 -0
  31. results/diff2flow_full_image/21_rain_input.png +3 -0
  32. results/diff2flow_full_image/22_rain_flow.png +3 -0
  33. results/diff2flow_full_image/22_rain_input.png +3 -0
  34. results/diff2flow_full_image/23_rain_flow.png +3 -0
  35. results/diff2flow_full_image/23_rain_input.png +3 -0
  36. results/diff2flow_full_image/24_rain_flow.png +3 -0
  37. results/diff2flow_full_image/24_rain_input.png +3 -0
  38. results/diff2flow_full_image/25_rain_flow.png +3 -0
  39. results/diff2flow_full_image/25_rain_input.png +3 -0
  40. results/diff2flow_full_image/26_rain_flow.png +3 -0
  41. results/diff2flow_full_image/26_rain_input.png +3 -0
  42. results/diff2flow_full_image/27_rain_flow.png +3 -0
  43. results/diff2flow_full_image/27_rain_input.png +3 -0
  44. results/diff2flow_full_image/28_rain_flow.png +3 -0
  45. results/diff2flow_full_image/28_rain_input.png +3 -0
  46. results/diff2flow_full_image/29_rain_flow.png +3 -0
  47. results/diff2flow_full_image/29_rain_input.png +3 -0
  48. results/diff2flow_full_image/2_rain_flow.png +3 -0
  49. results/diff2flow_full_image/2_rain_input.png +3 -0
  50. results/diff2flow_full_image/30_rain_flow.png +3 -0
.gitattributes CHANGED
@@ -33,3 +33,467 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ results/diff2flow_full_image/0_rain_flow.png filter=lfs diff=lfs merge=lfs -text
37
+ results/diff2flow_full_image/0_rain_input.png filter=lfs diff=lfs merge=lfs -text
38
+ results/diff2flow_full_image/10_rain_flow.png filter=lfs diff=lfs merge=lfs -text
39
+ results/diff2flow_full_image/10_rain_input.png filter=lfs diff=lfs merge=lfs -text
40
+ results/diff2flow_full_image/11_rain_flow.png filter=lfs diff=lfs merge=lfs -text
41
+ results/diff2flow_full_image/11_rain_input.png filter=lfs diff=lfs merge=lfs -text
42
+ results/diff2flow_full_image/12_rain_flow.png filter=lfs diff=lfs merge=lfs -text
43
+ results/diff2flow_full_image/12_rain_input.png filter=lfs diff=lfs merge=lfs -text
44
+ results/diff2flow_full_image/13_rain_flow.png filter=lfs diff=lfs merge=lfs -text
45
+ results/diff2flow_full_image/13_rain_input.png filter=lfs diff=lfs merge=lfs -text
46
+ results/diff2flow_full_image/14_rain_flow.png filter=lfs diff=lfs merge=lfs -text
47
+ results/diff2flow_full_image/14_rain_input.png filter=lfs diff=lfs merge=lfs -text
48
+ results/diff2flow_full_image/15_rain_flow.png filter=lfs diff=lfs merge=lfs -text
49
+ results/diff2flow_full_image/15_rain_input.png filter=lfs diff=lfs merge=lfs -text
50
+ results/diff2flow_full_image/16_rain_flow.png filter=lfs diff=lfs merge=lfs -text
51
+ results/diff2flow_full_image/16_rain_input.png filter=lfs diff=lfs merge=lfs -text
52
+ results/diff2flow_full_image/17_rain_flow.png filter=lfs diff=lfs merge=lfs -text
53
+ results/diff2flow_full_image/17_rain_input.png filter=lfs diff=lfs merge=lfs -text
54
+ results/diff2flow_full_image/18_rain_flow.png filter=lfs diff=lfs merge=lfs -text
55
+ results/diff2flow_full_image/18_rain_input.png filter=lfs diff=lfs merge=lfs -text
56
+ results/diff2flow_full_image/19_rain_flow.png filter=lfs diff=lfs merge=lfs -text
57
+ results/diff2flow_full_image/19_rain_input.png filter=lfs diff=lfs merge=lfs -text
58
+ results/diff2flow_full_image/1_rain_flow.png filter=lfs diff=lfs merge=lfs -text
59
+ results/diff2flow_full_image/1_rain_input.png filter=lfs diff=lfs merge=lfs -text
60
+ results/diff2flow_full_image/20_rain_flow.png filter=lfs diff=lfs merge=lfs -text
61
+ results/diff2flow_full_image/20_rain_input.png filter=lfs diff=lfs merge=lfs -text
62
+ results/diff2flow_full_image/21_rain_flow.png filter=lfs diff=lfs merge=lfs -text
63
+ results/diff2flow_full_image/21_rain_input.png filter=lfs diff=lfs merge=lfs -text
64
+ results/diff2flow_full_image/22_rain_flow.png filter=lfs diff=lfs merge=lfs -text
65
+ results/diff2flow_full_image/22_rain_input.png filter=lfs diff=lfs merge=lfs -text
66
+ results/diff2flow_full_image/23_rain_flow.png filter=lfs diff=lfs merge=lfs -text
67
+ results/diff2flow_full_image/23_rain_input.png filter=lfs diff=lfs merge=lfs -text
68
+ results/diff2flow_full_image/24_rain_flow.png filter=lfs diff=lfs merge=lfs -text
69
+ results/diff2flow_full_image/24_rain_input.png filter=lfs diff=lfs merge=lfs -text
70
+ results/diff2flow_full_image/25_rain_flow.png filter=lfs diff=lfs merge=lfs -text
71
+ results/diff2flow_full_image/25_rain_input.png filter=lfs diff=lfs merge=lfs -text
72
+ results/diff2flow_full_image/26_rain_flow.png filter=lfs diff=lfs merge=lfs -text
73
+ results/diff2flow_full_image/26_rain_input.png filter=lfs diff=lfs merge=lfs -text
74
+ results/diff2flow_full_image/27_rain_flow.png filter=lfs diff=lfs merge=lfs -text
75
+ results/diff2flow_full_image/27_rain_input.png filter=lfs diff=lfs merge=lfs -text
76
+ results/diff2flow_full_image/28_rain_flow.png filter=lfs diff=lfs merge=lfs -text
77
+ results/diff2flow_full_image/28_rain_input.png filter=lfs diff=lfs merge=lfs -text
78
+ results/diff2flow_full_image/29_rain_flow.png filter=lfs diff=lfs merge=lfs -text
79
+ results/diff2flow_full_image/29_rain_input.png filter=lfs diff=lfs merge=lfs -text
80
+ results/diff2flow_full_image/2_rain_flow.png filter=lfs diff=lfs merge=lfs -text
81
+ results/diff2flow_full_image/2_rain_input.png filter=lfs diff=lfs merge=lfs -text
82
+ results/diff2flow_full_image/30_rain_flow.png filter=lfs diff=lfs merge=lfs -text
83
+ results/diff2flow_full_image/30_rain_input.png filter=lfs diff=lfs merge=lfs -text
84
+ results/diff2flow_full_image/31_rain_flow.png filter=lfs diff=lfs merge=lfs -text
85
+ results/diff2flow_full_image/31_rain_input.png filter=lfs diff=lfs merge=lfs -text
86
+ results/diff2flow_full_image/32_rain_flow.png filter=lfs diff=lfs merge=lfs -text
87
+ results/diff2flow_full_image/32_rain_input.png filter=lfs diff=lfs merge=lfs -text
88
+ results/diff2flow_full_image/33_rain_flow.png filter=lfs diff=lfs merge=lfs -text
89
+ results/diff2flow_full_image/33_rain_input.png filter=lfs diff=lfs merge=lfs -text
90
+ results/diff2flow_full_image/34_rain_flow.png filter=lfs diff=lfs merge=lfs -text
91
+ results/diff2flow_full_image/34_rain_input.png filter=lfs diff=lfs merge=lfs -text
92
+ results/diff2flow_full_image/35_rain_flow.png filter=lfs diff=lfs merge=lfs -text
93
+ results/diff2flow_full_image/35_rain_input.png filter=lfs diff=lfs merge=lfs -text
94
+ results/diff2flow_full_image/36_rain_flow.png filter=lfs diff=lfs merge=lfs -text
95
+ results/diff2flow_full_image/36_rain_input.png filter=lfs diff=lfs merge=lfs -text
96
+ results/diff2flow_full_image/37_rain_flow.png filter=lfs diff=lfs merge=lfs -text
97
+ results/diff2flow_full_image/37_rain_input.png filter=lfs diff=lfs merge=lfs -text
98
+ results/diff2flow_full_image/38_rain_flow.png filter=lfs diff=lfs merge=lfs -text
99
+ results/diff2flow_full_image/38_rain_input.png filter=lfs diff=lfs merge=lfs -text
100
+ results/diff2flow_full_image/39_rain_flow.png filter=lfs diff=lfs merge=lfs -text
101
+ results/diff2flow_full_image/39_rain_input.png filter=lfs diff=lfs merge=lfs -text
102
+ results/diff2flow_full_image/3_rain_flow.png filter=lfs diff=lfs merge=lfs -text
103
+ results/diff2flow_full_image/3_rain_input.png filter=lfs diff=lfs merge=lfs -text
104
+ results/diff2flow_full_image/40_rain_flow.png filter=lfs diff=lfs merge=lfs -text
105
+ results/diff2flow_full_image/40_rain_input.png filter=lfs diff=lfs merge=lfs -text
106
+ results/diff2flow_full_image/41_rain_flow.png filter=lfs diff=lfs merge=lfs -text
107
+ results/diff2flow_full_image/41_rain_input.png filter=lfs diff=lfs merge=lfs -text
108
+ results/diff2flow_full_image/42_rain_flow.png filter=lfs diff=lfs merge=lfs -text
109
+ results/diff2flow_full_image/42_rain_input.png filter=lfs diff=lfs merge=lfs -text
110
+ results/diff2flow_full_image/43_rain_flow.png filter=lfs diff=lfs merge=lfs -text
111
+ results/diff2flow_full_image/43_rain_input.png filter=lfs diff=lfs merge=lfs -text
112
+ results/diff2flow_full_image/44_rain_flow.png filter=lfs diff=lfs merge=lfs -text
113
+ results/diff2flow_full_image/44_rain_input.png filter=lfs diff=lfs merge=lfs -text
114
+ results/diff2flow_full_image/45_rain_flow.png filter=lfs diff=lfs merge=lfs -text
115
+ results/diff2flow_full_image/45_rain_input.png filter=lfs diff=lfs merge=lfs -text
116
+ results/diff2flow_full_image/46_rain_flow.png filter=lfs diff=lfs merge=lfs -text
117
+ results/diff2flow_full_image/46_rain_input.png filter=lfs diff=lfs merge=lfs -text
118
+ results/diff2flow_full_image/47_rain_flow.png filter=lfs diff=lfs merge=lfs -text
119
+ results/diff2flow_full_image/47_rain_input.png filter=lfs diff=lfs merge=lfs -text
120
+ results/diff2flow_full_image/48_rain_flow.png filter=lfs diff=lfs merge=lfs -text
121
+ results/diff2flow_full_image/48_rain_input.png filter=lfs diff=lfs merge=lfs -text
122
+ results/diff2flow_full_image/49_rain_flow.png filter=lfs diff=lfs merge=lfs -text
123
+ results/diff2flow_full_image/49_rain_input.png filter=lfs diff=lfs merge=lfs -text
124
+ results/diff2flow_full_image/4_rain_flow.png filter=lfs diff=lfs merge=lfs -text
125
+ results/diff2flow_full_image/4_rain_input.png filter=lfs diff=lfs merge=lfs -text
126
+ results/diff2flow_full_image/50_rain_flow.png filter=lfs diff=lfs merge=lfs -text
127
+ results/diff2flow_full_image/50_rain_input.png filter=lfs diff=lfs merge=lfs -text
128
+ results/diff2flow_full_image/51_rain_flow.png filter=lfs diff=lfs merge=lfs -text
129
+ results/diff2flow_full_image/51_rain_input.png filter=lfs diff=lfs merge=lfs -text
130
+ results/diff2flow_full_image/52_rain_flow.png filter=lfs diff=lfs merge=lfs -text
131
+ results/diff2flow_full_image/52_rain_input.png filter=lfs diff=lfs merge=lfs -text
132
+ results/diff2flow_full_image/53_rain_flow.png filter=lfs diff=lfs merge=lfs -text
133
+ results/diff2flow_full_image/53_rain_input.png filter=lfs diff=lfs merge=lfs -text
134
+ results/diff2flow_full_image/54_rain_flow.png filter=lfs diff=lfs merge=lfs -text
135
+ results/diff2flow_full_image/54_rain_input.png filter=lfs diff=lfs merge=lfs -text
136
+ results/diff2flow_full_image/55_rain_flow.png filter=lfs diff=lfs merge=lfs -text
137
+ results/diff2flow_full_image/55_rain_input.png filter=lfs diff=lfs merge=lfs -text
138
+ results/diff2flow_full_image/56_rain_flow.png filter=lfs diff=lfs merge=lfs -text
139
+ results/diff2flow_full_image/56_rain_input.png filter=lfs diff=lfs merge=lfs -text
140
+ results/diff2flow_full_image/57_rain_flow.png filter=lfs diff=lfs merge=lfs -text
141
+ results/diff2flow_full_image/57_rain_input.png filter=lfs diff=lfs merge=lfs -text
142
+ results/diff2flow_full_image/5_rain_flow.png filter=lfs diff=lfs merge=lfs -text
143
+ results/diff2flow_full_image/5_rain_input.png filter=lfs diff=lfs merge=lfs -text
144
+ results/diff2flow_full_image/6_rain_flow.png filter=lfs diff=lfs merge=lfs -text
145
+ results/diff2flow_full_image/6_rain_input.png filter=lfs diff=lfs merge=lfs -text
146
+ results/diff2flow_full_image/7_rain_flow.png filter=lfs diff=lfs merge=lfs -text
147
+ results/diff2flow_full_image/7_rain_input.png filter=lfs diff=lfs merge=lfs -text
148
+ results/diff2flow_full_image/8_rain_flow.png filter=lfs diff=lfs merge=lfs -text
149
+ results/diff2flow_full_image/8_rain_input.png filter=lfs diff=lfs merge=lfs -text
150
+ results/diff2flow_full_image/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text
151
+ results/diff2flow_full_image/9_rain_input.png filter=lfs diff=lfs merge=lfs -text
152
+ results/reflow_ep99_eval_1step/0_rain_flow.png filter=lfs diff=lfs merge=lfs -text
153
+ results/reflow_ep99_eval_1step/0_rain_input.png filter=lfs diff=lfs merge=lfs -text
154
+ results/reflow_ep99_eval_1step/10_rain_flow.png filter=lfs diff=lfs merge=lfs -text
155
+ results/reflow_ep99_eval_1step/10_rain_input.png filter=lfs diff=lfs merge=lfs -text
156
+ results/reflow_ep99_eval_1step/11_rain_flow.png filter=lfs diff=lfs merge=lfs -text
157
+ results/reflow_ep99_eval_1step/11_rain_input.png filter=lfs diff=lfs merge=lfs -text
158
+ results/reflow_ep99_eval_1step/12_rain_flow.png filter=lfs diff=lfs merge=lfs -text
159
+ results/reflow_ep99_eval_1step/12_rain_input.png filter=lfs diff=lfs merge=lfs -text
160
+ results/reflow_ep99_eval_1step/13_rain_flow.png filter=lfs diff=lfs merge=lfs -text
161
+ results/reflow_ep99_eval_1step/13_rain_input.png filter=lfs diff=lfs merge=lfs -text
162
+ results/reflow_ep99_eval_1step/14_rain_flow.png filter=lfs diff=lfs merge=lfs -text
163
+ results/reflow_ep99_eval_1step/14_rain_input.png filter=lfs diff=lfs merge=lfs -text
164
+ results/reflow_ep99_eval_1step/15_rain_flow.png filter=lfs diff=lfs merge=lfs -text
165
+ results/reflow_ep99_eval_1step/15_rain_input.png filter=lfs diff=lfs merge=lfs -text
166
+ results/reflow_ep99_eval_1step/16_rain_flow.png filter=lfs diff=lfs merge=lfs -text
167
+ results/reflow_ep99_eval_1step/16_rain_input.png filter=lfs diff=lfs merge=lfs -text
168
+ results/reflow_ep99_eval_1step/17_rain_flow.png filter=lfs diff=lfs merge=lfs -text
169
+ results/reflow_ep99_eval_1step/17_rain_input.png filter=lfs diff=lfs merge=lfs -text
170
+ results/reflow_ep99_eval_1step/18_rain_flow.png filter=lfs diff=lfs merge=lfs -text
171
+ results/reflow_ep99_eval_1step/18_rain_input.png filter=lfs diff=lfs merge=lfs -text
172
+ results/reflow_ep99_eval_1step/19_rain_flow.png filter=lfs diff=lfs merge=lfs -text
173
+ results/reflow_ep99_eval_1step/19_rain_input.png filter=lfs diff=lfs merge=lfs -text
174
+ results/reflow_ep99_eval_1step/1_rain_flow.png filter=lfs diff=lfs merge=lfs -text
175
+ results/reflow_ep99_eval_1step/1_rain_input.png filter=lfs diff=lfs merge=lfs -text
176
+ results/reflow_ep99_eval_1step/20_rain_flow.png filter=lfs diff=lfs merge=lfs -text
177
+ results/reflow_ep99_eval_1step/20_rain_input.png filter=lfs diff=lfs merge=lfs -text
178
+ results/reflow_ep99_eval_1step/21_rain_flow.png filter=lfs diff=lfs merge=lfs -text
179
+ results/reflow_ep99_eval_1step/21_rain_input.png filter=lfs diff=lfs merge=lfs -text
180
+ results/reflow_ep99_eval_1step/22_rain_flow.png filter=lfs diff=lfs merge=lfs -text
181
+ results/reflow_ep99_eval_1step/22_rain_input.png filter=lfs diff=lfs merge=lfs -text
182
+ results/reflow_ep99_eval_1step/23_rain_flow.png filter=lfs diff=lfs merge=lfs -text
183
+ results/reflow_ep99_eval_1step/23_rain_input.png filter=lfs diff=lfs merge=lfs -text
184
+ results/reflow_ep99_eval_1step/24_rain_flow.png filter=lfs diff=lfs merge=lfs -text
185
+ results/reflow_ep99_eval_1step/24_rain_input.png filter=lfs diff=lfs merge=lfs -text
186
+ results/reflow_ep99_eval_1step/25_rain_flow.png filter=lfs diff=lfs merge=lfs -text
187
+ results/reflow_ep99_eval_1step/25_rain_input.png filter=lfs diff=lfs merge=lfs -text
188
+ results/reflow_ep99_eval_1step/26_rain_flow.png filter=lfs diff=lfs merge=lfs -text
189
+ results/reflow_ep99_eval_1step/26_rain_input.png filter=lfs diff=lfs merge=lfs -text
190
+ results/reflow_ep99_eval_1step/27_rain_flow.png filter=lfs diff=lfs merge=lfs -text
191
+ results/reflow_ep99_eval_1step/27_rain_input.png filter=lfs diff=lfs merge=lfs -text
192
+ results/reflow_ep99_eval_1step/28_rain_flow.png filter=lfs diff=lfs merge=lfs -text
193
+ results/reflow_ep99_eval_1step/28_rain_input.png filter=lfs diff=lfs merge=lfs -text
194
+ results/reflow_ep99_eval_1step/29_rain_flow.png filter=lfs diff=lfs merge=lfs -text
195
+ results/reflow_ep99_eval_1step/29_rain_input.png filter=lfs diff=lfs merge=lfs -text
196
+ results/reflow_ep99_eval_1step/2_rain_flow.png filter=lfs diff=lfs merge=lfs -text
197
+ results/reflow_ep99_eval_1step/2_rain_input.png filter=lfs diff=lfs merge=lfs -text
198
+ results/reflow_ep99_eval_1step/30_rain_flow.png filter=lfs diff=lfs merge=lfs -text
199
+ results/reflow_ep99_eval_1step/30_rain_input.png filter=lfs diff=lfs merge=lfs -text
200
+ results/reflow_ep99_eval_1step/31_rain_flow.png filter=lfs diff=lfs merge=lfs -text
201
+ results/reflow_ep99_eval_1step/31_rain_input.png filter=lfs diff=lfs merge=lfs -text
202
+ results/reflow_ep99_eval_1step/32_rain_flow.png filter=lfs diff=lfs merge=lfs -text
203
+ results/reflow_ep99_eval_1step/32_rain_input.png filter=lfs diff=lfs merge=lfs -text
204
+ results/reflow_ep99_eval_1step/33_rain_flow.png filter=lfs diff=lfs merge=lfs -text
205
+ results/reflow_ep99_eval_1step/33_rain_input.png filter=lfs diff=lfs merge=lfs -text
206
+ results/reflow_ep99_eval_1step/34_rain_flow.png filter=lfs diff=lfs merge=lfs -text
207
+ results/reflow_ep99_eval_1step/34_rain_input.png filter=lfs diff=lfs merge=lfs -text
208
+ results/reflow_ep99_eval_1step/35_rain_flow.png filter=lfs diff=lfs merge=lfs -text
209
+ results/reflow_ep99_eval_1step/35_rain_input.png filter=lfs diff=lfs merge=lfs -text
210
+ results/reflow_ep99_eval_1step/36_rain_flow.png filter=lfs diff=lfs merge=lfs -text
211
+ results/reflow_ep99_eval_1step/36_rain_input.png filter=lfs diff=lfs merge=lfs -text
212
+ results/reflow_ep99_eval_1step/37_rain_flow.png filter=lfs diff=lfs merge=lfs -text
213
+ results/reflow_ep99_eval_1step/37_rain_input.png filter=lfs diff=lfs merge=lfs -text
214
+ results/reflow_ep99_eval_1step/38_rain_flow.png filter=lfs diff=lfs merge=lfs -text
215
+ results/reflow_ep99_eval_1step/38_rain_input.png filter=lfs diff=lfs merge=lfs -text
216
+ results/reflow_ep99_eval_1step/39_rain_flow.png filter=lfs diff=lfs merge=lfs -text
217
+ results/reflow_ep99_eval_1step/39_rain_input.png filter=lfs diff=lfs merge=lfs -text
218
+ results/reflow_ep99_eval_1step/3_rain_flow.png filter=lfs diff=lfs merge=lfs -text
219
+ results/reflow_ep99_eval_1step/3_rain_input.png filter=lfs diff=lfs merge=lfs -text
220
+ results/reflow_ep99_eval_1step/40_rain_flow.png filter=lfs diff=lfs merge=lfs -text
221
+ results/reflow_ep99_eval_1step/40_rain_input.png filter=lfs diff=lfs merge=lfs -text
222
+ results/reflow_ep99_eval_1step/41_rain_flow.png filter=lfs diff=lfs merge=lfs -text
223
+ results/reflow_ep99_eval_1step/41_rain_input.png filter=lfs diff=lfs merge=lfs -text
224
+ results/reflow_ep99_eval_1step/42_rain_flow.png filter=lfs diff=lfs merge=lfs -text
225
+ results/reflow_ep99_eval_1step/42_rain_input.png filter=lfs diff=lfs merge=lfs -text
226
+ results/reflow_ep99_eval_1step/43_rain_flow.png filter=lfs diff=lfs merge=lfs -text
227
+ results/reflow_ep99_eval_1step/43_rain_input.png filter=lfs diff=lfs merge=lfs -text
228
+ results/reflow_ep99_eval_1step/44_rain_flow.png filter=lfs diff=lfs merge=lfs -text
229
+ results/reflow_ep99_eval_1step/44_rain_input.png filter=lfs diff=lfs merge=lfs -text
230
+ results/reflow_ep99_eval_1step/45_rain_flow.png filter=lfs diff=lfs merge=lfs -text
231
+ results/reflow_ep99_eval_1step/45_rain_input.png filter=lfs diff=lfs merge=lfs -text
232
+ results/reflow_ep99_eval_1step/46_rain_flow.png filter=lfs diff=lfs merge=lfs -text
233
+ results/reflow_ep99_eval_1step/46_rain_input.png filter=lfs diff=lfs merge=lfs -text
234
+ results/reflow_ep99_eval_1step/47_rain_flow.png filter=lfs diff=lfs merge=lfs -text
235
+ results/reflow_ep99_eval_1step/47_rain_input.png filter=lfs diff=lfs merge=lfs -text
236
+ results/reflow_ep99_eval_1step/48_rain_flow.png filter=lfs diff=lfs merge=lfs -text
237
+ results/reflow_ep99_eval_1step/48_rain_input.png filter=lfs diff=lfs merge=lfs -text
238
+ results/reflow_ep99_eval_1step/49_rain_flow.png filter=lfs diff=lfs merge=lfs -text
239
+ results/reflow_ep99_eval_1step/49_rain_input.png filter=lfs diff=lfs merge=lfs -text
240
+ results/reflow_ep99_eval_1step/4_rain_flow.png filter=lfs diff=lfs merge=lfs -text
241
+ results/reflow_ep99_eval_1step/4_rain_input.png filter=lfs diff=lfs merge=lfs -text
242
+ results/reflow_ep99_eval_1step/50_rain_flow.png filter=lfs diff=lfs merge=lfs -text
243
+ results/reflow_ep99_eval_1step/50_rain_input.png filter=lfs diff=lfs merge=lfs -text
244
+ results/reflow_ep99_eval_1step/51_rain_flow.png filter=lfs diff=lfs merge=lfs -text
245
+ results/reflow_ep99_eval_1step/51_rain_input.png filter=lfs diff=lfs merge=lfs -text
246
+ results/reflow_ep99_eval_1step/52_rain_flow.png filter=lfs diff=lfs merge=lfs -text
247
+ results/reflow_ep99_eval_1step/52_rain_input.png filter=lfs diff=lfs merge=lfs -text
248
+ results/reflow_ep99_eval_1step/53_rain_flow.png filter=lfs diff=lfs merge=lfs -text
249
+ results/reflow_ep99_eval_1step/53_rain_input.png filter=lfs diff=lfs merge=lfs -text
250
+ results/reflow_ep99_eval_1step/54_rain_flow.png filter=lfs diff=lfs merge=lfs -text
251
+ results/reflow_ep99_eval_1step/54_rain_input.png filter=lfs diff=lfs merge=lfs -text
252
+ results/reflow_ep99_eval_1step/55_rain_flow.png filter=lfs diff=lfs merge=lfs -text
253
+ results/reflow_ep99_eval_1step/55_rain_input.png filter=lfs diff=lfs merge=lfs -text
254
+ results/reflow_ep99_eval_1step/56_rain_flow.png filter=lfs diff=lfs merge=lfs -text
255
+ results/reflow_ep99_eval_1step/56_rain_input.png filter=lfs diff=lfs merge=lfs -text
256
+ results/reflow_ep99_eval_1step/57_rain_flow.png filter=lfs diff=lfs merge=lfs -text
257
+ results/reflow_ep99_eval_1step/57_rain_input.png filter=lfs diff=lfs merge=lfs -text
258
+ results/reflow_ep99_eval_1step/5_rain_flow.png filter=lfs diff=lfs merge=lfs -text
259
+ results/reflow_ep99_eval_1step/5_rain_input.png filter=lfs diff=lfs merge=lfs -text
260
+ results/reflow_ep99_eval_1step/6_rain_flow.png filter=lfs diff=lfs merge=lfs -text
261
+ results/reflow_ep99_eval_1step/6_rain_input.png filter=lfs diff=lfs merge=lfs -text
262
+ results/reflow_ep99_eval_1step/7_rain_flow.png filter=lfs diff=lfs merge=lfs -text
263
+ results/reflow_ep99_eval_1step/7_rain_input.png filter=lfs diff=lfs merge=lfs -text
264
+ results/reflow_ep99_eval_1step/8_rain_flow.png filter=lfs diff=lfs merge=lfs -text
265
+ results/reflow_ep99_eval_1step/8_rain_input.png filter=lfs diff=lfs merge=lfs -text
266
+ results/reflow_ep99_eval_1step/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text
267
+ results/reflow_ep99_eval_1step/9_rain_input.png filter=lfs diff=lfs merge=lfs -text
268
+ results/reflow_ep99_eval_4step/0_rain_flow.png filter=lfs diff=lfs merge=lfs -text
269
+ results/reflow_ep99_eval_4step/0_rain_input.png filter=lfs diff=lfs merge=lfs -text
270
+ results/reflow_ep99_eval_4step/10_rain_flow.png filter=lfs diff=lfs merge=lfs -text
271
+ results/reflow_ep99_eval_4step/10_rain_input.png filter=lfs diff=lfs merge=lfs -text
272
+ results/reflow_ep99_eval_4step/11_rain_flow.png filter=lfs diff=lfs merge=lfs -text
273
+ results/reflow_ep99_eval_4step/11_rain_input.png filter=lfs diff=lfs merge=lfs -text
274
+ results/reflow_ep99_eval_4step/12_rain_flow.png filter=lfs diff=lfs merge=lfs -text
275
+ results/reflow_ep99_eval_4step/12_rain_input.png filter=lfs diff=lfs merge=lfs -text
276
+ results/reflow_ep99_eval_4step/13_rain_flow.png filter=lfs diff=lfs merge=lfs -text
277
+ results/reflow_ep99_eval_4step/13_rain_input.png filter=lfs diff=lfs merge=lfs -text
278
+ results/reflow_ep99_eval_4step/14_rain_flow.png filter=lfs diff=lfs merge=lfs -text
279
+ results/reflow_ep99_eval_4step/14_rain_input.png filter=lfs diff=lfs merge=lfs -text
280
+ results/reflow_ep99_eval_4step/15_rain_flow.png filter=lfs diff=lfs merge=lfs -text
281
+ results/reflow_ep99_eval_4step/15_rain_input.png filter=lfs diff=lfs merge=lfs -text
282
+ results/reflow_ep99_eval_4step/16_rain_flow.png filter=lfs diff=lfs merge=lfs -text
283
+ results/reflow_ep99_eval_4step/16_rain_input.png filter=lfs diff=lfs merge=lfs -text
284
+ results/reflow_ep99_eval_4step/17_rain_flow.png filter=lfs diff=lfs merge=lfs -text
285
+ results/reflow_ep99_eval_4step/17_rain_input.png filter=lfs diff=lfs merge=lfs -text
286
+ results/reflow_ep99_eval_4step/18_rain_flow.png filter=lfs diff=lfs merge=lfs -text
287
+ results/reflow_ep99_eval_4step/18_rain_input.png filter=lfs diff=lfs merge=lfs -text
288
+ results/reflow_ep99_eval_4step/19_rain_flow.png filter=lfs diff=lfs merge=lfs -text
289
+ results/reflow_ep99_eval_4step/19_rain_input.png filter=lfs diff=lfs merge=lfs -text
290
+ results/reflow_ep99_eval_4step/1_rain_flow.png filter=lfs diff=lfs merge=lfs -text
291
+ results/reflow_ep99_eval_4step/1_rain_input.png filter=lfs diff=lfs merge=lfs -text
292
+ results/reflow_ep99_eval_4step/20_rain_flow.png filter=lfs diff=lfs merge=lfs -text
293
+ results/reflow_ep99_eval_4step/20_rain_input.png filter=lfs diff=lfs merge=lfs -text
294
+ results/reflow_ep99_eval_4step/21_rain_flow.png filter=lfs diff=lfs merge=lfs -text
295
+ results/reflow_ep99_eval_4step/21_rain_input.png filter=lfs diff=lfs merge=lfs -text
296
+ results/reflow_ep99_eval_4step/22_rain_flow.png filter=lfs diff=lfs merge=lfs -text
297
+ results/reflow_ep99_eval_4step/22_rain_input.png filter=lfs diff=lfs merge=lfs -text
298
+ results/reflow_ep99_eval_4step/23_rain_flow.png filter=lfs diff=lfs merge=lfs -text
299
+ results/reflow_ep99_eval_4step/23_rain_input.png filter=lfs diff=lfs merge=lfs -text
300
+ results/reflow_ep99_eval_4step/24_rain_flow.png filter=lfs diff=lfs merge=lfs -text
301
+ results/reflow_ep99_eval_4step/24_rain_input.png filter=lfs diff=lfs merge=lfs -text
302
+ results/reflow_ep99_eval_4step/25_rain_flow.png filter=lfs diff=lfs merge=lfs -text
303
+ results/reflow_ep99_eval_4step/25_rain_input.png filter=lfs diff=lfs merge=lfs -text
304
+ results/reflow_ep99_eval_4step/26_rain_flow.png filter=lfs diff=lfs merge=lfs -text
305
+ results/reflow_ep99_eval_4step/26_rain_input.png filter=lfs diff=lfs merge=lfs -text
306
+ results/reflow_ep99_eval_4step/27_rain_flow.png filter=lfs diff=lfs merge=lfs -text
307
+ results/reflow_ep99_eval_4step/27_rain_input.png filter=lfs diff=lfs merge=lfs -text
308
+ results/reflow_ep99_eval_4step/28_rain_flow.png filter=lfs diff=lfs merge=lfs -text
309
+ results/reflow_ep99_eval_4step/28_rain_input.png filter=lfs diff=lfs merge=lfs -text
310
+ results/reflow_ep99_eval_4step/29_rain_flow.png filter=lfs diff=lfs merge=lfs -text
311
+ results/reflow_ep99_eval_4step/29_rain_input.png filter=lfs diff=lfs merge=lfs -text
312
+ results/reflow_ep99_eval_4step/2_rain_flow.png filter=lfs diff=lfs merge=lfs -text
313
+ results/reflow_ep99_eval_4step/2_rain_input.png filter=lfs diff=lfs merge=lfs -text
314
+ results/reflow_ep99_eval_4step/30_rain_flow.png filter=lfs diff=lfs merge=lfs -text
315
+ results/reflow_ep99_eval_4step/30_rain_input.png filter=lfs diff=lfs merge=lfs -text
316
+ results/reflow_ep99_eval_4step/31_rain_flow.png filter=lfs diff=lfs merge=lfs -text
317
+ results/reflow_ep99_eval_4step/31_rain_input.png filter=lfs diff=lfs merge=lfs -text
318
+ results/reflow_ep99_eval_4step/32_rain_flow.png filter=lfs diff=lfs merge=lfs -text
319
+ results/reflow_ep99_eval_4step/32_rain_input.png filter=lfs diff=lfs merge=lfs -text
320
+ results/reflow_ep99_eval_4step/33_rain_flow.png filter=lfs diff=lfs merge=lfs -text
321
+ results/reflow_ep99_eval_4step/33_rain_input.png filter=lfs diff=lfs merge=lfs -text
322
+ results/reflow_ep99_eval_4step/34_rain_flow.png filter=lfs diff=lfs merge=lfs -text
323
+ results/reflow_ep99_eval_4step/34_rain_input.png filter=lfs diff=lfs merge=lfs -text
324
+ results/reflow_ep99_eval_4step/35_rain_flow.png filter=lfs diff=lfs merge=lfs -text
325
+ results/reflow_ep99_eval_4step/35_rain_input.png filter=lfs diff=lfs merge=lfs -text
326
+ results/reflow_ep99_eval_4step/36_rain_flow.png filter=lfs diff=lfs merge=lfs -text
327
+ results/reflow_ep99_eval_4step/36_rain_input.png filter=lfs diff=lfs merge=lfs -text
328
+ results/reflow_ep99_eval_4step/37_rain_flow.png filter=lfs diff=lfs merge=lfs -text
329
+ results/reflow_ep99_eval_4step/37_rain_input.png filter=lfs diff=lfs merge=lfs -text
330
+ results/reflow_ep99_eval_4step/38_rain_flow.png filter=lfs diff=lfs merge=lfs -text
331
+ results/reflow_ep99_eval_4step/38_rain_input.png filter=lfs diff=lfs merge=lfs -text
332
+ results/reflow_ep99_eval_4step/39_rain_flow.png filter=lfs diff=lfs merge=lfs -text
333
+ results/reflow_ep99_eval_4step/39_rain_input.png filter=lfs diff=lfs merge=lfs -text
334
+ results/reflow_ep99_eval_4step/3_rain_flow.png filter=lfs diff=lfs merge=lfs -text
335
+ results/reflow_ep99_eval_4step/3_rain_input.png filter=lfs diff=lfs merge=lfs -text
336
+ results/reflow_ep99_eval_4step/40_rain_flow.png filter=lfs diff=lfs merge=lfs -text
337
+ results/reflow_ep99_eval_4step/40_rain_input.png filter=lfs diff=lfs merge=lfs -text
338
+ results/reflow_ep99_eval_4step/41_rain_flow.png filter=lfs diff=lfs merge=lfs -text
339
+ results/reflow_ep99_eval_4step/41_rain_input.png filter=lfs diff=lfs merge=lfs -text
340
+ results/reflow_ep99_eval_4step/42_rain_flow.png filter=lfs diff=lfs merge=lfs -text
341
+ results/reflow_ep99_eval_4step/42_rain_input.png filter=lfs diff=lfs merge=lfs -text
342
+ results/reflow_ep99_eval_4step/43_rain_flow.png filter=lfs diff=lfs merge=lfs -text
343
+ results/reflow_ep99_eval_4step/43_rain_input.png filter=lfs diff=lfs merge=lfs -text
344
+ results/reflow_ep99_eval_4step/44_rain_flow.png filter=lfs diff=lfs merge=lfs -text
345
+ results/reflow_ep99_eval_4step/44_rain_input.png filter=lfs diff=lfs merge=lfs -text
346
+ results/reflow_ep99_eval_4step/45_rain_flow.png filter=lfs diff=lfs merge=lfs -text
347
+ results/reflow_ep99_eval_4step/45_rain_input.png filter=lfs diff=lfs merge=lfs -text
348
+ results/reflow_ep99_eval_4step/46_rain_flow.png filter=lfs diff=lfs merge=lfs -text
349
+ results/reflow_ep99_eval_4step/46_rain_input.png filter=lfs diff=lfs merge=lfs -text
350
+ results/reflow_ep99_eval_4step/47_rain_flow.png filter=lfs diff=lfs merge=lfs -text
351
+ results/reflow_ep99_eval_4step/47_rain_input.png filter=lfs diff=lfs merge=lfs -text
352
+ results/reflow_ep99_eval_4step/48_rain_flow.png filter=lfs diff=lfs merge=lfs -text
353
+ results/reflow_ep99_eval_4step/48_rain_input.png filter=lfs diff=lfs merge=lfs -text
354
+ results/reflow_ep99_eval_4step/49_rain_flow.png filter=lfs diff=lfs merge=lfs -text
355
+ results/reflow_ep99_eval_4step/49_rain_input.png filter=lfs diff=lfs merge=lfs -text
356
+ results/reflow_ep99_eval_4step/4_rain_flow.png filter=lfs diff=lfs merge=lfs -text
357
+ results/reflow_ep99_eval_4step/4_rain_input.png filter=lfs diff=lfs merge=lfs -text
358
+ results/reflow_ep99_eval_4step/50_rain_flow.png filter=lfs diff=lfs merge=lfs -text
359
+ results/reflow_ep99_eval_4step/50_rain_input.png filter=lfs diff=lfs merge=lfs -text
360
+ results/reflow_ep99_eval_4step/51_rain_flow.png filter=lfs diff=lfs merge=lfs -text
361
+ results/reflow_ep99_eval_4step/51_rain_input.png filter=lfs diff=lfs merge=lfs -text
362
+ results/reflow_ep99_eval_4step/52_rain_flow.png filter=lfs diff=lfs merge=lfs -text
363
+ results/reflow_ep99_eval_4step/52_rain_input.png filter=lfs diff=lfs merge=lfs -text
364
+ results/reflow_ep99_eval_4step/53_rain_flow.png filter=lfs diff=lfs merge=lfs -text
365
+ results/reflow_ep99_eval_4step/53_rain_input.png filter=lfs diff=lfs merge=lfs -text
366
+ results/reflow_ep99_eval_4step/54_rain_flow.png filter=lfs diff=lfs merge=lfs -text
367
+ results/reflow_ep99_eval_4step/54_rain_input.png filter=lfs diff=lfs merge=lfs -text
368
+ results/reflow_ep99_eval_4step/55_rain_flow.png filter=lfs diff=lfs merge=lfs -text
369
+ results/reflow_ep99_eval_4step/55_rain_input.png filter=lfs diff=lfs merge=lfs -text
370
+ results/reflow_ep99_eval_4step/56_rain_flow.png filter=lfs diff=lfs merge=lfs -text
371
+ results/reflow_ep99_eval_4step/56_rain_input.png filter=lfs diff=lfs merge=lfs -text
372
+ results/reflow_ep99_eval_4step/57_rain_flow.png filter=lfs diff=lfs merge=lfs -text
373
+ results/reflow_ep99_eval_4step/57_rain_input.png filter=lfs diff=lfs merge=lfs -text
374
+ results/reflow_ep99_eval_4step/5_rain_flow.png filter=lfs diff=lfs merge=lfs -text
375
+ results/reflow_ep99_eval_4step/5_rain_input.png filter=lfs diff=lfs merge=lfs -text
376
+ results/reflow_ep99_eval_4step/6_rain_flow.png filter=lfs diff=lfs merge=lfs -text
377
+ results/reflow_ep99_eval_4step/6_rain_input.png filter=lfs diff=lfs merge=lfs -text
378
+ results/reflow_ep99_eval_4step/7_rain_flow.png filter=lfs diff=lfs merge=lfs -text
379
+ results/reflow_ep99_eval_4step/7_rain_input.png filter=lfs diff=lfs merge=lfs -text
380
+ results/reflow_ep99_eval_4step/8_rain_flow.png filter=lfs diff=lfs merge=lfs -text
381
+ results/reflow_ep99_eval_4step/8_rain_input.png filter=lfs diff=lfs merge=lfs -text
382
+ results/reflow_ep99_eval_4step/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text
383
+ results/reflow_ep99_eval_4step/9_rain_input.png filter=lfs diff=lfs merge=lfs -text
384
+ results/reflow_ep99_eval_8step/0_rain_flow.png filter=lfs diff=lfs merge=lfs -text
385
+ results/reflow_ep99_eval_8step/0_rain_input.png filter=lfs diff=lfs merge=lfs -text
386
+ results/reflow_ep99_eval_8step/10_rain_flow.png filter=lfs diff=lfs merge=lfs -text
387
+ results/reflow_ep99_eval_8step/10_rain_input.png filter=lfs diff=lfs merge=lfs -text
388
+ results/reflow_ep99_eval_8step/11_rain_flow.png filter=lfs diff=lfs merge=lfs -text
389
+ results/reflow_ep99_eval_8step/11_rain_input.png filter=lfs diff=lfs merge=lfs -text
390
+ results/reflow_ep99_eval_8step/12_rain_flow.png filter=lfs diff=lfs merge=lfs -text
391
+ results/reflow_ep99_eval_8step/12_rain_input.png filter=lfs diff=lfs merge=lfs -text
392
+ results/reflow_ep99_eval_8step/13_rain_flow.png filter=lfs diff=lfs merge=lfs -text
393
+ results/reflow_ep99_eval_8step/13_rain_input.png filter=lfs diff=lfs merge=lfs -text
394
+ results/reflow_ep99_eval_8step/14_rain_flow.png filter=lfs diff=lfs merge=lfs -text
395
+ results/reflow_ep99_eval_8step/14_rain_input.png filter=lfs diff=lfs merge=lfs -text
396
+ results/reflow_ep99_eval_8step/15_rain_flow.png filter=lfs diff=lfs merge=lfs -text
397
+ results/reflow_ep99_eval_8step/15_rain_input.png filter=lfs diff=lfs merge=lfs -text
398
+ results/reflow_ep99_eval_8step/16_rain_flow.png filter=lfs diff=lfs merge=lfs -text
399
+ results/reflow_ep99_eval_8step/16_rain_input.png filter=lfs diff=lfs merge=lfs -text
400
+ results/reflow_ep99_eval_8step/17_rain_flow.png filter=lfs diff=lfs merge=lfs -text
401
+ results/reflow_ep99_eval_8step/17_rain_input.png filter=lfs diff=lfs merge=lfs -text
402
+ results/reflow_ep99_eval_8step/18_rain_flow.png filter=lfs diff=lfs merge=lfs -text
403
+ results/reflow_ep99_eval_8step/18_rain_input.png filter=lfs diff=lfs merge=lfs -text
404
+ results/reflow_ep99_eval_8step/19_rain_flow.png filter=lfs diff=lfs merge=lfs -text
405
+ results/reflow_ep99_eval_8step/19_rain_input.png filter=lfs diff=lfs merge=lfs -text
406
+ results/reflow_ep99_eval_8step/1_rain_flow.png filter=lfs diff=lfs merge=lfs -text
407
+ results/reflow_ep99_eval_8step/1_rain_input.png filter=lfs diff=lfs merge=lfs -text
408
+ results/reflow_ep99_eval_8step/20_rain_flow.png filter=lfs diff=lfs merge=lfs -text
409
+ results/reflow_ep99_eval_8step/20_rain_input.png filter=lfs diff=lfs merge=lfs -text
410
+ results/reflow_ep99_eval_8step/21_rain_flow.png filter=lfs diff=lfs merge=lfs -text
411
+ results/reflow_ep99_eval_8step/21_rain_input.png filter=lfs diff=lfs merge=lfs -text
412
+ results/reflow_ep99_eval_8step/22_rain_flow.png filter=lfs diff=lfs merge=lfs -text
413
+ results/reflow_ep99_eval_8step/22_rain_input.png filter=lfs diff=lfs merge=lfs -text
414
+ results/reflow_ep99_eval_8step/23_rain_flow.png filter=lfs diff=lfs merge=lfs -text
415
+ results/reflow_ep99_eval_8step/23_rain_input.png filter=lfs diff=lfs merge=lfs -text
416
+ results/reflow_ep99_eval_8step/24_rain_flow.png filter=lfs diff=lfs merge=lfs -text
417
+ results/reflow_ep99_eval_8step/24_rain_input.png filter=lfs diff=lfs merge=lfs -text
418
+ results/reflow_ep99_eval_8step/25_rain_flow.png filter=lfs diff=lfs merge=lfs -text
419
+ results/reflow_ep99_eval_8step/25_rain_input.png filter=lfs diff=lfs merge=lfs -text
420
+ results/reflow_ep99_eval_8step/26_rain_flow.png filter=lfs diff=lfs merge=lfs -text
421
+ results/reflow_ep99_eval_8step/26_rain_input.png filter=lfs diff=lfs merge=lfs -text
422
+ results/reflow_ep99_eval_8step/27_rain_flow.png filter=lfs diff=lfs merge=lfs -text
423
+ results/reflow_ep99_eval_8step/27_rain_input.png filter=lfs diff=lfs merge=lfs -text
424
+ results/reflow_ep99_eval_8step/28_rain_flow.png filter=lfs diff=lfs merge=lfs -text
425
+ results/reflow_ep99_eval_8step/28_rain_input.png filter=lfs diff=lfs merge=lfs -text
426
+ results/reflow_ep99_eval_8step/29_rain_flow.png filter=lfs diff=lfs merge=lfs -text
427
+ results/reflow_ep99_eval_8step/29_rain_input.png filter=lfs diff=lfs merge=lfs -text
428
+ results/reflow_ep99_eval_8step/2_rain_flow.png filter=lfs diff=lfs merge=lfs -text
429
+ results/reflow_ep99_eval_8step/2_rain_input.png filter=lfs diff=lfs merge=lfs -text
430
+ results/reflow_ep99_eval_8step/30_rain_flow.png filter=lfs diff=lfs merge=lfs -text
431
+ results/reflow_ep99_eval_8step/30_rain_input.png filter=lfs diff=lfs merge=lfs -text
432
+ results/reflow_ep99_eval_8step/31_rain_flow.png filter=lfs diff=lfs merge=lfs -text
433
+ results/reflow_ep99_eval_8step/31_rain_input.png filter=lfs diff=lfs merge=lfs -text
434
+ results/reflow_ep99_eval_8step/32_rain_flow.png filter=lfs diff=lfs merge=lfs -text
435
+ results/reflow_ep99_eval_8step/32_rain_input.png filter=lfs diff=lfs merge=lfs -text
436
+ results/reflow_ep99_eval_8step/33_rain_flow.png filter=lfs diff=lfs merge=lfs -text
437
+ results/reflow_ep99_eval_8step/33_rain_input.png filter=lfs diff=lfs merge=lfs -text
438
+ results/reflow_ep99_eval_8step/34_rain_flow.png filter=lfs diff=lfs merge=lfs -text
439
+ results/reflow_ep99_eval_8step/34_rain_input.png filter=lfs diff=lfs merge=lfs -text
440
+ results/reflow_ep99_eval_8step/35_rain_flow.png filter=lfs diff=lfs merge=lfs -text
441
+ results/reflow_ep99_eval_8step/35_rain_input.png filter=lfs diff=lfs merge=lfs -text
442
+ results/reflow_ep99_eval_8step/36_rain_flow.png filter=lfs diff=lfs merge=lfs -text
443
+ results/reflow_ep99_eval_8step/36_rain_input.png filter=lfs diff=lfs merge=lfs -text
444
+ results/reflow_ep99_eval_8step/37_rain_flow.png filter=lfs diff=lfs merge=lfs -text
445
+ results/reflow_ep99_eval_8step/37_rain_input.png filter=lfs diff=lfs merge=lfs -text
446
+ results/reflow_ep99_eval_8step/38_rain_flow.png filter=lfs diff=lfs merge=lfs -text
447
+ results/reflow_ep99_eval_8step/38_rain_input.png filter=lfs diff=lfs merge=lfs -text
448
+ results/reflow_ep99_eval_8step/39_rain_flow.png filter=lfs diff=lfs merge=lfs -text
449
+ results/reflow_ep99_eval_8step/39_rain_input.png filter=lfs diff=lfs merge=lfs -text
450
+ results/reflow_ep99_eval_8step/3_rain_flow.png filter=lfs diff=lfs merge=lfs -text
451
+ results/reflow_ep99_eval_8step/3_rain_input.png filter=lfs diff=lfs merge=lfs -text
452
+ results/reflow_ep99_eval_8step/40_rain_flow.png filter=lfs diff=lfs merge=lfs -text
453
+ results/reflow_ep99_eval_8step/40_rain_input.png filter=lfs diff=lfs merge=lfs -text
454
+ results/reflow_ep99_eval_8step/41_rain_flow.png filter=lfs diff=lfs merge=lfs -text
455
+ results/reflow_ep99_eval_8step/41_rain_input.png filter=lfs diff=lfs merge=lfs -text
456
+ results/reflow_ep99_eval_8step/42_rain_flow.png filter=lfs diff=lfs merge=lfs -text
457
+ results/reflow_ep99_eval_8step/42_rain_input.png filter=lfs diff=lfs merge=lfs -text
458
+ results/reflow_ep99_eval_8step/43_rain_flow.png filter=lfs diff=lfs merge=lfs -text
459
+ results/reflow_ep99_eval_8step/43_rain_input.png filter=lfs diff=lfs merge=lfs -text
460
+ results/reflow_ep99_eval_8step/44_rain_flow.png filter=lfs diff=lfs merge=lfs -text
461
+ results/reflow_ep99_eval_8step/44_rain_input.png filter=lfs diff=lfs merge=lfs -text
462
+ results/reflow_ep99_eval_8step/45_rain_flow.png filter=lfs diff=lfs merge=lfs -text
463
+ results/reflow_ep99_eval_8step/45_rain_input.png filter=lfs diff=lfs merge=lfs -text
464
+ results/reflow_ep99_eval_8step/46_rain_flow.png filter=lfs diff=lfs merge=lfs -text
465
+ results/reflow_ep99_eval_8step/46_rain_input.png filter=lfs diff=lfs merge=lfs -text
466
+ results/reflow_ep99_eval_8step/47_rain_flow.png filter=lfs diff=lfs merge=lfs -text
467
+ results/reflow_ep99_eval_8step/47_rain_input.png filter=lfs diff=lfs merge=lfs -text
468
+ results/reflow_ep99_eval_8step/48_rain_flow.png filter=lfs diff=lfs merge=lfs -text
469
+ results/reflow_ep99_eval_8step/48_rain_input.png filter=lfs diff=lfs merge=lfs -text
470
+ results/reflow_ep99_eval_8step/49_rain_flow.png filter=lfs diff=lfs merge=lfs -text
471
+ results/reflow_ep99_eval_8step/49_rain_input.png filter=lfs diff=lfs merge=lfs -text
472
+ results/reflow_ep99_eval_8step/4_rain_flow.png filter=lfs diff=lfs merge=lfs -text
473
+ results/reflow_ep99_eval_8step/4_rain_input.png filter=lfs diff=lfs merge=lfs -text
474
+ results/reflow_ep99_eval_8step/50_rain_flow.png filter=lfs diff=lfs merge=lfs -text
475
+ results/reflow_ep99_eval_8step/50_rain_input.png filter=lfs diff=lfs merge=lfs -text
476
+ results/reflow_ep99_eval_8step/51_rain_flow.png filter=lfs diff=lfs merge=lfs -text
477
+ results/reflow_ep99_eval_8step/51_rain_input.png filter=lfs diff=lfs merge=lfs -text
478
+ results/reflow_ep99_eval_8step/52_rain_flow.png filter=lfs diff=lfs merge=lfs -text
479
+ results/reflow_ep99_eval_8step/52_rain_input.png filter=lfs diff=lfs merge=lfs -text
480
+ results/reflow_ep99_eval_8step/53_rain_flow.png filter=lfs diff=lfs merge=lfs -text
481
+ results/reflow_ep99_eval_8step/53_rain_input.png filter=lfs diff=lfs merge=lfs -text
482
+ results/reflow_ep99_eval_8step/54_rain_flow.png filter=lfs diff=lfs merge=lfs -text
483
+ results/reflow_ep99_eval_8step/54_rain_input.png filter=lfs diff=lfs merge=lfs -text
484
+ results/reflow_ep99_eval_8step/55_rain_flow.png filter=lfs diff=lfs merge=lfs -text
485
+ results/reflow_ep99_eval_8step/55_rain_input.png filter=lfs diff=lfs merge=lfs -text
486
+ results/reflow_ep99_eval_8step/56_rain_flow.png filter=lfs diff=lfs merge=lfs -text
487
+ results/reflow_ep99_eval_8step/56_rain_input.png filter=lfs diff=lfs merge=lfs -text
488
+ results/reflow_ep99_eval_8step/57_rain_flow.png filter=lfs diff=lfs merge=lfs -text
489
+ results/reflow_ep99_eval_8step/57_rain_input.png filter=lfs diff=lfs merge=lfs -text
490
+ results/reflow_ep99_eval_8step/5_rain_flow.png filter=lfs diff=lfs merge=lfs -text
491
+ results/reflow_ep99_eval_8step/5_rain_input.png filter=lfs diff=lfs merge=lfs -text
492
+ results/reflow_ep99_eval_8step/6_rain_flow.png filter=lfs diff=lfs merge=lfs -text
493
+ results/reflow_ep99_eval_8step/6_rain_input.png filter=lfs diff=lfs merge=lfs -text
494
+ results/reflow_ep99_eval_8step/7_rain_flow.png filter=lfs diff=lfs merge=lfs -text
495
+ results/reflow_ep99_eval_8step/7_rain_input.png filter=lfs diff=lfs merge=lfs -text
496
+ results/reflow_ep99_eval_8step/8_rain_flow.png filter=lfs diff=lfs merge=lfs -text
497
+ results/reflow_ep99_eval_8step/8_rain_input.png filter=lfs diff=lfs merge=lfs -text
498
+ results/reflow_ep99_eval_8step/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text
499
+ results/reflow_ep99_eval_8step/9_rain_input.png filter=lfs diff=lfs merge=lfs -text
diff2flow.py ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import os
3
+ import yaml
4
+ import torch
5
+ import torch.nn as nn
6
+ import numpy as np
7
+ import torchvision
8
+ import utils
9
+ from models.unet import DiffusionUNet
10
+ import torchdiffeq
11
+ import math
12
+ from torchvision.transforms.functional import crop
13
+
14
+
15
+ def dict2namespace(config):
16
+ namespace = argparse.Namespace()
17
+ for key, value in config.items():
18
+ if isinstance(value, dict):
19
+ new_value = dict2namespace(value)
20
+ else:
21
+ new_value = value
22
+ setattr(namespace, key, new_value)
23
+ return namespace
24
+
25
+
26
+ def get_beta_schedule(beta_schedule, *, beta_start, beta_end, num_diffusion_timesteps):
27
+ def sigmoid(x):
28
+ return 1 / (np.exp(-x) + 1)
29
+
30
+ if beta_schedule == "quad":
31
+ betas = (
32
+ np.linspace(
33
+ beta_start**0.5,
34
+ beta_end**0.5,
35
+ num_diffusion_timesteps,
36
+ dtype=np.float64,
37
+ )
38
+ ** 2
39
+ )
40
+ elif beta_schedule == "linear":
41
+ betas = np.linspace(
42
+ beta_start, beta_end, num_diffusion_timesteps, dtype=np.float64
43
+ )
44
+ elif beta_schedule == "const":
45
+ betas = beta_end * np.ones(num_diffusion_timesteps, dtype=np.float64)
46
+ elif beta_schedule == "jsd": # 1/T, 1/(T-1), 1/(T-2), ..., 1
47
+ betas = 1.0 / np.linspace(
48
+ num_diffusion_timesteps, 1, num_diffusion_timesteps, dtype=np.float64
49
+ )
50
+ elif beta_schedule == "sigmoid":
51
+ betas = np.linspace(-6, 6, num_diffusion_timesteps)
52
+ betas = sigmoid(betas) * (beta_end - beta_start) + beta_start
53
+ else:
54
+ raise NotImplementedError(beta_schedule)
55
+ return betas
56
+
57
+
58
+ class VPDiffusionFlow:
59
+ def __init__(self, args, config):
60
+ self.args = args
61
+ self.flow_mode = getattr(args, 'flow_mode', 'vp')
62
+ self.config = config
63
+ self.device = config.device
64
+
65
+ # Load model
66
+ self.model = DiffusionUNet(config)
67
+ self.model.to(self.device)
68
+ # self.model = nn.DataParallel(self.model)
69
+
70
+ # Schedules
71
+ self.num_timesteps = config.diffusion.num_diffusion_timesteps
72
+ betas = get_beta_schedule(
73
+ beta_schedule=config.diffusion.beta_schedule,
74
+ beta_start=config.diffusion.beta_start,
75
+ beta_end=config.diffusion.beta_end,
76
+ num_diffusion_timesteps=self.num_timesteps,
77
+ )
78
+ self.betas = torch.from_numpy(betas).float().to(self.device)
79
+
80
+ # Precompute alphas for continuous time interpolation if needed
81
+ # But for VP-ODE, we need beta(t) continuously.
82
+ # Linear schedule: beta(t) = beta_start + t * (beta_end - beta_start)
83
+ # where t is [0, 1].
84
+ # In discrete case: betas are discrete steps.
85
+ # The config says "linear", betas = linspace(start, end, N).
86
+ # This approximates beta(t) = start + k * t.
87
+ self.beta_start = config.diffusion.beta_start
88
+ self.beta_end = config.diffusion.beta_end
89
+
90
+ # Calculate alpha_bar (cumulative product) equivalent for continuous time
91
+ # Discrete: alpha = 1 - beta. alpha_bar = cumprod(alpha).
92
+ # Continuous: alpha_bar(t) = exp(- integral_0^t beta(s) ds).
93
+ # if beta(s) = a + b*s, integral is a*t + 0.5*b*t^2.
94
+ # log_alpha_bar(t) = - (a*t + 0.5*b*t^2)?
95
+ # Let's verify against discrete steps.
96
+ # Discrete index i corresponds to t = i / N (approx).
97
+ # Actually discrete usually means t_discrete = 1..N.
98
+ # We will treat t in [0, 1].
99
+
100
+ # Precompute alpha_bar array for lookups if we trust discrete more
101
+ alphas = 1.0 - self.betas
102
+ self.alphas_cumprod = torch.cumprod(alphas, dim=0)
103
+
104
+ def load_ckpt(self, load_path):
105
+ checkpoint = torch.load(load_path, map_location=self.device)
106
+ # Handle state dict
107
+ if "state_dict" in checkpoint:
108
+ state_dict = checkpoint["state_dict"]
109
+ else:
110
+ state_dict = checkpoint
111
+
112
+ # Strip module. prefix if present
113
+ new_state_dict = {}
114
+ for k, v in state_dict.items():
115
+ if k.startswith("module."):
116
+ new_state_dict[k[7:]] = v
117
+ else:
118
+ new_state_dict[k] = v
119
+ state_dict = new_state_dict
120
+
121
+ self.model.load_state_dict(state_dict, strict=True)
122
+ print(f"=> loaded checkpoint '{load_path}'")
123
+ self.model.eval()
124
+
125
+ def get_beta_t(self, t):
126
+ # t is float scalar or tensor in [0, 1]
127
+ # Linear interpolation of beta
128
+ scalar_t = t.item() if isinstance(t, torch.Tensor) else t
129
+ # Clamp t to [0, 1]
130
+ scalar_t = max(0.0, min(1.0, scalar_t))
131
+ return self.beta_start + scalar_t * (self.beta_end - self.beta_start)
132
+
133
+ def get_alpha_bar_t(self, t):
134
+ # Calculate alpha_bar analytically for linear beta schedule
135
+ scalar_t = t.item() if isinstance(t, torch.Tensor) else t
136
+ scalar_t = max(0.0, min(1.0, scalar_t))
137
+
138
+ N = self.num_timesteps
139
+
140
+ # Integral of N * (b0 + (b1-b0)*s) ds from 0 to t
141
+ # = N * [ b0*t + 0.5*(b1-b0)*t^2 ]
142
+ b0 = self.beta_start
143
+ b1 = self.beta_end
144
+ integral = N * (b0 * scalar_t + 0.5 * (b1 - b0) * scalar_t**2)
145
+ return math.exp(-integral)
146
+
147
+ def overlapping_grid_indices(self, x_cond, output_size, r=None):
148
+ _, c, h, w = x_cond.shape
149
+ r = 16 if r is None else r
150
+ h_list = [i for i in range(0, h - output_size + 1, r)]
151
+ w_list = [i for i in range(0, w - output_size + 1, r)]
152
+ return h_list, w_list
153
+
154
+ def get_velocity(self, x, t, x_cond, patch_size=None, r_stride=16):
155
+ # If no patching needed (x fits in patch_size or patch_size None), do normal
156
+ if patch_size is None or (
157
+ x.shape[2] == patch_size and x.shape[3] == patch_size
158
+ ):
159
+ return self._get_velocity_single(x, t, x_cond)
160
+
161
+ # Full image inference with patching
162
+ N = self.num_timesteps
163
+ t_idx = min(int(t * N), N - 1)
164
+ t_input_scalar = t_idx
165
+
166
+ # Grid setup
167
+ h_list, w_list = self.overlapping_grid_indices(x, patch_size, r=r_stride)
168
+ corners = [(i, j) for i in h_list for j in w_list]
169
+
170
+ # Mask for overlap averaging
171
+ # Cache this if t doesn't change grid? Grid depends on image size, which is constant during integration.
172
+ # But for now recompute is safer/easier.
173
+ x_grid_mask = torch.zeros_like(x, device=self.device)
174
+ for hi, wi in corners:
175
+ x_grid_mask[:, :, hi : hi + patch_size, wi : wi + patch_size] += 1
176
+
177
+ # Accumulate output (epsilon or velocity)
178
+ output_accum = torch.zeros_like(x, device=self.device)
179
+
180
+ # Process in batches
181
+ batch_size = 64 # From restoration.py logic or config
182
+
183
+ # Prepare params if VP
184
+ if self.flow_mode == 'vp':
185
+ beta_discrete = self.get_beta_t(t)
186
+ beta_cont = beta_discrete * N
187
+ ab = self.alphas_cumprod[t_idx]
188
+
189
+ # Loop over patches
190
+ # NOTE: drift depends on x (noisy) and x_cond (clean/cond).
191
+ for i in range(0, len(corners), batch_size):
192
+ batch_corners = corners[i : i + batch_size]
193
+
194
+ # Crop batch
195
+ x_batch = torch.cat(
196
+ [crop(x, hi, wi, patch_size, patch_size) for (hi, wi) in batch_corners],
197
+ dim=0,
198
+ )
199
+ cond_batch = torch.cat(
200
+ [
201
+ crop(x_cond, hi, wi, patch_size, patch_size)
202
+ for (hi, wi) in batch_corners
203
+ ],
204
+ dim=0,
205
+ )
206
+ t_batch = torch.tensor(
207
+ [t_input_scalar] * x_batch.size(0), device=self.device
208
+ )
209
+
210
+ with torch.no_grad():
211
+ model_output = self.model(torch.cat([cond_batch, x_batch], dim=1), t_batch)
212
+
213
+ # Scatter back
214
+ for idx, (hi, wi) in enumerate(batch_corners):
215
+ output_accum[0, :, hi : hi + patch_size, wi : wi + patch_size] += (
216
+ model_output[idx]
217
+ )
218
+
219
+ # Average
220
+ model_output_full = torch.div(output_accum, x_grid_mask)
221
+
222
+ # Compute v
223
+ if self.flow_mode == 'reflow':
224
+ # In Reflow, model output is velocity
225
+ v = model_output_full
226
+ else:
227
+ # VP-ODE
228
+ epsilon = model_output_full
229
+ coeff1 = -0.5 * beta_cont
230
+ coeff2 = 0.5 * beta_cont / torch.sqrt(1 - ab)
231
+ v = coeff1 * x + coeff2 * epsilon
232
+
233
+ return v
234
+
235
+ def _get_velocity_single(self, x, t, x_cond):
236
+ # Single image / patch velocity
237
+ # x: [B, C, H, W]
238
+ # t: continuous time in [0, 1].
239
+ # x_cond: condition (clean image part or conditional input)
240
+
241
+ N = self.num_timesteps
242
+ t_idx = min(int(t * N), N - 1)
243
+ t_input = torch.tensor([t_idx] * x.size(0), device=self.device)
244
+
245
+ with torch.no_grad():
246
+ model_output = self.model(torch.cat([x_cond, x], dim=1), t_input)
247
+
248
+ if self.flow_mode == 'reflow':
249
+ return model_output
250
+ else:
251
+ epsilon = model_output
252
+ beta_discrete = self.get_beta_t(t)
253
+ beta_cont = beta_discrete * N
254
+ ab = self.alphas_cumprod[t_idx]
255
+
256
+ coeff1 = -0.5 * beta_cont
257
+ coeff2 = 0.5 * beta_cont / torch.sqrt(1 - ab)
258
+
259
+ v = coeff1 * x + coeff2 * epsilon
260
+ return v
261
+
262
+
263
+ def ode_solve(
264
+ flow_model,
265
+ x_init,
266
+ x_cond,
267
+ steps=100,
268
+ method="dopri5",
269
+ patch_size=64,
270
+ atol=1e-4,
271
+ rtol=1e-4,
272
+ ):
273
+ # Define the drift function wrapper for torchdiffeq
274
+ step = 0
275
+
276
+ print(f"ODE Solve: Method={method}, Steps={steps}, atol={atol}, rtol={rtol}")
277
+
278
+ def drift_func(t, x):
279
+ nonlocal step
280
+ step += 1
281
+ print(f"Step {step}, t={t.item():.6f}")
282
+ # Assuming batch size 1 for full image inference usually
283
+ return flow_model.get_velocity(x, t, x_cond, patch_size=patch_size)
284
+
285
+ t_eval = torch.linspace(1.0, 0.0, steps + 1, device=x_init.device)
286
+ out = torchdiffeq.odeint(
287
+ drift_func, x_init, t_eval, method=method, atol=atol, rtol=rtol
288
+ )
289
+ return out[-1]
290
+
291
+
292
+ def main():
293
+ parser = argparse.ArgumentParser()
294
+ parser.add_argument("--config", type=str, required=True)
295
+ parser.add_argument("--resume", type=str, required=True)
296
+ parser.add_argument(
297
+ "--data_dir", type=str, default=None, help="Override data_dir in config"
298
+ )
299
+ parser.add_argument(
300
+ "--dataset", type=str, default=None, help="Override dataset name"
301
+ )
302
+ parser.add_argument("--steps", type=int, default=100)
303
+ parser.add_argument("--output", type=str, default="results/diff2flow")
304
+ parser.add_argument("--seed", type=int, default=61)
305
+ parser.add_argument(
306
+ "--patch_size", type=int, default=64, help="Patch size for model"
307
+ )
308
+ parser.add_argument(
309
+ "--method", type=str, default="dopri5", help="ODE solver method"
310
+ )
311
+ parser.add_argument(
312
+ "--atol", type=float, default=1e-4, help="Absolute tolerance for ODE solver"
313
+ )
314
+ parser.add_argument(
315
+ "--rtol", type=float, default=1e-4, help="Relative tolerance for ODE solver"
316
+ )
317
+ parser.add_argument(
318
+ "--flow_mode", type=str, default="vp", choices=["vp", "reflow"], help="Flow mode: vp (default) or reflow"
319
+ )
320
+ args = parser.parse_args()
321
+
322
+ # ... (Config loading)
323
+ with open(os.path.join("configs", args.config), "r") as f:
324
+ config_dict = yaml.safe_load(f)
325
+ config = dict2namespace(config_dict)
326
+
327
+ if args.data_dir:
328
+ config.data.data_dir = args.data_dir
329
+ if args.dataset:
330
+ config.data.dataset = args.dataset
331
+
332
+ device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
333
+ config.device = device
334
+
335
+ torch.manual_seed(args.seed)
336
+ np.random.seed(args.seed)
337
+
338
+ print("Initializing VPDiffusionFlow...")
339
+ flow = VPDiffusionFlow(args, config)
340
+ flow.load_ckpt(args.resume)
341
+
342
+ os.makedirs(args.output, exist_ok=True)
343
+
344
+ import datasets
345
+
346
+ print(f"Loading dataset {config.data.dataset}...")
347
+ DATASET = datasets.__dict__[config.data.dataset](config)
348
+ # Use parse_patches=False to get full images
349
+ _, val_loader = DATASET.get_loaders(
350
+ parse_patches=False,
351
+ validation=config.data.dataset if args.dataset else "raindrop",
352
+ )
353
+
354
+ for i, (x_batch, img_id) in enumerate(val_loader):
355
+ print(f"Processing image {img_id}...")
356
+
357
+ x_batch = x_batch.to(device)
358
+ # x_batch shape [1, 6, H, W] usually for full image due to concat in dataset?
359
+
360
+ x_cond = x_batch[:, :3, :, :] # Input
361
+ # x_target = x_batch[:, 3:, :, :] # GT
362
+
363
+ x_cond = utils.sampling.data_transform(x_cond)
364
+
365
+ B, C, H, W = x_cond.shape
366
+ x_init = torch.randn(B, 3, H, W, device=device)
367
+
368
+ print(f"Starting flow matching inference for image {img_id}, shape {H}x{W}...")
369
+ x_pred = ode_solve(
370
+ flow,
371
+ x_init,
372
+ x_cond,
373
+ steps=args.steps,
374
+ patch_size=args.patch_size,
375
+ method=args.method,
376
+ atol=args.atol,
377
+ rtol=args.rtol,
378
+ )
379
+
380
+ x_pred = utils.sampling.inverse_data_transform(x_pred)
381
+ x_cond_img = utils.sampling.inverse_data_transform(x_cond)
382
+
383
+ # Save
384
+ if isinstance(img_id, tuple) or isinstance(img_id, list):
385
+ idx = img_id[0]
386
+ else:
387
+ idx = img_id
388
+
389
+ utils.logging.save_image(
390
+ x_cond_img[0], os.path.join(args.output, f"{idx}_input.png")
391
+ )
392
+ utils.logging.save_image(
393
+ x_pred[0], os.path.join(args.output, f"{idx}_flow.png")
394
+ )
395
+
396
+ print("Done.")
397
+
398
+
399
+ if __name__ == "__main__":
400
+ main()
generate_reflow_pairs.py ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import os
3
+ import yaml
4
+ import torch
5
+ import torch.nn as nn
6
+ import numpy as np
7
+ import torchdiffeq
8
+ import utils
9
+ from diff2flow import VPDiffusionFlow, dict2namespace
10
+ import datasets
11
+ from tqdm import tqdm
12
+
13
+ def ode_inverse_solve(flow_model, x_data, x_cond, steps=100, method="dopri5", patch_size=64, atol=1e-5, rtol=1e-5):
14
+ """
15
+ Solves the ODE from t=0 (data) to t=1 (noise).
16
+ Returns x_1 (noise latent).
17
+ """
18
+ # Define the drift function wrapper for torchdiffeq
19
+ # For inversion, we integrate from 0 to 1.
20
+ # The drift v(x, t) is defined for t in [0, 1].
21
+
22
+ def drift_func(t, x):
23
+ # flow_model.get_velocity expects t in [0, 1]
24
+ # When using torchdiffeq, t will be traversing 0->1.
25
+ return flow_model.get_velocity(x, t, x_cond, patch_size=patch_size)
26
+
27
+ # Time points from 0 to 1
28
+ t_eval = torch.linspace(0.0, 1.0, steps + 1, device=x_data.device)
29
+
30
+ # Solve
31
+ out = torchdiffeq.odeint(
32
+ drift_func, x_data, t_eval, method=method, atol=atol, rtol=rtol
33
+ )
34
+ # Return final state at t=1
35
+ return out[-1]
36
+
37
+ def main():
38
+ parser = argparse.ArgumentParser()
39
+ parser.add_argument("--config", type=str, required=True)
40
+ parser.add_argument("--resume", type=str, required=True)
41
+ parser.add_argument("--data_dir", type=str, default=None)
42
+ parser.add_argument("--dataset", type=str, default=None)
43
+ parser.add_argument("--steps", type=int, default=100)
44
+ parser.add_argument("--output_dir", type=str, default="reflow_data")
45
+ parser.add_argument("--seed", type=int, default=61)
46
+ parser.add_argument("--patch_size", type=int, default=64)
47
+ parser.add_argument("--method", type=str, default="dopri5")
48
+ parser.add_argument("--atol", type=float, default=1e-5)
49
+ parser.add_argument("--rtol", type=float, default=1e-5)
50
+ parser.add_argument("--max_images", type=int, default=None, help="Max images to generate (for testing)")
51
+ args = parser.parse_args()
52
+
53
+ # Load Config
54
+ with open(os.path.join("configs", args.config), "r") as f:
55
+ config_dict = yaml.safe_load(f)
56
+ config = dict2namespace(config_dict)
57
+
58
+ if args.data_dir:
59
+ config.data.data_dir = args.data_dir
60
+ if args.dataset:
61
+ config.data.dataset = args.dataset
62
+
63
+ device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
64
+ config.device = device
65
+
66
+ # Reproducibility
67
+ torch.manual_seed(args.seed)
68
+ np.random.seed(args.seed)
69
+
70
+ # Load Model
71
+ print("Initializing VPDiffusionFlow...")
72
+ flow = VPDiffusionFlow(args, config)
73
+ flow.load_ckpt(args.resume)
74
+
75
+ os.makedirs(args.output_dir, exist_ok=True)
76
+
77
+ # Load Dataset
78
+ print(f"Loading dataset {config.data.dataset}...")
79
+ DATASET = datasets.__dict__[config.data.dataset](config)
80
+
81
+ # We use the TRAINING set to generate pairs for training the reflow model
82
+ train_loader, _ = DATASET.get_loaders(parse_patches=False, validation=config.data.dataset if args.dataset else 'raindrop')
83
+
84
+ # We want to iterate over training data. Note: get_loaders usually returns (train_loader, val_loader).
85
+ # RainDrop.get_loaders returns (train_loader, val_loader).
86
+ # train_loader usually parses patches = True for original training.
87
+ # But for generating full image pairs or consistent pairs, we might want full images or patching?
88
+ # The user asked for "very fast inference". If we train on patches, we can infer on patches (and then stitch).
89
+ # If we train on full images, that's better but memory intensive.
90
+ # The original training was likely on patches (RainDropDataset uses patch_size).
91
+ # For Reflow, we should probably train on PATCHES to match the original training distribution and efficiency.
92
+ # So let's use parse_patches=True for the loader to match training setup.
93
+
94
+ # However, to use `ode_inverse_solve`, we need to follow the flow.
95
+ # If we use patches, we can solve ODE for each patch independently.
96
+ # This is consistent.
97
+
98
+ # Re-get loaders with parse_patches=True to get training patches
99
+ train_loader, _ = DATASET.get_loaders(parse_patches=True)
100
+
101
+ print(f"Starting generation of reflow pairs...")
102
+
103
+ count = 0
104
+
105
+ # Iterate through training patches
106
+ for i, (x_batch, img_id) in enumerate(tqdm(train_loader, desc="Generating Reflow Pairs")):
107
+ # x_batch: [B, N, 6, H, W] if parse_patches=True
108
+ # Flatten B and N to process all patches
109
+ if x_batch.ndim == 5:
110
+ x_batch = x_batch.flatten(start_dim=0, end_dim=1)
111
+
112
+ input_img = x_batch[:, :3, :, :].to(device) # Input (Rainy)
113
+ gt_img = x_batch[:, 3:, :, :].to(device) # GT (Clean)
114
+
115
+ # Transform data to [-1, 1]
116
+ x_cond = utils.sampling.data_transform(input_img)
117
+ x_data = utils.sampling.data_transform(gt_img)
118
+
119
+ # Run ODE Inversion: x_data (t=0) -> x_noise (t=1)
120
+ # Note: patch_size argument in ode_inverse_solve usually used for stitching.
121
+ # Here x_data IS a patch (e.g. 64x64 or config size).
122
+ # So we can pass patch_size=None or just let it handle it.
123
+ # Our VPDiffusionFlow.get_velocity handles patching if x > patch_size.
124
+ # Here x is likely small.
125
+
126
+ with torch.no_grad():
127
+ x_noise = ode_inverse_solve(
128
+ flow,
129
+ x_data,
130
+ x_cond,
131
+ steps=args.steps,
132
+ method=args.method,
133
+ patch_size=args.patch_size,
134
+ atol=args.atol,
135
+ rtol=args.rtol
136
+ )
137
+
138
+ # Save pair (x_noise, x_cond, x_data)
139
+ # x_noise is the 'target' input for the reflow model (at t=1)
140
+ # x_data is the 'target' output (at t=0)
141
+ # x_cond is the condition
142
+
143
+ # We save this batch
144
+ batch_data = {
145
+ "x_noise": x_noise.cpu(),
146
+ "x_data": x_data.cpu(),
147
+ "x_cond": x_cond.cpu()
148
+ }
149
+
150
+ save_path = os.path.join(args.output_dir, f"batch_{i}.pth")
151
+ torch.save(batch_data, save_path)
152
+
153
+ print(f"Saved batch {i} to {save_path}")
154
+
155
+ count += input_img.shape[0]
156
+ if args.max_images and count >= args.max_images:
157
+ print(f"Reached max images {args.max_images}")
158
+ break
159
+
160
+ if __name__ == "__main__":
161
+ main()
results/diff2flow_full_image/0_rain_flow.png ADDED

Git LFS Details

  • SHA256: ca7bfa599a037a57561c76510b1e66d80d39b815e1c2a6910296e937fe54b3ad
  • Pointer size: 131 Bytes
  • Size of remote file: 622 kB
results/diff2flow_full_image/0_rain_input.png ADDED

Git LFS Details

  • SHA256: 39d113839d5877614e47b8b6a0b277e4a5674bc49a3ca149a6fd849cc451d30d
  • Pointer size: 131 Bytes
  • Size of remote file: 396 kB
results/diff2flow_full_image/10_rain_flow.png ADDED

Git LFS Details

  • SHA256: f58af231099d8e71ce79b2759767e32fc168bc531eff580c1031f236d1786941
  • Pointer size: 131 Bytes
  • Size of remote file: 557 kB
results/diff2flow_full_image/10_rain_input.png ADDED

Git LFS Details

  • SHA256: b4deddb3c8ae3d5d0f69489ed76b7a70abf97b3934e485aa50258f3cd3f317f6
  • Pointer size: 131 Bytes
  • Size of remote file: 323 kB
results/diff2flow_full_image/11_rain_flow.png ADDED

Git LFS Details

  • SHA256: bcad412dc65fb77c22abf456814def0d526c06ff54ccbf9130977fdbb43c8644
  • Pointer size: 131 Bytes
  • Size of remote file: 579 kB
results/diff2flow_full_image/11_rain_input.png ADDED

Git LFS Details

  • SHA256: 252cb7493ea8fabca1b1845ed4605425892097942c7e0486cc874f02bca4e13c
  • Pointer size: 131 Bytes
  • Size of remote file: 367 kB
results/diff2flow_full_image/12_rain_flow.png ADDED

Git LFS Details

  • SHA256: 47b275b0ccfdcf299339881cb9a2d1427a5e72a4e9aa1770a5b8cd681800f85d
  • Pointer size: 131 Bytes
  • Size of remote file: 606 kB
results/diff2flow_full_image/12_rain_input.png ADDED

Git LFS Details

  • SHA256: 3df4b9598121913a7466b2566c288751c13fbc55ebc73ae5a1adf3743a43ef23
  • Pointer size: 131 Bytes
  • Size of remote file: 493 kB
results/diff2flow_full_image/13_rain_flow.png ADDED

Git LFS Details

  • SHA256: 2bd49cee73389571eb1a483ddbc1f49dd8a2c6bb25444f6ecca0ac7eaed0e444
  • Pointer size: 131 Bytes
  • Size of remote file: 592 kB
results/diff2flow_full_image/13_rain_input.png ADDED

Git LFS Details

  • SHA256: 98ff22edea804e27c512ff33b95b964778f64dbbfc9803b1cdeb98911b0c0ee0
  • Pointer size: 131 Bytes
  • Size of remote file: 373 kB
results/diff2flow_full_image/14_rain_flow.png ADDED

Git LFS Details

  • SHA256: b55ab00270d0791b97c7aae9e0b79da4c6f34b41318672f74d6eceb742d023e6
  • Pointer size: 131 Bytes
  • Size of remote file: 696 kB
results/diff2flow_full_image/14_rain_input.png ADDED

Git LFS Details

  • SHA256: 0ba3473bb5d2bacbae881e3ff100c4ecfc0f88201b99d31e6a2ac4e569520a28
  • Pointer size: 131 Bytes
  • Size of remote file: 532 kB
results/diff2flow_full_image/15_rain_flow.png ADDED

Git LFS Details

  • SHA256: 1b263f2667fab4329900bfc57f25e881e06d359ff8aa85ad6af561980410bf1d
  • Pointer size: 131 Bytes
  • Size of remote file: 651 kB
results/diff2flow_full_image/15_rain_input.png ADDED

Git LFS Details

  • SHA256: 0aa14a8ddaad5ba506a50245010312bb08dbce72ca78770a982b40604be0bfdc
  • Pointer size: 131 Bytes
  • Size of remote file: 482 kB
results/diff2flow_full_image/16_rain_flow.png ADDED

Git LFS Details

  • SHA256: 9ba798f9958517ca7987f97096318e6b58ee51dcfe319b1684e86df313017eda
  • Pointer size: 131 Bytes
  • Size of remote file: 587 kB
results/diff2flow_full_image/16_rain_input.png ADDED

Git LFS Details

  • SHA256: a54153cf704b9e28b6fcf1d99bacdb3b006eba8a32c3ea565ac9584d28fc3692
  • Pointer size: 131 Bytes
  • Size of remote file: 429 kB
results/diff2flow_full_image/17_rain_flow.png ADDED

Git LFS Details

  • SHA256: c499e1c83e052e11ad72bc825f9b199a8b0a88e630cf99464b2bea98ac41c804
  • Pointer size: 131 Bytes
  • Size of remote file: 568 kB
results/diff2flow_full_image/17_rain_input.png ADDED

Git LFS Details

  • SHA256: 20c03e47dcba7e146f26dbbe10ec2d66f65713b6974aa88b1a50d530e3ad390e
  • Pointer size: 131 Bytes
  • Size of remote file: 387 kB
results/diff2flow_full_image/18_rain_flow.png ADDED

Git LFS Details

  • SHA256: 880dcd32611d5678e040d3e1c7ac41fef1029be169f12b2d965a35c8aa9e4e24
  • Pointer size: 131 Bytes
  • Size of remote file: 606 kB
results/diff2flow_full_image/18_rain_input.png ADDED

Git LFS Details

  • SHA256: a2c690eca0c3b365f2cec504edcd7677df5f17fdd70b394a45ee08c2c7e21de3
  • Pointer size: 131 Bytes
  • Size of remote file: 392 kB
results/diff2flow_full_image/19_rain_flow.png ADDED

Git LFS Details

  • SHA256: 9e9cc826e72362545cd1e9852689064e136e3142f20b84a75ea3cfac615adf5e
  • Pointer size: 131 Bytes
  • Size of remote file: 667 kB
results/diff2flow_full_image/19_rain_input.png ADDED

Git LFS Details

  • SHA256: b96e84403ae84e2f707a5a1b48fac10ec687bb521a4bd0eea531024ef3853655
  • Pointer size: 131 Bytes
  • Size of remote file: 577 kB
results/diff2flow_full_image/1_rain_flow.png ADDED

Git LFS Details

  • SHA256: a1ea2891751cb98b13fdc0986de8d5445aa5d824ee469d045407a40032b56747
  • Pointer size: 131 Bytes
  • Size of remote file: 679 kB
results/diff2flow_full_image/1_rain_input.png ADDED

Git LFS Details

  • SHA256: ca6b62a56297c7b5a003cf66e5ace606f64c8303fb9e1eda10b6e6c1a5faac00
  • Pointer size: 131 Bytes
  • Size of remote file: 517 kB
results/diff2flow_full_image/20_rain_flow.png ADDED

Git LFS Details

  • SHA256: 3ac9486d2d7b5c8e916ed5b27902ebeb9d8e32e86bb72516e77afd5b12f40e9d
  • Pointer size: 131 Bytes
  • Size of remote file: 728 kB
results/diff2flow_full_image/20_rain_input.png ADDED

Git LFS Details

  • SHA256: b15ea114a6f60a0e11e8e6777c1a5c35b9c85f52f7ad2517509399c99e1a9184
  • Pointer size: 131 Bytes
  • Size of remote file: 609 kB
results/diff2flow_full_image/21_rain_flow.png ADDED

Git LFS Details

  • SHA256: 1b5006200b39163f6da7570979c4cb3642d2943b62837bbf2564528627cc94d1
  • Pointer size: 131 Bytes
  • Size of remote file: 648 kB
results/diff2flow_full_image/21_rain_input.png ADDED

Git LFS Details

  • SHA256: 14fd4baff5036376daf0b83984eba9f33b6edf9d1faae67718fc93f8142cf84f
  • Pointer size: 131 Bytes
  • Size of remote file: 512 kB
results/diff2flow_full_image/22_rain_flow.png ADDED

Git LFS Details

  • SHA256: d2c94fd37bd6b54c531f8fe152d317f332b41445df4fbcdfd52f2b440e879415
  • Pointer size: 131 Bytes
  • Size of remote file: 681 kB
results/diff2flow_full_image/22_rain_input.png ADDED

Git LFS Details

  • SHA256: 7937cc67796f15e85b6ae12ab13b71eec43126cd4fd9426a10cf3aabbae3ed48
  • Pointer size: 131 Bytes
  • Size of remote file: 515 kB
results/diff2flow_full_image/23_rain_flow.png ADDED

Git LFS Details

  • SHA256: 6eda5e9ce1935292394d61878288908efed8a7e990a6b197ce12e88b9f71bfe2
  • Pointer size: 131 Bytes
  • Size of remote file: 634 kB
results/diff2flow_full_image/23_rain_input.png ADDED

Git LFS Details

  • SHA256: d72421d76a15fca7e9b27656a21b250634acd7c284197fa3277a33402ac7dc39
  • Pointer size: 131 Bytes
  • Size of remote file: 479 kB
results/diff2flow_full_image/24_rain_flow.png ADDED

Git LFS Details

  • SHA256: d87f77044cef7a540b06358fe27d782218a2701f2a6d010d30c5502f22ee827b
  • Pointer size: 131 Bytes
  • Size of remote file: 693 kB
results/diff2flow_full_image/24_rain_input.png ADDED

Git LFS Details

  • SHA256: 710e76a693f89c0f179fc6a95582f196568d3967a50e1bea3047e472c1caa07d
  • Pointer size: 131 Bytes
  • Size of remote file: 529 kB
results/diff2flow_full_image/25_rain_flow.png ADDED

Git LFS Details

  • SHA256: 6180517e78f5ce9c127acc89398f74e041eb0171f853a456f73de123533a8d34
  • Pointer size: 131 Bytes
  • Size of remote file: 633 kB
results/diff2flow_full_image/25_rain_input.png ADDED

Git LFS Details

  • SHA256: 4e6361ca9277281df0996f1a35e0d0c1638fb41e00eb7194bdc6fa8fa2fb36b0
  • Pointer size: 131 Bytes
  • Size of remote file: 475 kB
results/diff2flow_full_image/26_rain_flow.png ADDED

Git LFS Details

  • SHA256: dfb1d9f1345728605cb9bfbe406f77ddd9e48223da24c046cb1acee3e48454ae
  • Pointer size: 131 Bytes
  • Size of remote file: 635 kB
results/diff2flow_full_image/26_rain_input.png ADDED

Git LFS Details

  • SHA256: 122525ebebe8eacf09d0bd11cb389834a699c8549304b710264ba6287627299b
  • Pointer size: 131 Bytes
  • Size of remote file: 466 kB
results/diff2flow_full_image/27_rain_flow.png ADDED

Git LFS Details

  • SHA256: a21d1cf22547deb9d98273811df5826c44f13c40ff8390da5a93779b6e6cda06
  • Pointer size: 131 Bytes
  • Size of remote file: 600 kB
results/diff2flow_full_image/27_rain_input.png ADDED

Git LFS Details

  • SHA256: 8b07f75cbb97dfaaea354275fd12003920c51e5ff231d41914b6958f3c197c41
  • Pointer size: 131 Bytes
  • Size of remote file: 454 kB
results/diff2flow_full_image/28_rain_flow.png ADDED

Git LFS Details

  • SHA256: 835a752199642fc2c0fd24a0c1e7d0194d1aa66714d4515ee60ab5182ea327eb
  • Pointer size: 131 Bytes
  • Size of remote file: 620 kB
results/diff2flow_full_image/28_rain_input.png ADDED

Git LFS Details

  • SHA256: 3ec7bef32f1bb7d2b2fbd613d1837d04166572da9217fecb3256dcc6f3f411b1
  • Pointer size: 131 Bytes
  • Size of remote file: 432 kB
results/diff2flow_full_image/29_rain_flow.png ADDED

Git LFS Details

  • SHA256: 846439aa1dc2eeccba705b1844c14ef03f604c4bdac0d4addb72d6a4f8ef76dc
  • Pointer size: 131 Bytes
  • Size of remote file: 757 kB
results/diff2flow_full_image/29_rain_input.png ADDED

Git LFS Details

  • SHA256: 531a5e00f8174a01dbb2e6fdbe8bce64ee94041ab62a6ded9ec14f7385989c10
  • Pointer size: 131 Bytes
  • Size of remote file: 686 kB
results/diff2flow_full_image/2_rain_flow.png ADDED

Git LFS Details

  • SHA256: 6e1764586426beacf8501886fe7f15b7b35506513e7d71569396b1578ed09f19
  • Pointer size: 131 Bytes
  • Size of remote file: 652 kB
results/diff2flow_full_image/2_rain_input.png ADDED

Git LFS Details

  • SHA256: 12e235a403f70b0522240bcfcaf406ade232f912129d549fe23a037c14382080
  • Pointer size: 131 Bytes
  • Size of remote file: 489 kB
results/diff2flow_full_image/30_rain_flow.png ADDED

Git LFS Details

  • SHA256: 54cd5a9acf36064dce86ed10cfa95610647eefa5130eb59af3de2039588bb7d2
  • Pointer size: 131 Bytes
  • Size of remote file: 622 kB