精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

百問網V853開發(fā)板端側部署YOLOV5全流程教程

百問科技 ? 來源:百問科技 ? 2023-06-30 15:41 ? 次閱讀

下面展示100ASK_V853-PRO開發(fā)板部署YOLOV5模型的效果圖:

5f21002a-1712-11ee-962d-dac502259ad0.png

5f779886-1712-11ee-962d-dac502259ad0.png

5fbdc7e8-1712-11ee-962d-dac502259ad0.png

百問網100ASK_V853-PRO開發(fā)板購買,請使用淘寶掃一掃下面二維碼:

60060738-1712-11ee-962d-dac502259ad0.png

下面展示100ASK-V853-PRO開發(fā)板端側部署YOLOV5模型的全流程教程

1.配置yolov5環(huán)境

yolov5搭建環(huán)境指南:https://forums.100ask.net/t/topic/3670

yolov5官方網址為:https://github.com/ultralytics/yolov5

使用Git工具在任意目錄下獲取源碼V6.0版本,輸入

git clone -b v6.0 https://github.com/ultralytics/yolov5

60150c7e-1712-11ee-962d-dac502259ad0.png

如果您使用Git下載出現(xiàn)問題,也可以直接點擊下面網址直接下載源碼壓縮包,下載完成解壓即可正常使用。

https://github.com/ultralytics/yolov5/archive/refs/tags/v6.0.zip

等待下載完成,下載完成后會在當前目錄下,查看到y(tǒng)olov5項目文件夾

100askTeam@DESKTOP-F46NFJT MINGW64 /d/Programmers/ModelDeployment/2.yolov5
$ ls
yolov5/

100askTeam@DESKTOP-F46NFJT MINGW64 /d/Programmers/ModelDeployment/2.yolov5
$ cd yolov5/

100askTeam@DESKTOP-F46NFJT MINGW64 /d/Programmers/ModelDeployment/2.yolov5/yolov5 (master)
$ ls
CITATION.cff   README.zh-CN.md  detect.py  requirements.txt  tutorial.ipynb
CONTRIBUTING.md  benchmarks.py   export.py  segment/      utils/
LICENSE      classify/     hubconf.py  setup.cfg     val.py
README.md     data/       models/   train.py

打開Anaconda Prompt (Anaconda3)軟件,進入yolov5項目目錄中,輸入以下命令

(base) C:Users100askTeam>D:

(base) D:>cd D:ProgrammersModelDeployment2.yolov5yolov5

(base) D:ProgrammersModelDeployment2.yolov5yolov5>

使用conda創(chuàng)建yolov項目環(huán)境,輸入

conda create -n my-yolov5-env python=3.7

激活yolov5環(huán)境

conda activate my-yolov5-env

安裝依賴

pip install -U -r requirements.txt -i https://pypi.doubanio.com/simple/

6023d2f4-1712-11ee-962d-dac502259ad0.png

FAQ:

搭建環(huán)境時由于版本的不同會遇各種問題,下面我會提供我配置好的環(huán)境所需的包文件版本,文件位于壓縮包的requirements文件夾中的conda-yolov5_6-env.yaml。在Conda終端中創(chuàng)建新環(huán)境,執(zhí)行

conda env create -f conda-yolov5_6-env.yaml

607b3936-1712-11ee-962d-dac502259ad0.png

執(zhí)行python detect.py,測試環(huán)境是否搭建成功,執(zhí)行后會自動下載模型權重文件

這里下載速度可能會很慢,建議直接訪問官網下載https://github.com/ultralytics/yolov5/tree/v6.0,點擊下圖紅框處的YOLOV5s。這里我下載 v6.0 版本的 yolov5s.onnx 模型作為示例。

下載地址:https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt

608bbc66-1712-11ee-962d-dac502259ad0.png

點進入后會進去yolov5資源中心,往下找到V6.0版本的資源下載界面,找到您所需的資源即可。

609ad430-1712-11ee-962d-dac502259ad0.gif

