一些基础概念

fine-tune

IoU 指标

Region Proposals算法

  • selective search
  • objectness
  • category-independen object proposals
  • constrained parametric min-cuts
  • multi-scale combinatorial grouping
  • ciresan

R-CNN(2014)

论文Rich feature hierarchies for accurate object detection and semantic segmentation

写在前面

  • 思路
    • 将目标识别应用到目标检测和定位上来
    • 如何定位?如何将目标框选出来?
  • 网络基于 AlexNet

网络结构

关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

主要步骤(4步)

  • 给定一张图片,提取候选区域(作为最终定位框的参考)
    • 使用 selective search 算法生成候选区域
    • 每张图片提取约 2000 个候选区域
  • 将每个候选区域导入到神经网络,得到一个特征向量
    • 基于 AlexNet,但去除掉最后的全连接层
    • 因为 AlexNet 输入尺寸为 227 x 227,因此导入神经网络前将候选区域尺寸变换的到 227 x 227,变换前,在每个区域边缘加 p=16 个像素
    • 得到特征向量长度为 4096
  • 特征向量送入 SVM 分类器,进行分类
    • 将从神经网络导出特征向量导入 SVM 分类器,产生类别分数
    • 设定 IoU 指标阈值(>0.3),解决类别图像部分包括在框中的问题,这个参数十分重要
  • 训练一个线性回归模型,判断目标区域候选框是否完美,修正候选区域框,得到最终的框的位置(参考DPM)

写在后面

  • 候选框会有大量重叠,通过计算 IoU 指标,采用非极大性抑制,以最高分的框为基础,去除掉重叠框
  • 采取迁移学习策略,现在 ImageNet 上预训练,然后去掉预训练好的最后一层全连接层,修改类别数(21类=20目标+1背景),在 PASCAL VOC 数据集上 fine-tune
  • 训练时使用 SGD 算法,初始学习率取 0.001,batch_size 取 128

缺点

  • 训练速度慢(84h):流程不紧凑,分多个步骤,较为繁琐;候选框大量重叠,卷积操作重复执行
  • 训练空间大:中间需要保持候选区域特征,特征文件巨大
  • 测试速度慢(47s)

SPPnet(2015)

论文Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

写在前面

  • 思路
    • CNN都需要固定输入图像的尺寸,如何改进,避免其导致的不必要精度损失
    • 如何解决 R-CNN 对候选区域进行了重复卷积计算问题

网络结构

  • 整体

(1)
关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)
(2)
关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

  • 细节
    关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

主要步骤

  • 图片输入
    • 不需通过区域框剪切,而是直接将整个图送入到卷积层
  • 卷积层
    • 得到的特征(feature map)不直接送入到全连接层,而是交给下面的SSP层处理
  • SPP (spatial pyramid pooling)空间金字塔池化
    • 输入为 feature map 的一块区域(与原图一部分区域是相对应)
    • 包含 1x1, 2x2, 4x4 三个pooling结构(max pooling)
    • 无论选取的 feature map 区域尺寸为多少,最终得到的输出长度都为 (16+4+1) x 256(层数),输出的特征向量导入到下面的全连接层
  • 全连接层
  • 分类或目标检测(跟 R-CNN相同)
    • 导入到 SVM 中进行分类
    • 使用 Bbox reg 生成目标识别框

写在后面

  • 为何一般卷积神经网络需要固定图片大小的输入?

    • 其实,卷积层参数与图片输入大小是无关的,因为仅仅是卷积核在图像上的滑动
    • 全连接层与输入图像大小是相关的 ,因为设置参数数量时需要知道全连接曾输入的神经元数量
  • 通过在卷积层与最后一个全连接层间加入 SPP ,解决了开头提到的两个问题

  • Feature map 中的候选区域与原图中的一块区域有映射关系,可以依据每个卷积层来反推得到
    关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

  • 有关于候选框的细节问题(同 R-CNN 比较)

    • 初始时,都是对待测图片搜索出大约 2000 个候选窗口
    • 输入到卷积神经网络时,R-CNN 是将每个候选框的内容一一输入其中;SPPnet 是将整张图输入其中,在 feature map 步骤时找到每个候选框区域(根据映射关系),提取到固定长度的特征向量。

