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

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

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

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

YOLOv5在OpenCV上的推理程序

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-11-02 10:16 ? 次閱讀

測試與發(fā)現(xiàn)

YOLOv5官方給出的YOLOv5在OpenCV上推理的程序相對來說是比較通俗易懂的,條理清晰,有基本的封裝,直接可用!但是我也發(fā)現(xiàn),模型的推理時間跟前后處理的時間相差無幾,特別是當(dāng)視頻流有多個檢測到的對象時候,整個幀率會有明顯下降!官方推薦的參考示例代碼鏈接為:

https://github.com/doleron/yolov5-opencv-cpp-python/blob/main/python/yolo-tiny.py
最后發(fā)現(xiàn)推理時間沒有明顯變化,主要是前后處理,有兩個函數(shù)耗時比較高!從輸入圖像轉(zhuǎn)換到模型輸入數(shù)據(jù)的函數(shù):
cv2.dnn.blobFromImage(input_image , 1/255.0, (640, 640), swapRB=True)
推理之后的重疊目標(biāo)框非最大抑制函數(shù):
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.25, 0.45)
特別是非最大抑制函數(shù),隨著圖像中目標(biāo)數(shù)目增多,導(dǎo)致幀率成明顯下降趨勢!

修改輸入轉(zhuǎn)換

cv2.dnn.blobFromImage(input_image , 1/255.0, (640, 640), swapRB=True)

可以通過下面的代碼等價替換:

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)

修改之后測試發(fā)現(xiàn)該替代降低了執(zhí)行時間,說明替代有效!

修改非最大抑制

indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.25, 0.45)

輸入的box格式x, y,w,h,我參考了網(wǎng)上的代碼,修改實(shí)現(xiàn)一個基于并交比最簡單的NMS抑制算法,基于矩陣計算,保證不會因?yàn)閷ο笞兊枚嗔耍黾佑嬎愫臅r,然后把它們封裝成一個單獨(dú)的方法,導(dǎo)入該方法直接替換之前的代碼行為:

class_ids, boxes = non_max_suppression_fast(np.asarray(class_ids), np.asarray(boxes), 0.75)

該函數(shù)完整的實(shí)現(xiàn)代碼如下:

importnumpyasnp


defnon_max_suppression_fast(class_ids,boxes,nms_threshold):
#iftherearenoboxes,return
iflen(boxes)==0:
return[],[]

ifboxes.dtype.kind=="i":
boxes=boxes.astype("float")

#initializethelistofpickedindexes
pick=[]

#grabthecoordinatesoftheboundingboxes
x1=boxes[:,0]
y1=boxes[:,1]
x2=boxes[:,2]
y2=boxes[:,3]

#computetheareaoftheboundingboxesandsortthebounding
#boxesbythebottom-righty-coordinateoftheboundingbox
area=(x2-x1+1)*(y2-y1+1)
idxs=np.argsort(y2)

#keeploopingwhilesomeindexesstillremainintheindexes
#list
whilelen(idxs)>0:
#grabthelastindexintheindexeslistandaddthe
#indexvaluetothelistofpickedindexes
last=len(idxs)-1
i=idxs[last]
pick.append(i)

#findthelargest(x,y)coordinatesforthestartof
#theboundingboxandthesmallest(x,y)coordinates
#fortheendoftheboundingbox
xx1=np.maximum(x1[i],x1[idxs[:last]])
yy1=np.maximum(y1[i],y1[idxs[:last]])
xx2=np.minimum(x2[i],x2[idxs[:last]])
yy2=np.minimum(y2[i],y2[idxs[:last]])

#computethewidthandheightoftheboundingbox
w=np.maximum(0,xx2-xx1+1)
h=np.maximum(0,yy2-yy1+1)

#computetheratioofoverlap
overlap=(w*h)/area[idxs[:last]]

#deleteallindexesfromtheindexlistthathave
idxs=np.delete(idxs,np.concatenate(([last],
np.where(overlap>nms_threshold)[0])))

#returnonlytheboundingboxesthatwerepickedusingthe
#integerdatatype
returnclass_ids[pick],boxes[pick].astype("int")


if__name__=="__main__":
boxes=[]
boxes.append((163,0,27+163,41))
boxes.append((164,0,28+164,43))
boxes.append((165,0,29+165,42))
res=non_max_suppression_fast(None,np.asarray(boxes),0.25)
print(res)

