来到task2啦!
在对baseline的简单学习之后,要开始对具体知识点的学习了
首先要确定的是,物体检测算法的两个功能,一个是识别类别,一个是确定位置,也就是常见的边界框
以下是物体检测的步骤:
输入:一张图像或视频帧。
特征提取:深度学习模型,如CNN
候选区域生成:基于区域的卷积神经网络首先需要生成图像中的候选区域,这些区域可能包含感兴趣的物体。
区域分类和边界框回归:对每个候选区域判断它是否包含特定类别的物体,并预测物体的边界框。这通常涉及到分类任务和回归任务的结合。
非极大值抑制(NMS):在检测过程中,可能会产生多个重叠的边界框,用于表示同一物体。NMS用于选择最佳的边界框并去除多余的框。
One-Stage模型,在单个卷积网络中同时预测类别和位置。如YOLO和SSD直接在单次网络评估中预测图像中所有物体的类别和位置信息。这种方法的优点是速度快,适合实时应用,但可能在精度上不如Two-Stage模型 。
Two-Stage模型,区域提议和候选区域的分类与定位。如Faster R-CNN,首先使用区域提议网络(RPN)生成候选区域,然后对这些区域进行分类和边界框的精细调整。这种方法的优点是精度高,但速度相对较慢 。
特点:
在单个网络评估中同时预测多个边界框和类别概率,而不是像传统的滑动窗口方法那样多次评估。
使用一个卷积神经网络(CNN)来提取图像特征,然后使用这些特征来预测边界框和类别概率,网络结构通常包括多个卷积层和池化层。
为每个边界框预测一个置信度,反映边界框包含目标的概率以及预测的类别。置信度的计算公式是:Pr(Object) * IOU(pred, truth)
,其中Pr(Object)
表示格子中存在目标的概率,IOU(pred, truth)
表示预测框和真实框的交并比。
标注格式主要使用.txt
文件来存储图像中物体的标注信息。每个图像都有一个对应的.txt
文件,文件中的每行表示一个物体的标注,包括物体的类别索引和边界框(bounding box)的坐标,我们上一节也说过,不多赘述。
训练过程中,这样的配置文件允许用户轻松地指定数据集的位置和类别信息,从而无需硬编码在训练脚本中。具体来说,这段配置的含义如下:
path
: 指定了数据集的根目录路径,即所有数据子文件夹的上级目录。这里的路径是相对于当前配置文件的路径或者相对于执行训练脚本的工作目录。
train
: 定义了训练集图像的相对路径。在训练模型时,程序会在指定的路径下查找图像文件。
val
: 定义了验证集图像的相对路径。验证集用于在训练过程中评估模型性能,避免过拟合。
nc
: 表示类别的数量,这里设置为2,意味着数据集中有两类物体需要被识别。
names
: 是一个列表,包含了每个类别的名称。这里有两个类别,名称分别是"0"和"1"。这些名称在训练和测试过程中用于引用特定的类别。
训练日志生成的exp/detect/train
类型的文件夹是训练过程中的一个关键组成部分。
模型权重 (.pt
或 .pth
文件): 训练过程中保存的模型权重,可以用于后续的测试或继续训练。
日志文件 (.log
文件): 包含训练过程中的所有输出信息,如损失值、精度、速度等。
配置文件 (.yaml
或 .cfg
文件): 训练时使用的配置文件副本,记录了数据路径、类别名、模型架构等设置。
图表和可视化: 有时YOLO会生成训练过程中的性能图表,如损失曲线、精度曲线等。
测试结果: 如果训练过程中包括了测试阶段,可能会有测试结果的保存,如检测结果的图片或统计数据
F1_curve.png, PR_curve.png, P_curve.png, R_curve.png: 包含模型性能的不同评估指标曲线图,如F1分数(F1_curve.png
)、精确率-召回率曲线(PR_curve.png
)、精确率(P_curve.png
)和召回率(R_curve.png
)。
results.csv: 一个CSV文件,包含模型训练或测试的结果数据。
results.png: 包含训练结果的汇总图表或图像。
train_batch*.jpg: 包含训练过程中不同批次的图像和它们的标注。
val_batch0_labels.jpg, val_batch0_pred.jpg: 验证集批次的图像,可能包含真实标签(labels
)和模型预测(pred
)的可视化。
weights/: 一个目录,通常包含模型训练过程中保存的权重文件,如.pt
或.pth
文件。
学完之后真的感觉对yolo有一个比较清晰的认识,对初学者的学习十分友好,期待下一次task