前言
大家好,YOLOv8 框架本身提供的API函數(shù)是可以兩行代碼實(shí)現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個(gè)類,只有40行代碼左右,可以同時(shí)支持YOLOv8對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估模型的GPU與CPU上推理演示。
程序?qū)崿F(xiàn)
使用PyQT5開發(fā)一個(gè)簡(jiǎn)單的YOLOv8 框架本身提供的API函數(shù)演示交互界面,支持從界面上選擇模型文件、測(cè)試圖像或者視頻文件,點(diǎn)擊開始推理 按鈕就可以運(yùn)行了,整個(gè)程序的界面如下:
YOLOv8框架支持的函數(shù)推理會(huì)自動(dòng)識(shí)別模型的類型是對(duì)象檢測(cè)、實(shí)例分割、姿態(tài)評(píng)估中哪一種,有GPU支持的情況下,默認(rèn)會(huì)使用GPU推理。
推理運(yùn)行在一個(gè)單獨(dú)的PyQT線程中,通過(guò)信號(hào)與槽機(jī)制實(shí)現(xiàn)推理結(jié)果返回與更新。實(shí)現(xiàn)的線程代碼如下:
classInferenceThread(QtCore.QThread): fire_stats_signal=QtCore.pyqtSignal(dict) def__init__(self,settings): super(InferenceThread,self).__init__() self.settings=settings self.detector=YOLOv8PtInference(settings) self.input_image=settings.input_image defrun(self): ifself.detectorisNone: return ifself.input_image.endswith(".mp4"): cap=cv.VideoCapture(self.input_image) whileTrue: ret,frame=cap.read() ifretisTrue: self.detector.infer_image(frame) self.fire_stats_signal.emit({"result":frame}) else: break else: frame=cv.imread(self.input_image) self.detector.infer_image(frame) self.fire_stats_signal.emit({"result":frame}) self.fire_stats_signal.emit({"done":"done"}) return直接通過(guò)PT模型推理的好處有兩點(diǎn),一個(gè)是不需要寫部署代碼了,二是精度不會(huì)在模型轉(zhuǎn)化中有細(xì)微損失了。特別適合Python開發(fā)者
對(duì)象檢測(cè) - 運(yùn)行截圖如下:
實(shí)例分割-運(yùn)行截圖如下:
姿態(tài)評(píng)估-運(yùn)行截圖如下:
審核編輯:劉清
-
gpu
+關(guān)注
關(guān)注
28文章
4760瀏覽量
129130 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84857 -
pyqt5
+關(guān)注
關(guān)注
0文章
25瀏覽量
3403
原文標(biāo)題:兩行代碼搞定YOLOv8各種模型推理
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論