Faster Rcnn随笔
步骤:
1.build_head()函数: 构建CNN基层网络
图像被缩放16倍
2.build_rpn()函数: 在feature map上生成box的坐标和判断是否有物体
generate_anchors:生成9个坐标框(思想:先定义一个基准框(0,0,16,16),因为经过多层卷积池化之后,
feature map上一点的感受野对应到原始图像就会是一个区域,这里设置的是16,
也就是feature map上一点对应到原图的大小为16x16的区域根据基准框生成一个中心坐标长宽为(
(16,16,7.5,7.5)的框,基本面积16*16 = 256,根据ratios(0.5,1,2),得到3个面积的框[512,256,128]
然后开根号得到3种长[23,16,11]*[8,16,32],再乘以ratios得到宽[12,16,22]*[8,16,32],9组长宽计算出来9个anchor根据公式
x_ctr - 0.5 * (ws - 1),
y_ctr - 0.5 * (hs - 1),
x_ctr + 0.5 * (ws - 1),
y_ctr + 0.5 * (hs - 1)
计算anchors(中心(7.5,7.5))
[[-3.5 2 18.5 13][0 0 15 15][2.5 -3 12.5 18]]
,这3个面积分别生成3种长宽,在给定3种scales(8,16,32),总共生成以下9种
array([[ -83., -39., 100., 56.],
[-175., -87., 192., 104.],
[-359., -183., 376., 200.],
[ -55., -55., 72., 72.],
[-119., -119., 136., 136.],
[-247., -247., 264., 264.],
[ -35., -79., 52., 96.],
[ -79., -167., 96., 184.],
[-167., -343., 184., 360.]])
其中坐标是相对于中心的偏移。
generate_anchors_pre:根据特征图的坐标对应到原图上面去,也就是原图中每隔16个像素会有9个anchors
anchor_shape =[WxHx9, 4]
3.build_proposas()函数: 对box进行判断,挑选合适的box,其中进行iou和nms操作,这里没有训练参数的生成。
① 去除掉超过1000*600这原图的边界的anchor box
② 如果anchor box与ground truth的IoU值最大,标记为正样本,label=1
③ 如果anchor box与ground truth的IoU>0.7,标记为正样本,label=1
④ 如果anchor box与ground truth的IoU<0.3,标记为负样本,label=0
剩下的既不是正样本也不是负样本,不用于最终训练,label=-1
除了对anchor box进行标记外,另一件事情就是计算anchor box与ground truth之间的偏移量
令:ground truth:标定的框也对应一个中心点位置坐标x*,y*和宽高w*,h*
anchor box: 中心点位置坐标x_a,y_a和宽高w_a,h_a
所以,偏移量:
△x=(x*-x_a)/w_a △y=(y*-y_a)/h_a
△w=log(w*/w_a) △h=log(h*/h_a)
通过ground truth box与预测的anchor box之间的差异来进行学习,从而是RPN网络中的权重能够学习到预测box的能力
loss理解:
SmoothL1Loss:
(1)clsscore层:用于分类,输出离散型概率分布:

p由k+1类的全连接层利用softmax计算得出
loss_cls层评估分类损失函数。由真实分类u对应的概率决定:

(2) bbox_prdict层:用于调整候选区域位置,输出bounding box回归的位移,输出4*K维数组t,表示分别属于k类时,应该平移缩放的参数

loss_bbox评估检测框定位的损失函数。比较真实分类对应的预测平移缩放参数和真实平移缩放参数的差别


其中,smooth L1损失函数为:

smooth L1损失函数曲线如下图9所示,作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞

smoothL1损失函数曲线
最后总损失为(两者加权和,如果分类为背景则不考虑定位损失):

规定u=0为背景类(也就是负标签),那么艾弗森括号指数函数[u≥1]表示背景候选区域即负样本不参与回归损失,不需要对候选区域进行回归操作。λ控制分类损失和回归损失的平衡。Fast R-CNN论文中,所有实验λ=1。
Faster R-CNN损失函数
遵循multi-task loss定义,最小化目标函数,FasterR-CNN中对一个图像的函数定义为:

其中:

#4.build_predictions():这里进行最后的类别分类和box框回归之前会有一个rois网络层,该网络会把所有的feature map进行尺寸resize到固定的尺寸,之后进行拉伸。这里有两路输出,一个是box的坐标,另一个是类别的分数。
Faster Rcnn随笔的更多相关文章
- faster r-cnn 在CPU配置下训练自己的数据
因为没有GPU,所以在CPU下训练自己的数据,中间遇到了各种各样的坑,还好没有放弃,特以此文记录此过程. 1.在CPU下配置faster r-cnn,参考博客:http://blog.csdn.net ...
- r-cnn学习系列(三):从r-cnn到faster r-cnn
把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn. RCNN 输入图像,使用selective search来构造 ...
- 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?
Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016 Liliang Zhang & Kaiming He 原文链接 ...
- 如何才能将Faster R-CNN训练起来?
如何才能将Faster R-CNN训练起来? 首先进入 Faster RCNN 的官网啦,即:https://github.com/rbgirshick/py-faster-rcnn#installa ...
- faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat format
faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat ...
- 一个门外汉的理解 ~ Faster R-CNN
首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...
- object detection技术演进:RCNN、Fast RCNN、Faster RCNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- [原创]Faster R-CNN论文翻译
Faster R-CNN论文翻译 Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...
- 新人如何运行Faster RCNN的tensorflow代码
0.目的 刚刚学习faster rcnn目标检测算法,在尝试跑通github上面Xinlei Chen的tensorflow版本的faster rcnn代码时候遇到很多问题(我真是太菜),代码地址如下 ...
随机推荐
- Java语法格式
任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了. 代码都定义在类中,类由class来定义,区分 public class 和 class; 代码严格区分大小 ...
- Python--day27--内置函数isinstance和issubclass方法
- 递归求gcd(a,b)
int gcd(int a,int b) { ) return a; else return gcd(b,a%b); }
- CF1B.Spreadsheets(电子表格) 题解 模拟
作者:zifeiy 标签:模拟 题目出处:Spreadsheets 题目描述 在流行的电子表格系统中(例如,在Excel中),使用如下计算方式来对列号进行计算. 第1列对应A,第2列对应B,--,第2 ...
- python3快捷键
原文:https://blog.csdn.net/pipisorry/article/details/39909057 PyCharm3.0默认快捷键(翻译的) PyCharm Default Key ...
- Vue vue-resource三种请求数据方式pet,post,jsonp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- H3C 单路径网络中环路产生过程(3)
- js基础——正则表达式
1.创建方式: var box = new RegExp('box');//第一个参数字符串 var box = new RegExp('box','ig');//第二个参数可选模式修饰符 等同于 v ...
- Character.digit()的意义
最近在阅读Integet.parseInt()源码时,遇到了Character.digit()这个方法,以前没有遇到过,更没使用过,这里查了资料就记录一下. 官方说法是: java.lang.Char ...
- HDU 6623 Minimal Power of Prime(数学)
传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...