系统化学习YOLOv8,玩转YOLOv8的分类、对象检测、实例分割、姿态评估、OBB检测、目标跟踪 六大模块,猛戳这里:
人工智能应用开发之YOLOv8全家桶合集课程
前言
今天有个人发我一个YOLOv8分类的ONNX格式文件,跟我说测试效果很拉跨,但是直接用PT文件,通过命令行效果还错,让他万分郁闷。其实Pytorch模型是支持直接使用原始的PT文件推理的,无论模型来自Torchvision还是YOLOv5或者YOLOv8。使用PT文件推理都非常简单。
PT文件YOLOv8 分类推理
支持Top1跟Top5结果返回,使用非常方便。代码简洁明了。演示代码如下:
model = YOLO("best.pt")
bgr = cv.imread("./test/ng/l28.png")
results = model(bgr)
cid = results[0].probs.top1
print("conf: ", results[0].probs.top5conf[cid])
reimg = results[0].plot()
frame = results[0].orig_img
cv.putText(bgr, labels[cid], (50, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 0), 2)
cv.namedWindow("YOLOv8+Classification demo", cv.WINDOW_NORMAL)
cv.imshow("YOLOv8+Classification demo", bgr)
cv.waitKey(0)
输出结果
PT文件YOLOv8 检测推理
对象检测支持返回Boxes信息与检测结果跟原始图像信息,两行代码即可搞定推理。演示代码如下:
results = self.model(frame, conf=self.infer_settings.score_threshold)
reimg = results[0].plot()
frame = results[0].orig_img
boxes = results[0].boxes.data
if self.infer_settings.show_fps:
end = time.time()
inf_end = end - start
fps = 1 / (inf_end+0.0001)
fps_label = "FPS: %.2f" % fps
cv.putText(reimg, fps_label, (20, 45), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
总结
使用pt文件推理的好处是零精度损失,跟模型的评估验证结果高度一致,模型精度没有导出损失,效果好,另外方便支持GPU或者CPU切换,是Python开发环境下的首选。
系统化学习YOLOv8,玩转YOLOv8的分类、对象检测、实例分割、姿态评估、OBB检测、目标跟踪 六大模块,猛戳这里:
人工智能应用开发之YOLOv8全家桶合集课程