1、 图像预处理和数据增强常见方法有哪些?在目标检测项目中你主要用了哪些增强方式?为什么这么选?运动模糊增强通常怎么实现?
答:图像预处理和数据增强通常可以分开看。预处理主要是为了统一输入和提升图像质量,常见有 resize、padding、归一化、标准化、去噪、直方图均衡化、gamma 校正等。数据增强主要是为了扩充样本分布,提高模型泛化能力,常见有翻转、旋转、平移、缩放、裁剪、亮度对比度扰动、噪声增强、模糊增强、Mosaic 和 MixUp 等在实际项目里,我通常会优先使用 resize、normalize、随机翻转、随机缩放裁剪、亮度对比度扰动、噪声增强和模糊增强,因为这些方式更贴近真实场景中的变化,比如视角变化、光照变化、采集噪声和图像退化。
如果要加入运动模糊增强 ,最常见的方法是构造一个具有长度和方向参数的运动模糊核 ,然后与图像做卷积。本质上是在模拟相机抖动或者目标运动带来的拖影,从而提高模型对动态模糊场景的鲁棒性。"
追问1:目标检测里的增强要注意什么?
追问2:运动模糊增强是不是越强越好?
答1:要注意增强后标注框也要同步变换。
答2:因为模糊过强会让边缘和纹理丢失,尤其会伤害小目标检测效果。
2、 YOLO 训练时标注框的坐标归一化是怎么计算的?模型推理输出的框坐标是如何从特征图坐标系恢复到输入图像坐标系,再进一步映射回原始图像坐标系的?
答:YOLO 在训练时,标注框通常采用中心点加宽高 的格式,即,并且会对图像宽高做归一化。具体来说,如果原始框的左上角和右下角坐标分别是
那么先计算中心点和宽高,再分别除以图像宽度和高度,得到 0 到 1 之间的相对坐标。这样做的好处是标签表达与分辨率解耦,也更利于模型训练稳定。
在推理时,模型并不是直接输出原图坐标,而是先在特征图坐标系上预测目标框的相对偏移量和宽高参数, 再结合网格位置 、stride,以及某些版本中的 anchor,把预测框解码到网络输入图坐标系。不同 YOLO 版本的解码公式略有差异,比如有的版本使用 anchor 和指数函数恢复宽高,有的版本使用改进后的 sigmoid 参数化方式,但核心思想都是从相对表示恢复到输入图上的像素坐标。
如果预处理阶段使用了 letterbox ,那么输入图中除了缩放后的原图区域,还包含补边区域。因此模型输出的框坐标要先减去 **padding,再除以缩放比例,**才能还原回原始图像坐标。如果只是简单 resize,没有补边,那就直接按宽高比例反变换即可
3、 过拟合是什么,如何避免过拟合?
答:过拟合指的是模型在训练集上学得太"细"了,不仅学到了真正有用的规律,还把训练数据里的噪声、偶然性特征也记住了。它的典型表现是训练集效果很好,但验证集或测试集效果明显变差,说明模型泛化能力不足。防止过拟合 一般可以从几个方面做。第一是增加数据量 ,或者做更合理的数据增强 ,比如翻转、裁剪、颜色扰动、模糊、加噪声等,让模型见到更丰富的样本分布。第二是控制模型复杂度 ,比如减少网络层数、降低参数量,避免模型容量过大。第三是加入正则化手段 ,常见的有 L1/L2 正则化、weight decay、Dropout。第四是用早停策略 ,也就是监控验证集指标,在性能开始下降前停止训练。第五是做好训练集、验证集、测试集划分 ,防止数据泄漏。除此之外,还可以通过交叉验证 、Batch Normalization、以及选择更合适的训练轮数和学习率来进一步缓解过拟合。
4、在复杂场景下,目标检测模型为什么容易出现误检?你通常会从哪些方面降低误检测率?如果结合项目落地,会怎么做?
答: "复杂场景下的误检,通常来自背景干扰强、目标尺度变化大、遮挡和模糊严重,以及训练数据对真实场景覆盖不足等问题。本质上是模型把一些和目标相似的背景区域错误识别成了目标。第一是数据层面 ,优先补充复杂场景下的困难样本 ,比如夜间、逆光、反光、遮挡、模糊、小目标和复杂背景,同时加入容易误检的负样本 和难负样本,并结合亮度扰动、模糊、噪声、遮挡、多尺度训练等增强方式 ,让训练分布更接近真实部署场景。
第二是模型层面 ,通过更强的主干网络、多尺度特征融合、注意力机制或者更高分辨率特征分支,提升模型在复杂背景和小目标场景下的判别能力。
第三是后处理层面,通过调整置信度阈值、NMS 阈值, 以及结合目标尺寸、位置、长宽比等业务规则过滤低质量预测框;如果是视频场景,还可以利用多帧时序一致性进一步降低误检。
5、请解释均匀量化和非均匀量化的区别,它们各自的优缺点和适用场景是什么?另外,在模型量化部署时,激活函数到底要不要量化,应该怎么理解?
答:量化的本质是把原来的浮点表示映射成低比特整数表示 ,比如把 FP32 压缩到 INT8 ,从而减少模型存储和访存开销 ,并提高推理速度。均匀量化和非均匀量化的核心区别在于量化间隔是否固定。均匀量化使用固定步长 对整个数值范围进行离散化,实现简单、硬件友好,因此在工程部署中最常见。非均匀量化的量化间隔会根据数据分布调整,在数据密集区域划分更细,在稀疏区域划分更粗,因此在相同比特数下可能更有利于降低量化误差,但实现更复杂,对硬件支持要求也更高。至于模型的激活函数是否需要量化,这里要区分激活值和激活函数本身。实际量化部署时,通常需要量化的是中间层的激活值 ,因为如果只量化权重而不量化激活 ,整数推理链路就不完整 ,速度和存储收益都会受限。至于激活函数本身,要看具体类型。像 ReLU 这类简单分段函数很容易在量化模型中实现,而像 Sigmoid、Tanh、Softmax 这类更复杂的非线性函数,往往会采用查表、近似实现 ,或者在部分场景下保留浮点计算。因此更准确的说法是:激活值通常需要量化,而激活函数是否完全在整数域实现,要结合算子类型和部署硬件来决定。"
6、在目标检测项目中,如果出现遮挡,模型还能否正常检测?实际工程里通常如何处理遮挡带来的检测性能下降?如果遮挡发生在成像设备端,比如镜头被遮挡、污损、雨滴附着,又该怎么处理?
答:第一种是目标在场景中被部分遮挡 ,比如行人或车辆被其他物体挡住;第二种是成像设备本身被遮挡,比如镜头被污损、水滴附着或者异物遮挡。这两种情况处理方式不一样。如果是目标被部分遮挡,目标检测通常还是可以做的,只是性能会下降。因为现代检测模型并不完全依赖目标的完整轮廓,而是会结合局部特征 、上下文信息和多尺度特征 进行判断。第一,数据层面增加遮挡样本 ,并通过 Cutout、Random Erasing、Mosaic 等增强方式模拟遮挡,提高模型对部分缺失信息的鲁棒性;第二,模型层面加强多尺度特征融合和上下文建模 ,提升对局部可见目标的识别能力;第三,如果是视频场景,还可以结合多帧 信息和目标跟踪,在短时遮挡时利用时序连续性进行补偿。
如果是设备本身被遮挡,那要看遮挡程度。轻度遮挡或轻度污损时,通常还能做检测,如果是严重遮挡,导致有效图像信息已经大面积缺失,那么单靠目标检测模型通常无法可靠解决。