1、数据增强的方式有哪些?(像素级调整、遮挡、多图增强)请详细说明
1.1像素级调整
常见的数据增强方式,直接对图像的像素进行修改和调整
1)旋转:图像可以按一定角度(如90度、180度等)旋转。旋转能帮助模型学习不同方向的物体特征,增强对物体姿态变化的鲁棒性。
2)缩放:图像可以缩放或放大,改变图像的大小。这有助于模型处理不同尺度的物体。
3)翻转:水平翻转或垂直翻转图像,使得模型能够学习镜像对称的特征。例如,水平方向的翻转在很多自然图像任务中都非常有效。
4)平移:对图像进行水平或垂直平移,即将图像内容向左、右、上、下移动一定的像素距离。这种方法可以使模型适应物体在不同位置的变化
5)剪裁:从图像中裁剪出随机区域,这有助于模型学会对局部区域的关注,而不是对整个图像的过度依赖。
6)亮度,对比度,饱和度调整:调整图像的亮度、对比度或饱和度,使得图像变得更加明亮、暗淡或色彩更加丰富。这种方法有助于模拟不同的照明条件。
7)噪声添加:在图像中添加随机噪声,如高斯噪声,模拟低质量图像的情况。这能够增加模型在噪声环境下的鲁棒性。
8)色调变化:改变图像的色调,使得颜色偏向不同的范围。这个增强方法有助于处理色彩变化的场景,如在不同光照条件下拍摄的图像。
1.2遮挡
遮挡方法通过在图像中遮住部分区域,迫使模型学习如何处理部分信息缺失的情况。这对于提高模型的鲁棒性和解决部分遮挡问题非常有效。
1)Cutout:该方法在图像中随机选择一个矩形区域并将其填充为零或其他常数(如黑色)。这样,模型需要在部分信息缺失的情况下进行推理
2)Random Erasing:类似于cutout,但是是随机选择的一个区域对图片进行随即擦除,遮挡,随即擦除的区域大小,形状,位置都是随机,增加了图片的多样性
3)遮挡法:将图像中的一部分进行遮挡,模拟现实中的物体被遮挡的现象,提高模型对遮挡部分的推理能力
4)遮挡与模糊:在图片中遮挡部分添加模糊效果,模拟现实生活中图片的模糊看不清的情况,促进模型提升对于模糊场景的处理能力
1.3多图增强
通过多个图像合并来形成新的数据,增强模型健壮性
1)图像拼接:通过拼接多个图像模拟现实场景中复杂背景,多个物体的情况,提升模型在复杂场景中的处理能力
2)Mixup:两张图象通过加权形成一张新的图像,通常用于增强模型对于不同类别边界的学习
3)CutMix:将两张图象的矩形区域进行交换或剪切,在组合到一起,这不仅是像素的混合也是语义信息的重叠
4)RandomCrop and Resize:随机裁取图像一部份区域,将区域缩放至和原图一样的大小,增加了样本的多样性,帮助模型适应不同区域的信息,
5)Mosaic数据增强(数据增强中的高级策略)
四张图像拼接成一张新图像,生成一个具有更复杂场景的新样本。这种方法通过随机选择四张图像,将它们按一定比例拼接在一起,形成一个新的组合图像,丰富了场景的多样性,帮助模型更好的识别到边界特征,增强小目标检测能力
注意:
计算资源消耗:Mosaic方法在训练过程中需要对图像进行多次裁剪、缩放和拼接操作,因此可能会增加计算开销。
适用性:适用于目标检测,特别是需要增强模型对复杂场景和小目标的检测能力时,它是一个非常有效的方法。但对于分类任务或分割任务,它可能没有明显的优势
1.4几何变换
1)仿射变换:通过旋转、平移、缩放、倾斜等操作,对图像进行仿射变换。仿射变换保持图像的平行线不变,通常用于模拟图像拍摄角度的变化
2)透视变换:通过改变图像的视角,模拟不同的相机视角。透视变换有助于提高模型在不同视角下的鲁棒性。
1.5基于模型的增强方法
1)生成对抗网络(GANs)增强:成对抗网络(GANs)可以生成非常逼真的新样本,特别是对于图像生成任务。可以训练一个GAN模型,从现有的样本中生成新的数据样本,从而扩展数据集。
2)Style Transfer:格迁移技术可以将一张图像的内容与另一张图像的风格结合,从而生成具有新风格的图像。这种方法适用于图像艺术化、虚拟现实等领域。
2、详细说明一下什么是mosaic数据增强,以及它的优缺点。
mosaic数据增强是多图增强中的高级策略,常用于对于复杂场景及复杂目标的检测,它通过4张图象进行裁剪,拼接成一个新的图像
优点:提高了模型对于复杂场景的处理能力,帮助模型更好学习到不同类别的边界,适合目标较小难以区分的情况
缺点:计算资源开销较大,mosaic方法在训练中需要对图像进行多次裁剪,缩放和拼接操作;会与复杂场景和小目标检测有较好的效果,对于分类任务或分割任务没有明显的优势
3、如何解决数据分布不均匀的问题?详细介绍一下Focal Loss
3.1数据层面的处理
1)重采样:
过采样:增加少数类别的样本数量
欠采样:减少多数类别的样本数量
2)数据增强
对少数类别的数据进行增强,如旋转、翻转、裁剪、噪声注入等,增加其数量和多样性。
3)类别加权
在损失函数中对类别设置权重,让少数类别对损失的贡献更大,从而增强模型对少数类别的关注。
3.2算法层面的优化
1)调整决策阈值
对类别概率设置不同的决策阈值,让模型更加偏向预测少数类别
2)使用专门的损失函数
Focal Loss、加权交叉熵、平衡的对数损失等,直接在损失函数中解决类别不平衡问题。
3.3Focal Loss详细讲解
Focal Loss是解决目标检测类别不平衡问题而产生的,它特别适合处理困难样本和少数类别样本
当pt值很大时,1-pt值趋近于0,损失值趋近于0,这时候模型就不会过度关注于已经训练正确的样本了,会减少该样本对损失的贡献
当pt值很小时,1-pt值趋近于1,损失值趋近于1,模型会把更多关注放在该样本上
举例:
假设我们正在进行目标检测任务,背景类的样本非常多,而目标类(例如某个小物体)样本稀少且容易被忽视。训练时,模型大多数时候都在学习如何区分背景与目标,而背景类样本通常很容易被正确预测。因此,使用标准的交叉熵损失时,模型会更加关注背景类,忽略了难以区分的目标类。
此时,Focal Loss 的引入会有效减少背景类样本对总损失的贡献(因为背景类样本的预测概率通常很高),而对目标类样本的学习变得更加集中。即使目标样本占比小,Focal Loss 通过聚焦困难样本的方式帮助模型提高对目标类的预测准确率。
例子假设
- α=0.25\alpha = 0.25α=0.25
- γ=2\gamma = 2γ=2
- 两个样本分别是简单样本和困难样本:
- 简单样本:
- pt=0.9p_t = 0.9pt=0.9,模型对正确类别的置信度高。
- 困难样本:
- pt=0.1p_t = 0.1pt=0.1,模型对正确类别的置信度低。
- 简单样本:
公式的步骤计算
1. 计算简单样本的损失
对于简单样本:
- pt=0.9
- (1−pt)=0.1
- (1−pt)γ=(0.1)2=0.01
- log(pt)=log(0.9)≈−0.105
套入 Focal Loss 公式:
FL(pt)=−α⋅(1−pt)γ⋅log(pt)=−0.25⋅0.01⋅(−0.105)≈0.0002625
2. 计算困难样本的损失
对于困难样本:
- pt=0.1
- (1−pt)=0.9
- (1−pt)γ=(0.9)2=0.81
- log(pt)=log(0.1)≈−2.302
套入 Focal Loss 公式:
FL(pt)=−α⋅(1−pt)γ⋅log(pt)=−0.25⋅0.81⋅(−2.302)≈0.465
结果对比
- 简单样本的损失:FL(pt)≈0.0002625
- 困难样本的损失:FL(pt)≈0.465
从结果可以看出:
- 简单样本的损失被大幅度减小(接近于 0),即使模型对其预测准确,也不会显著影响总损失。
- 困难样本的损失被放大(比简单样本大了近 1800 倍),从而让模型在训练过程中更加关注这些困难样本。
对比普通交叉熵
如果使用普通的交叉熵(CE),没有 Focal Loss 的权重调整,我们计算损失:
简单样本的损失(CE)
CE(pt)=−log(pt)=−log(0.9)≈0.105
困难样本的损失(CE)
CE(pt)=−log(pt)=−log(0.1)≈2.302
对比:
- 普通交叉熵会让简单样本的损失 0.105和困难样本的损失 2.302 都被直接加权,简单样本仍然占据一定比例的损失。
- 而 Focal Loss 显著降低了简单样本的损失权重,使得简单样本几乎对总损失没有影响。
4、对iou的改进有哪些?他们的区别在哪里?
在 YOLOv4 中,针对目标检测中的 IoU (Intersection over Union),提出了几种改进方法,用于提升目标检测性能。这些改进主要是为了更好地评估预测框和真实框的重合程度,同时解决 IoU 存在的不足,比如无法直接反映预测框的距离和形状差异。
区别对比
实际应用场景
- IoU:适合评估模型性能,但不适合作为损失函数。
- GIoU:在早期阶段用作损失函数,可以提高无交集框的收敛性。
- DIoU:适合需要快速调整框位置的场景。
- CIoU:最适合目标检测任务,能全面提升定位和形状预测精度
5、介绍mish和swish激活函数
特性:
1)平滑性:Swish激活函数在整个输入空间都是平滑的,相较于Relu激活函数,在负数区域的导数是非零的,避免了“死神经元”
2)渐进的非线性:Swish的非线性度随着值的输入而增强,因此它对于小的输入值有更好的响应,尤其是在处理复杂的特征时。
3)计算较为简单:虽然 Swish 是 Sigmoid 和线性函数的组合,但它的计算复杂度仍然低于传统的激活函数(如 Tanh)。
优点:
1)尤其在深层网络中,能比Relu函数更好避免梯度消失的问题
2)提供更平滑的优化过程,能够更快地收敛并改善最终的性能
缺点:
相较于 ReLU,Swish 的计算更为复杂,因为需要计算 Sigmoid 和乘法。
特性:
1)连续性和平滑性:Mish 是一个平滑的、连续可微的激活函数,它在负数区域和正数区域都表现得较为平滑,能够有效避免 "死神经元"。
2)非线性能力:Mish 的非线性表现比 ReLU 和 Swish 更强,尤其在处理深度网络时,能够提高模型的表示能力。
3)优化性:Mish 的导数比其他激活函数的导数平滑,能够帮助梯度传播更加稳定,并减少梯度消失的问题。
优点:
- 更强的非线性表现,相比 Swish 和 ReLU,Mish 对小的输入值有更强的激活响应,有助于更好地拟合复杂数据。
- 提供更平滑的梯度和激活过程,改善训练速度和性能。
- 在许多任务中,比 ReLU 或 Swish 获得了更好的训练效果,尤其是在深度网络中。
缺点:
- 计算复杂度比 ReLU 高,因为涉及到计算 Softplus 和 Tanh。
- 与 Swish 一样,相比 ReLU,Mish 的计算稍微复杂,可能在计算资源较少时增加开销。
模型非常复杂的时候选择MIsh
模型复杂度不是很高,计算资源受限时优先选择Swish
6、分类模型的评估指标有哪些?
6.1性能指标
性能指标和模型运行的平台有关。性能一般有两个指标:参数量和计算量
常用的性能指标单位有:floaps/帧率等
性能指标和精度指标通常是矛盾的,所以平衡性能;指标和精度指标是必要的工作
6.2精度指标
6.1.1混淆矩阵
TP:预测正确为正样本
FN:预测错误为负样本
FP:预测错误为正样本
TN:预测正确为负样本
------------------------------------------------------------------------------------------------
Recall召回率:都为正样本,所有正样本中预测正确为正样本的比例,衡量的是所有实际为正样本的样本中,被模型正确预测为正样本的比例
Precision精度:所有预测为正样本中预测正确为正样本所占的比例,衡量的是模型预测为正样本的样本中,实际上为正样本的比例
True Positive Rate:所有正样本中预测正确为正样本所占的比例,衡量的是所有实际为正样本的样本中,被模型正确预测为正样本的比例
False Positive Rate:实际负样本中模型预测错误为正样本所占的比例
6.1.2PR曲线与F1-Score
定义
PR曲线是根据查准率和查全率的变化关系而绘制的曲线
PR曲线的评价指标:AUC-PR(Area Under Curve - PR):曲线下的面积,值越大表示模型性能越好。
F1-Score 是 Precision 和 Recall 的调和平均值,用于综合衡量两者的表现。
PR曲线与F1-Score的关系
1)PR 曲线描述的是不同阈值下模型的整体表现,而 F1-Score 是其中某一特定阈值下的结果
2)F1-Score 通常对应 PR 曲线中 Precision 和 Recall 相对均衡的点
3)从 PR 曲线可以计算不同阈值下的 F1-Score,找到最大 F1-Score 对应的阈值。
6.1.3ROC与AUC
ROC是一种用于评估分类模型性能的工具,特别适用于二分类任务。
AUC 是 ROC 曲线下的面积,用于量化模型的整体性能。
6.1.4Iou与mAP
iou就是实际框与预测框的交并比
AP是单个类别的平均精度,是针对单一类别计算pr曲线的面积
MAP是对所有类别的AP取平均值
7、什么是Recall?Precison?F1-SCORE?mAP?详细介绍一下。
Recall:查全率,衡量的是所有实际为正样本的样本中,被模型正确预测为正样本的比例
Precision:查准率,衡量的是模型预测为正样本的样本中,实际上为正样本的比例
F1-SCORE:是Recall和Precision的调和平均值,当其中某一项偏低时,F1-SCORE会倾向于较低的那个值
mAP:对所有类别的AP取平均值,而AP又是指PR曲线下的面积部分,用来衡量单个类别的模型性能,面积值越大性能越好