?
概述
我們將在Hi3516DV300 SDK的基礎之上進行開發(fā),分別為手部檢測+手勢識別實驗,垃圾分類實驗。手部檢測+手勢識別實驗以及垃圾分類實驗,主要基于訓練好的wk模型在板端進行部署,并充分發(fā)揮海思IVE、NNIE硬件加速能力,完成AI推理和業(yè)務處理。
?
目錄
ai_sample在Hi3516DV300 SDK基礎上進行開發(fā),在利用媒體通路的基礎上,通過捕獲VPSS幀進行預處理操作,并送至NNIE進行推理,結(jié)合AI CPU算子最終得到AI Flag并進行相應業(yè)務處理,該AI sample集成了垃圾分類、手勢檢測識別兩個基礎場景,運用到媒體理論、多線程、IPC通信、IVE、NNIE等思想,實現(xiàn)了一個輕量級sample,方便開發(fā)者了解taurus Hi3516DV300的AI能力,ai_sample目錄結(jié)構(gòu)如下:
//device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample
│ BUILD.gn # 編譯ohos ai_sample需要的gn文件
├─ai_infer_process # AI前處理、推理、后處理相關接口
│ ├─ai_infer_process.c
│ └─ai_infer_process.h
├─dependency
│ ├─audio_test.c
│ └─audio_test.h
├─ext_util # 常用的基礎接口、可移植操作系統(tǒng)接口posix等
│ ├─base_inteRFace.c
│ ├─base_interface.h
│ ├─misc_util.c
│ ├─misc_util.h
│ ├─posix_help.c
│ └─posix_help.h
├─mpp_help # 封裝的媒體相關接口
│ ├─include
│ │ ├─ive_img.h
│ │ └─vgs_img.h
│ └─src
│ ├─ive_img.c
│ └─vgs_img.c
├─scenario
│ ├─cnn_trash_classify # 垃圾分類sample
│ │ ├─cnn_trash_classify.c
│ │ └─cnn_trash_classify.h
│ └─hand_classify # 手部檢測+手勢識別sample
│ ├─hand_classify.c
│ ├─hand_classify.h
│ ├─yolov2_hand_detect.c
│ └─yolov2_hand_detect.h
└─smp
├─sample_ai_main.cpp
├─sample_media_ai.c
└─sample_media_ai.h
?
拷貝第三方庫
步驟1:在源碼的根目錄下,分步執(zhí)行下面的命令,拷貝第三方庫至ai sample中
mkdir device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/ -p
cp third_party/iniparser device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/ -rf
![951c6a8e-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EeAXbxZAAB-1nikZM0976.png)
步驟2:使用IDE打開device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/ai_sample/third_party/src/iniparser/src/iniparser.c文件,把第15行的1024改成8192。
![953ce552-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EeAeLR1AAC25jRjCjo905.png)
?
編譯
在編譯ai_sample之前,需確保OpenHarmony 小型系統(tǒng)的主干代碼已經(jīng)整編通過,且已經(jīng)按照《修改源碼及配置文件適配Taurus開發(fā)板》的內(nèi)容進行修改。在單編ai_sample之前,需修改目錄下的一處依賴,進入//device/soc/hisilicon/hi3516dv300/sdk_linux目錄下,通過修改BUILD.gn,在deps下面新增target,"sample/taurus/ai_sample:hi3516dv300_ai_sample",如下圖所示:
![9556e7b8-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EeANcbeAACaRhk5b1I073.png)
點擊Deveco Device Tool工具的Build按鍵進行編譯,具體的編譯過程這里不再贅述,編譯成功后,如下圖所示:
![957c5890-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EeAAClaAADGXVEk7KU757.png)
編譯成功后,即可在out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin目錄下,生成 ohos_camera_ai_demo可執(zhí)行文件,如下圖所示:
![958d5230-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EiALT92AAJ8oRqkqQ8096.png)
?
拷貝可執(zhí)行程序和依賴文件至開發(fā)板的mnt目錄下
方式一:使用SD卡進行資料文件的拷貝
首先需要自己準備一張SD卡:
步驟1:將編譯后生成的可執(zhí)行文件拷貝到SD卡中。
步驟2:將devicesochisiliconhi3516dv300sdk_linuxoutlib目錄下的libvb_server.so和 libmpp_vbs.so拷貝至SD卡中
步驟3:將device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/目錄下的models文件夾和aac_file文件夾拷貝至SD卡中。(前提是按照《獲取sample依賴的資源文件到本地》文檔獲取了資源文件)
![95ae0a5c-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EiAewKdAABWEIFxbOk153.png)
步驟4:可執(zhí)行文件拷貝成功后,將內(nèi)存卡插入開發(fā)板的SD卡槽中,可通過掛載的方式掛載到板端,可選擇SD卡 mount指令進行掛載。
mount -t vfat /dev/mmcblk1p1 /mnt
# 其中/dev/mmcblk1p1需要根據(jù)實際塊設備號修改
掛載成功后,如下圖所示:
![95cfaeaa-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EiAVV3qAACEFM1dONk823.png)
方式二:使用NFS掛載的方式進行資料文件的拷貝
首先需要自己準備一根網(wǎng)線:
步驟1:參考博客鏈接中的內(nèi)容,進行nfs的環(huán)境搭建;
步驟2:將編譯后生成的可執(zhí)行文件拷貝到Windows的nfs共享路徑下;
步驟3:將devicesochisiliconhi3516dv300sdk_linuxoutlib目錄下的libvb_server.so和 libmpp_vbs.so拷貝至Windows的nfs共享路徑下;
步驟4:將device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/目錄下的models文件夾和aac_file文件夾拷貝至Windows的nfs共享路徑下(前提是按照《獲取sample依賴的資源文件到本地》文檔獲取了資源文件)。
![95f2c4a8-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EiAfH_UAABYWPwcEk4349.png)
步驟5:依賴文件拷貝至Windows的nfs共享路徑下后,執(zhí)行下面的命令,將Windows的nfs共享路徑掛載至開發(fā)板的mnt目錄下
mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt
?
拷貝mnt目錄下的文件至正確的目錄下
執(zhí)行下面的命令,拷貝mnt目錄下面的ohos_camera_ai_demo至userdata目錄,拷貝mnt目錄下面的libvb_server.so和 libmpp_vbs.so至/usr/lib/目錄下,再將models和aac_file文件夾拷貝至userdata目錄下
cp /mnt/ohos_camera_ai_demo /userdata/
cp /mnt/*.so /usr/lib/
cp /mnt/models /userdata/ -rf
cp /mnt/aac_file /userdata/ -rf
![960a1202-cd9e-11ec-bce3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/95/4B/wKgZomTm_EiAQ3ueAABJFzWqFmU591.png)
執(zhí)行下面的命令,給ohos_camera_ai_demo文件可執(zhí)行權(quán)限
chmod 777 /userdata/ohos_camera_ai_demo
審核編輯 :李倩
-
cpu
+關注
關注
68文章
10922瀏覽量
213332 -
手勢識別
+關注
關注
8文章
225瀏覽量
47885 -
圖像識別
+關注
關注
9文章
522瀏覽量
38436
原文標題:OpenHarmony AI圖像識別開發(fā)—基于潤和Hi3516開發(fā)套件
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
鴻蒙OpenHarmony【基于Hi3516DV300開發(fā)板(時鐘應用開發(fā))】
![鴻蒙<b class='flag-5'>OpenHarmony</b>【基于<b class='flag-5'>Hi3516</b>DV300<b class='flag-5'>開發(fā)</b>板(時鐘應用<b class='flag-5'>開發(fā)</b>)】](https://file1.elecfans.com/web2/M00/E2/07/wKgZomY6GKSAUIhwAAClthbkdmU534.jpg)
鴻蒙OpenHarmony南向:【Hi3516標準系統(tǒng)入門(命令行方式)】
![鴻蒙<b class='flag-5'>OpenHarmony</b>南向:【<b class='flag-5'>Hi3516</b>標準系統(tǒng)入門(命令行方式)】](https://file1.elecfans.com/web2/M00/E1/C7/wKgZomY52MmAS66XAAADCp1_zEY399.jpg)
鴻蒙OpenHarmony南向:【Hi3516開發(fā)板介紹】
![鴻蒙<b class='flag-5'>OpenHarmony</b>南向:【<b class='flag-5'>Hi3516</b><b class='flag-5'>開發(fā)</b>板介紹】](https://file1.elecfans.com/web2/M00/E1/86/wKgaomY4jxWAaqE5AAHoX-yIiXw382.jpg)
鴻蒙OpenHarmony【小型系統(tǒng) 燒錄】(基于Hi3516開發(fā)板)
![鴻蒙<b class='flag-5'>OpenHarmony</b>【小型系統(tǒng) 燒錄】(基于<b class='flag-5'>Hi3516</b><b class='flag-5'>開發(fā)</b>板)](https://file1.elecfans.com/web2/M00/DF/10/wKgaomYt8OyAYdysAABTue69ngM008.jpg)
HarmonyOS開發(fā):【基于命令行(開發(fā)環(huán)境)】
![HarmonyOS<b class='flag-5'>開發(fā)</b>:【基于命令行(<b class='flag-5'>開發(fā)</b>環(huán)境)】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
鴻蒙OpenHarmony【小型系統(tǒng)運行案例】 (基于Hi3516開發(fā)板)
![鴻蒙<b class='flag-5'>OpenHarmony</b>【小型系統(tǒng)運行案例】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>開發(fā)</b>板)](https://file1.elecfans.com/web2/M00/C9/99/wKgaomYeL0WAZFDHAAACSiKnE8w930.jpg)
鴻蒙OpenHarmony【小型系統(tǒng)編譯】 (基于Hi3516開發(fā)板)
![鴻蒙<b class='flag-5'>OpenHarmony</b>【小型系統(tǒng)編譯】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>開發(fā)</b>板)](https://file1.elecfans.com/web2/M00/C9/99/wKgaomYeL0WAZFDHAAACSiKnE8w930.jpg)
OpenHarmony開發(fā)實例:【電話簿聯(lián)系人Contacts】
![<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發(fā)</b>實例:【電話簿聯(lián)系人Contacts】](https://file1.elecfans.com/web2/M00/D5/3E/wKgZomYmZRaAIQYVAAG7ex2luEk160.jpg)
OpenHarmony開發(fā)實例:【 待辦事項TodoList】
![<b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發(fā)</b>實例:【 待辦事項TodoList】](https://file1.elecfans.com/web2/M00/D6/26/wKgaomYmbHOARWI5AABUcZBvSes643.jpg)
OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3516開發(fā)板)】
![<b class='flag-5'>OpenHarmony</b>鴻蒙南向<b class='flag-5'>開發(fā)</b>案例:【智能貓眼(基于<b class='flag-5'>3516</b><b class='flag-5'>開發(fā)</b>板)】](https://file1.elecfans.com/web2/M00/D1/4F/wKgaomYidIOAb5t-AASi2dMK2KA073.jpg)
鴻蒙OpenHarmony【搭建Ubuntu環(huán)境】
![鴻蒙<b class='flag-5'>OpenHarmony</b>【搭建Ubuntu環(huán)境】](https://file1.elecfans.com/web2/M00/C9/99/wKgaomYeL0WAZFDHAAACSiKnE8w930.jpg)
鴻蒙OpenHarmony【搭建Windows環(huán)境】
![鴻蒙<b class='flag-5'>OpenHarmony</b>【搭建Windows環(huán)境】](https://file1.elecfans.com/web2/M00/C9/99/wKgaomYeL0WAZFDHAAACSiKnE8w930.jpg)
OpenHarmony南向開發(fā)案例:【智能照相機】
![<b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>開發(fā)</b>案例:【智能照相機】](https://file1.elecfans.com/web2/M00/CD/E0/wKgZomYhKgqANsjMAASBTyBf_R0768.jpg)
OpenHarmony南向開發(fā)案例:【智能中控屏】
![<b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>開發(fā)</b>案例:【智能中控屏】](https://file1.elecfans.com/web2/M00/CB/1C/wKgZomYfgqiAMRwpAACiuTXEuS8868.jpg)
評論