Deep Learnig(CNN目标探测)

一 目标探测介绍

   先来看下什么是目标探测,下图矩形框(running box)表示的物体都可以作为目标探测的对象。不止矩形框,椭圆形框在某些场合更适合做目标探测,因为它能更好的捕捉对象,并对物体朝向做相应调整,机变性更好。
在这里插入图片描述
   目标探测的任务一般分为单目标探测和多目标探测。目的一是找到目标的位置坐标,二是判定目标类别。
在这里插入图片描述
   下面来看下目标探测的两个直接思路。
   一类思路是把目标探测看作是一个回归问题。直接生成 class score,也就是判断是该类别(物品)的 confidence value,和 box coordinates,也就是检测框的坐标值。整个任务的损失函数其实是位置差和分类差的一个组合。
在这里插入图片描述
   另一类思路是在很多位置上尝试识别,能够完成识别的地方就是目标位置。如下图,我们生成潜在的候选区域(proposal),然后采用分类器逐个判别这些区域内图像是不是目标物体,如果是,可以把候选区域做延展(用 regression),看有没有更合适的候选框。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
   怎样找到这些候选位置?
   一种方法是用不同 scale 的 sliding windows 来遍历所有的位置,这种方法代价太高,另一种更有效的方法是直接计算候选区域。现在有很多算法能够有效的产生候选区域,比较常用的是 EdgeBoxes(在 RCNN 中使用)。
在这里插入图片描述

二 传统方法DMP

1.基本思想

   提取图像特征,制作出激励模板,在原始图像滑动计算,得到激励效果图,然后根据激励分布确定目标位置。如下图人物识别把人为设计的激励模板和 HOG 特征图结合,如果有人,会得到加强的激励,然而同样的,柱子也会得到激励。DPM把物体看成了多个组成部件(比如说人脸的鼻子,嘴巴等),用部件间的关系来描述物体,这个特点非常符合自然界许多物体的非刚性特征。基本思路如下:

  • 产生多个模板,整体模板(root filter)以及不同局部模板(part filter)
  • root filter 包含目标的整体信息,而 part filter 采用高分辨率的细节建模,看的梯度会更加精细
  • 不同模板同输入图片“卷积”产生特征图
  • 特征图组合形成融合特征
  • 对融合特征进行传统分类,回归,得到目标位置
  • 模型在图像特定位置和尺度的得分, 等于 root filter 的得分加上各个 part filter 得分的总和。每个 part filter 的得分等于该 part 在所有空间位置的得分的最大值,而部件在某位置的得分等于 part filter在此位置的得分减去此位置的变形代价(也就是 part 偏离其理想位置的程度)
    在这里插入图片描述

2.DMP优点和缺点

(1)优点:

   比较直观、简单,运算速度快,也可以适应运动物体变形,很好的处理遮挡、非刚性可变和视觉变换问题,到 2012 年前,是最好的方法。

(2)缺点:

   性能一般;
   激励特征人为设计,表达能力有限,工作量大,难以进行迁移学习;
   大幅度旋转无法适应,稳定性差;

三 神经网络分类-RCNN系列方法

1.RCNN算法:

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

(1)分类器训练

   R-CNN 最初提出的时候选择 20 类进行探测,是在 ImageNet 模型的基础上,把 1000 类的分类模型变成能识别 21 类(20类+other)的 Fine-tune 分类模型。
在这里插入图片描述
在这里插入图片描述

(2)特征提取过程

   对图片计算候选区域;对候选区域切分图片,对切分部分进行 resize 变成输入大小;提取相应高级特征;存储特征(大容量,200-300G空间存储图片)。
在这里插入图片描述

(3)单独目标探测器训练

   对每一类进行单独训练,保证每一类训练数据平衡,每一类都是 binary 分类(yes/no)。比如猫的分类器,可能大部分图片没有一个理想的猫,只有一个耳朵,这不算猫,我们要与真值进行比较,看左上右下区域,如果重合(共有区域)比较多,就认为是猫的图片。每一类都有很多的正例反例(1/0)。
在这里插入图片描述

(4)单独目标回归器训练-基于候选区域微调

   同样的,每一类单独训练,保证每一类训练数据平衡,这里是每一类做 BBOX 回归。目的是在知道是不是猫以及位置的偏移后,用回归对位置进行 offset,离真值(ground truth)更近,最终的探测精度会更高。
