对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解

对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解

    • BDCN
    • 研究背景
      • 扩张卷积
    • 相关工作
    • 数学证明
    • 实验过程
      • 训练集
      • 参数设置细节
      • 实验结果
      • 与其他方法的比较
    • 未完待续zzz

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),计算机边缘检测的准确率有着显著的提升。
对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第1张图片
\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)的大小,有效的扩大了神经元的感知范围。
对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第2张图片
(a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=9。
(b) 扩张卷积,2-dilated convolution,卷积核的感受野为7×7=49。
(\c) 扩张卷积,4-dilated convolution,卷积核的感受野为15×15=225。
对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第3张图片
源于论文: MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
由此,引入SEM可以使模型参数数量大幅减少,避免冗余计算。

\qquad 为解决训练策略问题,本文引入了由Incremental Detection Block (ID Block)双向连接而组成的BDCN网络结构,不同层的ID Block通过训练完成对不同分辨率标准的边缘识别功能。
对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第4张图片

相关工作

对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第5张图片

数学证明

根据分辨率尺度s,将结果集Y分成S部分。
Y = ∑ s = 1 S Y s ( 1 ) Y = \sum_{s=1}^S Y_s \qquad (1) Y=s=1SYs(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=XTPsYs(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) YsYi=sPi(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 YsYi=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=XTPsYs=XTPsY+i=sPi=XTs=1SPsY
∀ i , j ∈ [ 1 , S ] , L i = L j = ∑ X ∈ T ∣ ∑ s = 1 S P s − Y ∣ \forall i,j \in [1,S] ,\mathcal L_i=\mathcal L_j =\sum_{X\in \Bbb T}\mid \sum_{s=1}^S P_s - Y \mid i,j[1,S],Li=Lj=XTs=1SPsY
由公式3的思想,在 L = L ( Y ^ , Y ) \mathcal L =\mathcal L(\hat Y,Y) L=L(Y^,Y)中,
Y ^ = ∑ i = 1 S P i = P 1 + P 2 + ⋯ + P S \hat Y = \sum_{i=1}^S P_i =P_1 + P_2 +\cdots+P_S Y^=i=1SPi=P1+P2++PS
则, ∀ i , j ∈ [ 1 , S ] , ∂ ( Y ^ ) ∂ ( P i ) = ∂ ( Y ^ ) ∂ ( P j ) = 1 \forall i,j \in [1,S] , \frac{ \partial (\hat Y)}{\partial (P_i) } =\frac{ \partial (\hat Y)}{\partial (P_j) } =1 i,j[1,S],(Pi)(Y^)=(Pj)(Y^)=1
结合公式4,
∂ ( L ) ∂ ( P s ) = ∂ ( L ( Y ^ , Y ) ) ∂ ( P s ) = ∂ ( L ( Y ^ , Y ) ) ∂ ( Y ^ ) ⋅ ∂ ( Y ^ ) ∂ ( P s ) ( 4 ) \frac{\partial (L)}{\partial(P_s)} = \frac{\partial (L(\hat Y, Y))}{\partial(P_s)} = \frac{\partial (L(\hat Y, Y))}{\partial(\hat Y)} \cdot \frac{\partial (\hat Y)}{\partial(P_s)} \qquad (4) (Ps)(L)=(Ps)(L(Y^,Y))=(Y^)(L(Y^,Y))(Ps)(Y^)(4)
∀ i , j ∈ [ 1 , S ] , ∂ ( L ) ∂ ( P i ) = ∂ ( L ) ∂ ( P j ) = ∂ ( L ( Y ^ , Y ) ) ∂ ( Y ^ ) \forall i,j \in [1,S] , \frac{\partial (L)}{\partial(P_i)} =\frac{\partial (L)}{\partial(P_j)} =\frac{\partial (L(\hat Y, Y))}{\partial(\hat Y)} i,j[1,S],(Pi)(L)=(Pj)(L)=(Y^)(L(Y^,Y))
\qquad 综上,若采用公式3,则每层输出损失恒等,最终损失函数对各层输出导数相等。逻辑上的意义为,各层采用相同的groundtruth,理论上在 i t e r a t i o n → ∞ iteration \to \infty iteration时, ∀ i , j ∈ [ 1 , S ] , P i = P j \forall i,j \in [1,S] ,P_i = P_j i,j[1,S],Pi=Pj
为解决上述问题,本文提出了BDCN结合SEM的网络模型。
对Bi-Directional Cascade Network for Perceptual Edge Detection一文的初步理解_第6张图片
\qquad 通过双向级联的传输回传的过程,再通过SEM,和1*1卷积处理,或得了两个完全不同的预测结果,对于第s层来说,由前一层获得输入计算结果记为 P s s 2 d P_s^{s2d} Pss2d,由后一层所得输入计算结果记为 P s d 2 s P_s^{d2s} Psd2s。由此给出尺度s下的两个supervisions的定义公式:
Y s s 2 d = Y − ∑ i < s P i s 2 d ( 5 ) Y s d 2 s = Y − ∑ i > s P i d 2 s \begin{array}{c} Y_s^{s2d} = Y - \sum_{i \lt s}P_i^{s2d} \\ \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad(5) \\ Y_s^{d2s} = Y - \sum_{i \gt s}P_i^{d2s} \\ \end{array} Yss2d=Yi<sPis2d(5)Ysd2s=Yi>sPid2s

\qquad 在计算 Y s s 2 d Y_s^{s2d} Yss2d时忽略 P i s 2 d ( i < s ) P_i^{s2d}(i \lt s) Pis2d(i<s),在计算 Y s d 2 s Y_s^{d2s} Ysd2s时忽略 P i d 2 s ( i > s ) P_i^{d2s}(i \gt s) Pid2s(i>s),对于尺度s, P s s 2 d P_s^{s2d} Pss2d P s d 2 s P_s^{d2s} Psd2s分别近似于 Y s s 2 d Y_s^{s2d} Yss2d Y s d 2 s Y_s^{d2s} Ysd2s,所以, P s s 2 d P_s^{s2d} Pss2d P s d 2 s P_s^{d2s} Psd2s之和是 Y s Y_s Ys的合理的近似解(公式6)。
P s s 2 d + P s d 2 s ∼ 2 Y − ∑ i < s P i s 2 d − ∑ i > s P i d 2 s ( 6 ) P_s^{s2d} + P_s^{d2s} \sim 2Y - \sum_{i \lt s}P_i^{s2d} - \sum_{i \gt s}P_i^{d2s} \qquad (6) Pss2d+Psd2s2Yi<sPis2di>sPid2s(6)
\qquad 根据公式6所得BDCN的基本结构如图2,其中ID Block的详细构成如图3,以VGG16结构为基础,去除其三个全连接层和最后的池化层,并将15个卷积层分为5部分,每部分续接一个池化层以扩大下一个block的感知区域,在每个卷积层下插入一个SEM,每个ID Block中的各个SEM所得输出进行融合并进行两个不同的 1 × 1 1\times1 1×1的卷积运算分别得出 P s 2 d P^{s2d} Ps2d P d 2 s P^{d2s} Pd2s
\qquad 在SEM中对于一个二维特征图 x ∈ R H × W \mathbf x \in R^{H \times W} xRH×W与过滤器 w ∈ R h × w \mathbf w\in R^{h \times w} wRh×w进行扩张卷积运算,所得输出 y ∈ R H ′ × W ′ \mathbf y\in R^{H' \times W'} yRH×W中位于 ( i , j ) (i, j) (i,j)位置的数据计算公式为:
y i j = ∑ m , n h , w x [ i + r ⋅ m , j + r ⋅ n ] ⋅ w [ m , n ] ( 7 ) \mathbf y_{ij} = \sum_{m,n}^{h,w} \mathbf x_{[i+r\cdot m,j+r\cdot n]} \cdot \mathbf w_{[m,n]} \qquad(7) yij=m,nh,wx[i+rm,j+rn]w[m,n](7)
通过控制扩张率 r r r 控制对输入特征图的采样步幅,常规卷积可视为扩张率 r = 1 r = 1 r=1的扩张卷积。本实验中对于每个SEM模块,有K中扩张率选择,其中 r k = m a x ( 1 , r 0 × k ) r_k = max(1, r_0 \times k) rk=max(1,r0×k),扩张率因子 r 0 r_0 r0和卷积层数目 K K K,两参数评估结果见原文Sec.4.3。
\qquad 根据本文所设计的网络结构双向级联的特点,在训练过程中,每层的两个预测值 P s 2 d P^{s2d} Ps2d P d 2 s P^{d2s} Pd2s对应着两个不同版本的supervisions,将各层输出融合得到最终结果。所以,BDCN的训练过程中包含了三种不同的损失计算,如公式8,9:
L = w s i d e ⋅ L s i d e + w f u s e ⋅ L f u s e ( P , Y ) ( 8 ) L s i d e = ∑ s = 1 S L ( P s d 2 s , Y s d 2 s ) + L ( P s s 2 d , Y s s 2 d ) ( 9 ) \mathcal L = w_{side}\cdot \mathcal L_{side} +w_{fuse}\cdot \mathcal L_{fuse}(P,Y) \qquad (8)\\ \mathcal L_{side} = \sum_{s=1}^S\mathcal L(P_s^{d2s},Y_s^{d2s}) +\mathcal L(P_s^{s2d},Y_s^{s2d}) \qquad (9) L=wsideLside+wfuseLfuse(P,Y)(8)Lside=s=1SL(Psd2s,Ysd2s)+L(Pss2d,Yss2d)(9)

\qquad 针对输出结果中,边缘\非边缘像素(edge/nonedge pixels)的分布不均匀的问题,采用class-balanced cross-entropy loss(公式10)计算损失(引文49. 50)(参考博客:正负样本不平衡处理方法总结【转】)。而对于edge/nonedge pixels的区分方法是设定阈值 γ \gamma γ ,由此得出edge/nonedge pixels集合的定义: Y + = { y i , y i > γ } Y_+ = \{ y_i, y_i \gt \gamma\} Y+={ yi,yi>γ} Y − = { y i , y i = 0 } Y_- = \{ y_i, y_i =0\} Y={ yi,yi=0},只有在此定义下的两种像素点才会被加入到损失计算公式中。
由此得出 L ( ⋅ ) \mathcal L(\cdot) L()公式:
L ( Y ^ , Y ) = − α ∑ j ∈ Y − l o g ( 1 − y ^ i ) − β ∑ j ∈ Y + l o g ( y ^ i ) ( 10 ) \mathcal L(\hat Y, Y) = -\alpha\sum_{j\in Y_-}log(1-\hat y_i) - \beta \sum_{j\in Y_+}log(\hat y_i) \qquad (10) L(Y^,Y)=αjYlog(1y^i)βjY+log(y^i)(10)
其中预测输出图 Y ^ = ( y ^ j , j = 1 , … , ∣ Y ^ ∣ ) , y ^ ∈ ( 0 , 1 ) \hat Y = (\hat y_j, j=1,\dots,|\hat Y|), \hat y\in(0,1) Y^=(y^j,j=1,,Y^),y^(0,1)
α = λ ⋅ ∣ Y + ∣ / ( ∣ Y + ∣ + ∣ Y − ∣ ) \alpha = \lambda \cdot |Y_+|/(|Y_+|+|Y_-|) α=λY+/(Y++Y) β = ∣ Y − ∣ / ( ∣ Y + ∣ + ∣ Y − ∣ ) \beta = |Y_-|/(|Y_+|+|Y_-|) β=Y/(Y++Y)两参数用于平衡edge/nonedge pixels, λ \lambda λ控制着 α \alpha α中正负样本的比重。

实验过程

训练集

训练集名称 training validation test
BSDS500 200 100 200
NYUDv2 381 414 654
Multicue 80 \ 20
PASCAL VOC Context dataset all \ \

参数设置细节

参数名称 BSDS500 NYUDv2 Multicue boundary Multicue edge
threshold γ \gamma γ 0.3 \ 0.3 0.4
λ \lambda λ 1.1 1.2 1.1 1.1
batch size 10 10
initial learning rate 1 e − 6 1e-6 1e6 1 e − 6 1e-6 1e6 1 e − 6 1e-6 1e6 1 e − 6 1e-6 1e6
momentum 0.9 0.9 0.9 0.9
weight decay 2 e − 4 2e-4 2e4 2 e − 4 2e-4 2e4 2 e − 4 2e-4 2e4 2 e − 4 2e-4 2e4
learning rate decreases 10t/10k iter 10t/10k iter 10t/10k iter 10t/10k iter
iterations 40k 40k 2k 4k
w s i d e w_{side} wside 0.5 0.5 0.5 0.5
w f u s e w_{fuse} wfuse 1.1 1.1 1.1 1.1
maximum tolerance allowed for correct matches 0.0075 0.011 0.0075 0.0075
K K K
r 0 r_0 r0

为之后能够与其他方法进行公平比较,使用standard Non-Maximum Suppression (NMS)生成最终预测结果图,采用公认的评估(Average Precision (AP),F-measure at both Optimal Dataset Scale (ODS) and Optimal Image Scale (OIS))指标进行测评。

实验结果

通过实验测试 K K K r 0 r_0 r0,确定最优设定为 K = 3 K=3 K=3 r 0 = 4 r_0=4 r0=4

与其他方法的比较

1.最优设定下的结果比较
2.减少网络层数的比较

未完待续zzz

你可能感兴趣的:(BDCN,边缘检测)