將該模型文件放在yolov5項目文件夾下,如下圖所示:

60fc2276-1712-11ee-962d-dac502259ad0.png

在conda終端中輸入python detect.py,可得到如下執(zhí)行結果

(my-yolov5-env) D:ProgrammersModelDeployment2.yolov5yolov5-6.0>python detect.py
detect: weights=yolov5s.pt, source=dataimages, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runsdetect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5  2021-10-12 torch 2.0.1+cpu CPU

Fusing layers...
D:Anaconda3envsmy-yolov5-envlibsite-packages	orchfunctional.py UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:actions-runner\_workpytorchpytorchuilderwindowspytorchatensrcATen
ativeTensorShape.cpp:3484.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
Model Summary: 213 layers, 7225885 parameters, 0 gradients
image 1/2 D:ProgrammersModelDeployment2.yolov5yolov5-6.0dataimagesus.jpg: 640x480 4 persons, 1 bus, Done. (0.274s)
image 2/2 D:ProgrammersModelDeployment2.yolov5yolov5-6.0dataimageszidane.jpg: 384x640 2 persons, 1 tie, Done. (0.189s)
Speed: 4.5ms pre-process, 231.3ms inference, 2.8ms NMS per image at shape (1, 3, 640, 640)
Results saved to runsdetectexp1

FAQ:

如果您執(zhí)行此命令時,遇到如下報錯:

610ec822-1712-11ee-962d-dac502259ad0.png

原因:torch版本過高,可以通過修改代碼或者降低版本。

下面我使用修改代碼的方式解決:

修改

D:Anaconda3envsmy-yolov5-envlibsite-packages orch nmodulesupsampling.p

文件中的Upsample類中forward函數(shù)的返回值。

原本:

    def forward(self, input: Tensor) -> Tensor:
        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
                             recompute_scale_factor=self.recompute_scale_factor)

修改后:

    def forward(self, input: Tensor) -> Tensor:
        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

修改結果如下圖所示:

612a0330-1712-11ee-962d-dac502259ad0.png

執(zhí)行python detect.py完成后,可以在yolov5項目文件夾下的runsdetectexp1目錄下找到執(zhí)行后的輸出結果,如下所示。

613d28e8-1712-11ee-962d-dac502259ad0.jpg

2.導出yolov5 ONNX模型

2.1 export程序導出模型

在export.py程序找到parse_opt函數(shù),查看默認輸出的模型格式。如果默認支持有onnx格式,就無需修改,如果默認沒有填寫onnx,修改默認格式為onnx格式。

61815b6c-1712-11ee-962d-dac502259ad0.png

執(zhí)行export.py函數(shù)前需要需要確保已經安裝了onnx包,可手動安裝,如下所示

pip install onnx==1.12.0 -i https://pypi.doubanio.com/simple/

6194588e-1712-11ee-962d-dac502259ad0.png

執(zhí)行export.py函數(shù)導出yolov5的onnx格式動態(tài)模型,在conda終端輸入

python export.py --weights yolov5s.pt --include onnx --dynamic

61a94140-1712-11ee-962d-dac502259ad0.png

執(zhí)行完成后會在yolov5項目目錄中生成一個名稱為yolov5s.onnx的文件,如下圖所示:

61cb2148-1712-11ee-962d-dac502259ad0.png

2.2 簡化模型

由于轉換的模型是動態(tài) Shape 的,不限制輸入圖片的大小,對于 NPU 來說會增加處理工序,所以這里我們需要轉換為靜態(tài) Shape 的模型。

需要安裝 onnxsim 工具,在conda終端輸入

pip install onnxsim -i https://pypi.doubanio.com/simple/

61ea27be-1712-11ee-962d-dac502259ad0.png

然后使用這條命令轉換:

python -m onnxsim yolov5s.onnx yolov5s-sim.onnx --input-shape 1,3,640,640

620a4fbc-1712-11ee-962d-dac502259ad0.png

6235b738-1712-11ee-962d-dac502259ad0.png

