空洞卷积(atrous convolution)又叫扩张卷积(dilated convolution),其实就是向卷积层引入了一个称为“扩张率(dilation rate)”的新参数,这个参数定义了卷积核处理数据时各值的间距。普通卷积和空洞卷积图示如下(以3*3卷积为例)
(普通卷积)
(空洞卷积)
那么这样的结构是为了解决什么问题呢?
这又不得不提起传统网络VGG,在VGG的设计中,作者发现了卷积叠加过程中的一个巧妙规律,即7*7的卷积层正则等效于3个3*3卷积层的叠加,在减少参数的同时,这样的结构更容易学到一个可生成的、表现力良好的特征空间,这也是为什么我们现在看到的网络结构几乎都是3*3,5*5的卷积层的原因。
但与此同时,伴随产生了对于deep cnn中上采样和下采样的一系列问题,一方面是pooling导致的内部数据结构和空间层级化的信息丢失,另一方面,小物体(在一定条件下)经过下采样之后数据会丢失,导致信息无法重建。这个问题在语义分割中尤其显著,而空洞卷积的设计很好的避免了这些问题。
空洞卷积的两大优势:
1.特征图相同情况下,空洞卷积可以得到更大的感受野,从而获得更加密集的数据
2.特征图相同情况下,更大的感受野可以提高在目标检测和语义分割的任务中的小物体识别分割的的效果。
我们可以显而易见的看到,使用空洞卷积代替下采样/上采样可以很好的保留图像的空间特征,也不会损失图像信息。当网络层需要更大的感受野,但是由于计算资源有限无法提高卷积核数量或大小时,可以考虑使用空洞卷积。
空洞卷积存在的问题:
1.网格效应
当多次叠加扩张率为2的3*3 kernel时,会产生如下问题:
由此可见,并不是所有的pixel都用来计算了,这样的方式会损失信息的连续性,这对于像素级的任务来说是致命的。
2.远距离信息可能不相关
需要注意的是,如果光采用大的扩张率的卷积可能只对一些大物体分割有效果。设计好空洞卷积层的关键在于如何同时处理不同大小物体的关系。
一个称为HDC(混合空洞卷积)的结构被设计出来解决卷积核不连续的问题,它具有如下几个特性:
1.叠加卷积的扩张率不能有大于1的公约数
2.将扩张率设计成锯齿状结构,如[1,2,5,1,2,5]
图(a)是连续做rate = 2的空洞卷积的结果,图(b)是分别做rate为1/2/3空洞卷积的结果。
后者的优势在于,从一开始就保留了完整连续的3*3区域,之后的几个rate设计又保证了感受野的连贯性,即使有重叠也密不透风。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-10-31 《程序员修炼之道:从小工到专家》chap3(十月)
2023-10-31 10.29每日总结
2023-10-31 10.23每日总结
2023-10-31 10.22每日总结
2023-10-31 10.18每日总结