色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在OpenCV4.5.4版本上完成YOLOv5 7.0推理演示與測試

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:gloomyfish ? 2022-11-30 17:54 ? 次閱讀

昨天發(fā)了YOLOv5 7.0支持實例分割的推文,收到不少留言問推理速度怎么樣,所以我今天測試了一下,選擇的是YOLOv5s的SEG模型,導(dǎo)出ONNX格式之后,在OpenCV4.5.4版本上完成了推理演示與測試。

ONNX格式輸入與輸出

首先需要把yolov5s-seg.pt文件導(dǎo)出為ONNX格式,這個很簡單,一條命令行搞定:

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

運行結(jié)果如下:

pYYBAGOHKGqATwbgAAFf5zY667U959.jpg

導(dǎo)出之后查看輸入與輸出格式顯示如下:

pYYBAGOHKHOASHR-AAHWrhqHhPI677.jpg

其中輸入部分跟YOLOv5對象檢測沒有什么分別,都是NCHW格式圖像輸入,甚至預(yù)處理都完全一致。

輸出部分內(nèi)容分為兩個部分,output0主要是box框架信息,跟mask預(yù)測的1x32個向量,前面85個解析跟YOLOv5對象檢測完成一致,后面32向量是解析mask的時候會使用的。

output1格式是1x32x160x160, 針對每個box通過boxes部分的1x32 跟它點乘機得到1x160x160 就得到這個box對應(yīng)的預(yù)測mask信息,然后根據(jù)box大小從mask中截取roi之后,疊加到輸出結(jié)果上就可以了。

OpenCV DNN推理

整個代碼實現(xiàn)部分絕大部分跟OpenCV DNN部署YOLOv5對象檢測一致,需要修改的只有兩個地方,一個是推理時候的預(yù)測結(jié)果,YOLOv5返回一個,這邊是返回兩個,所以需要修改一下代碼把代碼從:

defdetect(image,net):
#1x3x640x640
blob=cv2.dnn.blobFromImage(image,1/255.0,(INPUT_WIDTH,INPUT_HEIGHT),swapRB=True,crop=False)
net.setInput(blob)
preds=net.forward()
returnpreds

修改為:

defdetect(image,net):
rgb=cv.cvtColor(image,cv.COLOR_BGR2RGB)
input_image=cv.resize(src=rgb,dsize=(INPUT_WIDTH,INPUT_HEIGHT))
blob_img=np.float32(input_image)/255.0
input_x=blob_img.transpose((2,0,1))
input_blob=np.expand_dims(input_x,0)
net.setInput(input_blob)
layer=net.getUnconnectedOutLayersNames()
masks,preds=net.forward(layer)
returnpreds,masks
這樣就好啦 第二個改動的地方在后處理部分,如何解析出mask部分,這部分我通過翻看YOLOv5 7.0官方推理演示的源碼,它是基于torch實現(xiàn)的,我一通猛改之后改成了基于numpy實現(xiàn)。生成mask的代碼如下:
color_mask=np.zeros((fh,fw,3),dtype=np.uint8)
black_mask=np.zeros((fh,fw),dtype=np.float32)
mv=cv.split(color_mask)
foriinrange(len(boxes)):
x1,y1,x2,y2=boxes[i]
x1=max(0,x1)
y1=max(0,y1)
classid=class_ids[i]
m1=masks[i]
mask=np.reshape(sigmoid(np.matmul(m1,mask2)),(160,160))

mx1=max(0,np.int((x1*sx)/x_factor))
mx2=max(0,np.int((x2*sx)/x_factor))
my1=max(0,np.int((y1*sy)/y_factor))
my2=max(0,np.int((y2*sy)/y_factor))
mask_roi=mask[my1:my2,mx1:mx2]