執(zhí)行完成后會導出名為yolov5s-sim.onnx文件,文件位于yolov5項目文件夾下,如下圖所示:

62492674-1712-11ee-962d-dac502259ad0.png

2.3 查看模型

使用開源網站Netron網站

https://netron.app/

訪問上面網址查看模型結構。

626a5dee-1712-11ee-962d-dac502259ad0.png

選擇yolov5s-sim.onnx文件,點擊打開。

6279bb4a-1712-11ee-962d-dac502259ad0.png

查看如下圖所示輸出節(jié)點

620a4fbc-1712-11ee-962d-dac502259ad0.png

62b070d6-1712-11ee-962d-dac502259ad0.png

可看到模型有 4 個輸出節(jié)點,其中 ouput 節(jié)點為后處理解析后的節(jié)點;在實際測試的過程中,發(fā)現(xiàn) NPU 量化操作后對后處理的運算非常不友好,輸出數(shù)據偏差較大,所以我們可以將后處理部分放在 CPU 運行;因此保留 350498646 三個后處理解析前的輸出節(jié)點即可,后文在導入模型時修改輸出節(jié)點。

3.轉換NPU模型

3.1 創(chuàng)建轉換目錄

打開NPU工具包的虛擬機Ubuntu20.04,創(chuàng)建yolov5-6.0文件夾,存放模型和量化圖像等。

ubuntu@ubuntu2004:~$ mkdir yolov5-6.0

進入yolov5模型轉換目錄。

ubuntu@ubuntu2004:~$ cd yolov5-6.0/

創(chuàng)建data目錄存放量化圖像

mkdir data

將量化圖像傳入data文件夾下,例如,傳入test01.jpg圖像到data

ubuntu@ubuntu2004:~/yolov5-test$ ls data
test01.jpg

在yolov5模型轉換目錄中創(chuàng)建dataset.txt

ubuntu@ubuntu2004:~/yolov5-6.0$ touch dataset.txt

修改dataset.txt文件

ubuntu@ubuntu2004:~/yolov5-6.0$ vi dataset.txt

dataset.txt文件中增加量化圖片的路徑.

./data/test01.jpg

62c4ec6e-1712-11ee-962d-dac502259ad0.png

yolov5s-sim.onnx模型傳入yolov5模型轉換文件夾下。例如:

ubuntu@ubuntu2004:~/yolov5-6.0$ ls
data  dataset.txt  yolov5s-sim.onnx

工作目錄的文件如下所示:

ubuntu@ubuntu2004:~/yolov5-6.0$ tree
.
├── data
│ └── test01.jpg
├── dataset.txt
└── yolov5s-sim.onnx

1 directory, 3 files

3.2 導入模型

導入模型前需要知道我們要保留的輸出節(jié)點,由之前查看到我們輸出的三個后處理節(jié)點為:350498646

pegasus import onnx --model yolov5s-sim.onnx --output-data yolov5s-sim.data --output-model yolov5s-sim.json --outputs 350 498 646

導入生成兩個文件,分別是是 yolov5s-sim.datayolov5s-sim.json 文件,兩個文件是 YOLO V5 網絡對應的芯原內部格式表示文件,data 文件儲存權重,cfg 文件儲存模型。

3.3生成 YML 文件

YML 文件對網絡的輸入和輸出的超參數(shù)進行描述以及配置,這些參數(shù)包括,輸入輸出 tensor 的形狀,歸一化系數(shù) (均值,零點),圖像格式,tensor 的輸出格式,后處理方式等等

pegasus generate inputmeta --model yolov5s-sim.json --input-meta-output yolov5s-sim_inputmeta.yml

620a4fbc-1712-11ee-962d-dac502259ad0.png

pegasus generate postprocess-file --model yolov5s-sim.json --postprocess-file-output yolov5s-sim_postprocess_file.yml

修改 yolov5s-sim_inputmeta.yml 文件中的的 scale 參數(shù)為 0.0039216(1/255),目的是對輸入 tensor 進行歸一化,和網絡進行訓練的時候是對應的。

