一、物体检测
(1)目标:在图像或视频帧中识别和定位感兴趣的物体。物体检测算法不仅要识别图像中的对象属于哪个类别,还要确定它们在图像中的具体位置,通常以边界框(bounding box)的形式表示。
(2)关键概念:
-
输入:物体检测算法的输入通常是一张图像或视频帧。
-
特征提取:算法使用深度学习模型(如卷积神经网络CNN)来提取图像的特征。这些特征捕捉了图像中的视觉信息,为后续的物体识别和定位提供基础。
-
候选区域生成:在某些检测算法中,如基于区域的卷积神经网络(R-CNN)及其变体,首先需要生成图像中的候选区域,这些区域可能包含感兴趣的物体。
-
区域分类和边界框回归:对于每个候选区域,算法需要判断它是否包含特定类别的物体,并预测物体的边界框。这通常涉及到分类任务和回归任务的结合。
-
非极大值抑制(NMS):在检测过程中,可能会产生多个重叠的边界框,用于表示同一物体。NMS是一种常用的技术,用于选择最佳的边界框并去除多余的框。
(3)分类:物体检测算法主要分为两类:One-Stage(一阶段)和Two-Stage(两阶段)模型。
-
One-Stage模型,如YOLO(You Only Look Once)和SSD(Single Shot Detection),直接在单次网络评估中预测图像中所有物体的类别和位置信息。这种方法的优点是速度快,适合实时应用,但可能在精度上不如Two-Stage模型 。
-
Two-Stage模型,如Faster R-CNN,首先使用区域提议网络(Region Proposal Network, RPN)生成候选区域,然后对这些区域进行分类和边界框的精细调整。这种方法的优点是精度高,但速度相对较慢 。
One-Stage模型通常在单个卷积网络中同时预测类别和位置,而Two-Stage模型则将检测任务分解为两个阶段:区域提议和候选区域的分类与定位。两者的优势分别为:速度和精度。
二、YOLO 模型介绍
(1)简介:YOLO,全称为"You Only Look Once",是一种流行的实时目标检测算法,YOLO的核心思想是将目标检测任务视为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率的映射。这种设计使得YOLO能够以非常快的速度进行目标检测,同时保持较高的精度,特别适合需要实时处理的应用场景。
(2)特点:
-
在单个网络评估中同时预测多个边界框和类别概率,而不是像传统的滑动窗口方法那样多次评估。
-
使用一个卷积神经网络(CNN)来提取图像特征,然后使用这些特征来预测边界框和类别概率。其网络结构通常包括多个卷积层和池化层。
-
为每个边界框预测一个置信度,这个置信度反映了边界框包含目标的概率以及预测的类别。置信度的计算公式是:
Pr(Object) * IOU(pred, truth)
,其中Pr(Object)
表示格子中存在目标的概率,IOU(pred, truth)
表示预测框和真实框的交并比。
(3)发展过程:
三、YOLO 数据集格式
标注格式:主要使用.txt
文件来存储图像中物体的标注信息。每个图像都有一个对应的.txt
文件,文件中的每行表示一个物体的标注,包括物体的类别索引和边界框(bounding box)的坐标。详细介绍:
-
类别索引:每个物体的类别由一个整数索引表示,索引对应于预先定义的类别列表。
-
边界框坐标:边界框由其中心点坐标
(x_center, y_center)
和宽度width
、高度height
组成。这些值通常是归一化到图像宽度和高度的比例值,范围在0到1之间。 -
坐标格式:边界框坐标通常按照
[class_index x_center y_center width height]
的格式记录,其中class_index
是类别索引,x_center
和y_center
是边界框中心点的x和y坐标,width
和height
是边界框的宽度和高度。
四、YOLO 训练日志
在使用YOLO进行训练时,生成的exp/detect/train
类型的文件夹是训练过程中的一个关键组成部分。
-
模型权重 (
.pt
或.pth
文件): 训练过程中保存的模型权重,可以用于后续的测试或继续训练。 -
日志文件 (
.log
文件): 包含训练过程中的所有输出信息,如损失值、精度、速度等。 -
配置文件 (
.yaml
或.cfg
文件): 训练时使用的配置文件副本,记录了数据路径、类别名、模型架构等设置。 -
图表和可视化: 有时YOLO会生成训练过程中的性能图表,如损失曲线、精度曲线等。
-
测试结果: 如果训练过程中包括了测试阶段,可能会有测试结果的保存,如检测结果的图片或统计数据。
五、Baseline 进阶思路
1、增加训练的数据集,可以增加更多的视频到训练集中进行训练。
2、切换不同的模型预训练权重。