faster rcnn源码阅读笔记1
自己保存的源码阅读笔记哈
faster rcnn 的主要识别过程(粗略) (开始填坑了):
一张3通道,1600*1600图像输入中,经过特征提取网络,得到100*100*512的feature map (设定stride = 16,这是坐标计算要用的),基于这个,生成100 * 100 * scale * aspdio 的anchor box,然后,
这个feature map 通过使用两个卷积网络分别回归目标非目标和bbox_dealta,两个,分别是rpn_objectness_predictions_with_background:(score1,socre2),rpn_box_encodings:(dx,dy,log(dh),log(dw))六个,size和anchor box 一一对应。 至此,first stage rpn net work 基本Ok。
然后,进入second stage ,将(dx,dy,log(dh),log(dw)) 和anchor box 结合,得到的proposals 进行非极大值抑制(tf.image.non_max_suppression),并获得N个proposals(N可以设定),然后,使用tf.image.crop_and_resize,将proposals对应的100*100*512的feature map (resnet101,中前block3作为first stage 的feature map,block4作为second stage
的feature map ,因为坐标是normolize归一化的,所以可以在不同size的feature map 上使用)上的对应目标crop and resize 出来进入bbox 的进一步refine和目标的类别分类,firs stage 中只有识别目标非目标,但是目标是什么类别(是人,还是自行车等等)还是在second stage 这里实现的 。至此,inference过程结束,在training 阶段,还有正负样本输入(iou < 0.3,iou >0.7,和between)和loss计算的细节。
在loss 计算阶段:
first stage loss 包含两部分localization_losses、objectness_losses,这时候,就需要计算anchor box 和ground truth bbox 的iou。以iou > 0.7的为正样本,小于0.3的为负样本。得到objectness_losses,并将iou > 0.7的正样本作为match 的,和ground truth bbox 进行做差,计算,rpn_box_encodings:(dx,dy,log(dh),log(dw))对应的ground truth (batch_reg_targets 框回归的目标)
计算loss,最后面得到:
loss_dict = {
'first_stage_localization_loss':
self._first_stage_loc_loss_weight * localization_loss,
'first_stage_objectness_loss':
self._first_stage_obj_loss_weight * objectness_loss,
}
second stage loss 计算和first stage 是一样的,不一样的就是,其分类变为多分类。同样也是设定iou 阈值
loss_dict = {
'second_stage_localization_loss':
(self._second_stage_loc_loss_weight * second_stage_loc_loss),
'second_stage_classification_loss':
(self._second_stage_cls_loss_weight * second_stage_cls_loss),
}
详细见 tensorflow models object detection 源代码:
https://github.com/tensorflow/models/tree/master/research/object_detection
总共对faster rcnn做了三次笔记,第一次






faster rcnn源码阅读笔记1的更多相关文章
- faster rcnn源码阅读笔记3
- faster rcnn源码阅读笔记2
- faster rcnn 源码学习-------数据读入及RoIDataLayer相关模块解读
参考博客:::https://www.cnblogs.com/Dzhen/p/6845852.html 非常全面的解读参考:::https://blog.csdn.net/DaVinciL/artic ...
- CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
- 源码阅读笔记 - 1 MSVC2015中的std::sort
大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...
- Three.js源码阅读笔记-5
Core::Ray 该类用来表示空间中的“射线”,主要用来进行碰撞检测. THREE.Ray = function ( origin, direction ) { this.origin = ( or ...
随机推荐
- Flink实战(1) - Apache Flink安装和示例程序的执行
在Windows上安装 从官方网站下载需要的二进制包 比如我下载的是flink-1.2.0-bin-hadoop2-scala_2.10.tgz,解压后进入bin目录 可以执行bat文件,也可以使用c ...
- 深入理解Java并发synchronized同步化的代码块不是this对象时的操作
本文仅仅是为了说明synchronized关键字同步的是对象不是方法,列子的确有失偏颇. 一.明确一点synchronized同步的是对象不是方法也不是代码块 我有关synchronized同步的是 ...
- 测试那些事儿—postman进阶使用与实战
1.postman进阶使用 1)环境与变量: 备注:全局 和 局部 变量不会影响到变量的调用,区别在于局部变量对于非当前环境不能使用而已. a.当测试存在多个环境时,可以先设置一个环境,然后在此环境下 ...
- XXS level9
(1)查看PHP源代码 <?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword&q ...
- h5 js判断是安卓还是ios设备,跳转到对应的下载地址
/*ios和安卓跳转 js*/$(function(){ var u = navigator.userAgent; var ua = navigator.userAgent.toLowerCase() ...
- configparse模块和hashlib模块
# import configparser # # config = configparser.ConfigParser() #config = {} # config['DEFAULT'] = {' ...
- np金融量化分析
在所有的np中都是已返回值的形式进行修改的,否则不会修改 只是显示内容 形状是三维数据 全0数组 reshape也可以将二维的变成一维的 下标和切片 一维的切片 二维切片 . 列表切片 给一个数组 ...
- terraform 配置github module source
terraform 支持多种module 的source 配置 以下是一个简单的使用github source的demo 测试项目 项目结构 ├── init.tpl ├── main.tf 代码 ...
- uml类图符号
符号及实例参照:http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html https://blog.csdn.net/l_nan/ar ...
- Linux中“零拷贝”
服务器响应一个http请求的步骤 把磁盘文件读入内核缓冲区 从内核缓冲区读到内存 处理(静态资源不需处理) 发送到网卡的内核缓冲区(发送缓存) 网卡发送数据 数据从第一步中的内核缓冲区到第四步的内核缓 ...