PANet论链接

PANet介绍

这篇文章提出的Path Aggregation Network (PANet)整体上可以看做是在Mask RCNN上做多处改进,充分利用了特征融合:

  • 引入bottom-up path augmentation结构,充分利用网络浅特征进行分割。
  • 引入adaptive feature pooling使得提取到的ROI特征更加丰富。
  • 引入fully-connected fusion,通过融合一个前背景二分类支路的输出得到精确的分割结果。

上图是关于PANet的示意图,主要包含FPN、bottom-up path augmentation、adaptive feature pooling、fully-connected fusion四个部分。

FPN主要是通过融合高底层特征提升目标检测的效果,尤其可以提高小尺寸目标的检测效果。

Bottom-up Path Augmentation的引入主要是考虑网络浅层特征信息对于实例分割非常重要,这个也非常容易理解,毕竟浅层特征多是边缘形状等特征,而实例分割又是像素级别的分类。那么为什么bottom-up path augmentation能保留更多的浅层特征呢?作者在上图中用红绿两个箭头来解释了。红色虚线箭头表示在FPN算法中,因为要走自底向上的过程,浅层的特征传递到顶层要经过几十甚至一百多个网络层(在FPN中,对应上图中那4个蓝色矩形块从下到上分别是ResNet的res2、res3、res4和res5层的输出,层数大概在几十到一百多左右),显然经过这么多层的传递,浅层特征信息丢失会比较厉害。绿色虚线箭头表示作者添加一个bottom-up path augmentation,本身这个结构不到10层,这样浅层特征经过底下原来FPN的lateral connection连接到P2再从P2沿着bottom-up path augmentation传递到顶层,经过的层数就不到10层,能较好地保留浅层特征信息。关于bottom-up path augmentation的具体设计参考后面的Figure2,最后融合得到的特征层是N2、N3、N4、N5,其中N2和P2相同,这些特征层用于后续的预测框分类、回归和mask生成。

Adaptive Feature Pooling主要做的还是特征融合。我们知道在Faster RCNN系列的目标检测或分割算法中,RPN网络得到的ROI需要经过ROI Pooling或ROI Align提取ROI特征,这一步操作中每个ROI所基于的特征都是单层特征(FPN也是如此),比如ResNet网络中常用的res5的输出。而adaptive feature pooling则是将单层特征也换成多层特征,也就是说每个ROI需要和多层特征(文中是4层)做ROI Align的操作,然后将得到的不同层的ROI特征融合在一起,这样每个ROI特征就融合了多层特征。

Fully-connected Fusion是针对原有的分割支路(FCN)引入一个前背景二分类的全连接支路,通过融合这两条支路的输出得到更加精确的分割结果。

下图是bottom-up path augmentation的示意图:

这是比较常规的特征融合操作,比如NiN_{i}Ni​经过尺寸为3×33\times 33×3,步长为2的卷积层,特征图尺寸缩减为原来的一半,然后和Pi+1P_{i + 1}Pi+1​做element-wise add操作,得到的结果再经过尺寸为3×33\times 33×3,步长为1的卷积层得到Ni+1N_{i + 1}Ni+1​,特征图尺寸不变。

下面这张图是adaptive feature pooling的示意图:

RPN网络得到的每个ROI都要分别和N2、N3、N4、N5层特征做ROIAlign操作,这样每个ROI就提取到4个不同的特征图,然后将4个不同的特征图融合在一起就得到最终的特征,后续的分类和回归都是基于最终的特征进行。

之所以引入adaptive feature pooling其实是基于FPN中提取ROI特征的思考,虽然FPN网络基于多层特征做预测,但是每个ROI提取特征时依然是基于单层特征,然而单层特征就足够了吗?于是作者做了下图这个实验,下图中有4条曲线,对应FPN网络中基于4层特征做预测,每一层都会经过RPN网络得到ROI,所以这4条曲线就对应4个ROI集合。横坐标则表示每个ROI集合所提取的不同层特征的占比。比如蓝色曲线代表level1,应该是尺度比较小的ROI集合,这一类型的ROI所提取的特征仅有30%是来自于level1的特征,剩下的70%都来自其他level的特征,leve2、leve3、leve4曲线也是同理,这说明原来RPN网络的做法(level x的ROI所提取的特征100%来自于leve x的特征,x可取1、2、3、4)并不是最佳的。因此就有了特征融合的思考,也就是每个ROI提取不同层的特征并做融合,这对于提升模型效果显然是有利无害。


下图是fully-connected fusion的示意图:

主要是在原来的mask支路(Figure4上面那条支路,也就是传统的FCN结构)上增加了Figure4下面那条支路做融合。增加的这条支路包含2个33的卷积层(其中第二个为了降低计算量还将通道缩减为原来的一半),然后接一个全连接层,再经过reshape操作得到维度和上面支路相同的前背景mask,也就是说下面这条支路做的是前景和背景的二分类,因此输出维度类似文中说到的28281。上面这条支路,也就是传统的FCN结构将输出针对每个类别的二分类mask,因此输出的通道就是类别的数量,输出维度类似2828*K,K表示类别数。最终,这两条支路的输出mask做融合得到最终的结果。因此可以看出这里增加了关于每个像素点的前背景分类支路,通过融合这部分特征得到更加精确的分割结果。