vi yolov5s-sim_inputmeta.yml

62ef15ca-1712-11ee-962d-dac502259ad0.png

3.4 量化

生成量化表文件,使用非對稱量化,uint8,修改 --batch-size 參數(shù)為你的 dataset.txt 里提供的圖片數(shù)量。

pegasus quantize --model yolov5s-sim.json --model-data yolov5s-sim.data --batch-size 1 --device CPU --with-input-meta yolov5s-sim_inputmeta.yml --rebuild --model-quantize yolov5s-sim.quantize --quantizer asymmetric_affine --qtype uint8

63017d14-1712-11ee-962d-dac502259ad0.png

3.5 預推理

利用前文的量化表執(zhí)行預推理,得到推理 tensor

pegasus inference --model yolov5s-sim.json --model-data yolov5s-sim.data --batch-size 1 --dtype quantized --model-quantize yolov5s-sim.quantize --device CPU --with-input-meta yolov5s-sim_inputmeta.yml --postprocess-file yolov5s-sim_postprocess_file.yml

6326053a-1712-11ee-962d-dac502259ad0.png

3.6 導出模板代碼與模型

輸出的模型可以在 ovxilb/yolov5s-sim_nbg_unify 文件夾中找到network_binary.nb文件。

pegasus export ovxlib --model yolov5s-sim.json --model-data yolov5s-sim.data --dtype quantized --model-quantize yolov5s-sim.quantize --batch-size 1 --save-fused-graph --target-ide-project 'linux64' --with-input-meta yolov5s-sim_inputmeta.yml --output-path ovxilb/yolov5s-sim/yolov5s-simprj --pack-nbg-unify --postprocess-file yolov5s-sim_postprocessmeta.yml --optimize "VIP9000PICO_PID0XEE" --viv-sdk ${VIV_SDK}

63384b64-1712-11ee-962d-dac502259ad0.png

將生成的network_binary.nb文件拷貝出來備用。

4.YOLOV5端側部署

4.1 配置yolov5端側部署環(huán)境

在進行端側部署前,由于后處理需要使用OpenCV庫,所以請先按照如下步驟

  • 配置NPU拓展包:https://forums.100ask.net/t/topic/3224

  • 配置OpenCV庫:https://forums.100ask.net/t/topic/3349

    配置完成后才能編譯端側部署程序。

下載source壓縮包中的yolov5.tar.gz,將該壓縮包拷貝到虛擬機中,解壓壓縮包

tar -xzvf yolov5.tar.gz

將解壓出來的文件夾拷貝到tina-v853-open/openwrt/package/npu/目錄下

cp yolov5/ ~/workspaces/tina-v853-open/openwrt/package/npu/ -rf

注意:上面的~/workspaces/tina-v853-open/openwrt/package/npu/目錄需要更換為您自己的SDK實際的目錄。

拷貝完成后,如下所示:

book@100ask:~/workspaces/tina-v853-open/openwrt/package/npu$ ls
lenet  viplite-driver  vpm_run  yolov3  yolov5

4.2 編譯端側部署代碼

配置編譯環(huán)境

book@100ask:~/workspaces/tina-v853-open$ source build/envsetup.sh 
...
book@100ask:~/workspaces/tina-v853-open$ lunch

You're building on Linux

Lunch menu... pick a combo:
     1  v853-100ask-tina
     2  v853-vision-tina
Which would you like? [Default v853-100ask]: 1
...

進入Tina配置界面

book@100ask:~/workspaces/tina-v853-open$ make menuconfig

進入如下目錄,選中yolov5后即可編譯端側部署程序

> 100ask 
> NPU 
<*> yolov5....................................................... yolov5 demo             
<*>   yolov5-model...................................... yolov5 test demo model

注意:yolov5-model該選擇后會將yolov5_model.nb打包進鏡像中,該模型文件會在/etc/models/目錄下。

