自己保存的源码阅读笔记哈

  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的更多相关文章

  1. faster rcnn源码阅读笔记3

  2. faster rcnn源码阅读笔记2

  3. faster rcnn 源码学习-------数据读入及RoIDataLayer相关模块解读

    参考博客:::https://www.cnblogs.com/Dzhen/p/6845852.html 非常全面的解读参考:::https://blog.csdn.net/DaVinciL/artic ...

  4. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  5. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  6. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  7. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  8. 源码阅读笔记 - 1 MSVC2015中的std::sort

    大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...

  9. Three.js源码阅读笔记-5

    Core::Ray 该类用来表示空间中的“射线”,主要用来进行碰撞检测. THREE.Ray = function ( origin, direction ) { this.origin = ( or ...

随机推荐

  1. IC卡触点释放时序

    IC卡触点释放时序过程如下: 要点: 终端必须通过把RST置为低电平状态来启动释放时序: 在置RST为低电平之后VCC断电之前,终端必须将CLK和IO设定为低电平状态: 在置RST.CLK和IO为低电 ...

  2. Cortex-M3的一些概念

    [工作模式] 线程模式(Thread mode):处理器复位或异常退出时为此模式.此模式下的代码可以是特权代码也可以是用户代码,通过CONTROL[0]控制.处理模式(Handler mode):出现 ...

  3. maven项目pom.xml第一行报错

    maven项目pom.xml第一行报错 这是第一行:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= ...

  4. Parsing Natural Scenes and Natural Language with Recursive Neural Networks-paper

    Parsing Natural Scenes and Natural Language with Recursive Neural Networks作者信息: Richard Socher richa ...

  5. 如何使用Nunit进行测试(Visual Studio 2017 comminity)

    一.环境 操作系统:Windows 版本 10.0.15063 64位 集成环境:Visual Studio 2017 comminity(此后简称vs2017) 编程语言:C# 目标框架:.NET ...

  6. 学习笔记TF043:TF.Learn 机器学习Estimator、DataFrame、监督器Monitors

    线性.逻辑回归.input_fn()建立简单两个特征列数据,用特证列API建立特征列.特征列传入LinearClassifier建立逻辑回归分类器,fit().evaluate()函数,get_var ...

  7. url集合

    restful方面 Java后台框架篇--Spring与Restful风格API接口开发 https://blog.csdn.net/hello_worldee/article/details/781 ...

  8. python中的is和==

    is和== Python中的对象包含三要素:id.type.value id方法的返回值就是对象的内存地址其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is 判断的是a对 ...

  9. 单源最短路径Dijkstra算法,多源最短路径Floyd算法

    1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...

  10. super超类继承特点小结

    super超类继承特点小结: 1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象: 2. super类的初始化函 ...