实验结果

下图是PANet和Mask RCNN、FCIS算法(COCO2016实例分割算法冠军)在COCO数据集上的分割效果对比。

Table2是PANet和Mask RCNN、FCIS、RentinaNet算法在COCO数据集上的检测效果对比,优势还是比较明显的(主网络为ResNeXt-101时,单模型效果达到45算很高了)。

深度学习_图像分割_PANet论文详解相关推荐

  1. 深度学习_目标检测_Soft-MNS详解

    Soft-NMS论文链接 Soft-NMS介绍 针对原始NMS过于hard的问题,论文中提出了Soft-NMS进行解决. 那原始的NMS有什么问题呢? 我们先看下面的图: 在上图中,检测算法本来应该输 ...

  2. 深度学习之---yolov1,v2,v3详解

    (写在前面:如果你想 run 起来,立马想看看效果,那就直接跳转到最后一张,动手实践,看了结果再来往前看吧,开始吧······) 一.YOLOv1 简介 这里不再赘述,之前的我的一个 GitChat ...

  3. 深度学习中的正则化技术详解

    目录 基本概念 1. 参数范数惩罚 1.1 \(L^2\)正则化 1.2 \(L^1\)正则化 1.3 总结\(L^2\)与\(L^1\)正则化 2. 作为约束的范数惩罚 3. 欠约束问题 4. 数据 ...

  4. 深度学习中的线性代数知识详解

    1. 基础概念 标量(scalar) 一个标量就是一个单独的数,一般用小写的的变量名称表示. 向量(vector) 一个向量就是一列数,这些数是有序排列的: ⎡⎣⎢⎢⎢⎢x1x2...x5⎤⎦⎥⎥⎥⎥ ...

  5. faceswap深度学习AI实现视频换脸详解

    给大家介绍最近超级火的黑科技应用deepfake,这是一个实现图片和视频换脸的app.前段时间神奇女侠加尔盖朵的脸被换到了爱情动作片上,233333.我们这里将会从github项目faceswap开始 ...

  6. 深度学习 --- 径向基神经网络RBF详解

    上一节我们基本上打开了深度学习的大门,其实下一步应该是卷积神经网络即CNN了,但是呢卷积神经网络的最后一层采用的是径向基神经网络,为了以后到CNN不用再费力气将RBF和保持CNN的整体性和连贯性,因此 ...

  7. 深度学习中的gelu激活函数详解

    论文:gaussian error linear units (一).什么是激活函数? 激活函数的本质就是给网络模型增加非线性,也就是在wTx+bw^Tx+bwTx+b等线性变换后面加一个非线性变换, ...

  8. 深度学习 CNN卷积神经网络 LeNet-5详解

    卷积神经网络( Convolutional Neural Network, CNN): 是一种常见的深度学习架构,受生物自然视觉认知机制(动物视觉皮层细胞负责检测光学信号)启发而来,是一种特殊的多层前 ...

  9. 启动go服务_go微服务框架go-micro深度学习 rpc方法调用过程详解

    摘要: 上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取serv ...

最新文章

  1. linux系统vsftpd登陆慢卡怎么办
  2. 完全二叉树的JAVA实现(以及非递归遍历方法)
  3. 2017年10月08日普及组 世界语
  4. Boost:cpu时间的实例
  5. 基于Guava API 轻松落地观察者模式
  6. React Native开发学习笔记——WebStorm运行项目
  7. java web 获取根目录_javaweb中获取服务器端跟目录方法总结
  8. P3706-[SDOI2017]硬币游戏【高斯消元,字符串hash】
  9. 飞思卡尔imx7 html5,i.MX6UL 飞思卡尔即将发布基于ARM Cortex-A7核心的低功耗处理器 i.MX 6UltraLite Processor...
  10. 一元运算符重载 前置和后置++ --(这种一般用成员函数来实现重载)
  11. 机器学习-吴恩达-笔记-10-降维
  12. linux rpm安装mysql5.7.*密码策略,访问策略等常见问题
  13. 使用 做签名的post_使用 Go 添加 JWT 认证
  14. 关于音频情感分类的随笔(4)
  15. 计算机桌面时间设置,桌面的时钟怎么设置
  16. ASTC图片纹理压缩探讨
  17. 【游戏开发实战】Unity实现水果忍者切水果的刀痕效果教程(两种实现方式:TrailRenderer、LineRenderer)
  18. 探索Selenium打开浏览器加载慢的原因
  19. Java,php,运维工程师转型大数据开发怎么样?你属于哪一类?
  20. fna服务器未响应,服务器端口说明

热门文章

  1. FreeMaker模板引擎
  2. 查询没有学全所有课程同学的姓名,学号。
  3. MFC设置背景图片之一
  4. pyqt5表格显示mysql_PyQt5调入数据库数据在表格中显示
  5. java计算机毕业设计springboot+vue超时代停车场管理平台系统(源码+系统+mysql数据库+Lw文档)
  6. Python|单链表基本操作
  7. 神泣单机显示服务器断开,7.0单机版为什么服务器连接断开
  8. 发那科sub_FANUC PMC功能指令详解(12):运算指令三
  9. 当不想前行的时候,就静静的看看书吧
  10. 全国一级计算机考证无忧软件