深度学习
  • 前言
  • 第一章:经典网络
    • ImageNet Classification with Deep Convolutional Neural Network
    • Very Deep Convolutional Networks for Large-Scale Image Recognition
    • Going Deeper with Convolutions
    • Deep Residual Learning for Image Recognition
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks
    • Squeeze-and-Excitation Networks
    • Densely Connected Convolutional Networks
    • SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE
    • MobileNet v1 and MobileNet v2
    • Xception: Deep Learning with Depthwise Separable Convolutions
    • Aggregated Residual Transformations for Deep Neural Networks
    • ShuffleNet v1 and ShuffleNet v2
    • CondenseNet: An Efficient DenseNet using Learned Group Convolution
    • Neural Architecture Search with Reinforecement Learning
    • Learning Transferable Architectures for Scalable Image Recognition
    • Progressive Neural Architecture Search
    • Regularized Evolution for Image Classifier Architecture Search
    • 实例解析:12306验证码破解
  • 第二章:自然语言处理
    • Recurrent Neural Network based Language Model
    • Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
    • Neural Machine Translation by Jointly Learning to Align and Translate
    • Hierarchical Attention Networks for Document Classification
    • Connectionist Temporal Classification : Labelling Unsegmented Sequence Data with Recurrent Neural Ne
    • About Long Short Term Memory
    • Attention Is All you Need
    • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 第三章:语音识别
    • Speech Recognition with Deep Recurrent Neural Network
  • 第四章:物体检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • R-FCN: Object Detection via Region-based Fully Convolutuional Networks
    • Mask R-CNN
    • You Only Look Once: Unified, Real-Time Object Detection
    • SSD: Single Shot MultiBox Detector
    • YOLO9000: Better, Faster, Stronger
    • Focal Loss for Dense Object Detection
    • YOLOv3: An Incremental Improvement
    • Learning to Segment Every Thing
    • SNIPER: Efficient Multi-Scale Training
  • 第五章:光学字符识别
    • 场景文字检测
      • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
      • Detecting Text in Natural Image with Connectionist Text Proposal Network
      • Scene Text Detection via Holistic, Multi-Channel Prediction
      • Arbitrary-Oriented Scene Text Detection via Rotation Proposals
      • PixelLink: Detecting Scene Text via Instance Segmentation
    • 文字识别
      • Spatial Transform Networks
      • Robust Scene Text Recognition with Automatic Rectification
      • Bidirectional Scene Text Recognition with a Single Decoder
      • multi-task learning for text recognition with joint CTC-attention
    • 端到端文字检测与识别
      • Reading Text in the Wild with Convolutional Neural Networks
      • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
    • 实例解析:字符验证码破解
    • 二维信息识别
      • 基于Seq2Seq的公式识别引擎
      • Show and Tell: A Neural Image Caption Generator
      • Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  • 第六章:语义分割
    • U-Net: Convolutional Networks for Biomedical Image Segmentation
  • 第七章:人脸识别
    • 人脸检测
      • DenseBox: Unifying Landmark Localization with End to End Object Detection
      • UnitBox: An Advanced Object Detection Network
  • 第八章:网络优化
    • Batch Normalization
    • Layer Normalization
    • Weight Normalization
    • Instance Normalization
    • Group Normalization
    • Switchable Normalization
  • 第九章:生成对抗网络
    • Generative Adversarial Nets
  • 其它应用
    • Holistically-Nested Edge Detection
    • Image Style Transfer Using Convolutional Nerual Networks
    • Background Matting: The World is Your Green Screen
  • Tags
  • References
由 GitBook 提供支持
在本页
  • 前言
  • 1. UnitBox详解
  • 1.1 IoU损失的前向计算
  • 1.2 IoU损失的反向计算
  • 1.3 UnitBox网络架构
  • 1.3.1 网络的输入输出
  • 1.3.2 骨干网络
  • 2. 总结

这有帮助吗?

  1. 第七章:人脸识别
  2. 人脸检测

UnitBox: An Advanced Object Detection Network

