# Use POT to Quantize SSD Moilent V1 Public Model
###### tags: `POT`
## Use OpenVINO dockerhub image
```
docker run -it -v ~/Downloads:/mnt --rm openvino/ubuntu20_data_dev:latest
```
## Run Accuracy Checker and POT
In ubuntu20_data_dev docker image,
#### 1. Download ssd_mobilenet_v1_coco
python3 /opt/intel/openvino_2021.3.394/deployment_tools/tools/model_downloader/downloader.py -o /home/openvino/openvino_models --name ssd_mobilenet_v1_coco
#### 2. Convert ssd_mobilenet_v1_coco to IR
python3 /opt/intel/openvino_2021.3.394/deployment_tools/tools/model_downloader/converter.py -d /home/openvino/openvino_models -o /home/openvino/openvino_models --name ssd_mobilenet_v1_coco
#### 3. Run Accuracy Checker on ssd_mobilenet_v1_coco
accuracy_check -c ssd_mobilenet_v1_coco-int8.yml -m openvino_models/public/ssd_mobilenet_v1_coco/FP16/
#### 4. Run POT on ssd_mobilenet_v1_coco
rm mscoco_det_91.*
pot -c ssd_mobilenet_v1_coco-int8.json
#### 5. Copy ssd_mobilenet_v1_coco FP16-INT8 IR
mkdir /home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16-INT8/
cp -ar results/ssd_mobilenet_v1_coco_DefaultQuantization/2021-04-20_00-02-37/optimized/* /home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16-INT8/
## Reference
```
drwxrwxrwx 1 openvino openvino 4096 May 24 03:32 coco_dataset
-rw-r--r-- 1 openvino openvino 1389 May 24 03:57 mscoco_det_91.json
-rw-r--r-- 1 openvino openvino 4048482 May 24 03:57 mscoco_det_91.pickle
drwxr-xr-x 3 openvino openvino 4096 May 24 03:26 openvino_models
drwxr-xr-x 3 openvino openvino 4096 May 24 03:49 results
-rw-r--r-- 1 openvino openvino 656 May 24 03:44 ssd_mobilenet_v1_coco-int8.json
-rw-r--r-- 1 openvino openvino 763 May 24 03:38 ssd_mobilenet_v1_coco-int8.yml
```
Note : Copy openvino_models foler to /mnt folder. They will be accessable in ~/Downloads folder in the host and /mnt in the container.
### ssd_mobilenet_v1_coco-int8.yml
```
models:
- name: ssd_mobilenet_v1_coco
launchers:
- framework: dlsdk
device: CPU
adapter: ssd
datasets:
- name: ms_coco_detection_91_classes
annotation_conversion:
converter: mscoco_detection
annotation_file: /home/openvino/coco_dataset/annotations/instances_val2017.json
has_background: True
sort_annotations: True
use_full_label_map: True
annotation: mscoco_det_91.pickle
dataset_meta: mscoco_det_91.json
data_source: /home/openvino/coco_dataset/val2017
preprocessing:
- type: resize
size: 300
postprocessing:
- type: resize_prediction_boxes
metrics:
- type: coco_precision
```
### ssd_mobilenet_v1_coco-int8.json
```
{
"model": {
"model_name": "ssd_mobilenet_v1_coco",
"model": "/home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16/ssd_mobilenet_v1_coco.xml",
"weights": "/home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16/ssd_mobilenet_v1_coco.bin"
},
"engine": {
"config": "/home/openvino/ssd_mobilenet_v1_coco-int8.yml"
},
"compression": {
"algorithms": [
{
"name": "DefaultQuantization",
"params": {
"preset": "performance",
"stat_subset_size": 100
}
}
]
}
}
```
### accuracy_checker log
```
accuracy_check -c /mnt/ssd_mobilenet_v1_coco-int8.yml -m /home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16/
Processing info:
model: ssd_mobilenet_v1_coco
launcher: dlsdk
device: CPU
dataset: ms_coco_detection_91_classes
OpenCV version: 4.5.2-openvino
Annotation conversion for ms_coco_detection_91_classes dataset has been started
Parameters to be used for conversion:
converter: mscoco_detection
annotation_file: /home/openvino/coco_dataset/annotations/instances_val2017.json
has_background: True
sort_annotations: True
use_full_label_map: True
Total annotations size: 5000
100 / 5000 processed in 0.502s
200 / 5000 processed in 0.456s
300 / 5000 processed in 0.443s
400 / 5000 processed in 0.436s
500 / 5000 processed in 0.433s
600 / 5000 processed in 0.432s
700 / 5000 processed in 0.429s
800 / 5000 processed in 0.428s
900 / 5000 processed in 0.428s
1000 / 5000 processed in 0.429s
1100 / 5000 processed in 0.433s
1200 / 5000 processed in 0.438s
1300 / 5000 processed in 0.467s
1400 / 5000 processed in 0.466s
1500 / 5000 processed in 0.453s
1600 / 5000 processed in 0.448s
1700 / 5000 processed in 0.445s
1800 / 5000 processed in 0.442s
1900 / 5000 processed in 0.440s
2000 / 5000 processed in 0.438s
2100 / 5000 processed in 0.442s
2200 / 5000 processed in 0.438s
2300 / 5000 processed in 0.439s
2400 / 5000 processed in 0.439s
2500 / 5000 processed in 0.437s
2600 / 5000 processed in 0.437s
2700 / 5000 processed in 0.437s
2800 / 5000 processed in 0.438s
2900 / 5000 processed in 0.434s
3000 / 5000 processed in 0.439s
3100 / 5000 processed in 0.433s
3200 / 5000 processed in 0.434s
3300 / 5000 processed in 0.435s
3400 / 5000 processed in 0.429s
3500 / 5000 processed in 0.429s
3600 / 5000 processed in 0.427s
3700 / 5000 processed in 0.426s
3800 / 5000 processed in 0.424s
3900 / 5000 processed in 0.434s
4000 / 5000 processed in 0.428s
4100 / 5000 processed in 0.422s
4200 / 5000 processed in 0.428s
4300 / 5000 processed in 0.418s
4400 / 5000 processed in 0.418s
4500 / 5000 processed in 0.420s
4600 / 5000 processed in 0.415s
4700 / 5000 processed in 0.411s
4800 / 5000 processed in 0.408s
4900 / 5000 processed in 0.407s
5000 / 5000 processed in 0.405s
5000 objects processed in 21.717 seconds
Annotation conversion for ms_coco_detection_91_classes dataset has been finished
ms_coco_detection_91_classes dataset metadata will be saved to mscoco_det_91.json
Converted annotation for ms_coco_detection_91_classes dataset will be saved to mscoco_det_91.pickle
IE version: 2.1.2021.3.0-2787-60059f2c755-releases/2021/3
Loaded CPU plugin version:
CPU - MKLDNNPlugin: 2.1.2021.3.0-2787-60059f2c755-releases/2021/3
Found model /home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16/ssd_mobilenet_v1_coco.xml
Found weights /home/openvino/openvino_models/public/ssd_mobilenet_v1_coco/FP16/ssd_mobilenet_v1_coco.bin
Input info:
Layer name: image_tensor
precision: FP32
shape [1, 3, 300, 300]
Output info
Layer name: DetectionOutput
precision: FP32
shape: [1, 1, 100, 7]
5000 objects processed in 126.727 seconds
coco_precision: 23.32%
```
### pot log
```
pot -c ssd_mobilenet_v1_coco-int8.json -e
INFO:app.run:Output log dir: ./results/ssd_mobilenet_v1_coco_DefaultQuantization/2021-05-24_03-49-38
INFO:app.run:Creating pipeline:
Algorithm: DefaultQuantization
Parameters:
preset : performance
stat_subset_size : 100
target_device : ANY
model_type : None
dump_intermediate_model : False
exec_log_dir : ./results/ssd_mobilenet_v1_coco_DefaultQuantization/2021-05-24_03-49-38
===========================================================================
IE version: 2.1.2021.3.0-2787-60059f2c755-releases/2021/3
Loaded CPU plugin version:
CPU - MKLDNNPlugin: 2.1.2021.3.0-2787-60059f2c755-releases/2021/3
Annotation conversion for ms_coco_detection_91_classes dataset has been started
Parameters to be used for conversion:
converter: mscoco_detection
annotation_file: /home/openvino/coco_dataset/annotations/instances_val2017.json
has_background: True
sort_annotations: True
use_full_label_map: True
Total annotations size: 5000
100 / 5000 processed in 0.526s
200 / 5000 processed in 0.479s
300 / 5000 processed in 0.464s
400 / 5000 processed in 0.455s
500 / 5000 processed in 0.456s
600 / 5000 processed in 0.452s
700 / 5000 processed in 0.448s
800 / 5000 processed in 0.446s
900 / 5000 processed in 0.446s
1000 / 5000 processed in 0.446s
1100 / 5000 processed in 0.445s
1200 / 5000 processed in 0.444s
1300 / 5000 processed in 0.446s
1400 / 5000 processed in 0.446s
1500 / 5000 processed in 0.447s
1600 / 5000 processed in 0.448s
1700 / 5000 processed in 0.447s
1800 / 5000 processed in 0.448s
1900 / 5000 processed in 0.448s
2000 / 5000 processed in 0.451s
2100 / 5000 processed in 0.450s
2200 / 5000 processed in 0.450s
2300 / 5000 processed in 0.449s
2400 / 5000 processed in 0.449s
2500 / 5000 processed in 0.459s
2600 / 5000 processed in 0.455s
2700 / 5000 processed in 0.453s
2800 / 5000 processed in 0.449s
2900 / 5000 processed in 0.451s
3000 / 5000 processed in 0.449s
3100 / 5000 processed in 0.446s
3200 / 5000 processed in 0.452s
3300 / 5000 processed in 0.447s
3400 / 5000 processed in 0.445s
3500 / 5000 processed in 0.443s
3600 / 5000 processed in 0.441s
3700 / 5000 processed in 0.439s
3800 / 5000 processed in 0.441s
3900 / 5000 processed in 0.437s
4000 / 5000 processed in 0.435s
4100 / 5000 processed in 0.438s
4200 / 5000 processed in 0.430s
4300 / 5000 processed in 0.429s
4400 / 5000 processed in 0.427s
4500 / 5000 processed in 0.485s
4600 / 5000 processed in 0.490s
4700 / 5000 processed in 0.470s
4800 / 5000 processed in 0.458s
4900 / 5000 processed in 0.450s
5000 / 5000 processed in 0.481s
5000 objects processed in 22.584 seconds
Annotation conversion for ms_coco_detection_91_classes dataset has been finished
ms_coco_detection_91_classes dataset metadata will be saved to mscoco_det_91.json
Converted annotation for ms_coco_detection_91_classes dataset will be saved to mscoco_det_91.pickle
INFO:compression.statistics.collector:Start computing statistics for algorithms : DefaultQuantization
INFO:compression.statistics.collector:Computing statistics finished
INFO:compression.pipeline.pipeline:Start algorithm: DefaultQuantization
INFO:compression.algorithms.quantization.default.algorithm:Start computing statistics for algorithm : ActivationChannelAlignment
INFO:compression.algorithms.quantization.default.algorithm:Computing statistics finished
INFO:compression.algorithms.quantization.default.algorithm:Start computing statistics for algorithms : MinMaxQuantization,FastBiasCorrection
03:50:10 accuracy_checker WARNING: /opt/intel/openvino/deployment_tools/model_optimizer/mo/back/ie_ir_ver_2/emitter.py:243: DeprecationWarning: This method will be removed in future versions. Use 'list(elem)' or iteration over elem instead.
if len(element.attrib) == 0 and len(element.getchildren()) == 0:
INFO:compression.algorithms.quantization.default.algorithm:Computing statistics finished
INFO:compression.pipeline.pipeline:Finished: DefaultQuantization
===========================================================================
INFO:compression.pipeline.pipeline:Evaluation of generated model
INFO:compression.engines.ac_engine:Start inference on the whole dataset
Total dataset size: 5000
1000 / 5000 processed in 22.659s
2000 / 5000 processed in 22.778s
3000 / 5000 processed in 22.536s
4000 / 5000 processed in 22.595s
5000 / 5000 processed in 22.549s
5000 objects processed in 113.117 seconds
INFO:compression.engines.ac_engine:Inference finished
INFO:app.run:coco_precision : 0.20299275184313892
```