對比測試

兩處都修改完成之后,其它輸入條件與代碼不變,硬件相同條件下對比測試效果如下:修改之前 Python版本OpenCV與OpenVINO上推理速度:

146b72b4-59fc-11ed-a3b6-dac502259ad0.jpg

1478b618-59fc-11ed-a3b6-dac502259ad0.jpg

修改之后Python版本OpenCV與OpenVINO上推理速度:

1482a4de-59fc-11ed-a3b6-dac502259ad0.jpg

148f95e0-59fc-11ed-a3b6-dac502259ad0.jpg

可以看到FPS較之前有明顯的提升!

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

    關(guān)注

    8

    文章

    7002

    瀏覽量

    88942
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3785

    瀏覽量

    81004
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3226

    瀏覽量

    48807
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    634

    瀏覽量

    41337

原文標(biāo)題:替換前后處理的兩個函數(shù),Python版YOLOv5+OpenCV推理幀率提升1.5倍

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    YOLOv5】LabVIEW+YOLOv5快速實(shí)現(xiàn)實(shí)時物體識別(Object Detection)含源碼

    前面我們給大家介紹了基于LabVIEW+YOLOv3/YOLOv4的物體識別(對象檢測),今天接著上次的內(nèi)容再來看看YOLOv5。本次主要是和大家分享使用LabVIEW快速實(shí)現(xiàn)yolov5
    的頭像 發(fā)表于 03-13 16:01 ?2154次閱讀

    Yolov5算法解讀

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

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

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

    RK3568教學(xué)實(shí)驗(yàn)箱實(shí)現(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模型

    顯示了PIL和OpenCV圖像源的批量推理。可以打印到控制臺,保存到,支持的環(huán)境中顯示到屏幕,并以張量或pandas數(shù)據(jù)幀的形式返回。對于所有
    發(fā)表于 07-22 16:02

    OpenCV C++程序編譯與演示

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

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

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

    如何YOLOv5測試代碼?

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

    yolov5模型onnx轉(zhuǎn)bmodel無法識別出結(jié)果如何解決?

    推理硬件:質(zhì)算盒SE5,芯片BM1684。 2. SDK: v2.7.0 代碼: 1. 模型來源yolov5官方:https://github.com/ultralytics/yolov5
    發(fā)表于 09-15 07:30

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

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。
    的頭像 發(fā)表于 02-15 16:53 ?4646次閱讀

    使用旭日X3派的BPU部署Yolov5

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

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

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

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

    自從YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都無法再加載導(dǎo)出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本
    的頭像 發(fā)表于 09-27 11:07 ?1538次閱讀
    <b class='flag-5'>OpenCV4.8+YOLOv</b>8對象檢測C++<b class='flag-5'>推理</b>演示

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

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?1584次閱讀
    基于<b class='flag-5'>OpenCV</b> DNN實(shí)現(xiàn)<b class='flag-5'>YOLOv</b>8的模型部署與<b class='flag-5'>推理</b>演示
    主站蜘蛛池模板: 99热免费精品店| yellow2019在线观看视频 | 亚洲AV久久无码高潮喷水| 一品道门免费视频韩国| 99视频这里只有精品| 国产精品毛片AV久久97| 久久精品久久久| 色尼玛亚洲| 在线精品视频免费观看| 成人小视频在线观看免费| 精品四虎国产在免费观看| 日本美女bb| 樱花之恋动漫免费观看| 国产XXXXXX农村野外| 免费看国产精品麻豆| 亚洲AV中文字幕无码久久 | 攵女yin乱合集高h| 久久免费特黄毛片| 偷拍久久国产视频免费| 97无码欧美熟妇人妻蜜桃天美| 国产日韩欧美高清免费视频 | 成人影片下载网站| 久久在精品线影院| 午夜伦午夜伦锂电影| a视频免费在线观看| 久久99国产综合精品AV蜜桃| 试看2分钟AA片| 97国产精品久久精品国产| 黑人操白逼| 天天干夜夜曰| 啊好深啊别拔就射在里面| 久久网站视频| 亚洲国产精品嫩草影院久久| 春暖花开 性 欧洲| 男生jj插入女生jj| 孕妇泬出白浆18P| 国产亚洲精品AV片在线观看播放| 日本久久中文字幕精品| 99re8久久热在线视频| 久草在线在线精品观看| 亚州精品视频|