63539518-1712-11ee-962d-dac502259ad0.png

保存并退出Tina配置界面。

編譯Tina SDK鏡像,編譯完成后打包生成鏡像

book@100ask:~/workspaces/tina-v853-open$ make
...
book@100ask:~/workspaces/tina-v853-open$ pack

注意:如果您將模型打包進鏡像中,可能會出現(xiàn)文件系統(tǒng)大小設置值太小的問題們可以參考https://forums.100ask.net/t/topic/3158解決。

打包完成后,使用全志燒寫工具進行燒寫新鏡像,如果您還不會燒寫系統(tǒng),請參考:https://forums.100ask.net/t/topic/3403

4.3 測試yolov5端側部署

測試圖像文件要求:

  • 圖片

  • 尺寸:640*640

開發(fā)板端:

使用ADB將測試圖片傳輸?shù)介_發(fā)板上,將USB0的模式切換到 Device 模式

cat /sys/devices/platform/soc/usbc0/usb_device

63621656-1712-11ee-962d-dac502259ad0.png

主機端:

將ADB設備連接上虛擬機,并將虛擬機中的測試圖片傳輸?shù)介_發(fā)板中,查看ADB設備

book@100ask:~/workspaces/testImg$ adb devices
List of devices attached
20080411device

查看需要傳輸?shù)奈募?/span>

book@100ask:~/workspaces/testImg$ ls bus_640-640.jpg 
bus_640-640.jpg

傳輸文件到開發(fā)板中

book@100ask:~/workspaces/testImg$ adb push bus_640-640.jpg /mnt/UDISK
bus_640-640.jpg: 1 file pushed. 0.7 MB/s (97293 bytes in 0.128s)

開發(fā)板端:

進入測試圖像目錄

root@TinaLinux:/# cd /mnt/UDISK/
root@TinaLinux:/mnt/UDISK# ls
bus_640-640.jpg  lost+found       overlay

yolov5程序參數(shù)要求:yolov5 <模型文件路徑> <測試圖像路徑>

如果您打包了默認的yolov5模型文件,可以輸入

yolov5 /etc/models/yolov5_model.nb ./bus_640-640.jpg

如果您需要選擇自己的模型文件進行測試,可以將上面的/etc/models/yolov5_model.nb更換為自己的模型路徑,下面我以默認的模型文件進行測試。

636edf4e-1712-11ee-962d-dac502259ad0.png

查看輸出圖像文件yolov5_out.jpg

root@TinaLinux:/mnt/UDISK# ls 
bus_640-640.jpg  lost+found       overlay          yolov5_out.jpg

主機端:

拉取輸出文件yolov5_out.jpg到當前文件夾下

book@100ask:~/workspaces/testImg$ adb pull /mnt/UDISK/yolov5_out.jpg ./
/mnt/UDISK/yolov5_out.jpg: 1 file pulled. 0.9 MB/s (184894 bytes in 0.202s)

63817bd6-1712-11ee-962d-dac502259ad0.png


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關注

    關注

    25

    文章

    4771

    瀏覽量

    96185
  • 模型
    +關注

    關注

    1

    文章

    3032

    瀏覽量

    48367

原文標題:百問網V853開發(fā)板端側部署YOLOV5 全流程教程