优点

  • 解决了图片输入尺寸的限制问题
  • 解决了重复卷积的问题,提高了一定运算速度

缺点

  • 训练步骤仍旧属于多步骤
  • 仍然需要训练 SVM 分类器,需要额外训练 Bbox reg 回归器
  • 特征仍然需要很大空间保存

Fast R-CNN

论文Fast R-CNN

写在前面

  • 解决 R-CNN 中训练慢,空间大需求大的问题

  • 网络基于 VGG-16

网络结构

  • 整体

(1)
关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

(2)
关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

  • 细节

(1)关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

(2)
关于目标检测模型 R-CNN 模型简单总结(R-CNN,SPPnet, Fast R-CNN)

主要步骤

  • 图片输入(224 x 224)

  • 神经网络(基于VGG结构,可以有所改变)

    • Conv Layers
      imgConv1poolingConv2poolingConv3Conv4Conv5imgrightarrow Conv1rightarrow pooling rightarrow Conv2rightarrow pooling rightarrow Conv3 rightarrow Conv4rightarrow Conv5 rightarrow

    • ROIPoolingROIPooling 层(SPP的简化版)
      ROIPoolingrightarrow ROIPooling rightarrow
      该层输入为Conv5Conv5的输出特征和大约2000个尺寸不同的regionproposalregion proposal,输出固定大小的 feature map

    • 全连接层
      FC4096FC4096rightarrow FC 4096rightarrow FC 4096 rightarrow

  • 两个并联的全连接层和损失层
    FC21  (class score)softmaxWithLossFC84  (Bbox pridection)smoothL1LossLoss=cls_loss+bbox_lossbegin{aligned}& |rightarrow FC 21 (class score) rightarrow softmaxWithLoss \& |rightarrow FC 84 (Bbox pridection) rightarrow smoothL1Lossend{aligned} \Loss = cls_loss+bbox_loss

写在后面

  • 测试时分类和识别的最后一层损失层与训练时是不同的
    • 对于分类,测试时替换为 softmax ,输入分数,输出类别概率
    • 对于识别,测试时替换为线性回归器,预测 Bounding-box 坐标
  • Fast R-CNN 是将 R-CNN 的许多步骤整合到一块,将分类和回归放到同一个网络中,同时使用 softmax 代替 SVM 分类器
  • 关于损失函数(???
  • 使用 SVD 分解改进全连接层
  • 原始 region proposal 仍旧使用 selective search 算法获得
  • 有关ROI pooling如何实现得到固定大小的 feature map
    • 2000个不同尺寸的原始 region proposal,假设其中一个尺寸为 hxw
    • 将每个尺寸为 h x w 的region proposal 分割成 H x W 的网格(共H*W个网格)
    • 将尺寸为 h x w 的 region proposal 映射到最后一个卷积层(Conv5)
    • ROI pooling 取每个网格的最大值,因此最后输出尺寸为 H x W

优点

  • 训练速度和测试速度(3s)都有所加快
    • ROI Pooling 的使用
    • softmax 代替 SVM 分类器
    • 使用 SVD
  • 训练所需空间较少
    • 将分类和回归统一到一个 CNN 网络中,不需要额外存储特征

缺点

  • 使用 selective search 区域提取耗时(2-3s)

Faster R-CNN

论文

写在前面

  • 摆脱掉使用 selective search 来生成 region proposal
  • 网络基于 VGG-16

网络结构

主要步骤

  • Conv Layers
  • Region Proposal Networks(RPN)
  • ROI Pooling
  • Classification

待续。。。。。。