深度学习:图像检测概述rcnn, fastrcnn, fasterrcnn,yolo,ssd

RCNN,Fast RCNN ,faster Rcnn :https://www.cnblogs.com/dudumiaomiao/p/6560841.html

一文看懂目标检测 rcnn fast rcnn faster rcnn yolo ssd :https://blog.csdn.net/v_JULY_v/article/details/80170182

一、图像综述

一、图像分类 cnn

二、图像-目标检测 rcnn YOLO算法根式实现了快速实时的物体检测

三、图像切割 U型网络粉墨登场 加入了maxpooling的反过程升维采样

四、以图搜图 聚类

五、降噪 和恢复图像 gan 对抗学习

六、图像风格迁移 cycleGan 图像翻译

七、在噪声里生成图片来 依然是GAN,而且是最基础的卷积GAN (DCGAN)就可以给你干出来

计算机视觉:典型的技术路线是:目标分割 ——>目标检测 ——>目标识别 ——>目标跟踪

粗略的理解:

目标分割:像素级的对前景与背景进行分类,将背景剔除;

目标检测:定位目标,确定目标位置及大小;

目标识别:定性目标,确定目标是什么;

目标跟踪:追踪目标运动轨迹。

举个栗子,如:需要对视频中的小明进行跟踪,处理过程将经历如下过程:

(1)首先,采集第一帧视频图像,因为人脸部的肤色偏黄,因此可以通过颜色特征将人脸与背景分割出来(目标分割);

(2)分割出来后的图像有可能不仅仅包含人脸,可能还有部分环境中颜色也偏黄的物体,此时可以通过一定的形状特征将图像中所有的人脸准确找出来,确定其位置及范围(目标检测);

(3)接下来需将图像中的所有人脸与小明的人脸特征进行对比,找到匹配度最好的,从而确定哪个是小明(目标识别);

(4)之后的每一帧就不需要像第一帧那样在全图中对小明进行检测,而是可以根据小明的运动轨迹建立运动模型,通过模型对下一帧小明的位置进行预测,从而提升跟踪的效率(目标跟踪)

图像分类,定位检测,语义分割,示例分割

二、目标检测常见算法:

目前学术和工业界出现的目标检测算法分成3类:
1. 传统的目标检测算法:Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;

2. 候选区域/窗 + 深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如:
R-CNN(Selective Search + CNN + SVM)
SPP-net(ROI Pooling)
Fast R-CNN(Selective Search + CNN + ROI)
Faster R-CNN(RPN + CNN + ROI)
R-FCN等系列方法;

3. 基于深度学习的回归方法:YOLO/SSD/DenseBox 等方法;以及最近出现的结合RNN算法的RRC detection;结合DPM的Deformable CNN等

 

三、传统的目标检测

传统目标检测流程:
1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)
2)特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)
3)分类器分类(主要有SVM、Adaboost等)

1 从图像识别的任务说起

这里有一个图像任务:既要把图中的物体识别出来,又要用方框框出它的位置。

本质任务:图像识别,定位

图像识别(classification):
输入:图片
输出:物体的类别
评估方法:准确率


