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

  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. VSCode 常用的快捷键

    R键:点击后热加载,直接查看预览结果 P键: 在虚拟机中显示网格,常用 O 键:切换iOS 和Android Q键 :退出调试 ctr +~  打开 终端

  2. 日常遇错之ModuleNotFoundError: No module named request

    用pycharm写python的时候,import request时,报错:ModuleNotFoundError: No module named request emmmm.解决方法:pip in ...

  3. ES5和ES6中关于import & export的书写方式的区别

    ES6中输出变量的写法 情景1:单个变量 输出 export const less = 'less' 引用 import {less} from '../index.js' 情景2:多个变量 输出: ...

  4. url集合

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

  5. kafka-producer partitioner.class的使用

    partitioner.class的说明   在API客户端中封装好的partition( )方法会为消息选择一个分区编号.为了保证消息负载均衡到每个分区,可以通过使用默认方式或者 手动配置这个参数的 ...

  6. html笔记汇总

    <html lang="en-us"> HTML标签的lang属性(language)指定当前页面所使用的自然语言,如zh.zh-cn.zh-tw.zh-hk.en.e ...

  7. windows server 修改远程桌面连接端口号

    1. [运行]输入 regedit 2.  在注册表编辑器中找到以下PortNamber键,改为要使用的远程端口,如10000. HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...

  8. 剑指offer 2.字符串 替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public class Re ...

  9. htm5-websocket实现数据查询应用

    htm5-websocket实现数据查询应用   在之前的文章讲述了使用Websocket调用远程方式的功能,在这基础我们可以简单地使用WebSocket进行数据处理方面的应用;只需要在方法执行相关的 ...

  10. vscode 调试 TypeScript

    安装 typescript 依赖 npm install typescript --save-dev 目录结构: 添加 tsconfig.json 主要是将 sourceMap 设置为true. { ...