文章出處:【微信號:baiwenkeji,微信公眾號:百問科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    V853開發(fā)板的主要部件及其原理圖

    、TF卡等模塊,為了方便開發(fā)者了解板載資源以及快速上手開發(fā)板進行自由開發(fā),本文將對開發(fā)板幾個主要部件的原理圖進行說明,帶你一文看懂V853
    發(fā)表于 07-10 14:50 ?3178次閱讀
    <b class='flag-5'>全</b>志<b class='flag-5'>V853</b><b class='flag-5'>開發(fā)板</b>的主要部件及其原理圖

    V853開發(fā)板原理圖

    IP101GR百兆以太收發(fā)器,連接網線即可連接上網。 無線網絡(Wireless Network)V853 開發(fā)板板載了XR829 Wi-Fi,藍牙模塊,支持2.4G IEEE 802.11 b/g
    發(fā)表于 01-12 09:48

    V853開發(fā)板發(fā)布!開發(fā)板試用同步開放申請!

    據傳輸PMU:志AXP2101身大小:長 118mm*寬 75mmPCB板層:4層V853開發(fā)板獲取
    發(fā)表于 07-01 10:46

    一文帶你看懂V853開發(fā)板原理圖

    V853開發(fā)板購買鏈接:https://www.hqchip.com/p/KFB-V853.html原理圖下載V853
    發(fā)表于 07-01 17:18

    帶大家來一次V853開發(fā)板沉浸式開箱!

    V853開發(fā)板購買鏈接:https://www.hqchip.com/p/KFB-V853.htmlV853
    發(fā)表于 07-04 17:04

    【免費試用04期】V853開發(fā)板試用活動

    開發(fā)志提供了基于V853開發(fā)板開發(fā)板簡介:開發(fā)板集成了
    發(fā)表于 07-21 10:27

    V853開發(fā)板試用之一(Tina Linux 5.0編譯 和NPU使用)

    接上篇“V853開發(fā)板試用之一(開箱報告)(https://bbs.elecfans.com/jishu_2299475_1_1.html)),
    發(fā)表于 08-21 23:40

    V853開發(fā)板試用】開箱及初識之美

    ://v853.docs.aw-ol.com/hard/hard_1board/開發(fā)板相關:開發(fā)板簡介開發(fā)板集成了
    發(fā)表于 08-21 23:47

    每日推薦 | V853開發(fā)板試用連載,RISC-V中國峰會

    的2K500開發(fā)板完成了OpenHarmony第一階段適配。2、V853開發(fā)板試用之一(Tina Linux 5.0編譯 和 YOLOV
    發(fā)表于 08-22 10:25

    V853開發(fā)板試用】V853開發(fā)板試用測評報告

    本帖最后由 ALSET 于 2022-8-29 02:34 編輯 V853開發(fā)板試用測評報告大信(QQ:8125036) 因為最近一直在開發(fā)嵌入式AI方面的產品,所以很關注
    發(fā)表于 08-29 02:09

    V853開發(fā)板參數(shù)規(guī)格概述

    志推出了V853開發(fā)板搭載了全新的AI視覺處理的AIoT芯片V853V853芯片是
    的頭像 發(fā)表于 07-22 18:39 ?4819次閱讀
    <b class='flag-5'>全</b>志<b class='flag-5'>V853</b><b class='flag-5'>開發(fā)板</b>參數(shù)規(guī)格概述

    小成本的V853 AI小開發(fā)板DIY設計

    志最新發(fā)布的V853芯片擁有1T的NPU算力,還有Arm+RISC-V+NPU三核異構和豐富的音視頻接口,那么用V853 DIY一塊小開發(fā)板
    的頭像 發(fā)表于 08-10 17:36 ?2266次閱讀

    【免費試用】全新Tina Linux v5.0釋放,價值1799元V853開發(fā)板等你來拿!

    為了讓電子發(fā)燒友社區(qū)開發(fā)者們定期體驗試用不同的開發(fā)板,現(xiàn)推出每周一期開發(fā)板免費試用活動。第四期試用的開發(fā)板
    的頭像 發(fā)表于 07-24 17:29 ?1308次閱讀
    【免費試用】全新Tina Linux <b class='flag-5'>v</b>5.0釋放,價值1799元<b class='flag-5'>V853</b><b class='flag-5'>開發(fā)板</b>等你來拿!

    V853開發(fā)板雙目攝像頭模組原理圖20220624

    V853開發(fā)板雙目攝像頭模組原理圖20220624
    發(fā)表于 10-19 15:11 ?25次下載

    V853開發(fā)板原理圖20220624

    V853開發(fā)板原理圖20220624
    發(fā)表于 10-19 15:11 ?20次下載