【边缘检测】HED论文笔记

论文全称:Holistically-Nested Edge Detection

亮点

1、基于整个图像的训练和预测

2、多尺度和多水平的特征学习

3、基于FCN和VGG 改进

4、通过多个side output输出不同scale的边缘,然后通过一个训练的权重融合函数得到最终的边缘输出。可以solve edge 和物体boundaries的ambiguity

检测效果

算法结构 

作者提出的holistically-nested方法,主要通过几种不同的多尺度深度学习下的结构进行对比说明。在多尺度方面,有更加内部网络形成的多尺度,和外部网络形成的多尺度。前者是学习神经网络里不同层由于降采样的不同得到的不同尺度特征,结合形成多尺度,后者是通过对输入图像的尺度处理时的多尺度,获得不同尺度信息。作者将具体多尺度下的深度学习分为四种,如下图。

(a)Multi-stream learning 示意图,可以看到图中的平行的网络下,输入是同时输进去,经过不同路的network之后,再连接到一个global out layer得到输出。

(b)Skip-layer network learning 示意图,该方法主要连接各个单的初始网络流得到特征图,并将图结合在一起输出。

这里(a)和(b)都是使用一个输出的loss函数进行单一的回归预测,而边缘检测可能通过多个回归预测得到结合的边缘图效果更好。

(c)Single model on multiple inputs 示意图,单一网络,图像resize方法得到多尺度进行输入。

(d)Training independent networks ,通过多个独立网络分别对不同深度和输出loss进行多尺度预测,该方法下训练样本量较大。

(e)Holistically-nested networks,本文提出的算法结构,从(d)演化来,类似地是一个相互独立多网络多尺度预测系统,但是将multiple side outputs组合成一个单一深度网络。

网络架构

作者在conv1_2, conv2_2, conv3_3, conv4_3,conv5_3后面分别引出侧输出,然后接入sigmoid_cross_entropy_loss,并且在最后一层,对上面的5层的输出做了concat,同时也接入sigmoid_cross_entropy_loss,这样所有的Loss都等概率的同时训练,从而使得最终得到比较好的模型。

在预测阶段,可以直接取最后一层的输出结果最为最终结果。也可以将所有的层的输出结果都得到,然后求一个平均作为最终结果。这样做的优势就是会使得精度进一步提高,缺点就是加入额外操作,时间会增加。

具体改动:

基于VGG网络,

1)将side output layer 与每个stage(理解为每一组卷积池化)的最后一层卷积层相连,也就是conv1_2, conv2_2, conv3_3, conv4_3,conv5_3,这些卷积层的卷积核尺寸与对应的side-output layer完全相同。

2)去掉了VGG的最后一个stage,也就是最后一个池化和后面所有的全连接层。

画图理解

把 VGG16 变成下面这种示意图:

去掉不需要的部分后,就得到上图这样的网络结构,因为有池化层的作用,从第二组开始,每一组的输入 image 的长宽值,都是前一组的输入 image 的长宽值的一半。

 HED 网络是一种多尺度多融合(multi-scale and multi-level feature learning)的网络结构,所谓的多尺度,就是如上图所示,把 VGG16 的每一组的最后一个卷积层(绿色部分)的输出取出来,因为每一组得到的 image 的长宽尺寸是不一样的,所以这里还需要用转置卷积(transposed convolution)/反卷积(deconv)对每一组得到的 image 再做一遍运算,从效果上看,相当于把第二至五组得到的 image 的长宽尺寸分别扩大 2 至 16 倍,这样在每个尺度(VGG16 的每一组就是一个尺度)上得到的 image,都是相同的大小了。

参考:https://blog.csdn.net/sinat_26917383/article/details/73087831

猜你喜欢

转载自blog.csdn.net/qq_30159015/article/details/82497974
今日推荐