From 71382bbdab515a41316b31c71d43fb3fd4040565 Mon Sep 17 00:00:00 2001 From: pinto0309 Date: Thu, 9 Sep 2021 11:13:13 +0900 Subject: [PATCH] NanoDet-m --- 072_NanoDet/convert_script.txt | 270 +++++++++++++++++++++++++++++ 072_NanoDet/download_nanodet_m.sh | 9 + 072_NanoDet/replace_nanodet_m.json | 65 +++++++ 3 files changed, 344 insertions(+) create mode 100755 072_NanoDet/download_nanodet_m.sh create mode 100644 072_NanoDet/replace_nanodet_m.json diff --git a/072_NanoDet/convert_script.txt b/072_NanoDet/convert_script.txt index ab3329ac17..71153d388a 100644 --- a/072_NanoDet/convert_script.txt +++ b/072_NanoDet/convert_script.txt @@ -114,3 +114,273 @@ openvino2tensorflow \ --weight_replacement_config replace.json mv saved_model/model_full_integer_quant_edgetpu.tflite saved_model saved_model_${MODEL}_${H}x${W} rm -rf saved_model + + +=== nanodet_m ===================================== + +CONFIG_PATH=config/nanodet-m.yml +PYTORCH_MODEL_PATH=nanodet_m.ckpt +python3 tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH} + +CONFIG_PATH=config/nanodet-m-416.yml +PYTORCH_MODEL_PATH=nanodet_m_416.ckpt +python3 tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH} + +CONFIG_PATH=config/nanodet-m-0.5x.yml +PYTORCH_MODEL_PATH=nanodet_m_0.5x.ckpt +python3 tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH} + +CONFIG_PATH=config/nanodet-m-1.5x.yml +PYTORCH_MODEL_PATH=nanodet_m_1.5x.ckpt +python3 tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH} + +CONFIG_PATH=config/nanodet-m-1.5x-416.yml +PYTORCH_MODEL_PATH=nanodet_m_1.5x_416.ckpt +python3 tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH} + + + + +python3 -m onnxsim onnx/nanodet_m_320x320.onnx onnx/nanodet_m_320x320.onnx +python3 -m onnxsim onnx/nanodet_m_416x416.onnx onnx/nanodet_m_416x416.onnx +python3 -m onnxsim onnx/nanodet_m_0.5x_320x320.onnx onnx/nanodet_m_0.5x_320x320.onnx +python3 -m onnxsim onnx/nanodet_m_1.5x_320x320.onnx onnx/nanodet_m_1.5x_320x320.onnx +python3 -m onnxsim onnx/nanodet_m_1.5x_416x416.onnx onnx/nanodet_m_1.5x_416x416.onnx + + + +xhost +local: && \ +docker run --gpus all -it --rm \ +-v `pwd`:/home/user/workdir \ +-v /tmp/.X11-unix/:/tmp/.X11-unix:rw \ +--device /dev/video0:/dev/video0:mwr \ +--net=host \ +-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \ +-e DISPLAY=$DISPLAY \ +--privileged \ +pinto0309/openvino2tensorflow:latest + +cd workdir + + +H=320 +W=320 +MODEL=nanodet_m +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP32 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP32 \ +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP16 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP16 +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +mkdir -p openvino/${MODEL}_${H}x${W}/myriad +${INTEL_OPENVINO_DIR}/deployment_tools/inference_engine/lib/intel64/myriad_compile \ +-m openvino/${MODEL}_${H}x${W}/FP16/${MODEL}_${H}x${W}.xml \ +-ip U8 \ +-VPU_NUMBER_OF_SHAVES 4 \ +-VPU_NUMBER_OF_CMX_SLICES 4 \ +-o openvino/${MODEL}_${H}x${W}/myriad/${MODEL}_${H}x${W}.blob + +H=416 +W=416 +MODEL=nanodet_m +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP32 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP32 \ +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP16 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP16 +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +mkdir -p openvino/${MODEL}_${H}x${W}/myriad +${INTEL_OPENVINO_DIR}/deployment_tools/inference_engine/lib/intel64/myriad_compile \ +-m openvino/${MODEL}_${H}x${W}/FP16/${MODEL}_${H}x${W}.xml \ +-ip U8 \ +-VPU_NUMBER_OF_SHAVES 4 \ +-VPU_NUMBER_OF_CMX_SLICES 4 \ +-o openvino/${MODEL}_${H}x${W}/myriad/${MODEL}_${H}x${W}.blob + +H=320 +W=320 +MODEL=nanodet_m_0.5x +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP32 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP32 \ +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP16 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP16 +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +mkdir -p openvino/${MODEL}_${H}x${W}/myriad +${INTEL_OPENVINO_DIR}/deployment_tools/inference_engine/lib/intel64/myriad_compile \ +-m openvino/${MODEL}_${H}x${W}/FP16/${MODEL}_${H}x${W}.xml \ +-ip U8 \ +-VPU_NUMBER_OF_SHAVES 4 \ +-VPU_NUMBER_OF_CMX_SLICES 4 \ +-o openvino/${MODEL}_${H}x${W}/myriad/${MODEL}_${H}x${W}.blob + +H=320 +W=320 +MODEL=nanodet_m_1.5x +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP32 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP32 \ +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP16 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP16 +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +mkdir -p openvino/${MODEL}_${H}x${W}/myriad +${INTEL_OPENVINO_DIR}/deployment_tools/inference_engine/lib/intel64/myriad_compile \ +-m openvino/${MODEL}_${H}x${W}/FP16/${MODEL}_${H}x${W}.xml \ +-ip U8 \ +-VPU_NUMBER_OF_SHAVES 4 \ +-VPU_NUMBER_OF_CMX_SLICES 4 \ +-o openvino/${MODEL}_${H}x${W}/myriad/${MODEL}_${H}x${W}.blob + +H=416 +W=416 +MODEL=nanodet_m_1.5x +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP32 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP32 \ +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +$INTEL_OPENVINO_DIR/deployment_tools/model_optimizer/mo.py \ +--input_model ${MODEL}_${H}x${W}.onnx \ +--data_type FP16 \ +--output_dir openvino/${MODEL}_${H}x${W}/FP16 +--mean_values [103.53,116.28,123.675] \ +--scale_values [57.375,57.12,58.395] +mkdir -p openvino/${MODEL}_${H}x${W}/myriad +${INTEL_OPENVINO_DIR}/deployment_tools/inference_engine/lib/intel64/myriad_compile \ +-m openvino/${MODEL}_${H}x${W}/FP16/${MODEL}_${H}x${W}.xml \ +-ip U8 \ +-VPU_NUMBER_OF_SHAVES 4 \ +-VPU_NUMBER_OF_CMX_SLICES 4 \ +-o openvino/${MODEL}_${H}x${W}/myriad/${MODEL}_${H}x${W}.blob + +============================================= + +H=320 +W=320 +MODEL=nanodet_m +openvino2tensorflow \ +--model_path openvino/${MODEL}_${H}x${W}/FP32/${MODEL}_${H}x${W}.xml \ +--output_saved_model \ +--output_pb \ +--output_no_quant_float32_tflite \ +--output_weight_quant_tflite \ +--output_float16_quant_tflite \ +--output_integer_quant_tflite \ +--string_formulas_for_normalization 'data * 1' \ +--output_integer_quant_type 'uint8' \ +--output_tfjs \ +--output_coreml \ +--output_tftrt \ +--weight_replacement_config replace_nanodet_m.json + +mv saved_model saved_model_${MODEL}_${H}x${W} + + +H=416 +W=416 +MODEL=nanodet_m +openvino2tensorflow \ +--model_path openvino/${MODEL}_${H}x${W}/FP32/${MODEL}_${H}x${W}.xml \ +--output_saved_model \ +--output_pb \ +--output_no_quant_float32_tflite \ +--output_weight_quant_tflite \ +--output_float16_quant_tflite \ +--output_integer_quant_tflite \ +--string_formulas_for_normalization 'data * 1' \ +--output_integer_quant_type 'uint8' \ +--output_tfjs \ +--output_coreml \ +--output_tftrt \ +--weight_replacement_config replace_nanodet_m.json + +mv saved_model saved_model_${MODEL}_${H}x${W} + + +H=320 +W=320 +MODEL=nanodet_m_0.5x +openvino2tensorflow \ +--model_path openvino/${MODEL}_${H}x${W}/FP32/${MODEL}_${H}x${W}.xml \ +--output_saved_model \ +--output_pb \ +--output_no_quant_float32_tflite \ +--output_weight_quant_tflite \ +--output_float16_quant_tflite \ +--output_integer_quant_tflite \ +--string_formulas_for_normalization 'data * 1' \ +--output_integer_quant_type 'uint8' \ +--output_tfjs \ +--output_coreml \ +--output_tftrt \ +--weight_replacement_config replace_nanodet_m.json + +mv saved_model saved_model_${MODEL}_${H}x${W} + + +H=320 +W=320 +MODEL=nanodet_m_1.5x +openvino2tensorflow \ +--model_path openvino/${MODEL}_${H}x${W}/FP32/${MODEL}_${H}x${W}.xml \ +--output_saved_model \ +--output_pb \ +--output_no_quant_float32_tflite \ +--output_weight_quant_tflite \ +--output_float16_quant_tflite \ +--output_integer_quant_tflite \ +--string_formulas_for_normalization 'data * 1' \ +--output_integer_quant_type 'uint8' \ +--output_tfjs \ +--output_coreml \ +--output_tftrt \ +--weight_replacement_config replace_nanodet_m.json + +mv saved_model saved_model_${MODEL}_${H}x${W} + + +H=416 +W=416 +MODEL=nanodet_m_1.5x +openvino2tensorflow \ +--model_path openvino/${MODEL}_${H}x${W}/FP32/${MODEL}_${H}x${W}.xml \ +--output_saved_model \ +--output_pb \ +--output_no_quant_float32_tflite \ +--output_weight_quant_tflite \ +--output_float16_quant_tflite \ +--output_integer_quant_tflite \ +--string_formulas_for_normalization 'data * 1' \ +--output_integer_quant_type 'uint8' \ +--output_tfjs \ +--output_coreml \ +--output_tftrt \ +--weight_replacement_config replace_nanodet_m.json + +mv saved_model saved_model_${MODEL}_${H}x${W} + diff --git a/072_NanoDet/download_nanodet_m.sh b/072_NanoDet/download_nanodet_m.sh new file mode 100755 index 0000000000..10598e793d --- /dev/null +++ b/072_NanoDet/download_nanodet_m.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=1Pfy5WG9YmSIoDJU9LiMfSKQAETbQRRti" > /dev/null +CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)" +curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=1Pfy5WG9YmSIoDJU9LiMfSKQAETbQRRti" -o resources.tar.gz +tar -zxvf resources.tar.gz +rm resources.tar.gz + +echo Download finished. diff --git a/072_NanoDet/replace_nanodet_m.json b/072_NanoDet/replace_nanodet_m.json new file mode 100644 index 0000000000..ce161682e9 --- /dev/null +++ b/072_NanoDet/replace_nanodet_m.json @@ -0,0 +1,65 @@ +{ + "format_version": 2, + "layers": [ + { + "layer_id": "558", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + }, + { + "layer_id": "564", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + }, + { + "layer_id": "600", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + }, + { + "layer_id": "606", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + }, + { + "layer_id": "642", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + }, + { + "layer_id": "648", + "type": "Const", + "replace_mode": "direct", + "values": [ + 0, + 1, + 2 + ] + } + ] +} \ No newline at end of file