Fast Detection Models

Two-stage vs One-stage Detectors

R-CNN系列中的模型都是基于区域的。检测过程分为两个阶段:(1)首先,该模型通过选择搜索或区域提议网络提出一组感兴趣的区域。由于潜在的边界框候选可能是无限的,因此建议的区域稀疏。(2)然后,分类器仅处理区域候选者。

另一种不同的方法是跳过区域提议阶段,并直接在可能位置的密集采样上进行检测。这就是一阶段目标检测算法的工作方式。这是更快,更简单的方法,但是可能会降低性能。

这篇文章中介绍的所有模型都是一级检测器。

YOLO: You Only Look Once

YOLO模型(“你只能看一次” ; 。雷德曼等2016)是在建立一个快速的实时对象检测器的第一个尝试。因为YOLO不会进行区域提议步骤,而仅在有限数量的边界框上进行预测,所以它能够超快地进行推断。

工作流程

  1. 对CNN网络进行图像分类任务的预训练
  2. 将图像分割成 小号× S小号×小号细胞。如果对象的中心落入一个单元格中,则该单元格“负责”检测该对象的存在。每个单元格预测(a) 边界框,(b)置信度得分,以及(c)以边界框中存在对象为条件的对象类别的概率。
    • 边界框的坐标由4个值的元组定义(中心x坐标,中心y坐标,宽度,高度),yXÿwH, 在哪里 XX 和 ÿÿ设置为单元格位置的偏移量。而且,XX, ÿÿ, ww 和 HH 通过图像的宽度和高度进行归一化,因此都在(0,1]之间。
    • 置信度得分表示该单元包含一个对象的可能性:Pr(containing an object) x IoU(pred, truth); 其中Pr=概率,IoU=联合下的相互作用。
    • 如果单元格包含一个对象,则它将预测该对象属于每个类别的概率C一世… KC一世一世=1个ķPr(the object belongs to the class C_i | containing an object)。在此阶段,该模型仅预测每个像元的一组类概率,而与边界框的数量无关,
    • 总共一张图片包含 小号× S× B小号×小号×边界框,每个框对应于4个位置预测,1个置信度得分和对象分类的K个条件概率。一幅图像的总预测值为小号× S× K小号×小号×5+ķ,这是模型最终conv层的张量形状。
  3. 修改预训练的CNN的最后一层以输出大小的预测张量 小号× S× K小号×小号×5+ķ

YOLO工作流程

图1. YOLO模型的工作流程。(图片来源:原纸

网络架构

基本模型与GoogLeNet相似,只是将初始模块替换为1×1和3×3转换层。形状的最终预测小号× S× K小号×小号×5+ķ 由整个转换特征图上的两个完全连接的层产生。

YOLO架构

图2. YOLO的网络架构。

损失函数

损失包括两部分,边界框偏移量预测的定位损失和条件类概率的分类损失。这两部分均计算为平方误差的总和。使用两个比例参数来控制我们要增加多少以增加边界框坐标预测的损失(λ协调λ协调),以及我们要减少多少没有物体的盒子的置信度得分预测损失(λNoobjλNoobj)。权衡背景框造成的损失非常重要,因为大多数边界框都没有实例。在本文中,模型集λ协调5λ协调=5 和 λNoobj0.5λNoobj=0.5

大号位置大号cls大号=λ协调0小号2个01个对象ĴX一世X^一世2个ÿ一世ÿ^一世2个w一世w^一世2个H一世H^一世2个]=0小号2个01个对象Ĵ+λNoobj1个对象ĴCĴC^Ĵ2个+0小号2个Ç ∈ Ç1个对象一世p一世p^一世2个=大号位置+大号cls大号位置=λ协调一世=0小号2个Ĵ=01个一世Ĵ对象[X一世X^一世2个+ÿ一世ÿ^一世2个+w一世w^一世2个+H一世H^一世2个]大号cls=一世=0小号2个Ĵ=01个一世Ĵ对象+λNoobj1个1个一世Ĵ对象C一世ĴC^一世Ĵ2个+一世=0小号2个CC1个一世对象p一世Cp^一世C2个大号=大号位置+大号cls

