对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解
BDCN
\qquad Bi-Directional Cascade Network for Perceptual Edge Detection一文由北京大学的Jianzhong He,Shiliang Zhang,Tiejun Huang及Horizon Robotics的Ming Yang,Yanhu Shan五人所著。针对计算机视觉中的边缘检测问题,提出了由Bi-Directional Cascade Network (BDCN)与Scale Enhancement Module (SEM)相结合的神经网络结构,旨在减少训练参数规模的同时,保证检测结果的准确率。在正文中进行了该结构可行性的数学证明,并使用Berkeley Segmentation Data Set and Benchmarks 500 (BSDS500)以及NYUDv2,Multicue三大数据集进行测试(PASCAL VOC Context dataset [36]),并与其他方法进行对比;其中,在BSDS500上的 ODS F-measure高达0.828,比前最优方法高出1.3%。
GitHub源码地址
百度词条: F-measure
参考文章: 召回率(Recall),精确率(Precision),平均正确率(Average_precision(AP) ),交除并(Intersection-over-Union(IoU))
研究背景
\qquad 边缘检测是类如图片分类 [1, 41], 物体检测和识别 [13, 14]等中高级图片、视频处理工作的重要基础。经过近36年的研究(1983-2018),计算机边缘检测的准确率有着显著的提升。
\qquad 如图,形如人体轮廓与手势这样不同分辨率级别的物体边缘决定了在边缘检测的工作中引入多重分辨率尺度模型是必要的。此前,为解决该问题,有人使用形如ResNet50 [18]这样的超深层神经网络结构,同时带来了大规模参数训练困难、耗时多、成本高的问题;还有人采用图像金字塔与多级特征融合的方法,同时带来了冗余计算的问题。
\qquad 除网络结构问题外,还有训练策略的问题。形如HED [49, 50] and RCF [30]使用了单一分辨率尺度的结果集,来训练CNN中不同层对不同分辨率尺度的物体边缘的识别能力,在一定程度上影响了最终的准确率。
\qquad 尽管Liu等人在引文 [31]中引入了Canny [4] detectors with layer-specific scales人工决定不同层的分辨率尺度。但这不是多分辨率尺度模型的最优解。
扩张卷积
\qquad 为解决网络结构问题,本文引入了采用multiple parallel convolutions with different dilation rates(多扩张率多重平行卷积)计算方式的Scale Enhancement Module
(SEM)。扩张卷积(dilated convolutions)与传统卷积相比,在使用相同大小的核(过滤器)的情况下,通过控制扩张率(dilation rates)的大小,有效的扩大了神经元的感知范围。
(a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=9。
(b) 扩张卷积,2-dilated convolution,卷积核的感受野为7×7=49。
(\c) 扩张卷积,4-dilated convolution,卷积核的感受野为15×15=225。
源于论文: MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
由此,引入SEM可以使模型参数数量大幅减少,避免冗余计算。
\qquad 为解决训练策略问题,本文引入了由Incremental Detection Block (ID Block)双向连接而组成的BDCN网络结构,不同层的ID Block通过训练完成对不同分辨率标准的边缘识别功能。
相关工作
数学证明
根据分辨率尺度s,将结果集Y分成S部分。
Y = ∑ s = 1 S Y s ( 1 ) Y = \sum_{s=1}^S Y_s \qquad (1) Y=s=1∑SYs(1)
第s层的损失为:
L s = ∑ X ∈ T ∣ P s − Y s ∣ ( 2 ) \mathcal L_s = \sum_{X\in \Bbb T} \mid P_s - Y_s \mid \qquad (2) Ls=X∈T∑∣Ps−Ys∣(2)
\qquad 关键在于Y_s,手工实现公式1是非常困难的。一种可能的解法是,用结果集Y和chu第s层之外所有层的预测结果之和来求得Y_s的近似解,即公式3。
Y s ∼ Y − ∑ i = s̸ P i ( 3 ) Y_s \sim Y - \sum_{i = \not s}P_i \qquad (3) Ys∼Y−i=s∑Pi(3)
\qquad 若使用公式3,则公式2会演变为 L_s = np.sum(np.sum§ - Y),也就意味着第s层的supervision还是最初的Y,也就变成了与第一部分中介绍的HED [49, 50] and RCF [30]采用了相同的策略,与初衷背驰。而且对于各层都使用Y作为supervision的话导致的结果是,不管最终训练的准确率如何,对于任意两层的输出P_i, P_j,经过一定的GD迭代后,P_i于P_j会趋于相等(原文中证明过程使用了=,此处存在疑问),则对于公式4来说,对任意的s,损失L对P_s求导都相等,即 ∂ ( Y ^ ) ∂ ( P s ) = ∂ ( Y ^ ) ∂ ( P i ) = 1 \frac{\partial (\hat Y)}{\partial(P_s)} = \frac{\partial (\hat Y)}{\partial(P_i)} = 1 ∂(Ps)∂(Y^)=∂(Pi)∂(Y^)=1
设 Y s ≈ Y − ∑ i ≠ s P i Y_s \approx Y-\sum_{i \not = s}P_i Ys≈Y−∑i=sPi,
则 L s = ∑ X ∈ T ∣ P s − Y s ∣ = ∑ X ∈ T ∣ P s − Y + ∑ i ≠ s P i ∣ = ∑ X ∈ T ∣ ∑ s = 1 S P s − Y ∣ \mathcal L_s = \sum_{X\in \Bbb T} \mid P_s - Y_s \mid \\ =\sum_{X\in \Bbb T} \mid P_s - Y + \sum_{i \not = s}P_i \mid \\ =\sum_{X\in \Bbb T}\mid \sum_{s=1}^S P_s - Y \mid Ls=X∈T∑∣Ps−Ys∣=X∈T∑∣Ps−Y+i=s∑Pi∣=X∈T∑∣s=1∑SPs−Y