A-Fast-RCNN算法详解(基于变形/遮挡场景)

算法背景

论文全称:A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection
论文链接:https://arxiv.org/pdf/1704.03414
论文日期:2017.8.11
期刊:CVPR

算法提出的场景:

  1. 遮挡
  2. 变形

目前常用的方法:
data driven,基于大量数据驱动的算法。

存在的问题:
数据集无法涵盖所有的变形与遮挡情况。因为数据集里面这些情况发生的概率太低了,这些类别、遮挡与变形服从长尾分布,算法需要对这些情况学习不变性模型。

算法中心思想:
算法添加了一个对抗性网络,对抗性网络与原始网络联合训练,对抗网络生成原始检测器难以检测的遮挡与变形样本,然后原始网络利用样本进行训练,从而提高检测准确率。

算法介绍

解决问题:
目标检测的目标就是学习一个针对对象视觉模型,然后在图片中将对象定位出来。这就要求模型对于照明、遮挡、变形等情况具有鲁棒性。 目前的大多数算法都是通过增加数据集来提高准确率,COCO数据集就有超过10K个不同场景的汽车样本。

目前算法的局限:
但是这些遮挡与变形的样本数量太少了,难以通过增加数据集包含到所有可能的遮挡与变形情况。通过数据集可知,一些场景下发生遮挡的可能性要更大,例如停车场里面的汽车。一些场景下发生变形的可能性更大,例如动物。但是其他场景下发生遮挡与变形的情况会很少。

目前常用算法:

  • 通过从长尾分布采样来生成逼真图片,但是不够灵活;
  • 生成所有可能的遮挡与变形,并且利用这些样本训练检测器,但是由于变形与遮挡的空间很大,这不是一个可拓展的方法。

算法创新:
不使用所有的样本,只选取一些hard example,训练得到的检测准确率会更好。
基于这一结论,本文提出了一个对抗网络,通过在空间上阻止某些特征映射,或者通过操纵特征响应来创建空间变形。对抗网络的主要思想就是生成难以检测的对抗样本。将样本输入到原始网络中进行训练。

算法对比

  • Fast RCNN通过共享不同候选区域的卷积来提速;
  • Faster-RCNN 与 R-FCN集成了RPN,从而实现完全地端到端;
  • 基于滑窗方法的算法也被提出了,例如YOLO, SSD 与 DenseBox。

目前的算法都在三个方向上进行改进:

  • 改变算法中神经网络的结构;
  • 使用上下文推理;
    • 使用分割作为上下文主要对象检测器的一种方法,并向初始层提供反馈。
    • 使用跳跃网络结构并使用结合上下文推理使用来自多个表示层的功能。
  • 提升数据集质量。

本文算法:
以一个更好的方式级联数据,不是通过找出难检测的数据,==而是设计网络去生成对于Fast RCNN难以检测的样本,即对抗网络。==通过联合训练,提高原始检测网络与生成样本的对抗网络。

也有很多算法用到了对抗网络,然而,这些算法中的实验都是在比目标检测数据集复杂度低的数据上进行的,其中图像生成的结果更差。
本文主要集中于利用对抗网络生成数据,而不是利用对抗网络进行更好的监督。

算法详解

整个神经网络的结构:
在这里插入图片描述

损失函数

为了更目标检测算法更有鲁棒性,本文不是基于寻找更优秀的数据集,或者是在数据集中找到更难检测的样本。而是通过构建一个对抗网络生成原始网络难以检测的样本。针对于本文:就是遮挡与变形的数据。

原始检测器的损失函数:
LF = Lsoftmax(Fc(X), C) + [C /∈ bg] Lbbox(Fl(X), L)
C:对象的真实类别;
L:对象的空间定位;

A fast RCNN中对抗网络的损失函数:
LA = −Lsoftmax(Fc(A(X)), C)
A(X) :对抗网络,会生成新的对抗样本;

当对抗网络生成的样本原始网络易于检测时,对抗网络将会返回一个高的损失值。相反,如果难以检测的话,对抗网络返回一个低的损失值,但是原始检测网络会返回一个高的损失值。

基础网络:Fast RCNN

Fast RCNN包含两个部分:

  • 用于特征提取的卷积神经网络;
  • 一个使用RoI-pooling层的RoI神经网络与一些输出的全连接层。

在这里插入图片描述
最后会输入一个softmax的分类与一个soft-L1的回归。

对抗神经网络

