文章目录
- 一、研究背景与目标
- 模型效果提升
- 数据集优化
- 二、研究问题明细
- 各方向的关联性与核心逻辑
- 1. 高质量数据集的高效筛选与主动学习应用
- 2. 基于推理结果的数据补充与增强方向优化
- 3. 多类别场景下目标尺度与模型精度的关联性
- 4. 损失函数与数据增强对精度的量化影响
- 5. 目标类型专用数据增强的有效性验证
- 6. 目标位置分布对检测精度的影响
- 7. 网球检测标签的细分化探索
- 8. 新型优化器(Muon)在YOLO中的适配与效果
- 9. 边界框(Box)质量的评价标准与精度影响
- 10. 球类目标的参数简化方案验证
- 数据量越多越好?训练时间和精度的权衡
- 实验
- 边缘效应
- 结果指导
- 定义数据集质量指标,
- 标注质量
- 数据本身
- 冗余度(Redundancy)
- 难例比例
- 任务适配
- 覆盖度(Coverage)
- 基于概率分布的距离指标
- 基于目标属性的分布相似度指标(目标检测)
- 1. 目标尺度分布相似度
- 2. 目标位置分布相似度
- 3. 类别分布相似度
- 4. 目标密度适配性(对于密集目标)
- 筛选高质量数据
- 主动学习
- 参考思路:
一、研究背景与目标
模型效果提升
在目标检测任务中,首先评价一个训练好的模型在测试集上表现得好不好的指标很简单,看准确率类(如Acc、Recall、mAP等)和速度类的指标(如FPS)。
但想提升测试集上的表现,打个比方,把模型看做是学生,训练阶段就是在考前刷题,推理阶段就是上场考试。训练集是 “练习题”,验证集是 “模拟考试”,测试集是 “最终大考”,标签则是 “标准答案”。想要考得高,可以提高学生的学习能力,用科学的学习和复习方法,这是改进模型本身。还有是练习时用的例题质量足够高,这是。
有以下思路:
- 增加推理时进入模型前对图片预处理(如去噪、增强对比度),降低模型面对的任务复杂度。
- 改进模型本身(参数量,深度,结构),提升特征提取能力
- 在训练时,用更好的优质数据集,让模型学习更有效的知识。
以上思路比较浅显,我们希望
- 进一步量化对标检测任务模型精度的影响因素,用来更好的理解优化我们的训练流程。
- 知道通用的yolo训练中什么步骤带来了最大的提升和最小的时间开销。找到训练yolo同时在精度提高跟多,时间开销更增加更少的影响因素。
数据集优化
这里重点看数据集的改进。对于数据集的改进的首先想到的就是增加数量,力大飞砖,大力出奇迹,题海战术。一般情况下,数据集越多,测试集精度就越高,但是会增加训练时的时间成本。而且加入低质量的数据集(如标注错误、冗余样本、极端噪声数据,甚至 “数据投毒”等),会降低模型的精度。
所以提出一些问题:
- 性价比最大化:能否在训练YOLO时以最小的投入(数据集内存占用量,训练时间)获取最大的回报(测试集上精度)。也就是通过的筛选或者改进出一小批高质量的数据集进行训练,来在测试集上精度接近(甚至超越)全量数据集训练的效果。
- 数据质量的量化:如何定义和量化所谓的高质量,量化评价一批数据集质量的各个标准。
- 高质量数据的获取:这部分高质量数据应该通过什么方法获得。
- 最小数据量:数据集质量提高到极致后,最少多少数据集量可以拟合出较好的性能?
二、研究问题明细
- 专用数据集:空中目标检测数据集
- A:遥感多目标数据集
- B:无人机检测数据集
- 通用数据集:coco数据集
- 目标数据集:网球目标检测数据集
更具体的研究问题如下:
1:如何通过训练一个部分的高质量数据集来获得与全量数据相近的精度,主动学习找到信息量大的标本
2:如何通过分析模型的推理结果来确定后续的补充数据和选择数据增强的方向
3:多类别下,小目标和大目标的精度差距是相关的吗?如果减少大目标的类别,能否提高小目标的精度。或者说如果针对每个类别训练一个单独的模型会比合在一起的精度更高吗?
4:损失函数/数据增强是如何影响模型的精度的。
5:针对目标类型设计增强数据,能否有效。
6:目标的位置会影响最终的精度吗
7:进一步分析球检测的标签能否进一步细分。前后半场,击球,弹起?
8:优化器muon引入yolo的效果实验
9:如何评价box质量,box的质量会怎么样影响精度。
10:对于球类运动能否引入一个圆形的目标,减少一个参数量。只需要x,y和r即可。
各方向的关联性与核心逻辑
所有方向均围绕“数据-模型-任务特性”的交互关系展开:
- 数据层面(1、2、6、9)聚焦“数据分布、质量、补充策略”对精度的影响;
- 模型层面(4、8)关注“损失函数、优化器”等组件的参数优化;
- 任务特性层面(3、5、7、10)针对多类别、球类检测等场景的专属问题,探索定制化方案(如标签细分、圆形参数化)。
通过量化各方向的实验结果(如精度提升幅度、时间开销),可最终形成“最小投入-最大回报”的YOLO训练优化路径。
围绕“在YOLO系列模型训练中以最小投入(时间、数据量等)获取最大精度回报”这一核心目标,结合数据分布、模型优化、任务特性等维度,可将研究方向明确为以下10个具体且相互关联的子方向,每个方向均聚焦于可量化、可实验验证的关键问题:
1. 高质量数据集的高效筛选与主动学习应用
- 核心目标:通过主动学习策略从全量数据中筛选出“信息量最大”的部分高质量数据,使模型精度接近全量数据训练效果,减少数据维护成本。
- 关键问题:如何定义“信息量大的标本”(如难例、代表性样本)?通过词向量嵌入、相似度聚类(如Kmeans)、置信度分析等方法筛选数据的效果差异如何?
2. 基于推理结果的数据补充与增强方向优化
- 核心目标:利用模型推理结果(如边界框质量、置信度、漏检/误检区域)反向指导数据补充策略(如增加某类样本)和数据增强方向(如针对薄弱区域设计增强)。
- 关键问题:推理结果中的哪些指标(如低置信度区域、密集目标漏检)可直接关联数据缺陷?如何将这些指标转化为具体的数据集扩充或增强方案?
3. 多类别场景下目标尺度与模型精度的关联性
- 核心目标:探究多类别中“小目标与大目标精度差距”的内在关联,以及类别拆分对精度的影响。
- 关键问题:减少大目标类别是否能提升小目标精度?为每个类别单独训练模型是否比联合训练精度更高?(本质是分析类别竞争、尺度差异对模型注意力的影响)
4. 损失函数与数据增强对精度的量化影响
- 核心目标:量化不同损失函数(如CIoU、Focal Loss)和数据增强方法(如翻转、缩放、马赛克)对模型精度的提升幅度及时间开销。
- 关键问题:哪些损失函数/增强方法在YOLO训练中性价比最高(提升大且耗时少)?不同数据集(如通用COCO、专用遥感数据)对损失函数/增强的敏感度是否有差异?
5. 目标类型专用数据增强的有效性验证
- 核心目标:验证“针对特定目标类型设计增强”的效果(如网球的运动模糊、旋转增强)。
- 关键问题:为球类、空中目标等设计专属增强(如模拟飞行轨迹、击球动态)是否比通用增强更能提升精度?
- MMYOLO中的实验证明了多个数据增强的影响。
6. 目标位置分布对检测精度的影响
- 核心目标:分析目标在图像中的位置(如边缘、中心、密集区域)与检测精度的关联。
- 关键问题:是否存在“模型对特定位置目标检测能力较弱”的现象?如何通过数据分布优化(如平衡位置分布)改善这一问题?
7. 网球检测标签的细分化探索
- 核心目标:针对网球任务,验证标签细分(如前后半场位置、击球/弹起状态)对检测精度或任务扩展性的提升。
- 关键问题:细分标签是否能让模型学习到更精细的运动特征?细分化带来的标签成本增加与精度提升是否平衡?
8. 新型优化器(Muon)在YOLO中的适配与效果
- 核心目标:测试优化器Muon替代YOLO默认优化器(如SGD、Adam)后的训练效率(收敛速度)和最终精度。
- 关键问题:Muon在处理球类、小目标等场景时,是否能减少震荡、提升收敛稳定性?与原有优化器的时间开销对比如何?
9. 边界框(Box)质量的评价标准与精度影响
- 核心目标:定义“边界框质量”的量化指标(如与真实框的交并比、标注完整性),分析其对模型精度的直接影响。
- 关键问题:低质量框(如标注偏移、漏标)对小目标/密集目标检测的危害是否更大?如何通过清洗低质量框提升模型鲁棒性?
10. 球类目标的参数简化方案验证
- 核心目标:针对球类(圆形目标),测试用“圆心(x,y)+半径(r)”替代传统矩形框(x,y,w,h)的可行性,减少模型参数量。
- 关键问题:圆形参数化是否能提升球类检测的精度(如减少形状拟合误差)?对模型推理速度的提升效果如何?
数据量越多越好?训练时间和精度的权衡
实验
- 假设 “数据质量分布平均”,排除了数据质量差异对结果的干扰,能单纯聚焦 “数据量” 与 “精度” 的关系。
- 固定训练超参数,所有实验组(不同数据量)采用相同的训练轮次、学习率调度(如余弦退火)、优化器(如Adam)、batch size,仅改变数据量。 符合实验设计的单一变量原则。
- 多次实验取均值:如果时间允许,同一数据量下重复训练3次(避免随机种子影响),取精度均值绘制曲线,减少偶然误差。
逐步添加数据,并测试记录测试集上分数。绘制曲线。
- 针对“全量数据”:指不区分目标类型,单纯增加整体数据集的规模时,模型精度的变化趋势。
- 针对“小目标(像素少)、密集目标(数量多、相互遮挡)”:专门针对“小目标”或“密集目标”样本增加数据量时,模型在这类目标上的精度变化趋势。
明确添加数据的“添加方式”:若随机添加,可能因偶然引入大量冗余样本(如重复场景),导致曲线低估 “有效数据” 的边际效益;若按规则添加,需明确规则并保持一致性
- 添加策略:采用“分层随机抽样”,确保每次新增数据的场景分布(如光照、角度、背景)与初始数据集一致,避免因新增数据分布偏移影响曲线真实性。
- 数据量梯度:设置合理的梯度间隔(如按初始数据量的20%、40%、60%、80%、100%、120%递增),避免梯度太粗(如仅3个点)导致曲线形态失真,或太细(如20个点)增加实验成本。
效率指标:同步记录“每单位数据量的精度提升”(ΔAP/新增数据量)和“每单位精度提升的时间成本”(Δ训练时间/ΔAP),直接量化“权衡关系”
边缘效应
用曲线量化“数据量增加”与“模型性能提升”之间的关系。
边缘效应:随着数据量不断增加,模型性能的提升幅度会逐渐减弱(甚至趋于停滞)的规律。
- 初期:数据量较少时,新增数据(尤其是代表性样本)能显著提升模型性能(曲线陡峭上升)。
- 中期:数据量达到一定规模后,新增数据的边际收益开始下降(曲线变平缓)。
- 后期:数据量极大时,新增数据几乎不再提升性能(曲线趋于水平)。
曲线形态:通常是一条“先快速上升,后逐渐平缓”的曲线,横轴为“数据量”,纵轴为“模型精度(如mAP)”。
结果指导
对全量数据曲线:明确“数据量与精度的性价比临界点”,指导实际训练中“投入多少数据最划算”。个人认为图像拐点处。
对小目标/密集目标曲线:判断“此类目标是否受数据量限制”(如曲线始终陡峭,说明需优先扩充;若快速平缓,需转向模型优化,如改进小目标检测头)。
定义数据集质量指标,
评价一批数据集质量的指标类别:
- 标注质量:人工复审等
- 数据本身特性(如多样性、代表性)
- 与任务适配性(如对模型薄弱环节的覆盖度)
标注质量
都是人标记的,而且就是复审也是人标记的,一张图人人标记的都不一样,不好客观量化。
数据本身
这个评价标准是类似于“绝对指标”,就是不是和别的数据集相比较计算得出的,意义不大。
但我定义难例,还是通过训练模型是否能检测出来定义的,等效于相对的是训练用的训练集。
冗余度(Redundancy)
-
定义:数据集中高度相似样本的占比(冗余样本会增加训练时间,对精度提升无意义)。
-
定义冗余样本:
-
视觉内容高度相似:两张图像的场景、目标、背景几乎一致(如连续帧中仅轻微位移的图像,或同一角度重复拍摄的图片)。 不好量化,人眼看比较主观。
-
特征分布高度重叠:通过用成熟的图像嵌入模型将样本转化为高维特征向量(向量维度反映图像的核心特征,如颜色、纹理、目标布局)。如果两个样本的特征向量的余弦相似度超过设定阈值任务其一为冗余。但要两两比较,n2n^2n2复杂度,可以简化计算,随机抽取10%样本计算冗余度。
-
对模型贡献趋同:用预训练模型推理,两样本的预测损失(如分类损失+边界框损失)差异极小(如损失差<1%),说明模型从两者中学习到的信息一致。
-
但要考虑的是人认为是冗余,但有可能对模型来说是有益的。
有害冗余:完全重复的场景(如同一图片复制多次),对模型无新贡献,必须删除。
无害重复:看似相似但包含细微差异(如网球的不同旋转角度),可能帮助模型学习细节特征,不应判定为冗余。
-
冗余度的量化方法:
冗余度=冗余样本对数量总样本对数量\text{冗余度} = \frac{\text{冗余样本对数量}}{\text{总样本对数量}}冗余度=总样本对数量冗余样本对数量
总样本对数量=N×(N−1)/2,N为样本总数总样本对数量 = N×(N-1)/2,N为样本总数总样本对数量=N×(N−1)/2,N为样本总数
难例比例
- 定义:数据集中包含“模型难识别样本”的比例(如小目标、遮挡目标、罕见角度目标),此类样本对提升模型泛化能力至关重要。
- 定义难例:设定损失阈值(如取损失前20%的样本为“难例”),
难例比例 = 难例样本数 / 总样本数
(需结合任务调整,并非越高越好,通常10%~30%为宜)。 - 量化方法: 用预训练模型(如YOLOv5)对数据集进行推理,计算每个样本的预测损失(如边界框损失+分类损失)。
任务适配
与任务适配性指标:反映数据与“测试集/任务需求”的匹配度
覆盖度(Coverage)
- 定义:数据集覆盖测试集所有场景/目标类型的程度(如不同光照、角度、背景下的目标),避免关键场景缺失。
- 量化方法:
- 用图像嵌入模型(如谷歌MediaPipe)将所有样本(训练集+测试集)转化为高纬特征向量,通过K-means聚类将测试集分为N类(如N=20,覆盖所有典型场景)。
- 计算训练集中覆盖测试集聚类中心的比例:
覆盖度 = 训练集包含的测试集聚类中心数 / 测试集总聚类中心数
(取值0~1,越接近1越好)。
基于概率分布的距离指标
基于概率分布的距离指标是衡量两个概率分布(如训练集与测试集的特征分布)相似度的核心工具,其核心逻辑是通过量化 “分布形状差异” 或 “信息损失” 来判断相似程度。以下是三种通用型指标的详细解析,包括定义、计算逻辑、优缺点及适用场景:
指标 | 对称性 | 取值范围 | 核心优势 | 局限性 | 最佳适用场景 |
---|---|---|---|---|---|
KL散度 | 非对称 | [0,+∞)[0, +\infty)[0,+∞) | 精准衡量P对Q的信息损失 | 不适合对称对比,极端值易发散 | 类别占比、目标尺度等离散特征的单向评估 |
JS散度 | 对称 | [0,1][0, 1][0,1] | 对称且易设定阈值,适合双向对比 | 不考虑特征值的实际距离 | 位置分布、场景属性等离散特征的对称对比 |
Wasserstein距离 | 对称 | [0,+∞)[0, +\infty)[0,+∞) | 考虑特征值距离,适合连续特征 | 计算复杂度高(尤其高维特征) | 目标尺寸、坐标、遮挡率等连续特征 |
基于目标属性的分布相似度指标(目标检测)
个人认为,在数据集的标注没问题时,与测试集越相似的训练集越好。比如最后参加高考,平常练习的是难度、题型的分布都很相似的往年高考真题。
针对目标检测任务的核心特征(如尺度、位置、类别、形态),来量化两个数据集的相似度。
1. 目标尺度分布相似度
- 特征定义:目标的宽高、面积、边长比(如宽高比)等连续或离散化特征。
- 量化方法:
- 离散化:将尺度分为小/中/大(如32×32为界),计算各区间占比的KL散度或JS散度。
- 连续化:对目标面积的概率密度函数(如高斯分布拟合)计算Wasserstein距离,距离越小说明尺度分布越一致。
2. 目标位置分布相似度
- 特征定义:目标中心在图像中的坐标(x,y)、所属区域(如边缘/中心)。
- 量化方法:
- 网格划分法:将图像分为N×N网格(如3×3、5×5甚至更大),统计目标在各网格的占比,计算JS散度(见前文)。
- 坐标分布:对目标中心坐标(x,y)的二维分布计算2-Wasserstein距离,或用二维直方图的KL散度。
3. 类别分布相似度
- 特征定义:各类别目标的样本数量占比(如COCO中“人”“车”的占比)。
- 量化方法:
- 计算类别占比向量的KL散度(如训练集“猫:30%、狗:70%”与测试集“猫:25%、狗:75%”的差异)。
- 简单匹配率:∑min(Pi,Qi)\sum \min(P_i, Q_i)∑min(Pi,Qi)(P、Q为训练/测试集类别占比),值越接近1越相似。
4. 目标密度适配性(对于密集目标)
- 定义:训练集中密集目标样本与测试集密集场景的匹配程度(针对密集目标检测任务)。
- 量化方法:
- 定义“密集样本”为单张图目标数>10个,计算训练集与测试集的密集样本占比:
密集占比差 = |训练集密集占比 - 测试集密集占比|
(差值<5%为适配,否则需补充分集样本)。
- 定义“密集样本”为单张图目标数>10个,计算训练集与测试集的密集样本占比:
筛选高质量数据
主动学习
方向是主动学习。实验主要是区分为两部分
-
数据驱动:通过模型对图片进行词向量嵌入,构造词向量的数据集。对向量相似度进行对比,将相似度高的数据进行筛选。使用
- 谷歌MediaPipe图像嵌入器(轻量、实时,适合大规模数据集),地址:mediapipe。
- CLIP模型(跨模态特征,对场景语义更敏感);
- ResNet等CNN模型的中间层输出(保留图像细节特征)。
-
结果驱动:通过对结果的box大小和区域以及置信度的分析,增加类似的数据集。
参考思路:
-
1.1: 对现有数据集进行Kmeans聚类,对选取聚类个数,聚类中心结果进行实验,数据的数量,大小和位置分布
-
1.2:选取和验证集的数据最相似的N个数据加入网络训练数据,观察收敛曲线,增加数据的数量,大小和位置分布
-
1.3:先随机选择K个数据,再删除和这些数据相似度大于一定值的数据,观察收敛曲线,数据的数量,大小和位置分布
-
1.4:训练数据集结果中,根据置信度对数据进行删除,删除按照某个线性函数,高多删低的保留,观察收敛曲线,数据的数量,大小和位置分布
-
1.5:根据某个规则重新挑选数据,保证训练和测试数据集的标签的分布和位置尽量的相似
-
1.6:对于验证集的伪标签,是否全加入训练是最好的,如果需要挑选,要挑选什么样的数据。