??
前言
前面我們給大家介紹了使用OpenCV以及ONNX工具包實(shí)現(xiàn)yolov5在LabVIEW中的部署,有英偉達(dá)顯卡的朋友們可能已經(jīng)感受過使用cuda加速時(shí)yolov5的速度,今天主要和大家分享在LabVIEW中使用純TensoRT工具包快速部署并實(shí)現(xiàn)yolov5的物體識別, 本博客中使用的智能工具包可到主頁置頂博客[https://blog.csdn.net/virobotics/article/details/129304465]
中安裝 。若配置運(yùn)行過程中遇到困難,歡迎大家評論區(qū)留言,博主將盡力解決。
以下是YOLOv5的相關(guān)筆記總結(jié),希望對大家有所幫助。
【YOLOv5】LabVIEW+OpenVINO讓你的YOLOv5在CPU上飛起來 | https://blog.csdn.net/virobotics/article/details/124951862 |
---|---|
【YOLOv5】LabVIEW OpenCV dnn快速實(shí)現(xiàn)實(shí)時(shí)物體識別(Object Detection) | https://blog.csdn.net/virobotics/article/details/124929483 |
【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,實(shí)現(xiàn)YOLOv5實(shí)時(shí)物體識別(含源碼) | https://blog.csdn.net/virobotics/article/details/124981658 |
一、關(guān)于YOLOv5
YOLOv5是在 COCO 數(shù)據(jù)集上預(yù)訓(xùn)練的一系列對象檢測架構(gòu)和模型。表現(xiàn)要優(yōu)于谷歌開源的目標(biāo)檢測框架 EfficientDet,在檢測精度和速度上相比yolov4都有較大的提高。本博客,我們以YOLOv5 6.1版本來介紹相關(guān)的部署開發(fā)。
YOLOv5相比于前面yolo模型的主要特點(diǎn)是:
1、小目標(biāo)的檢測精度上有明顯的提高;
2、能自適應(yīng)錨框計(jì)算
3、具有數(shù)據(jù)增強(qiáng)功能,隨機(jī)縮放,裁剪,拼接等功能
4、靈活性極高、速度超快,模型超小、在模型的快速部署上具有極強(qiáng)優(yōu)勢
關(guān)于YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)解釋網(wǎng)上有很多,這里就不再贅述了,大家可以看其他大神對于YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)的解析。
二、YOLOv5模型的獲取
為方便使用, 博主已經(jīng)將yolov5模型轉(zhuǎn)化為onnx格式 ,可在百度網(wǎng)盤下載
鏈接:[https://pan.baidu.com/s/15dwoBM4W-5_nlRj4G9EhRg?pwd=yiku]
提取碼:yiku
1.下載源碼
將Ultralytics開源的YOLOv5代碼Clone或下載到本地,可以直接點(diǎn)擊Download ZIP進(jìn)行下載,
下載地址:[https://github.com/ultralytics/yolov5]
2.安裝模塊
解壓剛剛下載的zip文件,然后安裝yolov5需要的模塊,記住cmd的工作路徑要在yolov5文件夾下:
打開cmd切換路徑到y(tǒng)olov5文件夾下,并輸入如下指令,安裝yolov5需要的模塊
pip install -r requirements.txt
3.下載預(yù)訓(xùn)練模型
打開cmd,進(jìn)入python環(huán)境,使用如下指令下載預(yù)訓(xùn)練模型:
import torch
# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # or yolov5n - yolov5x6, custom
成功下載后如下圖所示:
4.轉(zhuǎn)換為onnx模型
將.pt文件轉(zhuǎn)化為.onnx文件,在cmd中輸入轉(zhuǎn)onnx的命令(記得將export.py和pt模型放在同一路徑下):
python export.py --weights yolov5s.pt --include onnx
如下圖所示為轉(zhuǎn)化成功界面
其中yolov5s可替換為yolov5myolov5myolov5lyolov5x
三、LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(yolov5_trt_img.vi)
如需要查看TensorRT工具包相關(guān)vi含義,可查看:[https://blog.csdn.net/virobotics/article/details/129492651]
1.onnx轉(zhuǎn)化為engine(onnx to engine.vi)
使用onnx_to_engine.vi,將該vi拖拽至前面板空白區(qū)域,創(chuàng)建并輸入onnx的路徑以及engine的路徑,type即精度,可選擇FP32或FP16,肉眼觀看精度無大差別。(一般FP16模型比FP32速度快一倍)
轉(zhuǎn)換的完整程序如下:
點(diǎn)擊運(yùn)行,等待1~3分鐘,模型轉(zhuǎn)換成功,可在剛剛設(shè)定的路徑中找到我們轉(zhuǎn)化好的mobilenet.engine.
Q:為什么要轉(zhuǎn)換模型,不直接調(diào)用ONNX?> A:tensorRT內(nèi)部加載ONNX后其實(shí)是做了一個(gè)轉(zhuǎn)換模型的工作,該過程時(shí)間長、占用內(nèi)存巨大。因此不推薦每次初始化都加載ONNX模型,而是加載engine。
2.部署
模型初始化
- 加載yolov5s.engine文件
- 設(shè)置輸入輸出緩存
? 輸入大小為13640640
? 輸出大小為125200*85
yolov5的預(yù)處理
- LetterBox
- blobFromImage,包含如下步驟:
1) img=img/255.0
2) img = img[None] #從(640,640,3)擴(kuò)充維度至(1,640,640,3)
3) input=img.transpose(0,3,1,2) # BHWC to BCHW
模型推理
- 推薦使用數(shù)據(jù)指針作為輸入給到run.vi
- 數(shù)據(jù)的大小為13640*640
獲取推理結(jié)果
- 循環(huán)外初始化一個(gè)25200*85的二維數(shù)組
- 此數(shù)組作為Get_Result的輸入,另一個(gè)輸入為index=0
- 輸出為25200*85的二維數(shù)組結(jié)果
后處理
本范例中,后處理方式和使用onnx一樣
完整源碼
運(yùn)行結(jié)果
項(xiàng)目源碼
源碼下載鏈接:https://pan.baidu.com/s/1y0scJ8tg5nzjJK4iPvNwNQ?pwd=yiku
附加說明
- 操作系統(tǒng):Windows10
- python:3.6及以上
- LabVIEW:2018及以上 64位版本
- 視覺工具包:techforce_lib_opencv_cpu-1.0.0.98.vip
- LabVIEW TensorRT工具包:virobotics_lib_tensorrt-1.0.0.22.vip
- 運(yùn)行結(jié)果所用顯卡:RTX3060
審核編輯 黃宇
-
LabVIEW
+關(guān)注
關(guān)注
1977文章
3657瀏覽量
325802 -
機(jī)器視覺
+關(guān)注
關(guān)注
162文章
4407瀏覽量
120755 -
目標(biāo)檢測
+關(guān)注
關(guān)注
0文章
211瀏覽量
15667 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121583
發(fā)布評論請先 登錄
相關(guān)推薦
摩爾線程宣布成功部署DeepSeek蒸餾模型推理服務(wù)
【ELF 2學(xué)習(xí)板試用】ELF2開發(fā)板(飛凌嵌入式)搭建深度學(xué)習(xí)環(huán)境部署(RKNN環(huán)境部署)
基于LabVIEW和YOLOv8-Pose的跳繩計(jì)數(shù)裝置
![基于<b class='flag-5'>LabVIEW</b>和<b class='flag-5'>YOLOv</b>8-Pose的跳繩計(jì)數(shù)裝置](https://file1.elecfans.com/web3/M00/06/56/wKgZO2eJt2mAY48IAABLPsUVo90843.png)
采用華為云 Flexus 云服務(wù)器 X 實(shí)例部署 YOLOv3 算法完成目標(biāo)檢測
![采用華為云 Flexus 云服務(wù)器 X 實(shí)例<b class='flag-5'>部署</b> <b class='flag-5'>YOLOv</b>3 算法完成目標(biāo)檢測](https://file1.elecfans.com//web3/M00/04/88/wKgZPGd2D0qAKG0fAAUifvLbZBc511.png)
在樹莓派上部署YOLOv5進(jìn)行動(dòng)物目標(biāo)檢測的完整流程
![<b class='flag-5'>在</b>樹莓派上<b class='flag-5'>部署</b><b class='flag-5'>YOLOv</b>5進(jìn)行動(dòng)物目標(biāo)檢測的完整流程](https://file1.elecfans.com/web2/M00/0B/44/wKgZomcxbtSASks4AAAW0BjJUx4709.png)
FPGA和ASIC在大模型推理加速中的應(yīng)用
![FPGA和ASIC<b class='flag-5'>在</b>大模型<b class='flag-5'>推理</b>加速<b class='flag-5'>中</b>的應(yīng)用](https://file1.elecfans.com/web2/M00/0B/59/wKgaomcgfcaAXbbKAAA3sbCK-zU385.png)
手冊上新 |迅為RK3568開發(fā)板NPU例程測試
手冊上新 |迅為RK3568開發(fā)板NPU例程測試
迅為RK3568手冊上新 | RK3568開發(fā)板NPU例程測試
用OpenVINO C# API在intel平臺(tái)部署YOLOv10目標(biāo)檢測模型
![用OpenVINO C# API<b class='flag-5'>在</b>intel平臺(tái)<b class='flag-5'>部署</b><b class='flag-5'>YOLOv</b>10目標(biāo)檢測模型](https://file1.elecfans.com/web2/M00/F1/5B/wKgZomZ01qSAfuqIAAAvhGmMIdc334.png)
maixcam部署yolov5s 自定義模型
yolov5轉(zhuǎn)onnx在cubeAI上部署失敗的原因?
基于OpenCV DNN實(shí)現(xiàn)YOLOv8的模型部署與推理演示
![基于OpenCV DNN實(shí)現(xiàn)<b class='flag-5'>YOLOv</b>8的模型<b class='flag-5'>部署</b>與<b class='flag-5'>推理</b>演示](https://file1.elecfans.com/web2/M00/C2/4A/wKgZomXhidOAS5bgAAA85lM3BAY512.png)
評論