基於樹莓派與YOLOv3模型的人體目標檢測小車(三)


模型效果:

在上文中,我們制作了數據集,並利用數據集進行了模型的訓練,利用靜態圖片和視頻對模型的檢測效果進行了檢驗,發現效果還是不錯的。

前兩張為靜態圖片檢測,后一張為視頻檢測效果截圖。

​ 但是模型要想部署在算力微弱的樹莓派上,還需要進行兩次模型轉化才能運行在NCS上進行前向推理。

模型轉化:
第一次轉化:(.weight-->.pb)

這里的模型轉化OpenVINO給出了官方指南https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_tf_specific_Convert_YOLO_From_Tensorflow.html 但是可能會出現錯誤。

 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

執行完上述代碼,就能得到Tensorflow支持的模型文件。

第二次轉化:(.pb-->.IR)

第二次的模型轉化我在windows環境下完成的。

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 

樹莓派環境配置:
1. 材料硬件:
  1. 樹莓派3B+

  2. intel movidius 神經元計算棒

  3. 顯示器、鼠標鍵盤、讀卡器、用於做樹莓派系統盤的16GTF卡

  4. 燒寫樹莓派系統用的PC(win10)

2. 下載樹莓派鏡像並解壓

樹莓派系統鏡像使用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. 啟動樹莓派

紅綠指示燈都會閃就表示系統啟動成功,然后等待顯示器顯示桌面

5. 配置樹莓派

使用管理員權限,執行

leafpad /etc/apt/sources.list

在打開的文件中,用#注釋掉原文件內容,用以下內容取代:

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

保存,退出。
使用管理員權限執行:

leafpad /etc/apt/sources.list.d/raspi.list

用#注釋掉原文件內容,用以下內容取代:

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,要先安裝,執行:

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. 配置路徑與環境

執行以下命令,會自動對setupvars.sh文件做修改

sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh

再配置環境,有兩種做法
一種是臨時的,只對該次的窗口有效

source inference_engine_vpu_arm/bin/setupvars.sh

還有永久性的,執行:

leafpad /home/pi/.bashrc

打開.bashrc文件,再最后一行添加一句:

source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh

在這里插入圖片描述
保存,再打開一個新的終端,如果出現:

[setupvars.sh] OpenVINO environment initialized

就表示成功了

9. 添加USB規則

將當前Linux用戶添加到users組:

sudo usermod -a -G users "$(whoami)"

注:這里要說的是我們現在是root用戶,如果打開新窗口的話起始用戶是pi,所以出現[setupvars.sh] OpenVINO environment initialized,是對於pi用戶來說的,如果在新窗口中用root執行程序,其實並沒有成功加載[setupvars.sh] OpenVINO environment initialized,需要自己再執行一遍
source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh,才能給root用戶配置好OpenVINO environment initialized。
接下來配置USB規則,執行:

sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh

在這里插入圖片描述
到這里就成功安裝好計算棒所需的所有東西了。

模型部署:

使用github PINTO0309的OpenVINO-YoloV3工程,應該是個日本的工程師寫的,特別感謝。

利用工程下的openvino_tiny-yolov3_MultiStick_test.py進行測試,在文件中指定我們轉化好的模型文件。

運行。

盡管速度不快,但最快也能達到7-8幀的樣子。

​ 本文將訓練好的原始模型經過兩次轉化得到了可以被NCS所支持的模型文件,並搭建好樹莓派所需的運行環境,最終將模型部署在樹莓派上並完成了測試。下篇文章將介紹,樹莓派小車的控制程序以及微信報警程序的實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM