IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> (五)比赛中的CV算法(下5)检测网络调优(1)多尺度特征融合 -> 正文阅读

[人工智能](五)比赛中的CV算法(下5)检测网络调优(1)多尺度特征融合

--NeoZng[neozng1@hnu.edu.cn]

如果觉得笔者写得还不错,关注一下点个赞吧!

稍作总结后,笔者在这里再介绍一些目标检测领域的trick和改进方法(其实现在已经不新了),前一部分主要是关于LF的设计,而这一部分主要是关于关于模型的改进的经典方法与训练技巧,还有一些有启发性的机制。

  • 多尺度特征融合

    由于CNN基本构建模块的特点,在最后输出的feature map往往是浓缩了大量的语义信息(“高级的特征”)但分辨率较低、对细节的保留较少,因此对于小目标的检测效果不尽如人意,且模型对检测对象的尺度不变性大部分也只能来自于训练数据。

    SPPNet提出的空间金字塔池化通过对最后一层feature map执行stride大小不同的池化后再进行concatenate,能在一定程度上解决不同尺度物体的检测问题。但是仅仅使用了高级特征(或者说特征其实还是来自同一层),对于不同尺度的融合还是不太好。

    ?

    spp的结构,用不同大小的grid分割后进行max pooling操作,最后concatenate并投入下一层

    ?

    SSD首先提出在Backbone的不同层输出进行检测,就是希望能同时利用不同层次的信息。但是对于多个feature map的检测也导致了效率的低下,并且低层的feature map能够提供的信息太少而直接检测的计算量又大(分辨率高),虽然对于不同尺度的物体检测能力略有提升,但是速度相对YOLO下降的比较多。

?

?

几种检测的方法

(a).传统差分图像金字塔,抽值实现降采样

(b).深度学习经典做法,使用顶层feature map检测

(c).SSD的做法,利用深度网络提取feature并在每一层map上检测

(d).FPN做法,top-down融合并在不同的map上检测

?

那么很自然的我们就会想到,有没有什么方法可以综合底层的细节和高层语义信息,随后利用融合后的信息进行检测,将各种尺度的目标一网打尽?于是便有人提出了特征金字塔网络Feature Pyramid Netwok。和以往的图像金子塔不同,FPN的金字塔由深度网络提取的不同层级特征堆叠而成,并在堆叠的基础上通过top-down的element-wise add实现特征的融合,从而实现对不同尺度物体的检测。

?

FPN金字塔中的下采样方式,最顶层的特征会经过x2的上采样插值后和底层feature map相加

?

注意到FPN只有top-down的融合路径,金字塔顶层无法享受到底层的更多细节,那直接添加down-top的融合不就完事了?PANet的作者直呼有手就行,提出了这个路径聚合网络用于更充分的特征融合(PANet首先被用在语义分割上,分割其实相当于像素级的分类,因此对于细节的要求更加严苛和敏感,特别是边缘和纹理)。

PANet的整体结构如下,红色虚线表示原始图像经过数十甚至近百层的卷积(即原图经过backbone到最后顶部的feature map)得到的P5已经没有什么细节信息了。那么它相比FPN的不同就是(b)部分的down-top连接将底层细节通过较短的路径融合到上层,即绿色虚线所示的路径(P2->N2->N3->N4->N5)。而这里的Top-down连接通过3x3,stride=1的卷积后再相加来实现而不是简单的element-wise add,让网络自己去学习如何进行特征融合(当然如果为了追求速度将卷积换成和FPN中一样的element-wise add也是可以的,或多轻量化网络都是这么做的)。通过绿色虚线路径的特征大概只需要十层不到的conv就能达到N5处,这样的两个部分(top-down和down-top)就很好地解决了利用顶层feature map检测时缺少细节和纹理的问题。

?

PANet的结构

?

?

?PANet中down-top连接的结构

?

不过人们对于极致的追求是永不止步的,在进行了大量实验后,EfficientNet将Neck(一般把检测框架中的特征融合/选择部分称作neck)进行了进一步优化,提出了Bi-FPN(双向特征金字塔)。

?

?左侧白色单元backbone中不同层次的feature map输出,虚线框内是BiFPN的结构;右侧是PAN的结构

?

Bi-FPN的总体结构和PAN相同,都是top-down和down-top的排列,我们主要关注他们的不同之处。首先是feature map跨过top-down下采样融合部分直接到bottom-up部分的远跳连接,这和ResNet中的结构几乎是一致的, 作用也是相同的,可以分散梯度并防止退化。另一个改变是删除了PANet中红色框的单元直接连接到下一层,作者认为这种单边的连接没有必要添加额外的卷积,因为没有融合的对象,如果进行卷积反而会引入不同层次的特征并增加梯度回传的难度。若有必要,可以通过堆叠Bi-FPN的block实现更多的融合并方便地控制网络规模和深度(g家惯用套路了,比如inception)。

还有其他的思路如把接下来要介绍的注意力机制引入特征金字塔中,为不同的连接路径设置不同的可学习权重、通过GAN由高层语义信息还原底层细节(类似超分辨率)等,感兴趣的同学可以自己探索。

若觉得笔者写得还不错,给个关注点个赞吧!

下一期将会更新CV中的注意力机制!关注HNU跃鹿战队第一时间获取更新!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:50:21  更:2022-01-24 10:52:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:26:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码