您当前的位置:首页 > IT编程 > 深度学习
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:FPN(Feature Pyramid Networks)网络原理解析

51自学网 2020-11-01 08:55:44
  深度学习
这篇教程FPN(Feature Pyramid Networks)网络原理解析写得很实用,希望能帮到您。

FPN(Feature Pyramid Networks)网络原理解析

前言

        在图像处理中,为了解决多尺度的问题,设计了图像金字塔;在卷积神经网络中,由于网络提取的不同特征层由低到高尺寸逐渐减小,自然形成了特征金字塔。FPN网络就是在特征金字塔的基础上对模型结构引入新的设计,从而提高了对小目标的检测精度。

特征金字塔的特点

                                                   

  • 特征层由低到高所提取的信息丰富程度不同,特征层越高提取的语义信息level越高
  • 特征层由低到高分辨率逐渐减小,感受野却逐渐增大

特征金字塔的构建和使用

特征金字塔本身的特点是固定的,但是对这些特征层的不同构建和使用方式会产生不同结果,下图表示4中不同的特征金字塔的构建和使用方式

                      

构建方式

       图(a)通过构建图像金字塔,再提取图像的特征来构建特征金字塔,在传统的图像算法中应用很广,缺点是计算量大、内存占用多,目前在深度学习中很少使用了;图(b)、(c)、(d)都是通过卷积神经网络自然构成特征金字塔,相比(a)减少了大量的计算量和内存使用

使用方式

  • 图(b)只使用最高层的特征,RCNN系列就是此类。高层特征具有强的语义信息,在分类问题中使用没什么问题,但是在目标检测问题中,如果目标的尺寸变化较大,最高特征层的感受野太大,难以识别到小尺寸的目标
  • 图(c)就是为了避免图(b)的缺点而设计的新的使用方法,在每个特征层都进行检测,在低层特征中可以检测小尺寸或特征简单的目标,高层特征可以检测特征复杂的大目标
  • 图(d)对特征的使用方式就是对本文的主角:Feature Pyramid Networks

FPN原理解析

       前面分析我们知道,利用低层特征虽然可以检测小目标,但是低层特征的语义信息level较低,导致检测准确性较低。SSD网络结构中特征的使用方式和图(c)一样,但是SSD为了避免使用low-level特征,并没有在低层上进行检测,而是使用VGG的高层特征,同时在其基础上扩展更高层的特征,所以它对小目标检测效果不好。FPN通过自顶向下的过程横向连接来解决低层特征语义信息level较低的问题,保持低层特征利于检测小目标的优势的同时,提高检测精度

           这里写图片描述

                                                              图1                                                                             图2

图1右边部分表示自顶向下的过程,水平向右的箭头表示横向连接,图2放大部分表示的自顶向下和横向连接的具体操作。

具体流程如下:

  • 卷积网络得到特征层1、2、3
  • 复制特征层3作为自顶向下的最高特征层4
  • 对特征层4进行上采样得到特征层4',保证其尺寸和特征层2相同,同时对特征层2使用1*1conv得到特征层4'',保证其通道数和特征层4'相同,最后将特征层4'和特征层4''相加得到特征层5(为了消除上采样的混叠效应,实际上还会再采用3*3的卷积核对每个融合结果进行卷积)
  • 重复上一步依次得到低层特征

分析:

横向连接将high-level特征融合到low-level特征中,从而提高了低层特征的语义level。

总结

       FPN网络是采用ResNet作为Base实现的,但其实FPN可以看做一种网络结构模块或者设计思想应用在各种网络中。


FPN-从原理到模型的训练与测试
轻量级神经网络架构综述
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1