上一页DenseBox: Unifying Landmark Localization with End to End Object Detection下一页第八章:网络优化

最后更新于4年前

这有帮助吗?

前言

UnitBox使用了和类似的基于图像分割的方法进行人脸检测。在DenseBox中,bounding box的定位使用的是l2损失。l2损失的一个缺点是会使模型在训练过程中更偏向于尺寸更大的物体,因为大尺寸物体的l2损失更容易大于小物体。

为了解决这个问题,UnitBox中使用了IoU损失,顾名思义,IoU损失既是使用Ground Truth和预测bounding box的交并比作为损失函数。

1. UnitBox详解

首先回顾DenseBox中介绍的几个重要的知识点,明白了这些知识点才能理解下面要讲解的UnitBox。

  1. DenseBox网络结构是全卷积网络,输出层是一个m4×n4\frac{m}{4}\times \frac{n}{4}4m​×4n​的Feature Map,是一个image-to-image的任务;

  2. 输出Feature Map的每个像素点(xi,yi)(x_i, y_i)(xi​,yi​)都是可以确定一个检测框的样本,包样本含置信度yyy和该点到bounding box四条边的距离(xt,xb,yt,yb)(x_t,x_b,y_t,y_b)(xt​,xb​,yt​,yb​),如图1所示

图1:UnitBox的Ground Truth

Unitbox的一个最重要的特征是使用IoU损失替代了传统的l2损失,下面我们先从IoU损失入手讲解UnitBox。

1.1 IoU损失的前向计算

前向计算非常简单,如图2中的伪代码所示:

图2:IoU损失前向计算伪代码

注意结合图1中的xxx和x~\tilde{x}x~的定义理解图2中的伪代码,XXX计算的是预测bounding box的面积,X~\tilde{X}X~则是ground truth的bounding box的面积,III是两个区域的交集,UUU是两个区域的并集。

L=−ln(IoU)\mathcal{L} = -ln(IoU)L=−ln(IoU)本质上是对IoU的交叉熵损失函数:那么可以将IoU看做从伯努利分布中的随机采样,并且p(IoU=1)=1p(IoU=1)=1p(IoU=1)=1,于是可以化简成源码中的公式,即

L=−pln(IoU)−(1−p)ln(IoU)=−ln(IoU)\mathcal{L} = -pln(IoU)-(1-p)ln(IoU)=-ln(IoU)L=−pln(IoU)−(1−p)ln(IoU)=−ln(IoU)

1.2 IoU损失的反向计算

这里我们推导一下IoU损失的反向计算公式,以变量xtx_txt​为例:

∂L∂xt=∂∂xt(−ln(IoU))=−1IoU∂∂xt(IoU)=−1IoU∂∂xt(IU)=1IoUI×∂U∂xt−U×∂I∂xtU2=I×∂xt(X+X~−I)−U×∂I∂xtU2IoU=I×(∂xtX−∂∂xtI)−U×∂I∂xtU2IoU=1U∂Xxt−U+IUI∂Ixt\begin{array}{} \frac{\partial \mathcal{L}}{\partial x_t} = \frac{\partial}{\partial x_t}(-ln(IoU)) \\ = -\frac{1}{IoU}\frac{\partial}{\partial x_t}(IoU) \\ = -\frac{1}{IoU}\frac{\partial}{\partial x_t}(\frac{I}{U}) \\ = \frac{1}{IoU}\frac{I\times\frac{\partial U}{\partial x_t} - U\times\frac{\partial I}{\partial x_t}}{U^2}\\ = \frac{I\times\frac{\partial}{x_t}(X+\tilde{X}-I) - U\times\frac{\partial I}{\partial x_t}}{U^2 IoU} \\ = \frac{I\times (\frac{\partial}{x_t}X - \frac{\partial}{\partial x_t}I) - U \times \frac{\partial I}{\partial x_t}}{U^2 IoU} \\ = \frac{1}{U}\frac{\partial X}{x_t} - \frac{U+I}{UI}\frac{\partial I}{x_t} \end{array}∂xt​∂L​=∂xt​∂​(−ln(IoU))=−IoU1​∂xt​∂​(IoU)=−IoU1​∂xt​∂​(UI​)=IoU1​U2I×∂xt​∂U​−U×∂xt​∂I​​=U2IoUI×xt​∂​(X+X~−I)−U×∂xt​∂I​​=U2IoUI×(xt​∂​X−∂xt​∂​I)−U×∂xt​∂I​​=U1​xt​∂X​−UIU+I​xt​∂I​​

