技术介绍–YOLO
YOLO,全称为“You Only Look Once”(你只看一眼),是一种流行的实时目标检测系统,由Joseph Redmon等人在2015年提出。YOLO模型的核心思想是将目标检测任务视为一个单一的回归问题,通过一个卷积神经网络(CNN)直接从图像像素到边界框坐标和类别概率的映射。YOLO模型经过了多次迭代,包括YOLOv2(YOLO9000)、YOLOv3和YOLOv4等版本,每个版本都在性能和速度上有所提升,同时也引入了一些新的技术,如更深的网络结构、更好的锚框机制、多尺度特征融合等。
YOLO使用的标注格式是每张图像一个文本文件,文件名与图像文件名相对应。文本文件中每一行对应一个边界框,格式为: <x_center> <y_center> 。
其中,是类别索引,<x_center>和<y_center>是边界框中心点相对于图像宽度和高度的比例,和是边界框的宽度和高度相对于图像宽度和高度的比例。
代码段
1.截取视频帧为图片
video_path = '训练集(有标注第一批)/视频/45.mp4'
cap = cv2.VideoCapture(video_path)
while True:
# 读取下一帧
ret, frame = cap.read()
if not ret:
break
break
2.标识目标
bbox = [746, 494, 988, 786]
pt1 = (bbox[0], bbox[1])
pt2 = (bbox[2], bbox[3])
color = (0, 255, 0)
thickness = 2 # 线条粗细
cv2.rectangle(frame, pt1, pt2, color, thickness)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame)
3.使用yolov8进行训练
from ultralytics import YOLO
# 设置模型版本
model = YOLO("yolov8n.pt")
# 设定数据集和训练参数
results = model.train(data="yolo-dataset/yolo.yaml", epochs=2, imgsz=1080, batch=16)
成绩
0.004783,很精准的baseline结果