zoukankan      html  css  js  c++  java
  • RefineDet by hs

    一、简介

    1、RefineDet综合了one-stage和two-stage的优点从而能够提高检测效果。主要包括two-stage算法对box由粗到细的回归思想和FPN中的特征融合思想来提升小物体的检测效果。

    2、可以看做是SSD算法、RPN网络和FPN算法的结合。

    二、参考

    2018CVPR: Single-Shot Refinement Neural Network for Object Detection

    论文:https://arxiv.org/abs/1711.06897 

    代码:https://github.com/sfzhang15/RefineDet

    三、网络结构

    主要由三部分组成,分别是anchor refinement module (ARM) 、object detection module (ODM)、transfer connection block (TCB)

    1、ARM

    类似于RPN网络,用来初步得到bbox,同时去除一些负样本。采用多层特征输入,分两路进行损失函数的计算,分类和边界回归,这一层主要是进行粗略的筛选(具体的细节未知,与精细的筛选有什么区别未知)

    2、TCB

    将ARM输出的特征图转成ODM的输入(为什么要转未知),中间进行了多层特征的融合。

    3、ODM

    相当于是SSD(需要复习一下),不同点是输入anchors是ARM模块得到的,且在SSD的基础上添加了FPN中的特征融合思想,对小物体的检测更加准确。

    这里和SSD最主要区别就在于SSD是直接在default box的基础上进行回归的,而RefineDet是通过ARM得到的anchors来进行回归的,这相当于就是把two-stage模型的优点整合到了one-stage模型中。

    四、损失函数

    损失函数较为简单,分为ARM和ODM两个部分的分类和边界回归损失,与SSD的损失函数大体相同,这里采用end-to-end的训练模式。

    五、模型效果

    六、总结

    1、结合了one-stage和two-stage的检测模型,检测效果得到提升

    2、是对SSD的改进,增加了对SSD中default box的优化,变为了由ARM模块得到refined anchors来进行检测。

  • 相关阅读:
    Centos7搭建OpenNebula云平台
    Python中__new__和__init__的区别与联系
    16个python常用魔法函数
    微信小程序< 1 > ~ Hello 微信小程序
    扬帆起航,再踏征程(一)
    Java 社区平台
    Java 社区平台
    <Android 应用 之路> 一个类似今日头条的APP
    使用标准C读取文件遇到的结构体对齐问题及其解决办法
    编译64位cu文件的设置
  • 原文地址:https://www.cnblogs.com/bupt213/p/11451371.html
Copyright © 2011-2022 走看看