result_mask=cv.resize(mask_roi,(x2-x1,y2-y1))
result_mask[result_mask>0.5]=1.0
result_mask[result_mask<=?0.5]?=?0.0
????rh,?rw?=?result_mask.shape
????if?(y1+rh)?>=fh:
rh=fh-y1
if(x1+rw)>=fw:
rw=fw-x1
black_mask[y1:y1+rh,x1:x1+rw]=result_mask[0:rh,0:rw]
mv[2][black_mask==1],mv[1][black_mask==1],mv[0][black_mask==1]=
[np.random.randint(0,256),np.random.randint(0,256),np.random.randint(0,256)]
color=colors[int(classid)%len(colors)]
cv.rectangle(frame,(x1,y1),(x2,y2),color,2)
cv.rectangle(frame,(x1,y1-20),(x2,y1),color,-1)
cv.putText(frame,class_list[classid],(x1,y1-10),cv.FONT_HERSHEY_SIMPLEX,.5,(0,0,0))

把這段代碼放在NMS之后,替換YOLOv5對象檢測的NMS之后的解析代碼即可。最終Python版本OpenCV DNN推理的運行效果如下:

poYBAGOHKJiAOsIjAADpSmbBVZM275.jpg
poYBAGOHKJ-AHaC1AAD-n0A6DmU529.jpg

速度這么慢,怒而改成OpenCV DNN C++推理,N卡加持:

poYBAGOHKLmAGIKbAAEWknaLsd0485.jpg
poYBAGOHKMCAGuC5AAF7MglYA4s282.jpg

基本上可以跑到40FPS左右,感覺很不錯了!






審核編輯:劉清

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

    關(guān)注

    31

    文章

    635

    瀏覽量

    41388
  • NMS
    NMS
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6047
  • dnn
    dnn
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    9058

