卷积神经网络-目标探测-笔记

目标探测介绍:

直接思路:回归问题

利用神经网络进行目标识别,同样的目标变为坐标值

直接思路:局部识别问题

在很多位置尝试识别,能够完成识别的地方就是目标位置

问题:怎样找到这些候选位置?

  不同scale的sliding windows?

    遍历所有位置                 

    候选区域产生

  更有效的方法是什么?

    直接计算候选区域

小结

目标探测任务

转化为回归,分类问题

分类思想目标探测:候选区域产生

传统方法—DPMhttps://blog.csdn.net/qq_14845119/article/details/52625426

基本思想:提取图像特征,制作出激励模版,在原始图像滑动计算,得到激励效果,根据激励分布确定目标位置

拓展:目标可能会变形,各个部分单独考虑

DPM—Deformable Parts Model

  1. 产生多个模版,整体模版以及不同局部模版
  2. 不同模版同输入图片“卷积”产生特征图
  3. 特征图组合形成融合特征
  4. 对融合特征进行传统分类,回归,得到目标位置

优点:

  方法直观简单,运算速度快,适应动物体变形,至2012年,最好方法

缺点:

  性能一般,激励特征人为设计,工作量大,大幅度旋转无法适应,稳定性差

神经网络分类:R-CNN系列方法https://blog.csdn.net/v1_vivian/article/details/78599229

神经网络分类思想:对多个位置,不同尺寸,用卷积神经网络判断区域内图片是不是某物

候选位置(proposal)提出方法:EdgeBox

R-CNN

类别减少

训练过程

  1. 分类器的训练—直接用ImageNet模型
  2. Fine-tune分类模型-选择20类进行探测;对原始分类模型结构更改;
  3. 特征提取

图片计算候选区域;候选区域切分图片,变成输入大小;提取相应高级特征;存储特征(很大容量)

  1. 单独目标探测器训练

    每一类单独训练

    每一类训练数据平衡

    每一类binary分类

  1. 单独目标回归器训练—基于候选区域微调

    每一类单独训练

    每一类训练数据平衡

    每一类BBOX回归

测试过程

  1. 候选区域
  2. 特征计算
  3. 分类,回归
  4. 后续处理

评估方法

  MAP:mean average precision。平均精度

  IoU:https://blog.csdn.net/u014061630/article/details/82818112

总结

优点:

  1. CNN用于目标探测,利用了CNN高效识别能力,大大提高性能
  2. 摆脱人为设计物品模版,方法具有通用性
  3. 分类+回归,有了找到精确位置的可能

缺点:

  1. 为了检测一个目标,所有候选区域计算,大量卷积运算,非常慢
  2. SVM训练与CNN断裂,有效信息不能用于优化模型,not end-to-end
  3. 每一类单独训练,异常繁琐

Fast R-CNN:https://www.jianshu.com/p/fbbb21e1e390

共享卷积计算

  1. 卷积计算保持空间位置
  2. 共同区域的卷积计算只需进行一次
  3. 切割候选区+提取特征图=计算完整特征图+切割对应候选区

特征一致化-Max Pooling

位置+类别 联合学习

怎么解决候选区域的生成问题,也靠神经网络?

神经网络特征增加一组输出

RPN(Region Proposal Network)

候选区域网络

  1. 直接产生候选区域,无需额外生成
  2. 直接用于后续特征图切割

RPN的实现

网络输出的值:

  1. 是不是一个目标?
  2. 覆盖范围的相对位置

k=9(3种尺寸,三种长宽比)个Anchor那么能产生多少个proposal?

特征图size HxW->HWx9 in paper:2400x9

Anchor详解:

  1. 如果是VGG conv5作为特征图,3x3区域对应的原始图像区域?4个pooling,16倍
  2. Anchor的平移不变怎么理解

较小的平移pooling过程忽略

  1. Anchor同外接Proposal区别数量:1-2个数量级减少;性能:更高效;速度10x
  2. Anchor设计的借鉴意义?

神经网络有能力找到最终量,也有能力找到很多中间量。

只用Anchor判断是不是目标,会不会存在大材小用,能够判断更多吗?

       训练

       文章:分步训练,太复杂

       更简单方法:直接联合学习

       一个网络,四个损失函数

       Anchor是不是目标

       Anchor回归候选区域回归

       Fast R-CNN分类

       Fast R-CNN基于候选位置回归

完整训练(end-to-end)

多目标一起学习

faster R-CNN:https://blog.csdn.net/liuxiaoheng1992/article/details/81843363

faster R-CNN由四部分组成:

1)卷积层(conv layers),用于提取图片的特征,输入为整张图片,输出为提取出的特征称为feature maps
2)RPN网络(Region Proposal Network),用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片(因为这里RPN网络和Fast R-CNN共用同一个CNN,所以这里输入也可以认为是featrue maps),输出为多个候选区域,这里的细节会在后面详细介绍。
3)RoI pooling,和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Faste R-CNN中RoI pooling一样。
4)分类和回归,这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。

神经网络回归:YoLo系列方法:https://www.jianshu.com/p/13ec2aa50c12

只用Anchor判断是不是目标,会不会存在大材小用,能够判断更多吗?

YoLo:可以直接找到是什么,在哪里

YoLo训练

图片分成7x7网格

每个网格生成:

  1. b个Bbox 4坐标+1信心
  2. N个类别分数(注意对比Anchor)

总共回归目标:7x7x(5b+N)

候选区域个数(b=2)98个,< Fast R-CNN

损失函数:……

YoLo性能

实时运行

精度稍微下降

定位精度较差

物体小的话有可能识别不出来

SSD:The Single Shot Detector : https://blog.csdn.net/u013989576/article/details/73439202

中间层特征参与位置种类计算

候选区98vs8732

速度21:46(VGG base)

精度66.4:74.3

原文地址:https://www.cnblogs.com/yang901112/p/11877224.html