Image Detection in deep learning

来源:互联网 发布:一扫就出答案的软件 编辑:程序博客网 时间:2024/05/20 06:23

1.R-CNN(Region with cnn)

产生原因:原始的detection问题中,使用滑窗对图片进行处理,对所有的区域选择进行遍历,但是这需要耗费大量的计算能力
在R-CNN中,

  • 首先使用selective search对图像进行处理来给出一定数量的建议区域,预处理到227227大小
  • 对每一个selective search的建议区域使用cnn进行特征提取,cnn网络使用pre-train的结果进行fine-tune得到适合当前实际具体问题的网络
  • 对于n类的detection问题,训练n个二分类SVM,对于一个建议区域,会从n个SVM中得到n个分数,取其中最高的作为当前的区域的类别
  • 进行bounding box regression来对建议区域进行精修

使用的数据集中,会将图像中实际的物体进行框选,同时含有类别标签,这个区域记为ground-truth
定义 IoU(A,B) = |AB|/|AB|

训练流程:

  1. pre-train:使用ILVCR 2012的全部数据进行训练,对于一张图片,输出维度为1000的类别标号
    这里写图片描述
  2. fine-tune: 对于n类的detection问题,首先将pre-train的模型最后一层的1000-way的softmax层改成(n+1)-way(n class + ground)的softmax
    使用的数据:由selective search提供,当该建议区域和所有训练数据中标记出的ground-truth(不论属于哪一个类别)的IoU<0.5时记为一个负样本,否则为正样本
    最后fine-tune出一个二分类的网络,判断当前的输入的建议区域是否含有有意义的信息,即不是背景
    这里写图片描述
  3. 对于每一个类训练一个单独的SVM
    使用的数据:与此类别ground-truth的IoU<0.3的建议区域在fine-tune之后的网络中FC7的输出记为负样本,相关类别的ground-truth在FC7的输出为正样本
  4. 对每个类分别进行bounding box regression训练
    使用conv5的输出作为训练数据,要求使用的数据来源于与相关类别的真值IoU>0.6的建议区域

测试过程

  1. 对于使用的输入图像,使用selective search得到1000-2000个建议区域,缩放或剪裁到固定的大小
  2. 对于每一个类别独立进行,使用fine-tune之后的网络计算输入在FC7和conv5的输出。FC7的输出送到n个SVM中,选择那些在当前类别对应的SVM中取得最大值的样本,使用其conv5的输出来进行bounding box regression精细化边框

缺点

  • 对于每一个建议区域都进行一次特征提取,速度慢
  • 非end-end模型,分阶段训练

2.SPP-Net

crop和warp示意

对样本进行的crop和warp会对图片原本的信息造成一定的损坏
这些操作的目的是为了使得输入的大小一致,对于卷积操作而言,输入的维度没有限制,输出的维度h会随之动态变化,主要的问题来自于卷积操作之后的全连接层要求输入的维度固定

改进1. Spatital Pyramid Pooling

使用空间金字塔池化对尺度不一样的建议区域进行处理,最后得到维度不变的输出,即使输入的图片尺度不一样,使用相对的大小而不是绝对的大小就可以得到维度一样的输出
这里写图片描述
如上图所示,将图片平均分为4*4,2*2,1*1块,分别进行最大(或者其他)池化,则无论输入的图像维度如何,输出都是16+4+1=21

改进2. 全局卷积

对整张图进行一次全局的卷积来提取整张图片的特征,在进行全连接之前,根据卷积的比例关系找到原图中建议区域在新的feature map中的映射位置,对其进行spp再放进FC层,得到的输出输入到SVM得到结果。

缺点:

  • 只对全连接层进行fine-tune
  • 本身属于多尺度的操作,梯度回传难度很大,所以进行回避,之前的参数都不参加finetune

3. Fast R-CNN

特点:基于SPP-Net进一步改进

改进1. RoI Pooling

SPP的单层特例

改进2. Multi-task loss function

将分类的损失和bounding box regression的损失函数进行合并,使得可以只用一步同时完成分类和选框的修改。

缺点:

  • selective search仍然是一个独立的模块

4. Faster R-CNN

特点:在网络中集成区域建议,Fast R-CNN + Region Proposal Network
这里写图片描述

RPN

两层的CNN网络结构:
输入:conv5的输出
* 第一层 33的kernel size, 256个filter
* 第二层的第一个分支11的kernel size 4k的输出 给出K个建议区域的位置
* 第二层的第二个分支11的kernel size 2k的输出 给出K个建议区域是否是一个object的二维分值(object score, non-object score)

K值由两个值尺度scale个长宽比ratio决定,若有m个ratio,n个scale,则K = mn
输入图像的每一个像素都可以是Region的中心,若conv5的输出为WH,则Anchor Box参考框的数目为WHK

原创粉丝点击