File size: 5,927 Bytes
da19665 85a27e0 da19665 85a27e0 da19665 ea4ac47 da19665 af3dd88 da19665 ea4ac47 da19665 69ad792 bbe6825 da19665 69ad792 da19665 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# Nanodet
Nanodet: NanoDet is a FCOS-style one-stage anchor-free object detection model which using Generalized Focal Loss as classification and regression loss.In NanoDet-Plus, we propose a novel label assignment strategy with a simple assign guidance module (AGM) and a dynamic soft label assigner (DSLA) to solve the optimal label assignment problem in lightweight model training.
**Note**:
- This version of nanodet: Nanodet-m-plus-1.5x_416
- `object_detection_nanodet_2022nov_int8bq.onnx` represents the block-quantized version in int8 precision and is generated using [block_quantize.py](../../tools/quantize/block_quantize.py) with `block_size=64`.
## Demo
### Python
Run the following command to try the demo:
```shell
# detect on camera input
python demo.py
# detect on an image
python demo.py --input /path/to/image -v
```
Note:
- image result saved as "result.jpg"
### C++
Install latest OpenCV and CMake >= 3.24.0 to get started with:
```shell
# A typical and default installation path of OpenCV is /usr/local
cmake -B build -D OPENCV_INSTALLATION_PATH=/path/to/opencv/installation .
cmake --build build
# detect on camera input
./build/opencv_zoo_object_detection_nanodet
# detect on an image
./build/opencv_zoo_object_detection_nanodet -i=/path/to/image
# get help messages
./build/opencv_zoo_object_detection_nanodet -h
```
## Results
Here are some of the sample results that were observed using the model,


Check [benchmark/download_data.py](../../benchmark/download_data.py) for the original images.
Video inference result,

## Model metrics:
The model is evaluated on [COCO 2017 val](https://cocodataset.org/#download). Results are showed below:
<table>
<tr><th>Average Precision </th><th>Average Recall</th></tr>
<tr><td>
| area | IoU | Average Precision(AP) |
|:-------|:------|:------------------------|
| all | 0.50:0.95 | 0.304 |
| all | 0.50 | 0.459 |
| all | 0.75 | 0.317 |
| small | 0.50:0.95 | 0.107 |
| medium | 0.50:0.95 | 0.322 |
| large | 0.50:0.95 | 0.478 |
</td><td>
area | IoU | Average Recall |
|:-------|:------|:----------------|
| all | 0.50:0.95 | 0.278 |
| all | 0.50:0.95 | 0.434 |
| all | 0.50:0.95 | 0.462 |
| small | 0.50:0.95 | 0.198 |
| medium | 0.50:0.95 | 0.510 |
| large | 0.50:0.95 | 0.702 |
</td></tr> </table>
| class | AP50 | mAP | class | AP50 | mAP |
|:--------------|:-------|:------|:---------------|:-------|:------|
| person | 67.5 | 41.8 | bicycle | 35.4 | 18.8 |
| car | 45.0 | 25.4 | motorcycle | 58.9 | 33.1 |
| airplane | 77.3 | 58.9 | bus | 68.8 | 56.4 |
| train | 81.1 | 60.5 | truck | 38.6 | 24.7 |
| boat | 35.5 | 16.7 | traffic light | 30.5 | 14.0 |
| fire hydrant | 69.8 | 54.5 | stop sign | 60.9 | 54.6 |
| parking meter | 55.1 | 38.5 | bench | 26.8 | 15.9 |
| bird | 38.3 | 23.6 | cat | 82.5 | 62.1 |
| dog | 67.0 | 51.4 | horse | 64.3 | 44.2 |
| sheep | 57.7 | 35.8 | cow | 61.2 | 39.9 |
| elephant | 79.9 | 56.2 | bear | 81.8 | 63.0 |
| zebra | 85.4 | 59.5 | giraffe | 84.1 | 59.9 |
| backpack | 12.4 | 5.9 | umbrella | 46.5 | 28.8 |
| handbag | 8.4 | 3.7 | tie | 35.2 | 19.6 |
| suitcase | 38.1 | 23.8 | frisbee | 60.7 | 43.9 |
| skis | 30.5 | 14.5 | snowboard | 32.3 | 18.2 |
| sports ball | 37.6 | 24.5 | kite | 51.1 | 30.4 |
| baseball bat | 28.9 | 13.6 | baseball glove | 40.1 | 21.6 |
| skateboard | 59.4 | 35.2 | surfboard | 47.9 | 26.6 |
| tennis racket | 55.2 | 30.5 | bottle | 34.7 | 20.2 |
| wine glass | 27.8 | 16.3 | cup | 35.5 | 23.7 |
| fork | 25.9 | 14.8 | knife | 10.9 | 5.6 |
| spoon | 8.7 | 4.1 | bowl | 42.8 | 29.4 |
| banana | 35.5 | 18.5 | apple | 19.4 | 12.9 |
| sandwich | 46.7 | 33.4 | orange | 35.2 | 25.9 |
| broccoli | 36.4 | 19.1 | carrot | 30.9 | 17.8 |
| hot dog | 42.7 | 29.3 | pizza | 61.0 | 44.9 |
| donut | 47.3 | 34.0 | cake | 39.9 | 24.4 |
| chair | 28.8 | 16.1 | couch | 60.5 | 42.6 |
| potted plant | 29.0 | 15.3 | bed | 63.3 | 46.0 |
| dining table | 39.6 | 27.5 | toilet | 71.3 | 55.3 |
| tv | 66.5 | 48.1 | laptop | 62.6 | 46.9 |
| mouse | 63.5 | 44.1 | remote | 19.8 | 10.3 |
| keyboard | 62.1 | 41.5 | cell phone | 33.7 | 22.8 |
| microwave | 54.9 | 39.6 | oven | 48.1 | 30.4 |
| toaster | 30.0 | 16.4 | sink | 44.5 | 27.8 |
| refrigerator | 63.2 | 46.1 | book | 18.4 | 7.3 |
| clock | 57.8 | 35.8 | vase | 33.7 | 22.1 |
| scissors | 27.8 | 17.8 | teddy bear | 54.1 | 35.4 |
| hair drier | 2.9 | 1.1 | toothbrush | 13.1 | 8.2 |
## License
All files in this directory are licensed under [Apache 2.0 License](./LICENSE).
#### Contributor Details
- Google Summer of Code'22
- Contributor: Sri Siddarth Chakaravarthy
- Github Profile: https://github.com/Sidd1609
- Organisation: OpenCV
- Project: Lightweight object detection models using OpenCV
## Reference
- Nanodet: https://zhuanlan.zhihu.com/p/306530300
- Nanodet Plus: https://zhuanlan.zhihu.com/p/449912627
- Nanodet weight and scripts for training: https://github.com/RangiLyu/nanodet
|