Fast R-CNN 简单梳理
来源:互联网 发布:录音频的软件 编辑:程序博客网 时间:2024/05/21 10:32
Fast R-CNN 简单梳理
作者:xg123321123
出处:http://blog.csdn.net/xg123321123/article/details/53067518
声明:版权所有,转载请联系作者并注明出处
Fast R-CNN是R-CNN的改进版。
1 亮点
Fast R-CNN将整张整张图片归一化之后直接送入深度网络,邻接时才加入候选框信息,只有末尾的少数几层才处理每个候选框;相比之下,R-CNN框架中,一张图像内候选框之间大量重叠,需要重复地提取特征,耗时间。
Fast R-CNN把类别判断和位置精修统一到一个深度网络中,不需要额外存储;相比之下,RCNN中独立的分类器和回归器需要大量特征作为训练样本,耗空间。
2 大致流程
- Selective Search在一张图片中得到约2k个候选框(这里称为RoI);
- 使用卷积网络提取图片特征;
- 在conv5出来的feature map上,根据之前RoI框crop出对应的patch(也就是所谓的映射回了原图),再用Rol pooling layer(好像也就是一个单层的SPP layer)来统一到一样的尺度;
- 继续经过两个全连接层得到特征,然后分别经过一个新的全连接层,最后连接上各自的损失函数:
- 一个是分类,使用softmax函数;
- 一个是回归,使用smooth的L1-loss范式。
3 RoI Pooling操作
做图片分类时,一般都是先将图片crop和resize到固定尺寸,然后输入网络,提取特征,最后进行分类。
对于检测来说,这个方法不太适合,因为原始图像如果缩小到224这种分辨率,那么感兴趣对象可能都会变的太小无法辨认。
而Fast R-CNN的数据输入并不对图片大小进行限制,实现这一点的关键所在,就是ROI Pooling层,它可以在任意大小的图片feature map上针对输入的每一个ROI区域提取出固定维度的特征表示,保证后续对每个区域的后续分类能够正常进行。
作用
- 将原图中的RoI定位到feature map中对应的patch;
- 将这个feature map中的patch下采样为大小固定的feature,方便传入后面的全连接层。
RoI Pooling层的测试(forward)
RoI Pooling层将每个候选区域均匀分成M×N块,对每块进行max pooling,这样一来将feature map上大小不一的候选区域转变为了大小统一的特征向量,然后送入下一层。
尽管ROI Pooling可以看做是针对ROI区域的feature map的Pooling操作,但因为不是固定尺寸的输入,因此每次的pooling网格大小得手动计算。
举例来说,某个ROI区域坐标为 (x1,y1,x2,y2) ,那么输入size为 (y2−y1)∗(x2−x1) ;如果pooling后输出的size为
RoI Pooling层的训练(backward)
考虑普通max pooling层:设
其中判决函数
不被选中有两种可能:
对于RoI max Pooling,一个输入节点可能和多个输出节点相连。
设
判决函数
也就是说,代价对于
另外,实际实现时采用的是Max Pooling,具体每个网格中哪个点的值最大,在Forward过程中就已经记录,存储在了argmax_data变量里。
4 Regression操作
ROI Pooling层的横空出世,已经可以完成比较简陋的检测了。
先用Selective Search等proposal提取算法得到一批候选框坐标,然后输入网络对每个候选框包含的对象进行预测。
以上,神经网络仍然仅仅是图片分类的工具,只不过不是整图分类,而是ROI区域的分类。
如果能让神经网络完成回归的操作,那样不仅显得优雅,同时可能也会提升效果。
所以经过大神们的努力,有了回归层:输出为4*K维数组
假设对于类别
而预测值为
这二者理论上越接近越好,这里定义损失函数:
其中
这里
该函数在 (−1,1) 之间为二次函数,而其他区域为线性函数,据说这种形式可以增强模型对异常数据的鲁棒性,函数曲线如下。
注意
这里的回归操作和R-CNN里一样,也是只对特定的候选框(即和Ground Truth的IoU大于特定thresh)进行。
5 classification操作
不再像R-CNN需要通过SVM等分类器来分类,Fast R-CNN使用神经网络来进行分类操作:输出K+1维数组
分类代价由真实分类
本篇博客主要参考自
《Fast RCNN算法详解 》
《RCNN,Fast-RCNN,Faster-RCNN》
《RCNN, Fast-RCNN, Faster-RCNN的一些事》
- Fast R-CNN 简单梳理
- R-CNN 简单梳理
- Faster R-CNN 简单梳理
- R-CNN,Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列,深度学习object detection梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- 深度学习检测方法梳理:R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
- Fast R-CNN
- Fast R-CNN笔记
- Fast R-CNN笔记
- Fast R-CNN
- Fast R-CNN
- 创建Github博客的一些点
- Eclipse如何自动提示js代码
- 一些思考
- SQLite数据库中文乱码处理
- Java 8 Lambda表达式探险
- Fast R-CNN 简单梳理
- 问题统计
- 响应者链的解析
- 双向一对多(多对一)@OneToMany或@ManyToOne的用法
- java.lang.OutOfMemoryError: unable to create new native thread
- CRAFT Objects From Images
- 【NOIP2015】洛谷P2661 信息传递(tarjan)
- 洛谷 P1130 红牌
- js 获取表单数据