在这里插入图片描述

(5)测试过程

  • 对每个图像生成 1k-2k 个候选区域;
  • 对每个候选区域,使用深度网络进行特征计算
  • 特征喂给每一类的 svm 分类器,判别是否属于该类分类;同时用回归修正候选框位置
  • 后续处理
    在这里插入图片描述

(6)常用数据集

在这里插入图片描述

(7)评估方法

在这里插入图片描述

(8)结果对比

在这里插入图片描述

(9)优缺点

   优点:

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

   缺陷:

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

2.Fast R-CNN算法

   Fast R-CNN 的三个进步:
     共享卷积计算
     增加 ROI pooling layer
     完整训练(end-to-end)
     用 softmax 代替 svm 分类,用多目标损失函数加入候选框回归,除 region proposal 提取
   外实现了 end-to-end
     多目标一起学习
在这里插入图片描述

(1)共享卷积运算

   Fast R-CNN 在最后一个卷积层后加了一个 ROI pooling layer,卷积计算保持空间位置,共同区域的卷积计算只需进行一次,切割候选区+提取特征图=计算完整特征图+切割对应候选区,把图片的 region proposal 切割出来,resize,提取特征,其实就等同于在原图特征图里找到 region proposal。
在这里插入图片描述

(2)特征一致化

   全连接层要求接的区域形状一致;所以要特征图里区域的一致性处理,也就是做一个 pooling。局部区域100x50 =>按 4:2 pooling 50x100 => 按 2:4 pooling => 25x25 feature => 225 FC
在这里插入图片描述

(3)位置+类别联合学习

   图片 => cnn feature map计算 => proposal应用 => feature map相应区域做 region pooling 得到固定大小的 feature map => classification & regression。用 softmax 代替 svm 分类,使用多任务损失函数(multi-task loss),将候选框回归直接加入到 cnn 网络中训练,除去 region proposal 的提取阶段,这样的训练过程是端到端的(end-to-end)。
在这里插入图片描述

(4)性能对比

在这里插入图片描述

3.Faster R-CNN算法

   解决候选区域生成问题:主要是神经网络特征增加一组输出 RPN(Region Proposal Network)候选区域网络,直接产生候选区域,无需额外生成,本质上是 sliding window,RPN 只需在最后的卷积层上滑动一遍,因为 anchor 机制和候选框回归可以得到多尺度多长宽比多 region proposal直接用于后续特征图切割。
   RPN实现:
      最后的特征图中有很多个 pixel,每个 pixel 和卷积核进行计算,生成 k 个可能的
   prpoposal(实际中 k 往往=9,一个区域可能同时被多个物体占用,所以尽可能把可能分布的形
   状都生成),每个 proposal 有个 score 的计算。如图,左边是 3x3 的卷积网络的特征图,右边
   是 k 个 anchor box(相当于小的候选生成单元)。我们对特征图进行 sliding window 的计算,每
   个 pixel 生成 256 长的向量(向量长度其实是自己设计的,vgg 建议 512-d),这个向量用来生
   成 k 个 proposal 的值,以及对应的 2k score(是/不是目标物体),4k 个 coordinates(上下左右
   坐标)。
在这里插入图片描述
   性能提升:
在这里插入图片描述

四 神经网络回归-YoLo方法

1.算法

   YoLo 将目标探测任务看作目标区域预测和类别预测的回归问题,用单个神经网络直接预测物品边界和类别分数,可以直接找到物体是什么,在哪里。
在这里插入图片描述
把图片分成 SxS 的格子(grid cell),一般是 7x7 的网络,每个网格生成:

B 个 Bbox,4 个 coordinates + 1 个 confidence score
N 个类别分数 Pr(Classi|Object)
与 Anchor 不同的是,这里有 N 个分数,表示属于每一类的分数分别是多少
S=7, B=2, N=20
总共的回归目标: SxSx(5B+N)
​ 2x5+20=30 个参数,49x30=1470 个数值,用来回归
候选区域个数: (B=2) 98 个 << Faster R-CNN
每个小区域生成 2 个候选区,一个小的区域就是一个粗糙的 proposal,对小区域进行大范围的 regression,找到目标
在这里插入图片描述

2.损失函数

在这里插入图片描述

3.性能提升

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值