目标检测概述
为什么基于卷积网络的目标检测模型在预测后要使用非极大值抑制
基于卷积网络的目标检测模型可能会在目标的相邻区域生成多个相互重叠框,每个框的预测结果都是同一个目标,引起同一目标的重复检测。造成这一现象的原因主要有两个,
- 基于卷积网络的目标检测模型是在Feature Map上进行预测的,Feature Map上的每个像素在原图上都对应一块感受野,并由这块感受野经过一层层卷积映射而来。Feature Map上两个像素越相邻,两者在原图上的感受野的重叠部分就越大,在卷积核权重参数分布平均的情况下(卷积核在训练时使用了L2正则化,每个权重参数接近于0,且近似相等),这两块感受野经过相同的卷积运算后映射值相似。如果Feature Map上两个相邻像素中有一个像素经过预测头后,能预测出物体,由于相邻像素是相似的,那么另一个像素经过预测头后有很大可能预测出同一个物体,从而引起同一物体的重复预测。
- 一个样本中的目标相邻区域可能在另一个样本中是作为正样本(目标存在区域)进行训练的,所以就可能导致这个样本的目标相邻区域经过卷积层和预测头后,得到目标信息。进而产生同一目标的重复预测。
为了解决这种重复预测现象,提高检测精度,就需要用到非极大值抑制——在所有重叠框中选择置信度最大的那个框作为最终结果,同时删除与该框IOU大于0.5的其它重叠框。
DETR
- 图片先经过一个卷积骨干网络(ResNet50)提取局部特征,然后利用Transformer的Encoder进一步提取图片上下文信息。这些上下文信息均被输入到Decoder中,作为Key和Value。DETR使用的Decoder也可以视作Transformer的Encoder,因为它的多头注意力机制并没有进行因果掩码处理,所以DETR的Decoder是并行地预测目标框。
- DETR的Decoder的输入是一组可训练的Objects Query,作为第一层多头注意力的Query。DETR的Decoder的输出是一个长度固定的集合,集合中有目标框以及背景框。
- 图片中的目标数量和Decoder的预测数量往往不相等的。假如真实目标数量是3个,Decoder的预测数量固定为100个。那么在训练时,这三个真实目标应该与100个预测框中的哪三个框进行损失值计算呢?DERT是这样解决的:这三个真实目标分别与100个预测框进行组合(每个预测框只能与一个真实目标进行组合),然后计算损失值,这时总共有100*99*98=970200种不同的损失值,选取其中值最小的损失作为梯度下降的优化目标,同时将该最小损失对应的预测框与真实目标绑定,其余未与真实目标组合的预测框则全视作背景框。