R-CNN就是regions with convolutiional networks,,这个算法尝试选出一些区域用来喂入卷积网络,不再需要使用滑动窗口对图片中依次从左到右,从上到下滑动窗口来得到候选框。
选出候选框的方法是: 运行图像分割算法,分割的结果如下图所示:
图像分割会将像素相近的色块划分为一个区域
1. 两步走的目标检测: 先把图片中的物体用滑动窗口进行区域推荐,然后进行目标分类
常见算法 R-CNN, SPP-net, Fast R-CNN, Faster R-CNN
做法: 将找出的候选框区域, 传入神经网络网络进行分类和输出位置的训练。
R-CNN思路:
1. 首先用选择性搜索随机生成n个候选框,
2. 对这n个候选框进行抛弃筛选, 抛弃一些真实物体与候选框IoU<0.5的框
3. 遍历物体,选择分类概率最高的边界框,用这个框和其他框做非极大值抑制,将概率低的框抑制住。
非极大值抑制目的: 就是选出一个候选框分类概率最大的,并抑制其他概率低的候选框。
4. 最终每个物体输出一个框。
2. 端到端的目标检测: 采用一个网络一步到位
常见算法: YOLO算法, SSD算法
做法: 将图片输入到网络,直接输出图片中的物体以及位置。
目标检测的任务:
1.输入: 图片
2.输出: 物体类别和位置坐标
物体位置类型, x,y,w,h型。 x,y表示物体的中心位置, 以及中心点距离物体两边的长宽。
xmin,ymin,xmax,ymax表示物体的左上角和右下角的坐标,左上角坐标为(0,0),
训练网络步骤:
人为标记图片中的物体和物体的位置,之后将图片传入到下面的网络中,进入全连接层,会有两个全连接层,一个训练用于预测出物体类别(使用Softmax函数进行分类),一个训练用输出物体位置(使用均方误差损失函数训练输出位置)
1. 滑动窗口:
对于图片中有多个物体时候,就不能固定个数输出物体的位置值,所以就有了滑动窗口。
滑动窗口: 目标检测的暴力方法是从左到右,从上到下滑动窗口,利用分类识别图片。为了在不同观察距离出检测的不同的目标类型,我们使用不同大小和宽高比的窗口,这样就变成每个子图输出类别及位置
但是设置固定大小的框有的物体刚好框住,有的框不住,如不能用一个横框作为一个高物体的窗口。解决办法是设置多个长宽不同的窗口进行滑动, 假设有k个窗口,每个窗口滑动m次,则总共k*m个图片输入CNN分类器中,我们使用一个分类器识别类 和 边框的先线性回归器
滑动窗口存在的问题:
这种方法类似一种暴力穷举的方式,会消耗大量计算力,并且由于窗口大小固定,可能会造成效果不准确。
R-CNN: (使用候选框)
步骤: (以AlexNet网络为基准)
1. 利用选择性搜索,在一张图片中提取出可能存在的目标候选区域,(如默认找2000个候选区域)
选择性搜索: 将每一个像素作为一组,计算每组纹理,并将两个最接近的组结合起来,
2.为了让每一个候选区域适合AlexNet网络,将所有的候选区域图片转换成227*227大小的图片,通过CNN提取特征向量,最终输出2000*4096维矩阵(2000表示有2000个框,4096表示一个候选框的特征向量)
3. 将2000*4096维特征经过分类器进行(20类别)分类,获得2000*20矩阵
4.对2000*20维矩阵做NMS(非极大值抑制),剔除一些不好的,得到剩下分数高的,结果好的候选框
非极大抑制:
目的: 筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些多余的候选框。
步骤: 迭代过程:
1.对2000个候选区域得分进行筛选,把分类预测准确率低的一些候选框删除, 一般选择数值为0.5(得分小于0.5的框全部删除)
剩余的候选框,假设真实物体个数(图片中真实标记的物体个数)为2个(记作N), 筛选之后的候选框为5个(P),计算N中每个物体位置与P的交并比IOU, 得到P中每个候选框对应IoU最高的N中一个
IoU交并比: 指的是两个方框面积的交集与两个方框面积的并集的比值, 得到的值为IoU交并比。
非极大值抑制: 生成候选框后,可能会对同一个对象生成多个候选框,但是我们只需要一个好的候选框, 所以,非极大值抑制做的就是清理这些候选框,保留适合的候选框。
如图,真实物体有2个, 候选框有5个, 用每个物体实际大小与所有候选框计算交并比(例如计算黑色车实际大小的框与A,B,C,D,E五个候选框的交并比,结果黑色实际物体的框与D框的IoU=0, 再用白色车实际物体大小的框和A,B,C,D,E五个候选框做交并比,得到10个IoU值,保留Iou值比较高的,如计算得,A,C对黑色车的IoU值高,说明A,C是匹配黑色车的框, B,D,E对白色车的IoU值比较高,说明B,D,E是匹配白色车的框,这样,5个候选框都有了对应的匹配物体了,A,C对应黑色车,B,D,E对应白色车),保留IoU值最大的那个。
开始迭代,图中有两个物体,所以需要迭代两轮,
第一轮,对于白色车辆,选择一个候选框概率最大的那个, B框分类准确的概率为0.9, 所以选择B框是最可靠的分类框,之后非极大值抑制会逐一审视剩下的框,剩下的所有框和这个最大的边界框有很高的交并比,说明这个框和B框重叠的很高,输出就会被抑制。所以0.6的框 和0.7的框都和0.9的框交并比很高,所以会被抑制输出。B与D的IoU>0.5, 说明B和D的框接近重合,所以可以删除D候选框。
第二轮,对于黑色车辆,操作与白色相同。
最终输 出结果,理想状态,每一个物体都有一个候选框
SS算法(选择性搜索)得到的物体位置是固定的,但是我们筛选出的位置不一定真的就特别准确,需要A和B进行最后的修正。
5.修正候选框,对候选框做回归微调。
为了让候选框标注更加准确,去修正原来的位置。
回归用于修正筛选后的候选区域,将每一个候选框与对应的真实物体的位置做一个线性回归。
线性回归: 其中A是候选框, G是物体真实的位置, G`是经过回归后得到的候选框,找到一种变换关系F()将候选框进行变换得到新的候选框位置G`, G`的位置更接近与真实位置G。
RCNN评估指标:
一, IoU交并比。
两个区域的面积的交集 除以 两个区域的并集。
交并比的值为0~1之间,越接近1,则重合度越高。
R-CNN总结。
1.输入图片。
2.默认选取2000个候选区域。
3.将得到的候选区域图片进行大小变换,得符合神经网络的维度。
4.经过卷积,得到特征向量,之后进入两个全连接层,一个用于分类,一个用于计算坐标值
R-CNN缺点:
训练阶段多,需要对SVM分类器 和 边框回归器分别进行训练,不能一起训练,
处理速度慢。
占用磁盘空间大, 5000张图像会产生几百G的特征文件
版权声明:本文为CSDN博主「周周丶周周」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53345829/article/details/121453632
暂无评论