定位(localization):
输入:图片
输出:方框在图片中的位置(x,y,w,h)
评估方法:检测评价函数 intersection-over-union(关于什么是IOU,请参看七月在线APP题库大题查看深度学习分类下第55题:https://www.julyedu.com/question/big/kp_id/26/ques_id/2138) 

卷积神经网络CNN已经帮我们完成了图像识别(判定是猫还是狗)的任务了,我们只需要添加一些额外的功能来完成定位任务即可。

定位的问题的解决思路有哪些?
思路一:看做回归问题
看做回归问题,我们需要预测出(x,y,w,h)四个参数的值,从而得出方框的位置。


步骤1:
  • 先解决简单问题, 搭一个识别图像的神经网络
  • 在AlexNet VGG GoogleLenet上fine-tuning一下(关于什么是微调fine-tuning,请参看:https://www.julyedu.com/question/big/kp_id/26/ques_id/2137)


 
步骤2:
  • 在上述神经网络的尾部展开(也就说CNN前面保持不变,我们对CNN的结尾处作出改进:加了两个头:“分类头”和“回归头”)
  • 成为classification + regression模式


步骤3:
  • Regression那个部分用欧氏距离损失
  • 使用SGD训练

步骤4:
  • 预测阶段把2个头部拼上
  • 完成不同的功能

这里需要进行两次fine-tuning
第一次在ALexNet上做,第二次将头部改成regression head,前面不变,做一次fine-tuning

Regression的部分加在哪?

有两种处理方法:
  • 加在最后一个卷积层后面(如VGG)
  • 加在最后一个全连接层后面(如R-CNN)

regression太难做了,应想方设法转换为classification问题。
regression的训练参数收敛的时间要长得多,所以上面的网络采取了用classification的网络来计算出网络共同部分的连接权值。

思路二:取图像窗口
  • 还是刚才的classification + regression思路
  • 咱们取不同的大小的“框”
  • 让框出现在不同的位置,得出这个框的判定得分
  • 取得分最高的那个框

左上角的黑框:得分0.5


右上角的黑框:得分0.75


左下角的黑框:得分0.6


右下角的黑框:得分0.8


根据得分的高低,我们选择了右下角的黑框作为目标位置的预测。
注:有的时候也会选择得分最高的两个框,然后取两框的交集作为最终的位置预测。

疑惑:框要取多大?
取不同的框,依次从左上角扫到右下角。非常粗暴啊。

总结一下思路:
对一张图片,用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN,然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。


这方法实在太耗时间了,做个优化。
原来网络是这样的:


优化成这样:把全连接层改为卷积层,这样可以提提速

 

2.2 物体检测(Object Detection)

当图像有很多物体怎么办的?难度可是一下暴增啊。

那任务就变成了:多物体识别+定位多个物体
那把这个任务看做分类问题?


看成分类问题有何不妥?
  • 你需要找很多位置, 给很多个不同大小的框
  • 你还需要对框内的图像分类
  • 当然, 如果你的GPU很强大, 恩, 那加油做吧…

所以,传统目标检测的主要问题是:
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余
2)手工设计的特征对于多样性的变化没有很好的鲁棒性


看做classification, 有没有办法优化下?我可不想试那么多框那么多位置啊! 

 

四、候选区域、窗+深度学习分类

 

图像检测:

R-CNN: https://arxiv.org/abs/1311.2524

Fast R-CNN: https://arxiv.org/abs/1504.08083

Faster R-CNN: https://arxiv.org/abs/1506.01497

Mask R-CNN: https://arxiv.org/abs/1703.06870

一、2014: R-CNN

流程

RCNN算法分为4个步骤  对每一张图片的每个候选区
1-  输入一张图像生成1K~2K个候选区域 selective search 候选区域region proposal 
2-  对每个候选区域大小各自不相同,对每个都候选区域缩放成统一的227*227大小输入到cnn,对每一张图片提出的候选区域,都使用深度网络提取特征 将CNN的fc7层的输出作为特征
3-  特征送入每一类的SVM 分类器,判别是否属于该类 
4-  使用回归器精细修正候选框位置 ,对于SVM分好类的Region Proposal做边框回归,用Bounding box回归值校正原来的建议窗口,生成预测窗口坐标.

生成图像特征的 CNN,预测类别的分类器,收紧边框的回归模型

该论文首次展示出,与更简单的、基于 HOG 特征的其他系统相比, CNN 在 PASCAL VOC 上有非常优越的物体识别表现。

有人想到一个好方法:预先找出图中目标可能出现的位置,即候选区域(Region Proposal)。利用图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。

所以,问题就转变成找出可能含有物体的区域/框(也就是候选区域/框,比如选2000个候选框),这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了(相对比滑动窗口)。

大牛们发明好多选定候选框Region Proposal的方法,比如Selective Search和EdgeBoxes。那提取候选框用到的算法“选择性搜索”到底怎么选出这些候选框的呢?具体可以看一下PAMI2015的“What makes for effective detection proposals” 

2014年,RBG(Ross B. Girshick)使用Region Proposal + CNN代替传统目标检测使用的滑动窗口+手工设计特征,设计了R-CNN框架,使得目标检测取得巨大突破,并开启了基于深度学习目标检测的热潮。

Regions With CNNs (R-CNN) 

R-CNN 的目标是:导入一张图片,通过方框正确识别主要物体在图像的哪个地方。

输入:图像

输出:方框+每个物体的标签

但怎么知道这些方框应该在哪里呢?R-CNN 的处理方式,和我们直觉性的方式很像——在图像中搞出一大堆方框,看看是否有任何一个与某个物体重叠。

三年来,CNN在图像分割领域经历了怎样的技术变革?

生成这些边框、或者说是推荐局域,R-CNN 采用的是一项名为 Selective Search 的流程。在高层级,Selective Search(如上图)通过不同尺寸的窗口来查看图像。对于每一个尺寸,它通过纹理、色彩或密度把相邻像素划为一组,来进行物体识别。

 

 

2、候选区域生成

使用了Selective Search1方法从一张图像生成约2000-3000个候选区域。基本思路如下:
- 使用一种过分割手段,将图像分割成小区域
- 查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域

候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。

合并规则

优先合并以下四种区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的

第三条,保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域。

例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。
不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。

第四条,保证合并后形状规则。

例:左图适于合并,右图不适于合并。
这里写图片描述

上述四条规则只涉及区域的颜色直方图、纹理直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。

  • 40
    点赞
  • 254
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值