在本文中,我们提出了FCHD-全卷积人头检测器,它是一种端到端的可训练头部检测模型,在非常适度的GPU上以5 fps和0.70的平均精度(AP)运行。最近的头部检测技术已经避免使用锚作为检测的起始点,尤其是在检测必须在野外发生的情况下。原因是在对象大小较小的情况下基于锚的技术的性能较差。我们认为,通过精心设计的锚点可以获得良好的AP,其中锚点设计选择是基于隐藏层的感知场大小来进行的。我们的贡献是两倍。 1)一种简单的完全卷积锚定模型,它是端到端可训练的并且具有非常低的推理时间。 2)精心选择的锚尺寸,在获得良好的平均精度方面起着关键作用。我们的模型获得了与BRAINWASH等具有挑战性的头部检测数据集的许多其他基线相当的结果。除了准确性之外,我们的模型在所有基线中具有最少的运行时间以及适度的硬件要求,这使其适用于监视应用中的边缘部署。代码在https://github.com/aditya-vora/FCHD-全卷积头检测器上开源。
人体头部检测是计算机视觉中的一个重要问题,因为它在监视领域具有重要的应用价值。监视视频中的人群计数可被视为头部检测的最重要应用之一。先前已经提出了几种用于人群计数的算法,这些算法在非常具有挑战性的数据集上取得了相当好的结果[1],[2],[3]。人群计数的一种非常常见的方法是训练回归模型以基于输入图像预测密度图。然而,这些基于密度图的技术具有若干缺点。 1)通过以像素为单位取整个密度图的总和来预测最终人群数。在执行此操作时,它不会考虑密度映射中计数贡献来自何处的位置。结果,预测中出现的误报将导致最终人群计数,这将导致错误的结果。 2)密度图的精度对输入图像分辨率敏感,当密度图分辨率较低时,可获得更好的结果[4]。另一种可以解决人群计数问题的方法是人物检测方法,我们可以将输入图像直接输入到预先训练的模型,如Faster-RCNN [5],并计算“人类”中的边界框数量为了得到最后的人群数量。然而,由于Faster-RCNN在高度遮挡的场景下的表现是一个众所周知的问题,最终人群数量的准确性是值得怀疑的,因为对于大多数拥挤的场景,人类将被遮挡。此外,像Faster-RCNN这样的模型具有非常大的计算和内存要求,这使得嵌入式设备无法实现[6]。因此,部署此类模型实际上是不可行的,尤其是在“基于边缘设备的应用程序”比基于云的应用程序更优选的监视应用程序中。总结一下,两种方法的优缺点如下:1)基于密度图的回归技术具有以下优点:它们能够对高度遮挡的场景进行建模,但是,它们容易出现高误报率并且对输入敏感图像分辨率。 2)针对人体检测的基于检测的方法具有较少的误报,但是它们在被遮挡的情况下表现不佳,并且它们具有非常大的计算和存储要求。因此,考虑到上述技术的所有优点和缺点,需要一种更稳健的人群计数方法。
在本文中,我们尝试通过头部检测方法结合人群计数方法的优点。具体地说,我们使用检测方法而不是回归方法在场景中对头部进行建模,这将有助于消除先前两种方法的缺点,即在遮挡场景下更少的误报和更好的性能(因为头部是最明显的参与一个场景)。此外,我们的模型是完全卷积的,这使得它在推理期间具有更轻的运行时间。这是因为,完全连接的层理想地消耗大部分内存,以及[7]中观察到的推理时间。这使我们的模型适合在嵌入式设备上运行,这对于监控应用来说是非常需要的。与以前的方法[8],[9]不同,我们提出了一种基于锚点的完全卷积,以及用于头部检测的端到端可训练模型。我们的模型基于Faster-RCNN [5],然而,与Faster-RCNN(区域提议网络+分类)中的两级流水线不同,我们有一个可以直接执行头部检测的单级流水线。此外,与随机选择的锚定尺度不同,我们根据网络的有效感受野大小仔细选择锚点[10]。如我们的消融实验所示,这在最终平均精度方面提供了显着的性能提升。我们的贡献如下:
下面解释先前解决人群计数和头部检测的尝试的简要回顾。
人群计数方法主要基于基于回归的技术,其中过去已经提出了几种深度学习和基于特征工程的技术[11],[12],[13],[14]。陈等 [1]提出了一种基于回归的技术,其中从视频中的运动分割区域提取手工制作的边缘和纹理等特征。在特征提取之后,为了将提取的特征映射到实际人群计数,训练线性回归模型。然而,该技术中使用的特征对分割区域高度敏感,使用回归模型学习的映射将随着不同的相机位置而变化。由于这个原因,这种技术无法推广到看不见的场景。张等人 [3]试图使用深度学习方法来解决这个问题,他们训练CNN以预测密度图以及人群数量。他们通过数据驱动的方法消除了先前人群统计技术面临的泛化的弊端。然而,该方法需要透视图以便标准化图像中的头部的比例。由于在大多数实际情况下,透视图不易获得,这限制了其适用性。这个问题是用多列架构解决的[2]。在该体系结构中,使用具有3列的CNN,并且卷积内核大小以这样的方式固定,使得它们能够对各种规模的头进行建模。这有助于摆脱透视标准化图。这使得算法更适合于实际场景。但是,由于它预测了密度图,因此它具有以下缺点,如上一节所述。
许多先前用于人群计数的头部检测方法已经发布,其结合了头部检测方法中所有先前技术的积极点[15]。 [16]提出了一种用于人群计数的头部检测方法,其中使用最先进的增强积分特征级联来训练探测器。但是,由于手工制作的功能的使用,它的性能会在高场景和规模变化下严重受到影响。 Vu等人[9]提出了一种头部检测技术,其中两个CNN模型用于执行头部检测,第一个模型用于直接从图像预测头部的尺度和位置。而第二个模型用于建模对象之间的成对关系。还提出了几种免提方法[8]。在该方法中,使用回归模块从CNN编码器产生头部检测。该回归通常由LSTM组成,因此可以进行可变长度输出预测。
像[17],[18],[19],[20]这样的深层体系结构能够学习“广义特征”,这对于各种任务都很有用。我们首先利用其中一个已经存在的预训练模型VGG16 [19]作为我们建筑的基础模型。我们删除了conv5层之后的最后一层,并使用剩余的权重作为我们新培训的起点。该体系结构如图1所示。增加了3个新的卷积层:(1)第一个卷积层与任何其他卷积层一样,其目的是编码从前一层获得的信息。 (2)第二个卷积层是负责预测定位坐标的回归头。 (3)第三卷积层是预测头部概率分数的分类头。第二和第三卷积层使用1×1卷积内核实现。回归头的输出经历边界框变换,其中预测被转换为空间坐标。分类和回归头中的内核数量取决于每个像素位置(N)处的锚点数量,如图1所示。
锚是一组预定义的边界框,在对象识别系统中预测尺度和位移[5]。这些锚首先在Faster-RCNN中引入。然而,与Faster-RCNN不同,它在每个像素位置使用9个锚点,长宽比为0.5,1和2,锚点大小为128×128,256×256和512×512,我们使用仅有一个宽高比的锚点,即1: 1和2尺寸,即32⇥32和64⇥64.所选锚的纵横比是方形的,因为它将与头的纵横比相匹配。
基于**“有效感受野**”而不是“理论感受野”来选择锚定尺度。正如[10]中所指出的,CNN中的一个单元有两种类型的感受野,一种是理论上的感受野,另一种是有效的感受野。并非理论感受野的所有像素都对最终输出有贡献。与感受野的外部像素相比,只有少数中心像素对最终输出具有更大的影响。该中心区域被称为有效的感受野。在VGG16的conv5层中,理论感受野大小为228像素。注意到这个感受野,我们更喜欢第2和第4尺度的锚,它们分别导致锚尺寸为32⇥32和64⇥64。锚定大小计算为f吃步幅⇥纵横比⇥锚定比例,其中conv5层的专长跨度为16.由于大小尺寸大约按比例缩小理论感受野的3.5倍,因此它有很好的机会匹配有效感受野。选择尺寸为2和4的锚尺的另一个直观原因可以从图2中给出。转折层的感受野尺寸以红色显示,锚尺8,16,32以更快的速度显示为RCNN以绿色显示(仅适用于一个纵横比),并且锚定比例由我们使用,即2,4显示为蓝色。更快 - RCNN处理主要定位场景中的大型对象,因此大型锚定尺度将是网络进行预测的良好起点。然而,在我们的场景中,图像中的头部通常非常小,因此选择大的锚定尺度没有意义,因为在这种情况下,网络必须预测非常大的尺度和移位以进行精确定位。因此,通过确保锚定尺度较小,我们确保网络具有从预定义的锚定位置精确定位头部的良好概率。这可以从图2中看出。设计锚定尺度被证明是获得良好平均精度的最重要步骤,这将在我们的实验中看到。
我们的模型是根据BRAINWASH数据集[8] 2的10461训练图像进行训练的。每张图片的大小为640⇥480。每个图像都经过预处理,其中随着图像的平均减法和归一化,它也经历缩放。如果尺寸超过600像素,则图像的较小边缩放到600像素。我们在每个时期之后使用包含493个图像的相同数据集的验证分割来验证模型。
方法:使用我们设计的锚定标度集,我们在原始图像上生成一组预定义的锚点。由于在conv5层中的每个像素移位将在输入层中具有16像素移位(因为4个合并层),因此定义在16的步幅。我们选择两个尺寸为32⇥32和64⇥64的锚点/像素。图像的输入分辨率为640×480,因此在conv5层获得的特征图的大小为40⇥30。因此,对于每个图像,我们获得2400锚(40⇥30⇥2)。对于每个锚点,网络将以比例的形式预测4个回归坐标,并且移动锚点需要经历以准确地定位头部,并且2个softmax输出用于头部检测得分。使用1⇥1卷积层可以自然地实现该功能从图1中的回归和分类头可以看出这一点。我们不认为锚点离开图像的边界进行训练。为了将二进制标签分配给锚点进行训练,我们遵循以下两种策略:(1)具有IoU 0.7且具有基础真值的锚点被标记为正。 (2)具有最大IoU和地面实况的锚被指定为正标签。我们遵循这两种策略,因为在某些情况下,第一种情况可能无法为任何锚点分配正面标签。负标签分配给具有IoU0.3的锚。不满足这两个条件的锚点不在乎,也不包括在训练中。我们在训练期间一次处理单个图像。从具有指定标签的锚点,我们以1:1的比例选择总共32个正负锚。
com.jpg =30x30)
用于训练模型的损失函数是一个多任务损失函数,类似于[5]中训练RPN中定义的函数。它显示在方程式1。
1X⇤1X⇤⇤L({pi},{ti})= N Lcls(pi,pi)+ N pi Lreg(ti,ti)cls i reg i(1)
其中i是所选锚点的索引,其范围将通过32个选定的锚点。 p是i的预测概率
anchor i包含head和p⇤i是地面实况标签,即1或0. ti是预测边界框的参数化坐标(即,scaleandshift),并且ti是地面实况的参数化坐标。参数化的坐标以与[7]中相同的方式定义。 Lcls表示分类损失,而Lreg表示回归损失。 Lcls是在所有锚点上计算的,而Lreg仅在正锚点上计算,并且在方程式中Lreg前面的p⇤i处理。 Lcls是两类(头部与背景)之间的最大损失。而Lreg是[7]中定义的平滑L1损失。两个损失项均由Ncls和Nreg归一化,Ncls和Nreg分别是分类和回归的样本数。
基础模型使用预先训练的VGG16进行初始化,使用ImageNet数据集[21]进行训练。重新训练预训练模型的所有层和新层。使用从标准正态分布中采样的随机权重来初始化新层,其中μ= 0且= 0.01。训练期间的体重衰减为0.0005。我们用SGD微调整个模型。训练的学习率设置为0.001,并且模型训练15个时期,接近160k迭代。在完成8个时期后,我们以0.1的比例衰减学习率。我们的方法是用PyTorch实现的[22]。
[22] A.Paszke,S.Gross,S.Chintala,G.Chanan,E.Yang,Z.DeVito,Z.Lin, A. Desmaison, L. Antiga, and A. Lerer, “Automatic differentiation in pytorch,” 2017.
我们在包含484个图像的BRAINWASH数据集的测试分割上测试我们的模型。在整个实验过程中,以下设置保持不变。锚定标度设置为2和4.执行具有不同锚定标度的消融研究。非最大抑制(NMS)在测试阶段执行,而不是在训练阶段执行。 NMS的阈值设置为0.3。 NMS是一种过滤掉高度重叠检测的后处理技术。在该技术中,如果其中的IoU大于阈值,则任何两个检测被抑制为1。使用以下评估度量,即如果具有基础事实的预测边界框的IoU是0.5,则认为头部被正确检测到[23]。为了量化我们系统的性能,我们使用基线绘制精确回忆曲线。
baseline技术相同,在[8]中考虑进行比较。第一个基线技术是使用AlexNet架构的OverFeat [24]。第二个基线是当前最先进的技术ReInspect [8]。我们更喜欢这些基线,因为它们都是基于最新且具有挑战性的BRAIN-WASH数据集的基准。 ReInspect有3种变体,它们使用各种类型的损失,即Lfix,Lfirst,Lhungarian。我们将我们的技术与所有这些baseline进行比较。
我们将技术的精确回忆曲线与其他基线进行比较。结果显示在图3中。从图中可以看出,通过我们的技术获得的精确回忆优于3个基线,即Overfeat-AlexNet,ReInspect,Lfix和ReInspect,Lfirstk。虽然精确回忆曲线低于第四基线,这是EER中最佳性能模型(等误差率),但当召回受到损害时,我们的模型可以提供最佳性能,即在召回0.65时最佳精度为0.92从精确回忆曲线中观察。我们获得较低召回率的一个原因是图像中出现的许多头部尺寸非常小,网络有时无法检测到因为大的感受野大小为228,如果我们考虑来自先前层的锚点以及检测感受野大小较小的地方。我们的技术与基线的平均精度比较如表I所示。从表中可以看出,我们的模型得到的AP精度为0.70,与三个基线相比更好,但与性能最佳的模型相比。
我们对基线进行时间比较。我们模型的时间基准在两个平台上进行了基准测试。第一个是通用GPU平台,我们使用具有512个CUDA内核的NVidia Quadro M1000M GPU。第二个平台是NVidia Jetson TX2,它有256个CUDA核心。由于Jetson是最适合边缘部署的GPU设备,因此我们也希望在此平台上对时序进行基准测试。计算所有测试图像的推断时间,即484个图像,并使用所有测试图像的推断时间的平均值计算最终定时。时间如表所示。 II。从表中可以看出,我们的模型以5fps运行,比同一平台上的ReInspect快5⇥。此外,我们的模型在Jetson TX2嵌入式平台上以1.6fps运行,而另一个基线模型由于内存要求而无法加载。这是我们模型的一个主要优点,同时精确,它也适用于边缘部署。
为了测量锚固尺寸对最终精度(AP)的影响,我们进行了消融实验,我们训练3种不同锚模型的不同模型,即(1)32⇥32,64⇥64(默认设置) ,(2)64⇥64,128⇥128,(3)128⇥128,256⇥256。所有模型都使用相同的超参数设置进行训练。我们从表中看到。 III当锚尺寸为32⇥32,64⇥64(等于有效感受野)时,我们可以获得最佳性能,这证明了我们在前面部分中提出的要求。
在这项工作中,我们提出了一种基于锚点的完全循环端到端可训练模型,用于检测复杂场景中的磁头。我们的模型在像BRAINWASH这样具有挑战性的头部检测数据集上达到了0.70的平均精度,这与以前的技术相当。除了准确之外,它还具有非常少的运行时间,即Quadro上的5fps和Jetson TX2上的1.6fps。将来,我们计划通过使用来自不同卷积层的各种尺度的锚来扩展这项工作,并结合检测以获得更好的整体精度,尤其是在头部尺寸较小的情况下。