注意:在原始的YOLO纸中,损失功能使用 C一世C一世 代替 CĴC一世Ĵ作为信心分数。我根据自己的理解进行了更正,因为每个边界框都应具有自己的置信度得分。如果您不同意,请让我。非常感谢。

在哪里,

  • 1个对象一世1个一世对象:指示单元格i是否包含对象的指示器功能。
  • 1个对象Ĵ1个一世Ĵ对象:指示单元i的第j个边界框是否“负责”对象预测(见图3)。
  • CĴC一世Ĵ:单元格i的置信度得分Pr(containing an object) * IoU(pred, truth)
  • C^ĴC^一世Ĵ:预测的置信度得分。
  • CC:所有类的集合。
  • p一世p一世C:单元格i是否包含类对象的条件概率 Ç ∈ ÇCC
  • p^一世p^一世C:预测的条件类别概率。

YOLO负责任的预测器

图3.在第i个单元格的一个位置,该模型提出了B个边界框候选对象,与地面实况重叠度最高的那个是“负责任”预测变量。

如果该网格单元中存在对象,则损失函数只会惩罚分类错误, 1个对象一世11个一世对象=1个。如果该预测变量对地面真值框“负责”,那么它也只会惩罚边界框坐标误差,1个对象Ĵ11个一世Ĵ对象=1个

作为一级对象检测器,YOLO速度很快,但是由于边界框候选的数量有限,YOLO在识别形状不规则的对象或一组小对象方面并不擅长。

SSD:单发MultiBox检测器

单次检测器SSD ; Liu等人,2016)是在使用卷积神经网络的锥体特征层次结构的各种尺寸的物体的有效检测的第一尝试之一。

影像金字塔

SSD使用ImageNet上经过预训练的VGG-16模型作为其基础模型,以提取有用的图像特征。在VGG16的顶部,SSD添加了一些大小逐渐减小的转换功能层。可以将它们视为不同比例的图像的金字塔表示。直观地讲,较早级别的大型细粒度特征图擅长捕获小对象,而小型粗粒度特征图则可以很好地检测大型对象。在SSD中,检测发生在每个金字塔层中,以各种大小的对象为目标。

SSD架构

图4. SSD的模型架构。

工作流程

与YOLO不同,SSD不会将图像分成任意大小的网格,而是预测特征图的每个位置的预定义锚框(在本文中称为“默认框”)的偏移量。每个盒子相对于其对应的单元格都有固定的大小和位置。所有锚点盒都以卷积方式平铺整个要素地图。

不同级别的要素图具有不同的接受域大小。重新缩放不同级别上的锚框,以便一个要素地图仅负责某一特定比例的对象。例如,在图5中,只能在4×4特征图(较高级别)中检测到狗,而只在8×8特征图(较低级别)中捕获猫。

SSD框架

图5. SSD框架。(a)训练数据包含每个对象的图像和地面真相框。(b)在细粒度的特征图(8 x 8)中,长宽比不同的锚点框对应于原始输入的较小区域。(c)在粗粒度特征图(4 x 4)中,锚框覆盖原始输入的较大区域。(图片来源:原纸

锚框的宽度,高度和中心位置均被标准化为(0,1)。在一个位置一世Ĵ 的 -th要素层的大小 × n×ñ, … … m一世=1个ñĴ=1个,除了特殊的比例尺(为什么需要它之外,我们还有与比例尺层和5种不同的盒子长宽比(宽高比)成比例的唯一线性比例尺)(本文为什么没有解释。也许只是一种启发式方法)技巧)(当长宽比为1时)。这样,每个要素单元总共有6个锚点框。