对抗神经网络生成两种类型的特征:

  • 生成遮挡数据,提出了一种对抗空间丢弃神经网络ASDN(Adversarial Spatial Dropout Network)。
  • 生成变形数据,提出了一种对抗空间转换网络ASTN(Adversarial Spatial Transformer Network),通过选择对象的部件。

同时学习这两种对抗神经网络,还可以防止过拟合。

对抗神经网络只会在训练阶段才会使用,而且是在特征空间加入Dropout,对抗神经网络是作用在特征映射上的,而不是输入图片。

Adversarial Spatial Dropout for Occlusion

使用区域特征作为对抗网络的输入,ASDN生成一个mask,用于指出丢弃哪一部分的特征,从而使检测器更难于检测对象。

Dropout

特征X的尺寸为 d × d × c, d是空间维度,c是通道数。
mask M会输出d×d个值,这些值是0或者1。
Mij是第i行j列的mask值。
Xijk就是第i行j列k通道的特征值。
若Mij = 1,则将特征图上的所有通道的值都丢弃掉。即,Xijk = 0, ∀k。

网络结构

在这里插入图片描述
在使用ASDN提升Fast-RCNN之前要经过预训练,使用了一个阶段级的训练方式,首先只训练Fast-RCNN网络10K次,然后再固定原始网络,使用ASDN生成遮挡样本。

训练过程:

  • 使用一个d/3 × d/3的滑窗,丢弃滑框范围内的特征值,生成候选区域的新的特征向量,然后通过分类层计算特征向量的损失。
  • 在所有的滑窗中选取损失最高的滑窗,利用这个滑窗生成单一mask(滑窗区域内的值为1,其余为0)。
  • 对于n个候选区域生成n对训练样本: {(X1, M1), …,(Xn, Mn)}。

ASDN的目的就是生成使原始网络具有高损失值的mask。

交叉熵损失函数:
在这里插入图片描述
采样阈值:
ASDN生成的输出不是一个二值化掩码,而是一个连续的热图。本算法将热图转化为二值化掩码。
本文使用一个重要的采样选出前1/3的像素取值为1,其余的像素为0。从而保证训练期间样本的多样性。更特殊地,选出其中前1/2的像素,然后随机取其中的1/3取值为1,其余的取值为0。

联合训练:
由于将热图转化为了二值化掩码,从而导致无法之间反向传播
本文仅仅计算只导致Fast-RCNN 分类分数有显著下降的二值化掩码。也只使用难检测的样本的masks作为真实框去训练对抗网络。

Adversarial Spatial Transformer Network

ASTN是建立在Spatial Transformer Network基础上的,STN是用于转换特征从而使分类更简单。本文的ASTN正好相反。

STN:

  • 定位网络,估算变形的变量。(旋转角度,平移,缩放)
  • 网格生成器。
  • 采样器。

只需要学习定位网络的参数,STN的目的就是使整个学习的过程不同,从而定位网络能通过反向传播直接优化分类对象。

Adversarial STN:
关注于特征映射旋转。通过旋转特征图,使检测器难以检测对象。
定位网络由3个全连接层组成,前两层通过ImageNet预训练的神经网络的 fc6 与 fc7层初始化。

可以直接使用分类损失反向传播,微调ASTN的定位网络。
在这里插入图片描述
在实验中发现,需限制旋转的角度,限制旋转角度在±10°以内。将通道维度上特征映射分为4块,对于不同的块估算4个不同的选择角度,每个通道有不同特征类型的激活函数。

对抗网络融合

同时训练ASDN与ASTN,这样会增加变换的多样性,从而防止过拟合,检测器也会变得更鲁棒。
在这里插入图片描述

实验

  • 使用PASCAL VOC数据集,使用SGD训练80K训练模型,学习率为0.001,然后使用0.0001的学习率训练60K次,使用 selective search proposals提取候选区域。
  • 使用MS COCO数据集,使用train-val35k集训练,然后使用minival集测试,使用DeepMask proposals提取候选区域。

以不同神经网络作为原始网络,添加对抗网络,进行对比实验:
在这里插入图片描述
在这里插入图片描述
plant 与 bottle对象在加入了对抗网络之后,检测表现更佳。
然而,将这两个转换组合在一起似乎可以提高某些类别的性能,这些类别仅使用遮挡或变形检测性能就会下降。car 与 aeroplane类别在结合之后性能有提高。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/woduitaodong2698/article/details/88715062
今日推荐