色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 智能計(jì)算 > 進(jìn)階指南 > 使用樹莓派和神經(jīng)計(jì)算棒實(shí)踐OpenVINO人流量統(tǒng)計(jì)項(xiàng)目

          使用樹莓派和神經(jīng)計(jì)算棒實(shí)踐OpenVINO人流量統(tǒng)計(jì)項(xiàng)目

          作者: 時(shí)間:2021-11-04 來源:電子產(chǎn)品世界 收藏

          自從2012年問世以來,一直受到廣大開發(fā)者的喜愛。今天我們使用和英特爾神經(jīng)搭建開發(fā)環(huán)境,實(shí)踐項(xiàng)目。

          本文引用地址:http://cafeforensic.com/article/202111/429363.htm

          一、系統(tǒng)刷寫

              當(dāng)我們拿到樹莓派以后,首先需要安裝操作系統(tǒng)。適用于樹莓派的操作系統(tǒng)非常多,官網(wǎng)推薦的系統(tǒng)是Raspberry Pi OS,是目前應(yīng)用最為廣泛的樹莓派操作系統(tǒng),這里我們也將使用Raspberry Pi OS進(jìn)行實(shí)踐。由于樹莓派沒有配置板載閃存,因此我們將Raspberry Pi OS燒寫在一張16GB的存儲(chǔ)卡上,一般要求存儲(chǔ)卡不小于8GB。

              下面介紹樹莓派操作系統(tǒng)的燒寫流程。

              1、在樹莓派官方網(wǎng)站(https://www.raspberrypi.org/software/operating-systems/)下載Raspberry Pi OS系統(tǒng)鏡像。該頁面下提供了3種Raspberry Pi OS最新版本的鏡像文件,如下圖所示。

           

          1635992199729802.png

              Raspberry Pi OS with desktop and recommended software集成了圖形化界面,同時(shí)預(yù)安裝了一些常用軟件,Raspberry Pi OS with desktop集成了圖形化界面,Raspberry Pi OS Lite沒有圖形化桌面。我們選擇Raspberry Pi OS with desktop and recommended software,點(diǎn)擊Downloal或者Download Torrent下載該文件。

              2、在Windows系統(tǒng)的電腦中對(duì)存儲(chǔ)卡進(jìn)行格式化。

              3、使用燒寫軟件Etcher將系統(tǒng)刻錄在SD卡。Etcher是支持Windows、macOS以及Linux系統(tǒng)的輕量化軟件(https://www.balena.io/etcher/)。打開Etcher后分別選擇鏡像文件目錄以及待燒寫SD卡的盤符,點(diǎn)擊Flash即可。

           

          1635992248645599.png

          1635992252318311.png

              燒寫大概需要10~15分鐘的時(shí)間,具體時(shí)長(zhǎng)與設(shè)備的讀寫能力有關(guān)。燒寫完成后,我們?cè)赪indows的磁盤管理器中可能看到SD卡的空間只剩下幾十MB,這都是正?,F(xiàn)象,因?yàn)閃indows無法識(shí)別Linux的文件系統(tǒng)。如果系統(tǒng)提示SD卡需要格式化,切記不要選擇“是”,這會(huì)使我們之前的工作變成無用功。等待燒寫完成,將SD卡插入樹莓派背面的SD卡卡槽內(nèi),就可以連接硬件了。

          二、在樹莓派上搭建環(huán)境

              接下來,我們?yōu)闃漭缮洗罱?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/OpenVINO">OpenVINO開發(fā)環(huán)境。樹莓派的OpenVINO工具套件包括推理引擎和MYRIAD插件,需要搭配英特爾二代神經(jīng)進(jìn)行AI推理。由于樹莓派的OpenVINO工具套件不包含模型優(yōu)化器,我們需要在其他機(jī)器上對(duì)模型進(jìn)行轉(zhuǎn)換,然后將優(yōu)化后的模型部署在樹莓派上。

          1、下載樹莓派的OpenVINO工具套件安裝包

          https://storage.openvinotoolkit.org/repositories/openvino/packages/),這里我們選擇的是2021.4版本。

          2、打開樹莓派終端,新建文件夾openvino_2021,將下載好的安裝包解壓到當(dāng)前文件夾。

          sudo mkdir -p /opt/intel/openvino_2021

          sudo tar -xf  l_openvino_toolkit_runtime_raspbian_p_<version>.tgz --strip 1 -C /opt/intel/openvino_2021

          3、安裝外部軟件依賴cmake

          sudo apt install cmake

          4、設(shè)置環(huán)境變量

          source /opt/intel/openvino_2021/bin/setupvars.sh

          這樣設(shè)置每次重啟終端都需要運(yùn)行上面的代碼。

          永久設(shè)置環(huán)境變量

          echo "source /opt/intel/openvino_2021/bin/setupvars.sh" >> ~/.bashrc

          5、添加USB規(guī)則

          添加當(dāng)前用戶至users組,注銷登錄使其生效。

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

          安裝usb規(guī)則

          sh /opt/intel/openvino_2021/install_dependencies/install_NCS_udev_rules.sh

          6、編譯和運(yùn)行目標(biāo)檢測(cè)樣例

          完成上面的步驟后,我們運(yùn)行工具套件中的人臉檢測(cè)模型,測(cè)試環(huán)境是否搭建成功。

              (1)創(chuàng)建build文件夾用來編譯項(xiàng)目

          mkdir build && cd build

              (2)編譯人臉檢測(cè)樣例

          cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino_2021/deployment_tools/inference_engine/samples/cpp

          make -j2 object_detection_sample_ssd

              (3)在open_model_zoo中下載人臉檢測(cè)模型

          git clone --depth 1 https://github.com/openvinotoolkit/open_model_zoo

          cd open_model_zoo/tools/downloader

          python3 -m pip install -r requirements.in

          python3 downloader.py --name face-detection-adas-0001 

              (4)連接神經(jīng),運(yùn)行模型

          ./armv7l/Release/object_detection_sample_ssd -m <path_to_model>/face-detection-adas-0001.xml -d MYRIAD -i <path_to_image>

              程序運(yùn)行結(jié)束后,我們可以查看生成的out_0.bmp文件中的人臉檢測(cè)框。

              至此,我們已經(jīng)完成了樹莓派OpenVINO環(huán)境的搭建。

          三、open_model_zoo的使用

          OpenVINO官網(wǎng)為我們提供了豐富的資源,方便我們快速構(gòu)建自己的項(xiàng)目。其中,GitHub中的open_model_zoo(https://github.com/openvinotoolkit/open_model_zoo)倉庫為我們提供了一些公開的和英特爾預(yù)訓(xùn)練好的模型,以及一些場(chǎng)景下使用OpenVINO的demo。

          1635992360240689.png

          由于我們要在樹莓派上實(shí)踐項(xiàng)目,首先我們需要在open_model_zoo中篩選能夠檢測(cè)行人的目標(biāo)檢測(cè)模型。我們選擇適用于移動(dòng)端的輕量級(jí)深度網(wǎng)絡(luò)模型mobilenet-ssd作為人群檢測(cè)模型。https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/mobilenet-ssd

           

          1635992399405751.png

          倉庫中mobilenet-ssd的介紹文檔向我們?cè)敿?xì)描述了模型的輸入、輸出、精度、計(jì)算量、參數(shù)量等。mobilenet-ssd模型是一個(gè)單階段的目標(biāo)檢測(cè)模型,使用的是Caffe框架,模型的輸入是300*300的BGR三通道圖片,計(jì)算量2.316GFLOPs,參數(shù)量5.783MParams,在VOC2007數(shù)據(jù)集上的mAP值是67%。輸入輸出部分向我們介紹了原始模型和使用模型優(yōu)化器轉(zhuǎn)換后模型的輸入輸出參數(shù)。我們可以按照自己對(duì)精度、計(jì)算量、參數(shù)量、框架以及部署環(huán)境的要求,選擇自己需要的模型。

          1、模型下載器的使用

          確定好模型后,我們使用OpenVINO提供的模型下載器(downloader.py)下載模型。Windows平臺(tái)下需要以管理員身份運(yùn)行Window命令提示符。

          切換目錄:cd C:Program Files (x86)Intelopenvino_2021.2.185deployment_toolsopen_model_zootoolsdownloader

          --help參數(shù)可以查看模型下載器的參數(shù)設(shè)置。

          --print_all參數(shù)可以打印所有可以下載的模型:python downloader.py --print_all

          下載模型需要在—name參數(shù)后面加上模型名稱 :python downloader.py --name mobilenet-ssd

           

          1635992563501480.png

          2、模型優(yōu)化器的使用

          模型優(yōu)化器Model Optimizer可以將深度學(xué)習(xí)模型轉(zhuǎn)換為能夠被推理引擎執(zhí)行的IR文件。IR文件包含一個(gè)*.xml文件用來描述網(wǎng)絡(luò)結(jié)構(gòu),還包含一個(gè)*.bin文件用來存儲(chǔ)網(wǎng)絡(luò)的權(quán)重和偏置量。

          下載好模型后,使用模型優(yōu)化器優(yōu)化模型,樹莓派的OpenVINO工具套件不包含模型下載器,因此我們需要在別的機(jī)器上對(duì)模型進(jìn)行優(yōu)化。運(yùn)行下面命令,完成對(duì)模型的優(yōu)化。--help參數(shù)可以查看模型優(yōu)化器的參數(shù)設(shè)置。

          python mo.py --input_model mobilenet-ssdmobilenet-ssd.caffemodel --scale 127.5 --mean_values [127.5,127.5,127.5]

          1635992626547252.png

          四、應(yīng)用及代碼展示

          1、行人檢測(cè)代碼

          這里對(duì)中,使用OpenVINO進(jìn)行人員檢測(cè)的代碼進(jìn)行展示。

          # 導(dǎo)入模塊

          from openvino.inference_engine import IECore,IENetwork

          import cv2

          # 定義模型、圖片路徑以及計(jì)算設(shè)備

          model_xml = "mobilenet_ssd/mobilenet-ssd.xml"

          model_bin = "mobilenet_ssd/mobilenet-ssd.bin"

          image_file = "2.jpg"

          DEVICE = 'MYRIAD'

          # 初始化推理引擎對(duì)象

          ie = IECore()

          # 讀取模型

          net = IENetwork(model=model_xml, weights=model_bin)

          # 配置輸入輸出

          input_blob = next(iter(net.inputs))

          out_blob = next(iter(net.outputs))

          net.batch_size = 1

          # 加載模型到計(jì)算設(shè)備

          exec_net = ie.load_network(network=net, num_requests=1, device_name=DEVICE)


          n,c,h,w = net.inputs[input_blob].shape

          frame = cv2.imread(image_file)

          (initial_h, initial_w, channels) = frame.shape

          image = cv2.resize(frame, (w,h))

          image = image.transpose((2,0,1))

          # 推理計(jì)算

          res = exec_net.infer(inputs={input_blob:image})

          # 可視化展示推理結(jié)果

          res = res[out_blob]

          for obj in res[0][0]:

              if obj[2] > 0.7:

                  xmin = int(obj[3]*initial_w)

                  ymin = int(obj[4]*initial_h)

                  xmax = int(obj[5]*initial_w)

                  ymax = int(obj[6]*initial_h)

                  class_id = int(obj[1])

                  color = (0,255,0)

                  cv2.rectangle(frame, (xmin,ymin), (xmax, ymax), color,2)

                  

          cv2.imshow("result", frame)

          cv2.waitKey(0)

          cv2.destroyAllWindows()

          2、人流量統(tǒng)計(jì)視頻

          視頻1封面.jpg

          人流量統(tǒng)計(jì)視頻http://v.eepw.com.cn/video/play/id/15333

          在距離視頻畫面頂部2/3處畫了一條水平黃線,當(dāng)有人越過這條黃線,使用模型對(duì)其進(jìn)行檢測(cè)和追蹤,Up和Down分別對(duì)應(yīng)人員流入和人員流出,從而實(shí)現(xiàn)對(duì)特定場(chǎng)所進(jìn)入和出去人流量的統(tǒng)計(jì)。

          3、運(yùn)行結(jié)果對(duì)比

          我們?cè)跇漭缮戏謩e對(duì)使用OpenCV的dnn相關(guān)函數(shù)調(diào)用mobilenet-ssd原始模型和OpenVINO運(yùn)行優(yōu)化后的模型進(jìn)行比較。視頻中左側(cè)為OpenCV運(yùn)行,右側(cè)為OpenVINO運(yùn)行,同時(shí)對(duì)推理部分的FPS值進(jìn)行計(jì)算??梢钥闯?,樹莓派上英特爾神經(jīng)計(jì)算棒與OpenVINO搭配的FPS值明顯要優(yōu)于單獨(dú)使用OpenCV運(yùn)行原始mobilenet-ssd模型。

           

          1635992699611809.png

          人流量統(tǒng)計(jì)運(yùn)行結(jié)果對(duì)比視頻http://v.eepw.com.cn/video/play/id/15334

          參考資料:

          樹莓派官網(wǎng):https://www.raspberrypi.org/software/operating-systems/

          樹莓派搭建OpenVINO環(huán)境指南:https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_raspbian.html



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