RetinaNet基础概念

1.目标检测算法

  一般的步骤包括:输入图片--->得到候选框--->根据候选框提取特征-->对框内的特征进行分类(回归)

2. 视觉检测器

  1.1One-stage

    以YOLOSSD为代表的单级结构,它们摒弃了提取proposal的过程,只用一级就完成了识别/回归,虽然速度较快但准确率稍差。

  1.2Two-stage

    以Faster RCNN为代表的两级识别方法,这种结构的第一级专注于proposal的提取,第二级则对提取出的proposal进行分类。两级结构准确度较高,但因为第二级需要单独对   每个proposal进行分类/回归,速度比较慢。

  那么,有没有只用单级结构又能提高准确率的方法呢?

 

3. focal loss

  针对one-stage在训练时会被易于分类的背景示例所支配。作者提出了一种新的损失函数,它可以作为处理类不平衡的先前方法的一种更有效的替代方法。

  (1)定义cross entropy :

     

  作者提出了一种新的针对二分类问题的loss。其中,y0,1标签。P是模型输出的概率(即估计y=1的概率)

  为了符号方便表示:

                     

  即:

        

  (2)Balanced Cross Entropy

    解决类不平衡的常用方法是引入加权因子a,其中a属于[0,1]

       

  (3)定义focal loss

    虽然a平衡positive/negative案例它没有区分easy/hard examples。通过定义一个可调聚焦参数(1 pt)γ,定义了focal loss

           

    在实践中,添加了一个a平衡变量,得到以下形式:

            

    总之,本质上讲,Focal Loss 就是一个解决分类问题中类别不平衡、分类难度差异的一个损失函数。

  比如:在训练时,前景类和背景类之间的极度不平衡(如:1:1000

 

4.RetinaNet

  RetinaNet是一个统一的网络,由骨干网和两个特定于任务的子网组成。骨干负责计算整个输入图像上的卷积特征图,并且是一种自卷积网络。第一个子网在主干的输出上执行卷积对象分类;第二个子网执行卷积边界框回归。

  (1)FPN (Feature Pyramid Network)

    FPN通过自上而下的路径和横向连接增强了标准卷积网络,因此网络从单个分辨率输入图像有效地构建了丰富的多尺度特征。详细见:        

      https://www.cnblogs.com/huajing/p/13651175.html

  (2) 分类子网

    分类子网预测每个A anchorsK个对象类在每个空间位置处对象存在的概率。

    设计很简单:

      输入是C通道的多层特征图--->43×3的卷积核(通道数为C--->relu激活函数--->3×3卷积核(通道数为A--->sigmoid激活函数

      (一般C=256A=9)

  (3box回归子网

    大体上同分类子网,只是最后是一个线性输出。如上图(d)

posted @ 2020-09-12 11:53  prehua  阅读(1671)  评论(0编辑  收藏  举报