精度faster rcnn

fast rcnn除了proposal部分,检测部分基本可以实现实时。proposal部分的时间比检测部分慢一个数量级。考虑到检测部分利用了gpu,因此考虑将proposal也利用gpu实现。但是如果单独重新实现proposal,将忽略与下游的检测网络共享计算。本论文提出了一个可以RPN网络(仅需要10ms),与检测网络共享计算,只需要很小的额外开销,即可给出候选框。实验证明,新的检测网络不仅提高了速度(在gpu上5fps),而且精度也提高了。

 

RPN网络,具有平移不变性,锚框和计算proposal相对锚框的公式都具有此特性(因为在一个feature map上共享3x3的参数,因此不管目标平移到哪里,预测结果都一样)。这个特性也减少了模型尺寸,multibox有(4+1)x 800维全连接输出, 而我们的方法只有(4+2)x 9维卷积输出层。而且预期我们的方法在小数据集上过拟合的风险很小。

Multi-Scale Anchors as Regression References:我们使用了不同的scale和aspect ratio的预测框,来解决多尺度的问题。这种方式比multi images/features/filters更高效。在没有额外的设计的背景下,对于共享特征多尺度锚框的设计是一个重要的组成部分。

对于RPN的训练,我们把这两种类型的锚框设置为正样本:与一个gt box有最大iou的锚框,与任一gt box的iou大于0.7。(因此,有可能一个gt box对应多个锚框)通常第二个条件基本都确定大部分的正样本,但是我们仍然保留第一个条件,防止一些情况下,用第二个条件找不到正样本。对非正样本的锚框进行判断,如果他们与所有gtbox的iou都小于0.3,将其标记为负样本。其他既不是正样本也不是负样本的锚框,不参与训练。

 

 

然而,我们获取bbox regression的方式不同于之前的基于roi的方法。之前的方式,bbox regression是在从任意大小的roi池化的特征上获取的,各种大小的区域共享regression参数。在我们的公式中,用于获取regression的特征是在特征图上的相同尺寸(3x3)。考虑到不同的大小,需要学习k个bbox regressor(k个bbox regressor不共享参数)。基于锚框的这种设计,该box regressor仍然能从固定的size/scale的特征上预测不同大小的box。

RPN和fast rcnn之间共享参数:这两个网络如果各自训练,那么将各自以不同的方式改变卷积层。因此我们需要开发一种机制,在两个网络之间共享卷积层,而不是分别训练出两个网络。我们讨论了3种共享特征的训练方法:

  1. 交替训练:
  2. 近似联合训练:将两个网络在训练时合成一个网络。在每一次sgd迭代,前向产生proposals,当训练fast rcnn时,将其看成是固定的,提前计算的proposals。反向传播跟之前一样,对于共享的层,传播两个loss(rpn和fast rcnn)。这种方式容易实现,但是它忽略了proposals也是网络的输出,因此叫近视联合训练。这种方式可以产生跟交替训练接近的结果,大约减少了25%~50%的训练时间(跟交替训练比)。
  3. 非近似联合训练:

最后我们采用了比较实用的4步训练法。第一步,用imagenet的预训练模型初始化rpn网络,并且finetune对region proposal task。第二步,用第一步中产生的proposals训练一个独立的fast rcnn网络。这个网络也用imagenet预训练模型初始化。此时两个网络没有共享卷积层。第三步,使用检测网络初始化rpn网络,固定共享卷积层,只微调跟rpn相关的层。现在两个网络共享了卷积层。最后,保持共享卷积层固定,微调与fast rcnn相关的层。雷士的迭代训练可以多进行几次,效果有微不足道的提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:原理与源码解析》 【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来! 代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《Windows版YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《Windows版YOLOv4目标检测实战:训练自己的数据集》《Windows版YOLOv4-Tiny目标检测实战:训练自己的数据集》《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》《Windows版YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值