Skip to content

Commit 24469e8

Browse files
authored
Create README.md
1 parent e7c6c7d commit 24469e8

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Rotated-Object-Detection
2+
Tiny ResNet inspired FPN network (<2M params) for Rotated Object Detection using 5-parameter Modulated Rotation Loss
3+
4+
### Crux
5+
* **Architecture**: FPN with classification and regression heads ~1.9M paramters
6+
* **Loss Function**: 5 Parameter Modulated Rotation Loss
7+
* **Activation**: Mish
8+
* **Model Summary** - *reports/FPN_torchsummary.txt* (reports/ also contain alterantive summary with named layers in table)
9+
* **Training Script** - *src/train.py*
10+
* **Final Model Weights** - *src/checkpoints/model_93_ap.pt*
11+
* **Python Deps. and version** - *requirements.txt*
12+
* **Evaluation** - *src/main.py*
13+
14+
15+
### Method
16+
* The reported results are using a ResNet inspired building block modules and a FPN.
17+
* Separate classification and regression subnets (single FC) are used.
18+
* Feature map from the top of the pyramid which has the best semantic representation is used for classifcation.
19+
* While the finer feature map at the bottom of the pyramid which has best global representation is used for regressing the rotated bounding box. Finer details can be found in the code as comments. Code: *src/models/detector_fpn.py*
20+
21+
* The whole implementation is from scratch, in PyTorch. Only the method for calculating AP from PR curves is borrowed and referenced (*src/metrics.py/compute_ap*).
22+
23+
### Approach
24+
1. (Confidential) Random data generator that creates images with high noise and rotated objects (shapes) in random scales and orientations
25+
2. Compare reusing generated samples for each epoch vs online generating and loading
26+
3. Implement modulated rotated loss and other metrics
27+
4. Experiment with loss functions and activations
28+
5. Tried to replace standard conv layers with ORN (Oriented Response Network) which use rotated filters to learn orientation (Could not integrate due to technical challenges)
29+
6. Improve basic model to use different heads for classification and regression
30+
7. Try variations by removing 512 dimensional filters as they take up the most parameters (~1M)
31+
8. Add feature pyramid and experiment with different building blocks and convolutional parameters (kernel size, stride in the first layer plays a big role)
32+
9. Streamline parameters in the building blocks, prediciton heads to be lower than 2M
33+
34+
* **Please find the rest of the report, with details on experiments and analysis, in** *reports/experiments.pdf*
35+
36+
### Opportunities to improve
37+
1. Use the rest of the pyramid layers for prediction (take more parameters) and have better logic to get best detection
38+
2. Integrate ORN layers to FPN
39+
3. Using DenseNets with compact convolution layer configurations

0 commit comments

Comments
 (0)