教你如何用两行代码搞定YOLOv8各种模型推理

描述

前言

大家好,YOLOv8 框架本身提供的API函数是可以两行代码实现 YOLOv8 模型推理,这次我把这段代码封装成了一个类,只有40行代码左右,可以同时支持YOLOv8对象检测、实例分割、姿态评估模型的GPU与CPU上推理演示。

pyqt5

程序实现

使用PyQT5开发一个简单的YOLOv8 框架本身提供的API函数演示交互界面,支持从界面上选择模型文件、测试图像或者视频文件,点击开始推理 按钮就可以运行了,整个程序的界面如下:

pyqt5

YOLOv8框架支持的函数推理会自动识别模型的类型是对象检测、实例分割、姿态评估中哪一种,有GPU支持的情况下,默认会使用GPU推理。  

推理运行在一个单独的PyQT线程中,通过信号与槽机制实现推理结果返回与更新。实现的线程代码如下:

 

class InferenceThread(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

    def run(self):
        if self.detector is None:
            return
        if self.input_image.endswith(".mp4"):
            cap = cv.VideoCapture(self.input_image)
            while True:
                ret, frame = cap.read()
                if ret is True:
                    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开发者  

对象检测 - 运行截图如下:

pyqt5

实例分割 - 运行截图如下:

pyqt5

姿态评估 - 运行截图如下:

pyqt5






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分