一种提升深度多视角行人检测的泛化性能的方法 Bringing Generalization to Deep Multi-View Pedestrian Detection
论文简述
论文提出了一种用于多视角行人检测的深度学习模型,旨在提高模型在不同摄像机数量、不同摄像机配置和新场景下的泛化能力。
总体框架图
输入
$ {N} $ 个校准的RGB摄像头图像,图像尺寸为( 3 , $ {H}{i} $ , $ {W} $),其中 $ {H}{i} $ 和 $ {W} $ 分别代表图像的高度和宽度。
DropView Regularization
- 操作:在训练过程中,对于每批次视角样本,随机选择一个或多个视角进行丢弃,即不使用这些视角图进行训练。
- 作用:迫使模型学习到不依赖于任何单一视角的特征表示,这一操作也可以看作数据增强,模拟了在实际应用中可能遇到的摄像头失效或视角遮挡等情况,从而使模型在面对不完整数据时仍能保持性能。提高了鲁棒性,增强了泛化能力。
特征提取模块(Feature Extraction)
- 操作:使用ResNet18作为特征提取的主干网络,并将最后三层的步长大卷积替换为空洞卷积(dilated convolutions),以获得更高空间分辨率的特征图。
- 输出: $ {N} $ 个摄像头视图的特征,尺寸为( $ {N} $ , $ {C} $ , $ {H}{f} $ , $ {W} $ ),其中 $ {C} $ 是通道数(特征数), $ {H}{f} $ 和 $ {W} $ 是提取的特征图的高度和宽度。
透视变换(Perspective Transformation)
- 对于每个视角的特征图,使用透视变换将其从相机坐标系映射到世界坐标系中的地面平面(鸟瞰图)上。
- 透视变换考虑了相机的内参 $ {K} $ 和外参 $ {[R|t]} $,其中内参包括焦距和主点坐标,外参包括旋转和平移向量。
- 变换过程中,定义一个地面平面,通常假设为 $ {Z=0} $ 的平面,即 $ {W = (X, Y, 0, 1)^T} $ 。每个像素点 $ {(x, y)} $ 从图像坐标系通过以下变换映射到地面平面坐标系:
其中 $ {s} $ 是缩放因子, $ {P} $ 是透视变换矩阵,$ {(X, Y, Z)} $ 是世界坐标系中的点。 - 输出:投影到地面平面上的 $ {N} $ 个特征图,尺寸为 $ {(N, C, H_{g}, W_{g})} $ ,其中 $ {H}{g} $ 和 $ {W} $ 是地面平面网格的高度和宽度。
平均池化(Average Pooling)
- 对所有视图的投影特征图进行平均池化,得到最终的鸟瞰图特征表示 $ {F} $ ,尺寸为 $ {(C, H_{g}, W_{g})} $ 。
- 特点:在多视角检测中,摄像头的物理排列可能会变化,但模型应该能够独立于特定的摄像头排列来检测行人。平均池化操作是排列不变的,这意味着无论摄像头的输入顺序如何,模型的输出都是一致的,从而提高了模型的泛化能力。
占用图预测(Occupancy Map Prediction)
- 使用三层空洞卷积层去预测行人占用概率图,输出尺寸为 $ {(H_{g}, W_{g})} $ 。(参考MVDet)
损失函数设计
- 输入:模型输出的概率占用图 $ {(p)} $ 和真实标注的占用图 $ {(g)} $ 。
- 结合KL散度(KLDiv)和皮尔逊交叉相关系数(CC)作为损失函数,公式如下:
$ {σ(p,g)} $ 是 $ {p,g} $ 的协方差, $ {σ(p)} $ 是 $ {p} $ 的标准差, $ {σ(g)} $ 是 $ {g} $ 的标准差。
后记
- 有意思的是该作者不仅仅使用了MultiViewX和WildTrack这两个普遍的数据集,并且还用GTAV里面的拍照模式采样了一些样本。