概述
YOLOv8是Ultralytics公司于2023年推出的新一代目标检测模型,最大的亮点在于它不再只是一个检测算法,而是一个统一的视觉任务平台,原生支持目标检测、实例分割、姿态估计和图像分类等多项任务。在技术层面,YOLOv8采用无锚框设计和解耦检测头,大幅简化了训练流程并提升精度,同时用全新的C2f模块替换了旧版骨干网络,使特征提取更高效。它提供了从轻量级Nano到高精度X-Large五种预训练模型,用户可以根据不同场景平衡速度与精度需求。凭借简便的安装使用、更快的推理速度和更优的检测表现,YOLOv8迅速成为工业界和学术界落地目标检测任务时的首选方案之一。

无损截取视频
在网络找到一段比赛视频,由于视频过长,截取其中一段视频作为测试视频。
使用工具ffmpeg无损截取,命令如下:
ffmpeg -ss 00:13:50 -to 00:17:32 -i input.mp4 -c copy output.mp4
将截取视频放入yolov8目录中,关于yolov8部署参看之前的文章
视频截图
新建demo.py,使用opencv库,将视频中画面截取保存到本地。
clike
import cv2
v=cv2.VideoCapture("./data/1.mp4")
n=0
step=150
while True:
ret ,frame=v.read()
if not ret:
break
n+=1
if n%step==0:
cv2.imwrite("./data/img/"+str(n)+".jpg",frame)
点击运行,按钮,会生成如下图片:

标注数据
标注工具使用labelimg,进入conda虚拟环境,运行labelimg工具

打开工具后,选择图片所在文件夹,如下图:

选择图中矩形框或者快捷键w,选择标注数据

将所有图片标注完成。会生成与图片向对应的文本文件。文件内存放标注数据
整理标注数据
将数据按照如下格式,整理。如下图:







训练数据
clike
from ultralytics import YOLO
model=YOLO("yolov8n.pt","train")
result=model.train(data="./yolo-snooker.yaml",workers=1,epochs=50,batch=16)
print(result)
点击开始,开始训练,训练生成best.pt模型。

检测数据
使用生成好的模型,识别视频中球。
clike
yolo detect predict model=runs/detect/train/weights/best.pt source=./data/1.mp4 show=True