Implement RetinaNet for Object Detection
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.1k
- Forks
- 385
- PR merge metrics
- No merged PRs in 30d
Description
I see no reason why we can't implement object detection into robosat for specific use-cases.
The pre-processing and post-processing needs to be slightly adapted to work with bounding boxes but otherwise we can re-use probably 90% of what's already there.
This ticket tracks the task of implementing RetinaNet as an object detection architecture:
- https://arxiv.org/abs/1612.03144 - Feature Pyramid Networks for Object Detection
- https://arxiv.org/abs/1708.02002 - Focal Loss for Dense Object Detection
RetinaNet because it is an state of the art single-shot object detection architecture following our 80/20 philosophy where we favor simplicity and maintainability, and focus on the 20% of the causes responsible for 80% of the effects. It's simple, elegant and on par with the complex Faster-RCNN wrt. accuracy and runtime.
Here are the three basic ideas; please read the papers for in-depth details:
- Use a feature pyramid network (FPN) as a backbone. FPNs augment backbone's like ResNet adding top-down and lateral connections (a bit similar to what the u-net is doing) to handle features at multiple scales.
- On top of a FPN build two heads: one for object classification and one for bounding box regression. Have in the order of ~100k bounding boxes.
- Use focal loss because the ratio between positive bounding boxes and negative bounding boxes is very skewed. Focal loss allows us to adapt the standard cross entropy loss reducing the loss for easy samples (based on confidence).
Focal Loss

Feature Pyramid Network (FPN)

RetinaNet

Tasks
- Read the fpn paper
- Read the focal loss paper
- Implement FPN
- Implement RetinaNet
- Spec out and handle differences in pre and post-processing
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked Feature Pyramid Networks and Focal Loss papers, then inspect the existing pre-processing and post-processing paths that can be reused. Define and implement the FPN, RetinaNet classification and box-regression heads, focal loss, and bounding-box handling; done means the architecture and adapted processing are implemented and usable for object detection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- computer-vision, machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100