OpenVINO2022.1+open_model_zoo例程的编译与使用
(一)OpenVINO
項目地址
GitHub - openvinotoolkit/openvino: OpenVINO? Toolkit repository
最新版OpenVINO-2022.1的下載地址,
https://github.com/openvinotoolkit/openvino/archive/refs/tags/2022.1.0.dev20220316.tar.gz
下載后解壓,比如我的解壓目錄是
D:/OpenVINO_dev20220316/
后面我都會基于這個目錄進行講解。
編譯OpenVINO的samples
OpenCV_DIR和OpenVINO_DIR的地址如下圖所示,其中OpenCV455是我編譯的地址,可以參考
Windows10中OpenCV-4.3.0的快速編譯與安裝_高精度計算機視覺的博客-CSDN博客
方法大同小異,不過這里的版本是4.5.5,?
(二)open_model_zoo
編譯open_model_zoo的demos
配置如下圖所示,細節就不再解釋了,這里假設你已經熟練使用cmake-gui,
?下載models
在這里有一個下載腳本,
D:\open_model_zoo\tools\model_tools\downloader.py
你可以通過運行這個腳本下載模型文件,
例如,
python? downloader.py --all
其中這個"--all"這個參數可以用下面的參數代替,比如
"--print_all", "--all", "--name" or "--list", etc.
當然,通常我們并不需要把這些模型全部下載下來,那太占空間了,通常你可以在--list之后或到下面的目錄
D:\open_model_zoo\models (要下載的模型的信息在這里可以找)
找到你想要的模型,然后通過下面的指令下載,比如我要下載OCR的模型,
python? downloader.py --name text-recognition--0016
具體的使用方法你可以參考官網,
https://docs.openvino.ai/2021.3/omz_tools_downloader.html
有人翻譯成了中文,原文在這里,
OpenVINO——2. OpenVINO Model Downloader_噸噸不打野的博客-CSDN博客
其他的說明都可以類似地在官網上找到,不再說明。
下面我摘錄這些主要工具的用法。
模型下載(downloader)器用法
--all 基本使用:(--all參數表示直接下載所有的模型,如果只想下載所有模型的子集,可以去看 Shared options這部分)
./downloader.py --all
-o/--output_dir:(默認情況下,下載的模型會放到當前目錄下,可以使用這個參數放到別的目錄)
./downloader.py --all --output_dir my/download/directory
--precisions 可以使用這個參數明確下載模型的權重文件的數據精度(小數點后幾位)
./downloader.py --name face-detection-retail-0004 --precisions FP16,FP16-INT8
--num_attempts默認情況下,腳本只會嘗試下載每個文件一次,如果想要改變嘗試下載的次數來增加腳本的魯棒性可以使用這個參數去修改嘗試下載的次數。
./downloader.py --all --num_attempts 5 # attempt each download five times
--cache-dir可以使用這個參數來明確規定腳本所使用的緩存目錄,會把每個下載文件的一個副本放在緩存文件中,這樣如果文件已經下載過,存在于緩存中,就會從緩存中讀取而不是重新下載。(cache文件的格式和Open Model Zoo以后的版本都是兼容的,所以可以使用一個確定的緩存目錄,避免以后重新下載)
./downloader.py --all --cache_dir my/cache/directory
--progress_format默認情況下,腳本輸出信息是非結構化的,如果想要讓腳本輸出的程序信息看起來更清晰,可以使用這個參數
./downloader.py --all --progress_format=json
當被設置為json格式時,腳本的標準輸出就變為一個機器可讀的進度報告,這一個格式的具體說明在json progress report format部分,這個選項不會影響錯誤和警告信息,錯誤和警告信息仍然會以人類可讀的格式打印到標準錯誤流中。
也可以設置為text格式顯式的表明使用默認的文本格式
-j/--jobs:這個參數可以讓腳本同時下載多個模型
./downloader.py --all -j8 # download up to 8 models at a time
其余還有一些是共享選項,這幾個文件都有的,參考共享選項部分
模型轉換(converter)用法
--all:會把所有模型轉換為推理引擎可識別的IR模式。原始格式的模型會被忽略,Pytorch和Caffe2格式的模型將會被首先轉換為ONNX格式。如果只需要轉換一部分模型,可以使用其他過濾參數替換--all。
./converter.py --all
-d/--download_dir如果想要改變下載目錄,用這個參數(默認情況下:要確保當前目錄是模型下載器下載模型文件所在的根目錄)
./converter.py --all --download_dir my/download/directory
-o/--output_dir 默認情況下,轉換后的模型會放在下載目錄,可以使用這個參數放到別的目錄去
./converter.py --all --output_dir my/output/directory
中間格式的模型也會被放在這個目錄
--precisions默認情況下,腳本會產生所有轉換支持的精度的模型,如果只想生成特定精度的一種模型,使用這個參數
./converter.py --all --precisions=FP16
如果某個模型不支持這個特定的精度,那么這個模型就會被忽略
--mo腳本會嘗試根據OpenVINO toolkit的setupvars.sh/setupvars.bat腳本中設置的環境變量去尋找模型優化器,可以使用這個參數來修改模型優化器的搜索位置
./converter.py --all --mo my/openvino/path/model_optimizer/mo.py
--add_mo_arg使用這個參數,可以為模型配置的特定模型添加額外的模型優化器參數,這個選項可以重復使用多次來添加不同的參數
./converter.py --name=caffenet --add_mo_arg=--reverse_input_channels --add_mo_arg=--silent
-p/--python默認情況下,腳本使用運行這個腳本本身的python執行器來運行模型優化器,如果想使用不同的python執行器,使用這個選項。
./converter.py --all --python my/python
-j/--jobs腳本可以同時執行多個轉換命令,使用這個選項。
./converter.py --all -j8 # run up to 8 commands at a time
這里這個選項的參數要么是 同時執行命令的最大數量,要么是 auto,如果是auto,則就是系統CPUs的個數。默認情況下,所有的命令都是順序執行的
--dry_run腳本可以在不進行運行的情況下打印出轉換命令
./converter.py --all --dry_run
模型量化器(quantizer)用法
在運行模型量化器之前,必須準備一個量化過程中需要使用的數據集文件夾。在下面的內容中,這個文件夾/目錄表示為 <DATASET_DIR>,可以在 Dataset Preparation Guide這個頁面找到關于如何準備數據的詳細說明信息。
這個腳本的基礎用法如下
--all 這個選項會量化所有支持的模型,不支持的就會被忽略
./quantizer.py --all --dataset_dir <DATASET_DIR>
也可以使用其他選項來只量化一部分模型,參考 共享選項 部分
--model_dir腳本執行的當前目錄必須是模型轉換器創建的模型文件的根目錄,想要改變,就用這個選項
./quantizer.py --all --dataset_dir <DATASET_DIR> --model_dir my/model/directory
-o/--output_dir 默認情況下,量化過的模型會被存儲在相同的模型目錄下,可以使用這個選項修改保存位置
./quantizer.py --all --dataset_dir <DATASET_DIR> --output_dir my/output/directory
--precisions默認情況下,腳本會產生模型所支持的所有精度的量化結果,如果只想生成特定精度的模型,可以使用這個選項
./quantizer.py --all --dataset_dir <DATASET_DIR> --precisions=FP16-INT8
--pot腳本會嘗試根據OpenVINO toolkit的setupvars.sh/setupvars.bat腳本中設置的環境變量去尋找Post-Training Optimization Toolkit,可以使用這個參數來修改搜索位置
./quantizer.py --all --dataset_dir <DATASET_DIR> --pot my/openvino/path/post_training_optimization_toolkit/main.py
-p/--python默認情況下,腳本會使用運行這個腳本的python執行器去運行Post-Training Optimization Toolkit,如果想使用不同的python執行器,可以使用這個選項。
./quantizer.py --all --dataset_dir <DATASET_DIR> --python my/python
--target_device支持為Post-Training Optimization Toolkit指定要為之優化的目標設備,使用這個選項。
./quantizer.py --all --dataset_dir <DATASET_DIR> --target_device VPU
支持的設備名稱是由Post-Training Optimization Toolkit配置文件中的 target_device。如果沒有明確這個選項,就會采用默認的配置
--dry_run這個腳本可以不經運行就打印出量化命令的信息
./quantizer.py --all --dataset_dir <DATASET_DIR> --dry_run
指定此選項后,仍將創建Post-Training Optimization Toolkit的配置文件,以便您可以檢查它。有關腳本接受的其他選項的信息,請參閱“共享選項”部分。
模型信息轉儲器(dumper)
這個腳本的基本用法:
all打印出所有模型的標準輸出信息( standard output information)
./info_dumper.py --all
此外,腳本接受的選項就是Share options部分的選項。
腳本的輸出是一個json數組,其中每個元素都是一個描述單個模型的json對象,每個這樣的對象包含以下鍵值:
name模型的標識符,從選項 --name獲取
description模型的文本描述,段落之間由換行符分割
framework用來表示模型是從哪里(哪種框架)下載的字符串,當前支持的值有:dldt (Inference Engine IR), caffe, caffe2, mxnet, onnx, pytorch 以及tf (TensorFlow)。其他的值可能以后會添加。
license_url發布模型所依據的許可的URL
precisions模型可以轉為IR文件所支持的精度列表。對于下載的非IR格式的模型,這些是模型可以轉換為IR文件所支持的精度,目前支持的值有:
FP16
FP16-INT1
FP16-INT8
FP32
FP32-INT1
FP32-INT8
其他的值未來可能會支持吧
subdirectory輸出內容的子目錄,下載或者轉換的文件會被放到這里。
task_type用于定義模型所執行的任務類型的字符串,目前可能的值有:
action_recognition, classification, detection, face_recognition, feature_extraction, head_pose_estimation, human_pose_estimation image_inpainting, image_processing, instance_segmentation, machine_translation, monocular_depth_estimation, object_attributes, optical_character_recognition, question_answering, semantic_segmentation, sound_classification, speech_recognition, style_transfer, token_recognition
Shared options 共享選項
有些選項是所有腳本都支持的
-h/--help用于打印幫助信息
./TOOL.py --help
有幾個互斥的過濾選項可以用于選擇腳本要處理的模型
--all選擇所有模型
./TOOL.py --all
--name接受一個逗號分隔的模式列表,選擇的模型至少要滿足其中一個模式,模式可以包含shell風格的通配符。(可以直接寫模型的名稱)
./TOOL.py --name 'mtcnn-p,densenet-*'
--list接受一個指向包含模式列表的文件的路徑,同樣也是選擇至少滿足一個模式的模型
./TOOL.py --list my.lst
注意:這個文件必須是每行一個模式,模式語法和--name選項的相同,空行和#開頭的注釋會被忽略
all
mtcnn-p
densenet-* # get all DenseNet variants
如果想看一下可用的模型,可以使用--print_all選項,使用這個選項后,腳本會打印出配置文件中定義的所有模型名稱并退出。
$ ./TOOL.py --print_all
action-recognition-0001-decoder
action-recognition-0001-encoder
age-gender-recognition-retail-0013
driver-action-recognition-adas-0002-decoder
driver-action-recognition-adas-0002-encoder
emotions-recognition-retail-0003
face-detection-adas-0001
face-detection-retail-0004
face-detection-retail-0005
[...]
上述這些互斥的過濾選項和--print_all至少要有一項。
總結
以上是生活随笔為你收集整理的OpenVINO2022.1+open_model_zoo例程的编译与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C 语言printf打印各种数据类型的方
- 下一篇: 苹果手机 jquery点击无效