DCNN short for Deep Convolution Neural NetWork, 常用的up-smapling和pooling layer存在以下问题:
1.up-sampling/pooling layer 是定性的而非可学习的。
2.内部数据结构丢失,空间层级化信息丢失。
3.小物体信息无法重建。(假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建)
基于以上问题,语义分割一直存在瓶颈期,精度无法明显提高,而dilated convolution的设计很好的避免了这些问题。
对于dilated convolution ,其优点是可以避免上述三个问题,即内部数据的保留和避免使用down-sampling这样的特性。
但是,完全基于dalated convolution的结构设计则是一个新的问题
潜在问题
1:The Gridding Effect
多次叠加 dilation rate 2 的 3 x 3 kernel 的话,则会出现这个问题:
上图是多层3×3空洞卷积核的叠加, 红色为中心, 最左侧红色中心由中心和周围的蓝色点卷积得到, 而蓝色的每个点, 又由他们本身与周围的8个点卷积得到, 也就是发散到了中间的图. 如此继续叠加, 最终红色中心的值由周围若干个点卷积得到, 如右图. 蓝色越深表示卷积权重越大.
可以观察得到的是, 空洞卷积叠加之后, 等效的卷积核并不连续, 计算每个点的时候, 并不是周围所有的pixel点都用来计算了, 因此会损失信息的连续性. 这对于某些问题来说是致命的.
2.如何同时处理不同大小的物体关系(Long-ranged information might be not relevant.)
我们从 dilated convolution 的设计背景来看就能推测出这样的设计是用来获取 long-ranged information。然而仅采用大 dilation rate 的信息或许只对一些大物体分割有效果,而对小物体来说可能则有弊无利了。如何同时处理不同大小的物体的关系,则是设计好 dilated convolution 网络的关键。
空洞卷积核设计的本身是为了获取大范围的信息, 但是如果采用大的dilation rate获取的信息只对大的物体具有分割效果, 对于小的物体可能就采集不到了. 因此, 如何均衡两者, 是空洞卷积设计的关键为题.
然后就是空洞卷积核的设计方法, Hybrid Dilated Convolution:
叠加卷积的dilation rate不能有大于1的公约数, 如[2, 4, 6]不是可行的三层卷积, 会出现gridding effect.
将dilation rate设计成锯齿结构, 如 [1, 2, 5, 1, 2, 5] 循环结构.
满足式子
其中ri是i层的dilation rate, Mi是到i层最大的dilation rate, 那么假设总共有n层的话,默认
假设我们应用于 kernel 为 k x k 的话,我们的目标则是
这样我们至少可以用 dilation rate 1 即 standard convolution 的方式来覆盖掉所有洞。
一个简单的例子: dilation rate [1, 2, 5] with 3 x 3 kernel (可行的方案)
锯齿状本身的性质就比较好的来同时满足小物体大物体的分割要求, 小的dilation rate关心近距离信息, 大的dilation rate关心远距离信息.
一个良好设计的空洞卷积网络能够有效的避免gridding effect:
文章摘选自:
https://www.zhihu.com/question/54149221
https://www.cnblogs.com/databingo/p/9503098.html