原文標(biāo)題:OpenCV4.5.4+YOLOv5 7.0分割推理演示

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Jetson Nano使用TensorRT C++實現(xiàn)YOLOv5模型推理

    前面有一篇文章詳細(xì)說明了如何在Jetson Nano安裝YOLOv5,然后運行,這里只需導(dǎo)出的時候?qū)С鰁ngine模型文件支持。
    發(fā)表于 11-17 09:38 ?4566次閱讀

    Yolov5算法解讀

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然不斷進行升級迭代。 Yolov5YOLOv5s、
    的頭像 發(fā)表于 05-17 16:38 ?9301次閱讀
    <b class='flag-5'>Yolov5</b>算法解讀

    C++中使用OpenVINO工具包部署YOLOv5-Seg模型

    YOLOv5兼具速度和精度,工程化做的特別好,Git clone到本地即可在自己的數(shù)據(jù)集實現(xiàn)目標(biāo)檢測任務(wù)的訓(xùn)練和推理產(chǎn)業(yè)界中應(yīng)用廣泛。開源社區(qū)對
    的頭像 發(fā)表于 12-21 10:17 ?2160次閱讀
    <b class='flag-5'>在</b>C++中使用OpenVINO工具包部署<b class='flag-5'>YOLOv5</b>-Seg模型

    RK3568教學(xué)實驗箱實現(xiàn)基于YOLOV5的算法物體識別案例詳解

    安裝了所有必要的依賴。這通常包括 torch、torchvision 和 opencv-python。 (2)下載預(yù)訓(xùn)練模型 YOLOv5 提供了多個預(yù)訓(xùn)練模型,可以從官方倉庫或相關(guān)資源中下載。 (3
    發(fā)表于 12-03 14:56

    怎樣使用PyTorch Hub去加載YOLOv5模型

    Python>=3.7.0環(huán)境中安裝requirements.txt,包括PyTorch>=1.7。模型和數(shù)據(jù)集從最新的 YOLOv5版本自動下載。簡單示例此示例從
    發(fā)表于 07-22 16:02

    OpenCV C++程序編譯與演示

    1、JetsonNano編譯OpenCV源碼與OpenCV C++ YOLOv5程序演示  
    發(fā)表于 11-10 16:42

    使用Yolov5 - i.MX8MP進行NPU錯誤檢測是什么原因?

    的時機(yolov5s 模型,輸入為 448x448 ~ 70ms)。 現(xiàn)在我正在嘗試使用 Yolov5(uint8 量化),但我嘗試使用不同的預(yù)訓(xùn)練模型獲得相同的行為, CPU 上進行良好檢測,
    發(fā)表于 03-31 07:38

    如何YOLOv5測試代碼?

    使用文檔“使用 YOLOv5 進行對象檢測”我試圖從文檔第 10 頁訪問以下鏈接( i.MX8MP 上部署 yolov5s 的步驟 - NXP 社區(qū)) ...但是這樣做時會被拒絕訪問。該文檔沒有說明需要特殊許可才能下載 tes
    發(fā)表于 05-18 06:08

    YOLOv5OpenCV推理程序

    YOLOv5官方給出的YOLOv5OpenCV推理的程序相對來說是比較通俗易懂的,條理清晰,
    的頭像 發(fā)表于 11-02 10:16 ?1956次閱讀

    YOLOv5 7.0版本下載與運行測試

    支持實例分割了,從此YOLOv5實現(xiàn)了圖像分類、對象檢測、實例分割三個支持,從訓(xùn)練到部署。
    的頭像 發(fā)表于 11-30 15:55 ?3855次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運行yolov5并使用pytoch的pt模型文件轉(zhuǎn)ONNX。
    的頭像 發(fā)表于 04-26 14:20 ?926次閱讀
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    三種主流模型部署框架YOLOv8推理演示

    深度學(xué)習(xí)模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個主流框架,均支持Python與C++的SDK使用。對YOLOv5~YOLOv8的系列模型,均可以通過C++推理實現(xiàn)模型
    的頭像 發(fā)表于 08-06 11:39 ?2767次閱讀

    yolov5和YOLOX正負(fù)樣本分配策略

    整體正負(fù)樣本分配中,yolov7的策略算是yolov5和YOLOX的結(jié)合。因此本文先從yolov5和YOLOX正負(fù)樣本分配策略分析入手,
    發(fā)表于 08-14 11:45 ?2317次閱讀
    <b class='flag-5'>yolov5</b>和YOLOX正負(fù)樣本分配策略

    OpenCV4.8+YOLOv8對象檢測C++推理演示

    自從YOLOv5更新成7.0版本YOLOv8推出以后,OpenCV4.6以前的版本都無法再加載
    的頭像 發(fā)表于 09-27 11:07 ?1595次閱讀
    <b class='flag-5'>OpenCV4.8+YOLOv</b>8對象檢測C++<b class='flag-5'>推理</b><b class='flag-5'>演示</b>

    基于OpenCV DNN實現(xiàn)YOLOv8的模型部署與推理演示

    基于OpenCV DNN實現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?1721次閱讀
    基于<b class='flag-5'>OpenCV</b> DNN實現(xiàn)<b class='flag-5'>YOLOv</b>8的模型部署與<b class='flag-5'>推理</b><b class='flag-5'>演示</b>
    主站蜘蛛池模板: 亚洲精品无码不卡在线播HE| 嫩草影院在线观看精品视频| 天天拍拍国产在线视频| 992交通广播| 暖暖日本 在线 高清| 97国内精品久久久久久久影视| 久就热视频精品免费99| 伊人色啪啪天天综合婷婷| 狠狠色丁香婷婷久久综合五月| 亚洲中文字幕永久在线 | 在线观看a视频| 久久中文字幕人妻AV熟女| 嘴巴舔着她的私处插| 蜜桃传媒一区二区亚洲AV| 99九九精品视频| 日韩av片无码一区二区不卡电影| 别插我B嗯啊视频免费| 视频一区在线免费观看| 国产精品亚洲精品影院| 亚洲国产在线观看免费视频| 九九在线精品亚洲国产| 中文无码熟妇人妻AV在线| 欧美成人精品高清在线观看| Y8848高清私人影院软件优势| 色欲午夜无码久久久久久| 好男人好资源视频高清| 在线视频免费国产成人| 青娱乐极品视觉盛宴av| 国产欧美在线亚洲一区刘亦菲 | 一个色综合久久| 男女性杂交内射妇女BBWXZ| 高清AV熟女一区| 亚洲人成77777| 嗯啊插的好深啊使劲抽视频| 国产精品成人观看视频免费| 一二三四韩国免费观看| 男人天堂黄色| 国产亚洲精品久久综合阿香| 97在线视频免费| 亚洲精品理论电影在线观看| 男人国产AV天堂WWW麻豆|