模型效果:
在上文中,我們制作了數(shù)據(jù)集,并利用數(shù)據(jù)集進行了模型的訓練醉箕,利用靜態(tài)圖片和視頻對模型的檢測效果進行了檢驗,發(fā)現(xiàn)效果還是不錯的徙垫。
? 前兩張為靜態(tài)圖片檢測讥裤,后一張為視頻檢測效果截圖。
? 但是模型要想部署在算力微弱的樹莓派上姻报,還需要進行兩次模型轉化才能運行在NCS上進行前向推理己英。
模型轉化:
第一次轉化:(.weight-->.pb)
這里的模型轉化OpenVINO給出了官方指南https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_tf_specific_Convert_YOLO_From_Tensorflow.html 但是可能會出現(xiàn)錯誤。
python3 convert_weights_pb.py \
--class_names yolov3-tiny-mine.names \
--weights_file weights/yolov3-tiny-mine_40000.weights \
--data_format NHWC \
--tiny \
--output_graph pbmodels/frozen_yolov3-tiny-mine.pb
執(zhí)行完上述代碼吴旋,就能得到Tensorflow支持的模型文件损肛。
第二次轉化:(.pb-->.IR)
第二次的模型轉化我在windows環(huán)境下完成的。
python "C:\Program Files (x86)\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer\mo_tf.py" --input_shape [1,416,416,3] -m "C:\Program Files (x86)\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer\frozen_yolov3-tiny-mine.pb" --reverse_input_channels --tensorflow_use_custom_operations_config "C:\Program Files (x86)\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimizer\yolo_v3_tiny_mine.json" -n tiny_yolov3 --data_type FP16
樹莓派環(huán)境配置:
1. 材料硬件:
樹莓派3B+
intel movidius 神經(jīng)元計算棒
顯示器荣瑟、鼠標鍵盤治拿、讀卡器、用于做樹莓派系統(tǒng)盤的16GTF卡
燒寫樹莓派系統(tǒng)用的PC(win10)
2. 下載樹莓派鏡像并解壓
樹莓派系統(tǒng)鏡像使用Stretch版本——2018-11-13-raspbian-stretch
下載鏈接:http://downloads.raspberrypi.org/raspbian_latest
參考:http://shumeipai.nxez.com/download#os
下載并解壓出img文件
3. 燒寫鏡像
插入16G TF卡笆焰,格式化劫谅,打開鏡像燒寫軟件Win32DiskImager.exe加載鏡像,進行下載:
點write仙辟,再yes
燒寫成功,拔出TF卡.
4. 啟動樹莓派
紅綠指示燈都會閃就表示系統(tǒng)啟動成功同波,然后等待顯示器顯示桌面
5. 配置樹莓派
使用管理員權限,執(zhí)行
leafpad /etc/apt/sources.list
在打開的文件中叠国,用#注釋掉原文件內(nèi)容未檩,用以下內(nèi)容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
保存,退出粟焊。
使用管理員權限執(zhí)行:
leafpad /etc/apt/sources.list.d/raspi.list
用#注釋掉原文件內(nèi)容冤狡,用以下內(nèi)容取代:
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
保存孙蒙,退出。
使用sudo apt-get update命令悲雳,更新軟件源列表挎峦,同時檢查您的編輯是否正確。
完成合瓢,換成了清華大學的軟件源坦胶。
6. 安裝cmake
再后面的安裝中需要cmake,要先安裝晴楔,執(zhí)行:
apt install cmake
到這里樹莓派的配置就完成了顿苇,接下來要開始計算棒toolkit的安裝了
7. 下載OpenVINO toolkit for Raspbian安裝包:
https://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz
本次使用的版本是2018.5.445,安裝請在下面鏈接中查看最新的安裝包版本:
https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI
下載完后包位于Downloads/目錄下税弃,打開命令行
cd ~/Downloads/
解壓包:
tar -xf l_openvino_toolkit_ie_p_2018.5.445.tgz
8. 配置路徑與環(huán)境
執(zhí)行以下命令纪岁,會自動對setupvars.sh文件做修改
sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh
再配置環(huán)境,有兩種做法
一種是臨時的则果,只對該次的窗口有效
source inference_engine_vpu_arm/bin/setupvars.sh
還有永久性的幔翰,執(zhí)行:
leafpad /home/pi/.bashrc
打開.bashrc文件,再最后一行添加一句:
source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh
保存西壮,再打開一個新的終端遗增,如果出現(xiàn):
[setupvars.sh] OpenVINO environment initialized
就表示成功了
9. 添加USB規(guī)則
將當前Linux用戶添加到users組:
sudo usermod -a -G users "$(whoami)"
注:這里要說的是我們現(xiàn)在是root用戶,如果打開新窗口的話起始用戶是pi茸时,所以出現(xiàn)[setupvars.sh] OpenVINO environment initialized贡定,是對于pi用戶來說的,如果在新窗口中用root執(zhí)行程序可都,其實并沒有成功加載[setupvars.sh] OpenVINO environment initialized缓待,需要自己再執(zhí)行一遍
source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh,才能給root用戶配置好OpenVINO environment initialized渠牲。
接下來配置USB規(guī)則旋炒,執(zhí)行:
sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh
到這里就成功安裝好計算棒所需的所有東西了。
模型部署:
使用github PINTO0309的OpenVINO-YoloV3工程签杈,應該是個日本的工程師寫的瘫镇,特別感謝。
利用工程下的openvino_tiny-yolov3_MultiStick_test.py進行測試答姥,在文件中指定我們轉化好的模型文件铣除。
運行。
盡管速度不快鹦付,但最快也能達到7-8幀的樣子尚粘。
? 本文將訓練好的原始模型經(jīng)過兩次轉化得到了可以被NCS所支持的模型文件,并搭建好樹莓派所需的運行環(huán)境敲长,最終將模型部署在樹莓派上并完成了測試郎嫁。下篇文章將介紹秉继,樹莓派小車的控制程序以及微信報警程序的實現(xiàn)。