卷积神经网络CNN-目标探测

来源:互联网 发布:广电网络智慧社区 编辑:程序博客网 时间:2024/05/17 22:33

卷积神经网络CNN-目标探测

1. 目标探测介绍

这里写图片描述

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

直接思路:局部识别问题

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

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

  • 利用不同scale的sliding windows来遍历图片的所有位置,缺点是计算量大,需要进行大量的重复。
  • 更有效的方法:直接计算候选区域。

2. 传统方法-DPM

基本思想

提取图像特征,制作出激励模板(可以认为是人工设计一个复杂形状的卷积核),在原始图像滑动计算,得到激励效果图,根据激励分布确定目标位置。

拓展

目标可能会变形,各个部分单独考虑(DPM-Deformable Parts Model)

  • 产生多个模板,整体模板以及不同局部模板;
  • 不同模板同输入图片“卷积”产生特征图;
  • 特征图组合形成融合特征;
  • 对融合特征进行传统分类,回归,得到目标位置。
    这里写图片描述

3. 神经网络分类:R-CNN系列方法

神经网络分类思想:
对多个位置,不同尺寸,用卷积神经网络判断区域内的图片是不是某物。
候选位置(proposal)提出方法: EdgeBox

R-CNN

1.分类器的训练
直接用ImageNet模型

2.Fine-tune分类模型

  • 选择20类进行探测;
  • 对原始分类模型结构进行更改;
  • 最终定位21个目标(20类+其他)

3.特征提取

  • 图片计算候选区域;
  • 候选区域切分图片,变成输入大小;
  • 图区相应高级特性;
    这里写图片描述

4.单独目标探测器训练

  • 每一类单独训练;
  • 每一类训练数据平衡;
  • 每一类binary分类,一般用SVM。

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

  • 每一类单独训练
  • 每一类训练数据回归
  • 每一类BBOX回归

6.测试过程

这里写图片描述

7.评估方法
mAP:mean average precision,平均精度

IoU:

这里写图片描述

8.优缺点

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

  • 为了检测一个目标,对所有候选区域进行计算,含有大量卷积运算,速度慢;

  • SVM训练与CNN断裂,有效信息不能用于优化模型,不是end-to-end;
  • 每一类单独训练,异常繁琐。

Fast R-CNN

  • 共享卷积计算;
  • 完整训练(end-to-end);
  • 多目标一起学习。
    这里写图片描述

1.共享卷积计算

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

2.特征一致化
问题:不同区域特征如何保持一致?
Answer:进行特征一致化-Max-Pooling。
如:100×50则按照4:2的比例进行pooling。

这里写图片描述

3.位置+类别的联合学习

这里写图片描述

Faster R-CNN

?:如何解决候选区域的生成问题?
将神经网络特征增加一组输出RPN(Region Proposal Network)候选区域网络。

  • 直接产生候选区域,无需额外生成;
  • 直接用于后续特征图切割。
    这里写图片描述

1.Fast R-CNN RPN的实现

这里写图片描述

RPN的具体流程如下:
使用一个小网络在最后卷积得到的特征图上进行滑动扫描,这个滑动网络每次与特征图上n×n(论文中n=3)的窗口全连接(图像的有效感受野很大,ZF是171像素,VGG是228像素),然后映射到一个低维向量(256d for ZF / 512d for VGG),最后将这个低维向量送入到两个全连接层,即bbox回归层(reg)和box分类层(cls)。sliding window的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间。

具有k=9(3种尺寸,三种长宽比)个Anchor。

这里写图片描述

  • 三种尺度(面积)1282,2562,5122,三种比例1:1,1:2,2:1,所以每一个位置都有3×3=9个anchor。

这里写图片描述

  • 原图600×1000经CNN卷积后,在CNN最后一层(conv5)得出的是40×60大小的特征图,对应文中说的典型值为2400。若特征图大小为W*H,则需要W*H*K个anchor,本文中需要40*60*9≈2k个。

2.Anchor详解:

  • 如果是VGG conv5作为特征图,3×3区域对应的原始图像区域?
    • 因为VGG有4个pooling,相当于有16倍的扩充。
  • Anchor的平移不变怎么理解?
    • 因为较小的平移在pooling的过程中会被忽略掉。
  • Anchor同外接Proposal区别?
    • 数量:1-2个数量级减少;
    • 性能:更高效;
    • 速度:10倍提升
  • Anchor设计的借鉴意义?
    • 神经网络有能力找到最终量,也有能力找到很多中间量。

比较:

这里写图片描述

4. 神经网络回归:YoLo系列方法

这里写图片描述

YoLo训练

YoLo直接将图片分成7×7网格,每个网格生成:

  • b个Bbox (一般是两个)+4个坐标+1个信心;
  • N个类别分数。
    这里写图片描述

    总共回归目标:7×7×(5b+N)
    候选区域个数:7×7×2(b=2)

SSD训练

这里写图片描述

中间层特征参与最后的位置和种类的计算。

5. 实例目标探测模型和部署

Faster RCNN

fork代码参加:https://github.com/KoalaTree/Faster-RCNN_TF

YoLo

fork代码参加:https://github.com/KoalaTree/YOLO_tensorflow

原创粉丝点击