azavea / raster-vision

An open source library and framework for deep learning on satellite and aerial imagery.
https://docs.rastervision.io
Other
2.07k stars 386 forks source link

Research computer vision libraries #471

Closed lewfish closed 6 years ago

lewfish commented 6 years ago

We'd like to create a new backend for one of the tasks using a user-friendly deep learning computer vision library. Research https://gluon-cv.mxnet.io/ and https://github.com/chainer/chainercv. To see if this is generally a good idea and help make a decision about which library to use read documentation for the libraries and take some notes (bullet points are good). Especially pay attention to:

lewfish commented 6 years ago
lewfish commented 6 years ago
nholeman commented 6 years ago

My choice: GluonCV. Here's why:

Comparison

GluonCV ChainerCV
Installation MXNet numpy, chainer, pillow, cython
for extra funcionality: chainerMN, matplotlib, OpenCV, and SciPy
Community Current version: 0.3.0
Last update: < 1 week ago
Popularity: 164 Forks, 896 Stars, 125k downloads
No. Contributors: 26
License: Apache-2.
active discussion forum
Current version: 0.10.0
Last update: < 1 week ago
Popularity: 179 Forks, 832 Stars
No. Contributors: 19
License: MIT.
Documentation Large, better organized than ChainerCV Large, more in volume than GluonCV
Custom Dataset Due to MXNet convention, recommended to use LST files, which are plain text list files to store labels.
Supports deriving from PASCAL VOC format
ChainerCV Experimental: GetterDataset
Config Model/Training straight-forward straight-forward
Training training done with gluon.utils training is done directly with Chainer
Make Prediction Easy Easy
API Flexibility Supports image classification, object detection, and semantic segmentation, and instance segmentation Supports image classification, object detection, semantic segmentation, and instance segmentation
ChainerCV's implementation was in an academic setting for a competition. As such, it seems to be less flexible overall than GluonCV, which is more of a developed product.
Model Variety CIFAR: 10 models
ImageNet: 5 models
SSD: 11 models
FasterRCNN: 3 models
YOLOv3: 3 models
Mask RCNN: 1 model
FCN: 5 models
PSPNet: 4 models
DeepLabV3: 4 models
Classification:
VGG16
ResNet50
ResNet101
ResNet152
Detection:
Faster R-CNN
SSD300
SSD512
YOLOv2
YOLOv3
Semantic Segmentation:
SegNet
PSPNet
CPU/GPU yes yes
Library Maturity project began Feb 2018 began 2018
Stop/Resume training yes no
Log output yes no

Other Thoughts GluonCV: GluonCV’s documentation is more organized and more production-ready than ChainerCV. ChainerCV: Some useful modules in ChainerCV (like creating your own dataset) are WIPs for Chainer and will be removed from ChainerCV when they are fully developed. If any of these modules are used, Raster Vision will have to refactor once they are moved into Chainer.

Conclusion Overall, ChainerCV was easier for me to get up and running. However, as I used these tools more, I became more convinced that GluonCV is better-equipped to be used in a flexible plugin for Raster Vision. GluonCV has better-organized documentation, more avenues for discussion (forum and GitHub issues), and features that won't be deprecated later (like Chainer's WIP modules that are currently ChainerCV features).

lewfish commented 6 years ago

GluonCV it is!