其中:

∂Xxt=xl+xr\frac{\partial X}{x_t} = x_l+x_rxt​∂X​=xl​+xr​
∂Ixt={Iw,if xt<x~t(or xb<x~b)0,otherwise\frac{\partial I}{x_t} = \left\{ \begin{array}{} I_w, \quad \text{if } x_t < \tilde{x}_t (\text{or }x_b < \tilde{x}_b) \\ 0, \quad \text{otherwise} \end{array} \right.xt​∂I​={Iw​,if xt​<x~t​(or xb​<x~b​)0,otherwise​

其它三个变量的推导方法类似,这里不再重复。

从这个推导公式中我们可以看出三点信息:

  1. 损失函数和∂Xxt\frac{\partial X}{x_t}xt​∂X​成正比,因此预测的面积越大,损失越多;

  2. 同时损失函数和∂Ixt\frac{\partial I}{x_t}xt​∂I​成反比,因此我们希望交集尽可能的大;

  3. 综合1,2两条我们可以看出当bounding box等于ground truth值时检测效果最好。

因此可以看出优化IoU损失是正向促进物体检测的精度的。

1.3 UnitBox网络架构

UnitBox的网络结构如图3所示,下面分析几个重要的方面

1.3.1 网络的输入输出

输入:由于使用了全卷积结构,在测试时直接输入原始图片即可。在训练时每个batch的图像的尺寸相同即可。

输出:UnitBox的输出标签分成两部分,上半部分椭圆形为置信度热图,具体标签生成方法论文中没有讲,猜测应该是采样类似于DenseBox中的策略。另外一组是bounding box热图,生成策略应该也是类似于DenseBox。

1.3.2 骨干网络

骨干网络是VGG-16,用于计算置信度热图的是stage-4阶段的Feature Map,计算方式是先通过线性插值得到相同尺寸的Feature Map,再通过1×11\times11×1卷积将Feature Map的通道数降到1,此时得到的Feature Map表示预测的置信度热图。网络的另外一个分支用于预测bounding box的热图,Feature Map取自VGG-16的stage-5。通过和上面类似的方法得到和原图尺寸相同的4个预测bounding box热图。并且在后面加入了ReLU将负值置0。

至于为什么两个任务使用不同的stage,论文中给出的解释是IoU损失计算的Bounding box是一个整体,因此需要更大的感受野,由于UnitBox仅添加了两组1×11\times11×1卷积,因此速度要比DenseBox快很多。

2. 总结

UnitBox的提出虽然目的是为了解决人脸检测问题,但是从其算法角度讲也可以扩展到其它类型的检测任务中,但是像Pascal VOC或者是COCO这样的多类别检测任务,目前基于语义分割的方法还需要改进,因为其本身的置信度热图的设计是位于[0,1][0,1][0,1]直接的一个值,暂时是无法进行多分类的。

写这篇文章的目的主要是介绍UnitBox中引入的IoU损失,IoU损失有如下优点

  • IoU损失将位置信息作为一个整体进行训练,而l2损失把它们当做互相独立的四个变量进行训练,这样得到的结果更准确;

  • 无论输入的样本是什么样子,IoU的值均介于[0,1][0,1][0,1],这种天然的归一化的损失使模型具有更强的处理多尺度图像的能力。

图3:UnitBox网络结构

DenseBox
图1:UnitBox的Ground Truth
图2:IoU损失前向计算伪代码
图3:UnitBox网络结构