前言
大家好,YOLOv8 框架本身提供的API函數是可以兩行代碼實現 YOLOv8 模型推理,這次我把這段代碼封裝成了一個類,只有40行代碼左右,可以同時支持YOLOv8對象檢測、實例分割、姿態評估模型的GPU與CPU上推理演示。
程序實現
使用PyQT5開發一個簡單的YOLOv8 框架本身提供的API函數演示交互界面,支持從界面上選擇模型文件、測試圖像或者視頻文件,點擊開始推理 按鈕就可以運行了,整個程序的界面如下:
YOLOv8框架支持的函數推理會自動識別模型的類型是對象檢測、實例分割、姿態評估中哪一種,有GPU支持的情況下,默認會使用GPU推理。
推理運行在一個單獨的PyQT線程中,通過信號與槽機制實現推理結果返回與更新。實現的線程代碼如下:
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直接通過PT模型推理的好處有兩點,一個是不需要寫部署代碼了,二是精度不會在模型轉化中有細微損失了。特別適合Python開發者
對象檢測 - 運行截圖如下:
實例分割-運行截圖如下:
姿態評估-運行截圖如下:
審核編輯:劉清
-
gpu
+關注
關注
28文章
4774瀏覽量
129350 -
python
+關注
關注
56文章
4807瀏覽量
85037 -
pyqt5
+關注
關注
0文章
25瀏覽量
3407
原文標題:兩行代碼搞定YOLOv8各種模型推理
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論