# EASE : Use POT to Quantize yolo-v3-tf Public Model ###### tags: `POT` `EASE` ## Use OpenVINO dockerhub image ``` docker run -it -v ~/Downloads:/mnt -u root --rm openvino/ubuntu20_dev:latest ``` ## Run Accuracy Checker and POT In ubuntu20_dev docker image, #### 0. Download COCO 2017 trainval dataset and annotation ```=bash cd /home/openvino apt update apt install unzip mkdir coco_dataset cd coco_dataset curl http://images.cocodataset.org/zips/val2017.zip -o val2017.zip unzip val2017.zip curl http://images.cocodataset.org/annotations/annotations_trainval2017.zip -o trainval_2017.zip unzip trainval_2017.zip ``` ##### coco_dataset content ``` coco_dataset/ |--annotations/ |-- captions_train2017.json |-- captions_val2017.json |-- instances_train2017.json |-- instances_val2017.json |-- person_keypoints_train2017.json `-- person_keypoints_val2017.json |-- val2017/ |-- 000000042102.jpg |-- 000000060102.jpg |-- 000000245102.jpg ... `-- 000000364102.jpg ``` #### 1. Download yolo-v3-tf ```=bash omz_downloader.py --name yolo-v3-tf -o /home/openvino/openvino_models ``` #### 2. Convert yolo-v3-tf to IR ```=bash omz_converter.py --name yolo-v3-tf -d /home/openvino/openvino_models -o /home/openvino/openvino_models ``` #### 3. Run Accuracy Checker on yolo-v3-tf ```=bash accuracy_check -c yolo-v3-tf-int8.yml -m /home/openvino/openvino_models/public/yolo-v3-tf/FP32 ``` #### 4. Run POT on yolo-v3-tf ```=bash pot -c yolo-v3-tf-int8.json -e ``` #### 5. Copy yolo-v3-tf FP16-INT8 IR ```=bash mkdir /home/openvino/openvino_models/public/yolo-v3-tf/FP16-INT8/ cp -ar results/yolo-v3-tf_DefaultQuantization/2*/optimized/* /home/openvino/openvino_models/public/yolo-v3-tf/FP16-INT8/ #### Note : Copy openvino_models foler to /mnt folder. They will be accessable in ~/Downloads folder in the host and /mnt in the container. ``` ## Reference ### yolo-v3-tf-int8.yml ``` models: - name: yolo_v3_tf launchers: - framework: dlsdk device: CPU adapter: type: yolo_v3 anchors: "10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326" num: 9 coords: 4 classes: 80 anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]] outputs: - conv2d_58/Conv2D/YoloRegion - conv2d_66/Conv2D/YoloRegion - conv2d_74/Conv2D/YoloRegion datasets: - name: ms_coco_detection_80_class_without_background annotation_conversion: converter: mscoco_detection annotation_file: /home/openvino/coco_dataset/annotations/instances_val2017.json data_source: /home/openvino/coco_dataset/val2017 preprocessing: - type: resize size: 416 postprocessing: - type: resize_prediction_boxes - type: filter apply_to: prediction min_confidence: 0.001 remove_filtered: True - type: nms overlap: 0.5 - type: clip_boxes apply_to: prediction metrics: - type: map integral: 11point ignore_difficult: true presenter: print_scalar reference: 0.6227 - type: coco_precision max_detections: 100 threshold: 0.5 reference: 0.677 ``` ### yolo-v3-tf-int8.json ``` { "model": { "model_name": "yolo-v3-tf", "model": "/home/openvino/openvino_models/public/yolo-v3-tf/FP16/yolo-v3-tf.xml", "weights": "/home/openvino/openvino_models/public/yolo-v3-tf/FP16/yolo-v3-tf.bin" }, "engine": { "config": "/home/openvino/yolo-v3-tf-int8.yml" }, "compression": { "algorithms": [ { "name": "DefaultQuantization", "params": { "preset": "performance", "stat_subset_size": 300 } } ] } } ``` ### accuracy_checker log ``` accuracy_check -c /mnt/yolo-v3-tf-int8.yml -m /mnt/openvino_models/public/yolo-v3-tf/FP32/yolo-v3-tf.xml Processing info: model: yolo_v3_tf launcher: openvino device: CPU dataset: ms_coco_detection_80_class_without_background OpenCV version: 4.5.5 Annotation conversion for ms_coco_detection_80_class_without_background dataset has been started Parameters to be used for conversion: converter: mscoco_detection annotation_file: /mnt/coco_dataset/annotations/instances_val2017.json Total annotations size: 5000 100 / 5000 processed in 0.602s 200 / 5000 processed in 0.675s 300 / 5000 processed in 0.565s 400 / 5000 processed in 0.573s 500 / 5000 processed in 0.544s 600 / 5000 processed in 0.539s 700 / 5000 processed in 0.529s 800 / 5000 processed in 0.594s 900 / 5000 processed in 0.516s 1000 / 5000 processed in 0.580s 1100 / 5000 processed in 0.555s 1200 / 5000 processed in 0.508s 1300 / 5000 processed in 0.521s 1400 / 5000 processed in 0.564s 1500 / 5000 processed in 0.534s 1600 / 5000 processed in 0.520s 1700 / 5000 processed in 0.519s 1800 / 5000 processed in 0.530s 1900 / 5000 processed in 0.583s 2000 / 5000 processed in 0.568s 2100 / 5000 processed in 0.546s 2200 / 5000 processed in 0.531s 2300 / 5000 processed in 0.577s 2400 / 5000 processed in 0.561s 2500 / 5000 processed in 0.581s 2600 / 5000 processed in 0.568s 2700 / 5000 processed in 0.571s 2800 / 5000 processed in 0.563s 2900 / 5000 processed in 0.568s 3000 / 5000 processed in 0.563s 3100 / 5000 processed in 0.566s 3200 / 5000 processed in 0.561s 3300 / 5000 processed in 0.567s 3400 / 5000 processed in 0.560s 3500 / 5000 processed in 0.567s 3600 / 5000 processed in 0.560s 3700 / 5000 processed in 0.562s 3800 / 5000 processed in 0.553s 3900 / 5000 processed in 0.605s 4000 / 5000 processed in 0.549s 4100 / 5000 processed in 0.529s 4200 / 5000 processed in 0.527s 4300 / 5000 processed in 0.514s 4400 / 5000 processed in 0.531s 4500 / 5000 processed in 0.523s 4600 / 5000 processed in 0.541s 4700 / 5000 processed in 0.495s 4800 / 5000 processed in 0.494s 4900 / 5000 processed in 0.501s 5000 / 5000 processed in 0.492s 5000 objects processed in 27.544 seconds Annotation conversion for ms_coco_detection_80_class_without_background dataset has been finished IE version: 2022.1.0-7019-cdb9bec7210-releases/2022/1 Loaded CPU plugin version: CPU - openvino_intel_cpu_plugin: 2022.1.2022.1.0-7019-cdb9bec7210-releases/2022/1 Found model /mnt/openvino_models/public/yolo-v3-tf/FP32/yolo-v3-tf.xml Found weights /mnt/openvino_models/public/yolo-v3-tf/FP32/yolo-v3-tf.bin Input info: Node name: input_1 Tensor names: input_1:0, input_1 precision: f32 shape: (1, 416, 416, 3) Output info Node name: conv2d_58/Conv2D/YoloRegion/sink_port_0 Tensor names: conv2d_58/Conv2D/YoloRegion:0, conv2d_58/Conv2D/YoloRegion precision: f32 shape: (1, 255, 13, 13) Node name: conv2d_66/Conv2D/YoloRegion/sink_port_0 Tensor names: conv2d_66/Conv2D/YoloRegion, conv2d_66/Conv2D/YoloRegion:0 precision: f32 shape: (1, 255, 26, 26) Node name: conv2d_74/Conv2D/YoloRegion/sink_port_0 Tensor names: conv2d_74/Conv2D/YoloRegion:0, conv2d_74/Conv2D/YoloRegion precision: f32 shape: (1, 255, 52, 52) 5000 objects processed in 1673.242 seconds map: 62.27% coco_precision: 67.70% ``` ### pot log ``` pot -c /mnt/yolo-v3-tf-int8.json -e INFO:openvino.tools.pot.app.run:Output log dir: ./results/yolo-v3-tf_DefaultQuantization/2022-04-30_08-39-57 INFO:openvino.tools.pot.app.run:Creating pipeline: Algorithm: DefaultQuantization Parameters: preset : performance stat_subset_size : 300 target_device : ANY model_type : None dump_intermediate_model : False inplace_statistics : True exec_log_dir : ./results/yolo-v3-tf_DefaultQuantization/2022-04-30_08-39-57 =========================================================================== IE version: 2022.1.0-7019-cdb9bec7210-releases/2022/1 Loaded CPU plugin version: CPU - openvino_intel_cpu_plugin: 2022.1.2022.1.0-7019-cdb9bec7210-releases/2022/1 Annotation conversion for ms_coco_detection_80_class_without_background dataset has been started Parameters to be used for conversion: converter: mscoco_detection annotation_file: /mnt/coco_dataset/annotations/instances_val2017.json Total annotations size: 5000 100 / 5000 processed in 0.566s 200 / 5000 processed in 0.564s 300 / 5000 processed in 0.640s 400 / 5000 processed in 0.591s 500 / 5000 processed in 0.603s 600 / 5000 processed in 0.563s 700 / 5000 processed in 0.565s 800 / 5000 processed in 0.567s 900 / 5000 processed in 0.569s 1000 / 5000 processed in 0.571s 1100 / 5000 processed in 0.574s 1200 / 5000 processed in 0.570s 1300 / 5000 processed in 0.610s 1400 / 5000 processed in 0.588s 1500 / 5000 processed in 0.581s 1600 / 5000 processed in 0.577s 1700 / 5000 processed in 0.576s 1800 / 5000 processed in 0.587s 1900 / 5000 processed in 0.586s 2000 / 5000 processed in 0.579s 2100 / 5000 processed in 0.592s 2200 / 5000 processed in 0.626s 2300 / 5000 processed in 0.585s 2400 / 5000 processed in 0.584s 2500 / 5000 processed in 0.581s 2600 / 5000 processed in 0.580s 2700 / 5000 processed in 0.581s 2800 / 5000 processed in 0.579s 2900 / 5000 processed in 0.586s 3000 / 5000 processed in 0.622s 3100 / 5000 processed in 0.589s 3200 / 5000 processed in 0.576s 3300 / 5000 processed in 0.585s 3400 / 5000 processed in 0.574s 3500 / 5000 processed in 0.572s 3600 / 5000 processed in 0.570s 3700 / 5000 processed in 0.570s 3800 / 5000 processed in 0.578s 3900 / 5000 processed in 0.608s 4000 / 5000 processed in 0.568s 4100 / 5000 processed in 0.566s 4200 / 5000 processed in 0.564s 4300 / 5000 processed in 0.561s 4400 / 5000 processed in 0.560s 4500 / 5000 processed in 0.560s 4600 / 5000 processed in 0.558s 4700 / 5000 processed in 0.565s 4800 / 5000 processed in 0.594s 4900 / 5000 processed in 0.565s 5000 / 5000 processed in 0.554s 5000 objects processed in 28.983 seconds Annotation conversion for ms_coco_detection_80_class_without_background dataset has been finished INFO:openvino.tools.pot.pipeline.pipeline:Inference Engine version: 2022.1.0-7019-cdb9bec7210-releases/2022/1 INFO:openvino.tools.pot.pipeline.pipeline:Model Optimizer version: 2022.1.0-7019-cdb9bec7210-releases/2022/1 INFO:openvino.tools.pot.pipeline.pipeline:Post-Training Optimization Tool version: 2022.1.0-7019-cdb9bec7210-releases/2022/1 INFO:openvino.tools.pot.statistics.collector:Start computing statistics for algorithms : DefaultQuantization INFO:openvino.tools.pot.statistics.collector:Computing statistics finished INFO:openvino.tools.pot.pipeline.pipeline:Start algorithm: DefaultQuantization INFO:openvino.tools.pot.algorithms.quantization.default.algorithm:Start computing statistics for algorithm : ActivationChannelAlignment INFO:openvino.tools.pot.algorithms.quantization.default.algorithm:Computing statistics finished INFO:openvino.tools.pot.algorithms.quantization.default.algorithm:Start computing statistics for algorithms : MinMaxQuantization,FastBiasCorrection INFO:openvino.tools.pot.algorithms.quantization.default.algorithm:Computing statistics finished INFO:openvino.tools.pot.pipeline.pipeline:Finished: DefaultQuantization =========================================================================== INFO:openvino.tools.pot.pipeline.pipeline:Evaluation of generated model INFO:openvino.tools.pot.engines.ac_engine:Start inference on the whole dataset Total dataset size: 5000 1000 / 5000 processed in 120.165s 2000 / 5000 processed in 124.478s 3000 / 5000 processed in 122.800s 4000 / 5000 processed in 123.251s 5000 / 5000 processed in 122.487s 5000 objects processed in 613.181 seconds INFO:openvino.tools.pot.engines.ac_engine:Inference finished INFO:openvino.tools.pot.app.run:map : 0.6196563903778992 INFO:openvino.tools.pot.app.run:coco_precision : 0.6766990257494002 ```