等级指数: 箱子规模: 长宽比: 额外规模: 宽度: 高度: 中心位置: ℓ … Ls=s+s最大限度s− 1ℓ – ř ∈ / 2 / 3 }s=ssℓ 1因此, 当 1时,总共6个盒子。w[R=s[RH[R=s/[RX一世ÿĴ0.50.5ñ等级指数: =1个大号箱子规模: s=s+s最大限度s大号1个1个长宽比: [R{1个2个31个/2个1个/3}额外规模: s=ss+1个 什么时候 [R=1个因此,总共6盒。宽度: w[R=s[R高度: H[R=s/[R中心位置: X一世ÿĴ=一世+0.5Ĵ+0.5ñ

盒子秤

图6.锚框大小如何随图层索引扩大的示例  为了 s0.2 s最大限度0.9大号=6s=0.2s最大限度=0.9。只有长宽比的盒子1[R=1个 被说明。

在每个位置,模型输出4个偏移量, CC 通过应用 × × p3×3×p 转化过滤器(其中 pp 是特征图中每个通道的数量) ķķ锚盒。因此,给定一个大小为1的特征图× n×ñ, 我们需要 ķñC+4 预测过滤器。

损失函数

与YOLO相同,损失函数是定位损失和分类损失的总和。

L =1个ñ大号clsα大号位置大号=1个ñ大号cls+α大号位置

在哪里 ññ 是匹配的边界框的数量,并且 αα 通过交叉验证在两个损失之间平衡权重。

本地化损耗是一个平滑L1损失预测边界框校正和真值之间。坐标校正变换与R-CNN边界框回归中所做的相同。

大号位置大号光滑的1个ŤĴXŤĴÿŤĴwŤĴH=Ĵ∈ ÿ}1个比赛Ĵ大号光滑的1个d一世ŤĴ2个{0.5X2个− 0.5如果 1除此以外GĴXp一世X/p一世wGĴÿp一世ÿ/p一世H=日志GĴw/p一世w=日志GĴH/p一世H大号位置=一世Ĵ{XÿwH}1个一世Ĵ比赛大号1个光滑的d一世ŤĴ2个大号1个光滑的X={0.5X2个如果 |X|<1个|X|0.5除此以外ŤXĴ=GXĴpX一世/pw一世ŤÿĴ=GÿĴpÿ一世/pH一世ŤwĴ=日志GwĴ/pw一世ŤHĴ=日志GHĴ/pH一世

在哪里 1个比赛Ĵ1个一世Ĵ比赛 指示是否 一世一世-带坐标的边界框 p一世Xp一世ÿp一世wp一世HpX一世pÿ一世pw一世pH一世 与匹配 ĴĴ-带坐标的地面真理框 GĴXGĴÿGĴwGĴHGXĴGÿĴGwĴGHĴ 对于任何对象。 d一世∈ ÿ}d一世{XÿwH}是预测的校正项。请参见此内容以了解转换的工作方式。

分类损失是在多个类一个SOFTMAX损失(softmax_cross_entropy_with_logits在tensorflow):

大号cls∈ POS1个ķĴ日志C^ķ一世日志C^0一世,在哪里 C^ķ一世softmax Cķ一世大号cls=一世位置1个一世Ĵķ日志C^一世ķ一世负数日志C^一世0, 在哪里 C^一世ķ=软最大C一世ķ

在哪里 1个ķĴ1个一世Ĵķ 指示是否 一世一世-th边界框和 ĴĴ-th地面真相框与类中的对象匹配 ķķ。 位置位置 是匹配的边界框的集合(ññ 总计项目)和 负数负数是一组负面的例子。SSD使用硬否定挖掘来选择容易分类错误的否定示例来构造此示例负数负数 设置:一旦所有锚定框都按照客观置信度得分排序,则模型会选择训练的最佳候选者,以便neg:pos最多为3:1。

YOLOv2 / YOLO9000

YOLOv2Redmon和Farhadi,2017年)是YOLO的增强版本。YOLO9000建立在YOLOv2的基础上,但是接受了联合数据集的训练,该数据集结合了COCO检测数据集和ImageNet的前9000类。

YOLOv2改进

应用了各种修改以使YOLO预测更准确,更快,包括:

1. BatchNorm帮助:在所有卷积层上添加批处理规范,从而大大改善了收敛性。

2.图像分辨率很重要:用高分辨率图像微调基本模型可以提高检测性能。

3.卷积锚框检测:YOLOv2不是使用整个功能图上具有完全连接的图层来预测边界框位置,而是使用卷积层来预测锚框的位置,就像在更快的R-CNN中一样。空间位置和类别概率的预测是分离的。总体而言,这种变化导致mAP略有下降,但召回率却有所上升。

4.盒子尺寸的K均值聚类:与使用手工选择的锚框大小的R-CNN更快,YOLOv2对训练数据进行k均值聚类,以找到锚框尺寸的良好先验。距离度量标准旨在依赖IoU分数

距离C一世− IoU C一世… kdistXC一世=1个oXC一世一世=1个ķ

在哪里 XX 是地面真相箱的候选人,并且 C一世C一世是质心之一。最佳质心数(锚盒)ķķ可以用弯头法选择。

通过聚类生成的锚定框可提供更好的平均IoU(以固定数量的框为条件)。

5.直接位置预测:YOLOv2以不会偏离中心位置太多的方式制定边界框预测。如果框位置预测可以将框放置在图像的任何部分(例如在区域投标网络中),则模型训练可能会变得不稳定。

给定锚框的大小 pwpHpwpH 在网格单元中,其左上角为 CXCÿCXCÿ,模型会预测偏移量和比例尺, ŤXŤÿŤwŤHŤXŤÿŤwŤH 和相应的预测边界框 bb 有中心 bXbÿbXbÿ 和大小 bwbHbwbH。置信度得分为S形(σσ)的另一个输出 ŤØŤØ

bXbÿbwbHPr 对象σŤX+CXσŤÿ+Cÿ=pwËŤw=pHËŤH⋅ IOU 对象σŤØbX=σŤX+CXbÿ=σŤÿ+Cÿbw=pwËŤwbH=pHËŤH目的ob目的=σŤØ

YOLOv2 bbox位置预测

图7. YOLOv2边界框位置预测。(图片来源:原纸

6.添加细粒度的功能:YOLOv2添加了直通层,以将细粒度的功能从较早的层带到最后的输出层。此直通层的机制类似于ResNet中的身份映射,以从先前的层中提取更高维度的特征。这导致性能提高1%。

7.多尺度训练:为了训练模型对输入不同尺寸的图像具有鲁棒性,每10批次随机采样一个新尺寸的输入尺寸。由于YOLOv2的conv层将输入尺寸降采样32倍,因此新采样的尺寸是32的倍数。

8.轻量级基本模型:为了使预测更快,YOLOv2采用了轻量级基本模型DarkNet-19,该模型具有19个转换层和5个最大合并层。关键是在3×3转换层之间插入平均池和1×1转换过滤器。

YOLO9000:丰富的数据集培训

因为在用于对象检测的图像上绘制边界框要比对图像进行标记进行分类昂贵得多,所以本文提出了一种将小型对象检测数据集与大型ImageNet相结合的方法,从而使模型可以暴露于大量的对象类别。YOLO9000的名称来自ImageNet中排名前9000的类。在联合训练期间,如果输入图像来自分类数据集,则它只会反向传播分类损失。

检测数据集具有更少,更通用的标签,此外,跨多个数据集的标签通常不是互斥的。例如,ImageNet的标签为“波斯猫”,而在COCO中,同一图像将被标记为“猫”。如果没有互斥,则在所有类上应用softmax是没有意义的。

为了有效地将ImageNet标签(1000类,细粒度)与COCO / PASCAL(<100类,细粒度)进行合并,YOLO9000参照WordNet构建了一个分层的树状结构,以便通用标签更靠近根和细粒度的类标签是叶子。这样,“猫”是“波斯猫”的父节点。

词树

图8. WordTree层次结构合并了COCO和ImageNet的标签。蓝色节点是COCO标签,红色节点是ImageNet标签。(图片来源:原纸

为了预测类节点的概率,我们可以遵循从节点到根的路径:

Pr("persian cat" | contain a "physical object") 
= Pr("persian cat" | "cat") 
  Pr("cat" | "animal") 
  Pr("animal" | "physical object") 
  Pr(contain a "physical object")    # confidence score.

请注意,这Pr(contain a "physical object")是置信度分数,是在边界框检测管道中单独预测的。条件概率预测的路径可以在任何步骤停止,具体取决于可用的标签。

视网膜网

所述RetinaNetLin等人,2018)是一阶段密对象检测器。两个关键的构成要素是特征化的图像金字塔焦距损失的使用。

焦点损失

物体检测模型训练的一个问题是不包含物体的背景与容纳感兴趣物体的前景之间的极端不平衡。焦距损失的设计目的是为容易分类错误的硬示例(即带有嘈杂纹理或部分物体的背景)分配更多权重,并为轻度简单的示例(即背景明显为空)赋予更多权重。

从二元分类的正常互熵损失开始,

CE ÿ– y日志− − y日志− CE认证pÿ=ÿ日志p1个ÿ日志1个p

在哪里 ÿ∈ }ÿ{01个} 是基本事实二进制标签,指示边界框是否包含对象,并且 ∈ ]p[01个] 是预测的客观概率(也称为置信度得分)。

为了符号上的方便,

让 pŤ{p− p如果 ÿ1除此以外然后 CE ÿCE pŤ对数pŤ让 pŤ={p如果 ÿ=1个1个p除此以外然后 CE认证pÿ=CE认证pŤ=日志pŤ

易于分类的大型示例 pŤ≫ 0.5pŤ0.5,即何时 pp如果非常接近0(当y = 0时)或1(当y = 1时),则可能会产生不小的幅度的损失。失焦明显增加了一个加权因子pŤγγ≥ 01个pŤγγ0 交叉熵中的每一项,因此当权重较小时 pŤpŤ 很大,因此简化了简单示例的权重。

FL pŤ– pŤγ日志pŤ佛罗里达州pŤ=1个pŤγ日志pŤ

焦点损失

图9.焦点损失较少集中于简单示例,其因子为 pŤγ1个pŤγ。(图片来源:原纸

为了更好地控制加权函数的形状(请参见图10),RetinaNet使用了 αα-焦点损失的平衡变体,其中 α 0.25 γ2α=0.25γ=2个 效果最好。

FL pŤ– α pŤγ日志pŤ佛罗里达州pŤ=α1个pŤγ日志pŤ

词树

图10.焦点损失权重图 α pŤγα1个pŤγ 作为…的函数 pŤpŤ,赋予的不同值 αα 和 γγ

特征图像金字塔

所述featurized图像金字塔Lin等人,2017年)是骨干网RetinaNet。遵循SSD中图像金字塔的相同方法,特征化的图像金字塔为不同比例的对象检测提供了基本的视觉组件。

特征金字塔网络的关键思想如图11所示。基本结构包含一系列金字塔级别,每个金字塔级别对应一个网络阶段。一个阶段包含多个相同大小的卷积层,并且阶段大小按2的比例缩小。一世一世-第阶段 C一世C一世

特征化的图像金字塔

图11.特色图像金字塔模块的图示。(根据FPN论文中的图3进行重绘)

两条路径连接转换层:

  • 自下而上的途径是正常的前馈计算。
  • 自上而下的路径沿相反的方向进行,通过横向连接将粗略但语义上更强的特征映射返回到较大尺寸的先前金字塔层次。
    • 首先,较高级别的特征在空间上被上采样到大2倍。为了进行图像放大,本文使用了最近邻采样。尽管有很多图像放大算法,例如使用deconv,但是采用其他图像缩放方法可能会也可能不会提高RetinaNet的性能。
    • 较大的特征贴图经过1×1转换层以减小通道尺寸。
    • 最后,这两个特征图通过逐元素加法合并。

      横向连接仅在阶段的最后一层发生,表示为{C一世}{C一世},然后继续进行直到生成最细(最大)的合并要素图。该预测是在3×3转换层之后的每个合并的地图中做出的,{P一世}{P一世}

根据消融研究,特征化图像金字塔设计各组成部分的重要性等级如下:1×1横向连接>跨多层检测对象>自上而下的富集>金字塔表示(仅检查最细的一层)。

模型架构

特色金字塔是在ResNet体系结构的基础上构建的。回想一下,ResNet具有5个转换块(=网络阶段/金字塔等级)。最后一层一世一世-金字塔等级, C一世C一世,具有解析度 2个一世2个一世 低于原始输入尺寸。

RetinaNet利用要素金字塔等级 P3P3 至 P7P7

  • P3P3 至 P5P5 从对应的ResNet剩余阶段计算得出 C3C3 至 C5C5。它们通过自上而下和自下而上的途径相连。
  • P6P6 通过位于顶部的3×3步幅2转换获得 C5C5
  • P7P7 在上面应用ReLU和3×3 stride-2转换 P6P6

在ResNet上添加更高的金字塔等级可提高检测大型物体的性能。

与SSD中相同,通过对每个合并的特征图进行预测,可以在所有金字塔级别进行检测。因为预测共享相同的分类器和盒回归,所以它们都形成为具有相同的通道维数d = 256。

每个级别有A = 9个锚定框:

  • 基本尺寸对应于 322个322个 至 5122个5122个 像素在 P3P3 至 P7P7分别。有三种尺寸比例,{2个02个/ 32个/ 3}{2个02个1个/32个2个/3}
  • 对于每种尺寸,都有三个长宽比{1/2,1,2}。

像往常一样,对于每个锚框,模型为每个锚框输出一个类别概率 ķķ在分类子网中分类,并将此锚点框的偏移量回归到框回归子网中最接近的地面真实对象。分类子网采用上面介绍的焦点损耗。

视网膜网

图12. RetinaNet模型架构在ResNet之上使用FPN主干。(图片来源:FPN纸)

YOLOv3

YOLOv3是通过在YOLOv2上应用大量设计技巧而创建的。这些变化的灵感来自物体检测领域的最新进展。

以下是更改列表:

1.置信度得分的逻辑回归:YOLOv3使用logistic回归预测每个边界框的置信度得分,而YOLO和YOLOv2对分类项使用平方误差总和(请参见上面的损失函数)。偏移量预测的线性回归会导致mAP降低。

2.不再需要用于类别预测的softmax:在预测类别置信度时,YOLOv3为每个类别使用多个独立的逻辑分类器,而不是一个softmax层。这非常有帮助,特别是考虑到一个图像可能具有多个标签,并且并非所有标签都保证是互斥的。

3. Darknet + ResNet作为基本模型:就像原始的Dark net体系结构一样,新的Darknet-53仍依赖连续的3×3和1×1转换层,但添加了剩余的块。

4.多尺度预测:受图像金字塔的启发,YOLOv3在基本特征提取器模型之后添加了几个conv层,并在这些conv层之间以三种不同的尺度进行了预测。这样,它必须处理更多总体上具有各种大小的更多边界框候选对象。

5.跳过层级联:YOLOv3还在两个预测层(输出层除外)和较早的细粒度特征图之间添加了跨层连接。该模型首先对粗略特征图进行上采样,然后通过级联将其与先前的特征合并。结合更细粒度的信息,可以更好地检测小物体。

有趣的是,焦点损失对YOLOv3没有帮助,可能是由于使用了 λNoobjλNoobj 和 λ协调λ协调 —它们增加了边界框位置预测的损失,并减少了背景框置信度预测的损失。

总体而言,YOLOv3的性能比SSD更好和更快,比RetinaNet差,但快3.8倍。

YOLOv3性能

图13.各种快速物体检测模型在速度和mAP性能上的比较。(图像来源:聚焦损耗纸,带有来自YOLOv3纸的附加标签。)


引用为:

@article{weng2018detection4,
  title   = "Object Detection Part 4: Fast Detection Models",
  author  = "Weng, Lilian",
  journal = "lilianweng.github.io/lil-log",
  year    = "2018",
  url     = "http://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html"
}

 

标签

发表评论