Add ability to use different Objectdetection models than FasterRCNN
🚀 Feature
It would be good to be able to use more up to date models than FasterRCNN in raster-vision. Torchvision offers some possible dropin replacements / alternatives like RetinaNet or SSD based detectors.
Motivation
More up to date models promise better performance at lower GPU needs.
Pitch
The object_detection_learner in raster-vision should be able to accept a configuration parameter which allows a different model to be used, as written above.
Alternatives
The user could do this manually in the code, but this is not very scaleable and unclear how many manual changes are needed.
Additional context
I agree that it would be useful to support other TorchVision object detection models. Adding something like an architecture field to ObjectDetectionModelConfig and then modifying ObjectDetectionModelConfig.build_default_model() might be the way to go.
That said, one way to do this without any changes to RV is to use the workaround described here: https://github.com/azavea/raster-vision/blob/3eb3ff1f8326a008460b9b37359950b552ea7bce/rastervision_pytorch_backend/rastervision/pytorch_backend/examples/object_detection/cowc_potsdam.py#L143-L180
You'll need to fork the torchvision repo and create a branch with hubconf.py modified like this: https://github.com/AdeelH/vision/blob/356a78a894acf2a377353a4cdb2df52c1cea84b4/hubconf.py#L68-L72