深入理解目标检测的深度学习算法的技术细节本文将讨论目标检测的基本方法(穷举搜索、R-CNN、FastR-CNN、FasterR-CNN)并尝试理解每个模型的技术细节。为了让所有经验水平的读者都能理解,本文将不使用任何公式来解释。检测螺母和螺栓-ChrisYates(Unsplash)物体检测的第一步是鸟还是飞机?-图像分类对象检测(或识别)基于图像分类。图像分类是通过上图所示的像素网格将图像分类为一个类类别。物体识别是对图像中的物体进行识别和分类的过程,如下图所示:为了让模型学习图像中物体的类别和位置,目标必须是五维标签(category,x、y、宽度、长度)。目标检测方法的内部工作原理机器密集型(豪华计算)方法:用于目标检测的穷举搜索图像。然后将此图像划分为不同的部分或“区域”,如下图所示:将每个区域视为单独的图像。使用经典图像分类器对每个图像进行分类。最后,将检测到对象的区域的所有图像与预测标签相结合。这种方法的一个问题是对象可能具有不同的纵横比和空间位置,这可能导致在大量区域上进行不必要的昂贵计算。它在计算时间上存在太多瓶颈,无法解决实际问题。1.RegionProposalMethodsandSelectiveSearch最近的一种方法是将问题分解为两个任务:首先检测感兴趣的区域,然后进行图像分类以确定每个对象的类别。第一步通常是使用区域建议方法。这些方法输出可能包含感兴趣对象的边界框。如果在区域提议中正确检测到目标对象,那么分类器也应该检测到它。这就是为什么快速和高响应率对于这些方法非常重要。重要的是,这两种方法不仅速度快,而且响应率高。这两种方法还使用了一种巧妙的架构,其中对象检测和分类任务的图像预处理部分是相同的,这使得它们比简单地连接两种算法更快。选择性搜索是最常用的区域提议方法之一。它的第一步是按如下方式应用图像分割:从图像分割输出中,选择性搜索将按顺序进行:从分割部分创建边界框并将它们添加到区域建议列表中。根据四个相似点:颜色、纹理、大小和形状,将几个相邻的小片段合并成一个更大的片段。返回第一步,直到该部分覆盖整个图像。分层分组现在您了解了选择性搜索的工作原理,让我们看看使用它的一些最常见的对象检测算法。2.第一个目标检测算法:R-CNNRossGirshicketal.提出了一种区域CNN(R-CNN),它允许选择性搜索与CNN结合使用。事实上,对于每个区域提案(例如,本文中的2000),通过CNN的前向传递会产生一个输出向量。该向量将被送入one-vs-all分类器。每个类一个分类器,例如如果图像是狗,则一个分类器设置为label=1,否则为0,如果图像是猫,则另一个分类器设置为label=1,否则为0,依此类推。R-CNN使用的分类算法是SVM。但是如何将区域标记为提案呢?当然,如果region与groundtruth完全匹配,则可以标记为1,如果给定的物体根本不存在,则可以将这个物体标记为0。如果图像中有物体的一部分怎么办?这个区域应该标记为0还是1?为了确保分类器训练的区域是预测图像时实际可以获得的区域(而不仅仅是那些完美匹配的区域),看看UnionofBoxes(IoU)forselectivesearchandgroundtruthprediction.IoU是一种度量,表示为预测框和真实框的重叠区域除以它们的联合区域。它奖励成功的像素检测并惩罚误报,以防止算法选择整个图像。回到R-CNN方法,如果IoU低于给定阈值(0.3),则相应的标签将为0。在所有区域建议上运行分类器后,R-CNN建议使用类来细化边界框特定边界框(bbox)回归器。bbox回归器可以微调边界框的边界位置。例如,如果选择性搜索检测到一只狗但只选择了它的一半,那么意识到狗有四条腿的bbox回归器将确保选择狗的整个身体。还要感谢新的bbox回归预测,我们可以使用非最大抑制(NMS)丢弃重叠的提议。这里的想法是识别和删除同一对象的重叠框。NMS根据分类得分对每个类别的建议进行排序,并计算具有最高概率得分的预测框与所有其他预测框(在同一类别中)的IoU。如果IoU高于给定阈值(例如0.5),它会丢弃建议。然后重复此步骤以获得下一个最佳概率。总之,R-CNN遵循以下步骤:基于选择性搜索创建区域建议(即,对可能包含对象的图像部分进行预测)。将这些区域带入预训练模型,然后使用支持向量机对子图像进行分类。通过预训练模型运行这些区域,然后通过SVM(支持向量机)对子图像进行分类。使用边界框预测运行前向预测以获得更好的边界框精度。在预测过程中使用NMS去除重叠的提议。R-CNN网络然而,R-CNN也有一些问题:该方法仍然需要对所有区域建议进行分类,这可能会导致达到计算瓶颈——无法将其用于实时用例。在选择性搜索阶段没有进行任何学习,这可能导致某些类型的数据集的区域建议不佳。3.小改进:FastR-CNN(FastR-CNN)FastR-CNN,顾名思义,比R-CNN更快。它基于R-CNN,但有两个不同之处:不是向CNN提供每个区域的建议,而是向CNN提供整个图像以生成卷积特征图(使用过滤器将一个向量的像素转换为另一个A向量产生一个卷积特征图)。接下来,识别并有选择地搜索提议的区域,然后使用感兴趣区域池化(RoIpooling)层将其重塑为固定大小,该层可用作全连接层的输入。Fast-RCNN使用更快、更准确的softmax层代替SVM进行区域建议分类。以下是网络的架构:如下图所示,FastR-CNN在训练和测试方面都比R-CNN快很多。然而,由于选择性搜索方法,这种方法仍然存在瓶颈。4.R-CNN能有多快?-FasterR-CNN(更快的R-CNN)虽然FastR-CNN比R-CNN快很多,但它的瓶颈仍然是selectivesearch,因为它会消耗hour。因此,任少卿等人设计了一种更快的R-CNN来解决这个问题,并提出用一个非常小的卷积网络区域提议网络RegionProposalnetwork(RPN)代替选择性搜索来寻找感兴趣的区域。简而言之,RPN是一种直接寻找区域建议的小型网络。一种简单的方法是创建一个输出x_min、y_min、x_max和x_max的深度学习模型,以获得区域建议的边界框(如果我们想要2000个区域,则需要8000个输出)。然而,存在两个基本问题:图像的大小和比例可能会有所不同,因此很难创建能够正确预测原始坐标的模型。预测中存在一些坐标排序约束(x_min
