最近两周忙着上网课、投简历,博客没什么时间写,姑且把之前做的笔记放上来把。。。

  下面是我之前看论文时记的笔记,直接copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来(实则偷懒。。。。)

1、改进

  • 端到端的学习
  • 将图片用选择搜索算法(select search)得到2000个候选区域(RegionProposal)的坐标信息
  • 将图片归一化为指定格式,输入 CNNAlextNet/VGG/ResNet)对图片进行进行特征提取,生成一张特征图
  • 将开始得到的坐标信息通过一定的映射关系转换为对应特征图的坐标,截取对应的 RegionProposal
  • 对提取出的 RegionProposal 进行 ROIPooling(SPPNet 简化版),将不同尺寸的图像映射为相同尺寸的特征图
  • 将上述特征图输入全连接层进行分类
    • 定义多任务损失函数,将分类和边框回归融合到一个模块当中
    • 使用 Sfotmax 取代 SVM 作为分类器(为了实现端到端的训练)
    • 增加了一个与 Softmax 层平行的 LinearRegression 层,用于回归优化边框

2、解决了 R-CNN/SPP-Net 的缺陷

  • 训练 & 测试速度慢

    • R-CNN 中用 CNN 对每一个候选区域反复提取特征,而一张图片的2000个候选区域之间有大量重叠部分,这一设定造成特征提取操作浪费大量计算
    • Fast R-CNN 将整个图像归一化后直接送入 CNN 网络,卷积层不进行候选区的特征提取,而是在最后一个池化层加入候选区域坐标信息,进行特征提取的计算。
  • 训练所需空间大
    • R-CNN 中目标分类与候选框的回归是独立的两个操作,并且需要大量特征作为训练样本。
    • Fast R-CNN 将目标分类与候选框回归统一到 CNN 网络中来,不需要额外存储特征。
  • 无法对空间金字塔池之前的卷积层进行更新
    • FastR-CNN 可以对所有网络层参数进行更新

3、预训练注意事项

  • 预训练时

    • 分类器是一个单独的全连接层+Softmax,没有边框回归
    • 没有ROI层,取而代之的是一个池化层
  • 预训练结束后,进行调优训练时
    • 需将分类器替换为并行的【新全连接层1+原softmax层1000个分类输出修改为21个分类输出(20种类+背景)】+【新全连接层2+候选区域窗口回归层】
    • 将VGG-16网络最后一层池化层替换为 ROI 层

4、缺点

  • CNN 提取后的特征图像上使用 select search 生成 RegionProposal,效率太低,计算量太大

5、ROIPoolling

  • 名词解释

    • ROI 指的是所提取出的关注区域(Feature map/RegionProposal

      • 原始图片经过多层卷积与池化后(CNN 前向提取特征图),得到整图的 feature map
      • selective search 产生的大量 proposal,经过映射所得到其在 feature map 上的映射区域,即 ROI
  • 上述提取出的 ROI 即作为 ROI Pooling 层的输入
  • ROIPolling 流程(如下图 )
    • 将输入的(h,w)的 ROI 分割成 H*W 个子窗口
    • 每个子窗口的大小约为(h/H,w/W),其中 HW 为超参数,如设定为7 x 7
    • 对每个子窗口进行 max-pooling 操作,得到固定输出大小的 feature map
    • 之后进行后续的全连接层操作

标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN的更多相关文章

  1. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  2. openresty 学习笔记三:连接redis和进行相关操作

    openresty 学习笔记三:连接redis和进行相关操作 openresty 因其非阻塞的调用,令服务器拥有高性能高并发,当涉及到数据库操作时,更应该选择有高速读写速度的redis进行数据处理.避 ...

  3. Javascript学习笔记三——操作DOM(二)

    Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...

  4. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  5. python学习笔记三 文件操作(基础篇)

    文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   w ...

  6. 数据库学习笔记 (三) python操作数据库

    python 操作MYSQL数据库主要有两种方式: 使用原生模块:pymysql ORM框架:SQLAchemy 一.pymysql 1.1下载安装模块 第一种:cmd下:执行命令下载安装:pip3 ...

  7. C# LINQ学习笔记三:LINQ to OBJECT之操作字符串

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5814204.html,记录一下学习过程以备后续查用. 一.统计单词在字符串中出现的次数 请注意,若要执行计数, ...

  8. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  9. Tornado学习笔记(三) 请求方式/状态码

    本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...

随机推荐

  1. springboot项目基础面试题

    1.springboot与spring的区别. 引用自官方说法: java在集成spring等框架需要作出大量的配置,开发效率低,繁琐.所以官方提出 spring boot的核心思想:习惯优于配置.可 ...

  2. 吴裕雄--天生自然 R语言开发学习:基本图形(续一)

    #---------------------------------------------------------------# # R in Action (2nd ed): Chapter 6 ...

  3. 翻译:谷歌HTML、CSS和JavaScript风格规范

    我喜欢浏览风格规范.他们通常有明显的规则,虽然有些有荒诞之感,但是却可以发现之前未注意到的宝石.不幸的是,鲜有公司有这个勇气来发布自己内部的风格规范.BBC 2010年时候公开其文档以及Google最 ...

  4. 旅游机票类专业名词---PNR

    PNR: PNR是旅客订座记录,即Passenger Name Record的缩写,它反映了旅客的航程,航班座位占用的数量,及旅客信息.适用民航订座系统. 一个PNR由以下几项组成: 姓名组NM 航段 ...

  5. 云服务器 ECS--查找公网ip使用终端连接云服务

    前段时间购买了阿里云服务器,购买之后一直没用使用,今天来操作一波,可谓一波三折,只能说,不看他们的操作指南你可能连地方都找不到,所以,在这里,我想给初次购买阿里云服务的童鞋门,写写我是怎么使用阿里云服 ...

  6. classnames

    在React中编写模板时给标签添加class. 如果是固定的className="XX"就可以了. 如果要根据状态值动态应用或去除, 或使用多个class时就麻烦了. 可以使用cl ...

  7. LaunchImage的设置及对应图片尺寸

    2017-10-12 设置APP的LaunchImage 按照如下步骤设置app的LaunchImage: In Assets.xcassets click + button -> App Ic ...

  8. OpenGL ES 学习笔记 - Overview - 小旋的博客

    移动端图形标准中,目前 OpenGL ES 仍然是比较通用的标准(Vulkan 则是新一代),这里新开一个系列用于记录学习 OpenGL ES 的历程,以便查阅理解. OverView OpenGL ...

  9. 01Java代码是怎么运行的

    从虚拟机视角来看,执行 Java 代码首先需要将它编译而成的 class 文件加载到 Java 虚拟机中.加载后的 Java 类会被存放于方法区(Method Area)中.实际运行时,虚拟机会执行方 ...

  10. 安卓权威编程指南-笔记(第23章 HTTP与后台任务)

    1. 网络连接基本 //通过指定URL获取原始数据,并返回一个字节流数组. public byte[] getUrlBytes(String urlSpec)throws IOException{ / ...