Open ocourtin opened 5 years ago
Incredible! I need a few days to come back here and to go through this; putting it on my backlog.
@daniel-j-h OK, ping me when you will be available to begin the review. In the meantime i keep working and pushing related stuff in this branch.
From your previous code review, i've performed some new improvements, to take some of your comments in account, and keep on to the tools refactoring.
Compare:
Subset:
Web UI:
Generalize the previous leaflet concept, to become more abstract:
Allow now to choose among several templates, including in userland.
The GeoJSON selected tiles (i.e grid), is separated from the HTML, and as Compare tool could produce geojson too, they could so be combined.
Add a new Web UI tool, for compare in side mode. Allow a prev/next efficient navigation. Allow also to select tiles, and to grap selection as a cover in the clipboard.
Features and Extract dynamics handlers:
Colors:
Handle all CSS3 colors (and not only a small subset) and allow also hex pattern #RRGGBB. Use to do so the webcolors package.
Labels use complementary color (from color class defined in dataset file) in order to create nice stack visual result with compare tool.
Few little things:
So any new comments welcome :)
Hi @ocourtin and @daniel-j-h I'm glad to see this amazing merge request! I wanted to ask if there's any progress on this and if there are any blockers left for a merge? The discussion seems to be stalled.
Hi @DavidDohmen ! Current dev, including this PR, and lot more enhancements, continue right now on RoboSat.pink fork.
GitHub: https://github.com/datapink/robosat.pink (use the master till the coming 0.4.0 release) Gitter Chat: https://gitter.im/RoboSatPink
I let @daniel-j-h answers if there's a way to resume devs in this repo.
Thanks for your quick answer and pointing me in the right direction! I will look into this!
A) MultiBands aka #56
Nota: still to explore alternate NN topology to deal with multibands for example, where extra bands are copied on each Encoder layers (and not only on the first one, as in this PR): cf: https://hal.archives-ouvertes.fr/hal-01523573/document
Data Augmentation
B) Tools:
Download:
Use and improve Log handling (e.g giving more information on already downloaded tiles)
Cover:
Add ability to render a cover from a lat/lon bbox, or from a slippy map directory (as a consequence the features parameter become optional)
Predict:
model parameter is not mandatory anymore (as we use cuda if CUDA_VISIBLE_DEVICES not empty)
Compare:
Full refactor, Compare tool now allow 3 differents modes:
Tile:
Add a first tiling tool implementation, to tile either images or labels from a raster, performances are decents for a mono process stuff, and it's able to deal with no_data borders (by removing the related tiles)
Rasterize:
Use and improve Log handling
Predict, Subset, Download, Rasterize, Compare, Masks, Tile:
C) Maintenance:
Bugfixes
Fix a ZeroDiv issue, who was still remaning in mIoU metrics
Performances
Switch from Pillow to Pillow-simd (cf https://github.com/uploadcare/pillow-simd) Imply recent Intel/AMD proc, but significant perf improvements on PIL treatment stuff (about x6) Nota: didn't see a significative difference for RoboSat use case beetwen SSE4 and AVX2 (i.e SSE4 is 'enough')
Versions stuff
nn.functional.sample -> nn.functional.interpolate (to avoid 0.4.1 related warning)
Credits
D) Userland considerations:
NOTES:
Could you Daniel give me a hint how the robosat unit tests are supposed to be launched ? It still remains to me unclear, and did'nt yet investigate, on it.
Was developped (and so tested) on Cuda 9.2/PyTorch 0.4.1 (single and multi GPU) and also quickly cheked on a single GPU Cuda 10/PyTorch 1.0 Nightly build. CPU only, have barely not been tested at this point.
Dockers cpu and gpu have not been tested at all (cf pillow-simd stuff)
Didn't yet find an easy/efficient way to deal with PNG Palette with OpenCV2. Could leads to remove Pillow, as OpenCV2 is faster.
Code concision is kept with less than ~400 additionnal lines, in the codebase, for this whole PR ^^
Thanks in advance Daniel for the coming code review :)