Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +464 -0
- diff2flow.py +400 -0
- generate_reflow_pairs.py +161 -0
- results/diff2flow_full_image/0_rain_flow.png +3 -0
- results/diff2flow_full_image/0_rain_input.png +3 -0
- results/diff2flow_full_image/10_rain_flow.png +3 -0
- results/diff2flow_full_image/10_rain_input.png +3 -0
- results/diff2flow_full_image/11_rain_flow.png +3 -0
- results/diff2flow_full_image/11_rain_input.png +3 -0
- results/diff2flow_full_image/12_rain_flow.png +3 -0
- results/diff2flow_full_image/12_rain_input.png +3 -0
- results/diff2flow_full_image/13_rain_flow.png +3 -0
- results/diff2flow_full_image/13_rain_input.png +3 -0
- results/diff2flow_full_image/14_rain_flow.png +3 -0
- results/diff2flow_full_image/14_rain_input.png +3 -0
- results/diff2flow_full_image/15_rain_flow.png +3 -0
- results/diff2flow_full_image/15_rain_input.png +3 -0
- results/diff2flow_full_image/16_rain_flow.png +3 -0
- results/diff2flow_full_image/16_rain_input.png +3 -0
- results/diff2flow_full_image/17_rain_flow.png +3 -0
- results/diff2flow_full_image/17_rain_input.png +3 -0
- results/diff2flow_full_image/18_rain_flow.png +3 -0
- results/diff2flow_full_image/18_rain_input.png +3 -0
- results/diff2flow_full_image/19_rain_flow.png +3 -0
- results/diff2flow_full_image/19_rain_input.png +3 -0
- results/diff2flow_full_image/1_rain_flow.png +3 -0
- results/diff2flow_full_image/1_rain_input.png +3 -0
- results/diff2flow_full_image/20_rain_flow.png +3 -0
- results/diff2flow_full_image/20_rain_input.png +3 -0
- results/diff2flow_full_image/21_rain_flow.png +3 -0
- results/diff2flow_full_image/21_rain_input.png +3 -0
- results/diff2flow_full_image/22_rain_flow.png +3 -0
- results/diff2flow_full_image/22_rain_input.png +3 -0
- results/diff2flow_full_image/23_rain_flow.png +3 -0
- results/diff2flow_full_image/23_rain_input.png +3 -0
- results/diff2flow_full_image/24_rain_flow.png +3 -0
- results/diff2flow_full_image/24_rain_input.png +3 -0
- results/diff2flow_full_image/25_rain_flow.png +3 -0
- results/diff2flow_full_image/25_rain_input.png +3 -0
- results/diff2flow_full_image/26_rain_flow.png +3 -0
- results/diff2flow_full_image/26_rain_input.png +3 -0
- results/diff2flow_full_image/27_rain_flow.png +3 -0
- results/diff2flow_full_image/27_rain_input.png +3 -0
- results/diff2flow_full_image/28_rain_flow.png +3 -0
- results/diff2flow_full_image/28_rain_input.png +3 -0
- results/diff2flow_full_image/29_rain_flow.png +3 -0
- results/diff2flow_full_image/29_rain_input.png +3 -0
- results/diff2flow_full_image/2_rain_flow.png +3 -0
- results/diff2flow_full_image/2_rain_input.png +3 -0
- 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
|
results/diff2flow_full_image/0_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/10_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/10_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/11_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/11_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/12_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/12_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/13_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/13_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/14_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/14_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/15_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/15_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/16_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/16_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/17_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/17_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/18_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/18_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/19_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/19_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/1_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/1_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/20_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/20_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/21_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/21_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/22_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/22_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/23_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/23_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/24_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/24_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/25_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/25_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/26_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/26_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/27_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/27_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/28_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/28_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/29_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/29_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/2_rain_flow.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/2_rain_input.png
ADDED
|
Git LFS Details
|
results/diff2flow_full_image/30_rain_flow.png
ADDED
|
Git LFS Details
|