边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection

Source code and paper address

Source code is available at https://mmcheng.net/rcfedge/.
Paper : http://mftp.mmcheng.net/Papers/19PamiEdge.pdf

Abstract

摘要:边缘检测在计算机视觉中是一个比较基础的问题。近年来,CNNs 的发展对这一领域的发展起着重要的推
动作用。现有的许多采用深层CNNs的边缘检测方法在复杂数据结构的特征提取上可能存在着不足,这些复杂的数据结构往往产生于尺度的变化和不同的高宽比。在本文中,我们提出了一种基于更丰富的卷积特征(richer convolutional features, RCF)的精确边缘检测算法。RCF将所有卷积特性封装成更加具有区分性的表示形式,这种形式充分利用了丰富的特性层次结构,并且可以通过反向传播进行训练。RCF 充分的利用了目标的多尺度与多等级信息,实现了对图像的整体预测。基于VGG16的深度网络架构,我们在在现有的数据集上实现了当前最好的性能。在 BSD500上,我们实现了非常好的性能,ODS F-measure: 0.811, FPS: 8。快速版本: ODS F-Measure: 0.806,FPS:30。通过将 RCF 边缘应用到经典的图像分割中,整平了其更加广泛的应用性。

1. 经典边缘检测

2. 作者的观点

  • 传统的边缘检测算法虽然也很有前景,但是其局限性在于其得到的低层级特征信息很难去表征高层次信息;
  • 大多数基于 CNNs 的边缘检测方法,仅仅只利用卷积网络的最后一层,在深层次的特征信息中确实了浅层的细节信息,而且容易导致网络无法收敛以及梯度消失的情况。

       从上图可以看到,高层的特征逐渐变得粗糙,而且浅层的特征并未在深层特征中提现出来。可以看到,深层的信息对于图像的细节信息是模糊的,特征提取的并不充分。
       因此,作者提出了RCF网络架构,该架构在每一个卷积层都计算其Loss,且将所有层的特征信息进行融合得到最终的特征。

3. Richer Convolutional Features (RCF)

       RCF的网络结构特点:

       RCF卷积网络:

       在 RCF网络中,所有的卷积层都被很好的集成到最终的特征表hi中,而这种方式可以通过反向传播进行训练。VGG16中的每层卷积的感受野的尺寸皆不相同,RCF比现有的方法的优点之处在于它的机制可以更好的去学习多尺度的信息,这些信息分别来自于不同层次的卷积特征。在RCF中,深层次的特征比较粗糙,对于较大的目标以及目标的部分边缘处可以得到比较强的响应。同时,浅层的特征可以为深层特征补充充分的细节信息。

4. Annotator-robust Loss Function

       边缘检测领域中的数据集往往是不同标注者进行标注,他们标注时所利用的知识只限于他们本身对目标物体或者目标部分物体的认知。虽然人与人之前的认知各不相同,但是其对相同图像的边缘标注具有非常高的一致性。因此,对于每张图像,作者通过对所有的 ground truth 求取均值,生成新的边缘概率映射图,其值范围为[0, 1]。在这里,0 意味着没有标注者将其标注为边缘像素; 1 意味着所有的标注着都将其标注为边缘像素。作者将边缘概率值超过A的作为正样本,概率值等于0的作为负样本。另外,如果一个想读的概率值小于A,那么这个像素在作为边缘点在语义上是存在争端的。因此,将这些像素点当做是正样本或者负样本可能会对网络产生影响。因此,作者将这部分的像素点去除掉,但是在HED中,其作者使用固定的值 A=0.5, 并将小于 A 的像素点当做负样本。
       单个像素的的损失函数的计算表达式如下:

式中,

Y+和Y-分别表示正样例于负样例。超参数 lanbda 平衡正负样例。当前像素的CNN特征向量以及ground truth的边缘概率值分别用Xi和Yi表示。P(X)表示标准sigmoid函数,W表示本文网络结构将要学习的所有参数。因此,进过优化之后的损失函数如下:

式中,X_i_k表示第k阶段的CNN特征向量,X_i_fuse是最终融合层的特征向量。|I|是图像的所有像素的个数,K表示总得训练阶段(本文中是5)。

5. 多尺度分层边缘检测

       在单尺度边缘检测中,本文将原始尺寸图像传入可调整的RCF网络中,其输出结果是边缘概率映射。为了提升边缘的质量,本文在测试阶段使用图像金字塔策略。即将每幅原始图像resize成不同尺寸的图像,然后将其分别传入单尺度的边缘检测框架中。接着,将所得到的概率映射使用双线性插值算法恢复到原始尺寸。最后,将这些概率映射进行融合,从而得到最终的预测。融合概率映射的策略使计算其均值。虽然RCF本身可以编码不同尺度的信息,但是在本文算法的早期版本中,第一次证明了多尺度测试对边缘检测是有益的。考虑到精度于速度之间的矛盾性,本文中使用的图像金字塔尺度分别为 0.5,1.0 和 1.5。

6. RCF vs HED

       RCF与HED之间最明显区别之处在以下三个方面:

  1. HED对于边缘检测来说,丢失了许多非常有用的信息,因为它仅使用到VGG16中每个阶段的最后一层卷积特征。RCF与之相反,它使用了所有卷积层的特征,使得在更大的范围内捕获更多的对象或对象局部边界成为可能。
  2. RCF创造性的提出了一个对训练样本非常合适的损失函数。而且,本文首先将标注人数大于A的边缘像素作为正样例,为0的作为负样例。除此之外,还忽略了标注者人数小于A的边缘像素,既不作为正样例,也不作为负样例。与之相反的是,HED将标注人数小于总人数一半的边缘像素作为负样例。上述做法会迷惑网络的训练,因为这些点并不是真实的分边缘像素点。
  3. 本文的早期版本,第一次证明了多尺度测试对于边缘检测的好处。

7. 实验部分

       本文的网络实现平台为 Caffe架构。默认使用的基础网络是 VGG16, ResNet作为基础网络也测试过。在训练过程中,每个stage 的11卷积的初始化使用的是零均值的高斯分布,标准差为 0.01,偏置b设为0。最后融合部分的11卷积核初始化的值为0.2,偏置依然为0。其他卷积层的初始化使用的是ImageNet的预训练模型。随机梯度下降法(SGD)在每次迭代中随机抽取10(minibatch)幅图像作为样本。
       SGD的超参数中,全局学习率:1e-6,每10k次迭代之后,学习率将除以10。动量(momentum)和权重衰减(weigth decay)分别设置为0.9 和0.0002。整个训练迭代次数为40k次。参数 A 和 lanbda的设置根据训练数据集来设定,使用的GPU为 NVIDIA TITAN X.
       对于一个给定的边缘概率映射,需要设定一个阈值进行二值化。有两种策略可以选择,第一种是对数据集中的所有图像设定一个固定的阈值,称为 ODS(optimal dataset scale)。另一种是对每张图像都设定一个与之,称为 OIS(optimal image scale)。每种策略都会计算其F-Measure。

7.1 BSDS500 Dataset

下载地址:https://www2.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/resources.html

       BSDS500在边缘检测领域中是一个被广大学者使用的数据集,它由200张训练图像,100张验证验证图像,以及200张测试图像组成,每张图像会被4-9个标注者标注。本文中使用训练与验证集来训练调整网络,测试集来评估检测器的性能。数据扩增方式与HED相同。本文同时将BSD500与flipped VOC Context 数据集混合作为训练数据。训练时,设定A=0.5, lanbda=1.1。评价网络性能时,使用NMS(非极大值抑制)对得到的边缘进行细化。

       上图时各种算法在BSDS500上的PR曲线。可以看到人眼识别的性能的F-measure是0.803,而RCF(单尺度), RCF-MS(多尺度),RCF-ResNet50-MS,RCF-ResNet101-MS的新能皆由于人眼识别的能力。而且,网络更深的ResNet50和ResNet101的性能要更好。上述结果证明了RCF网络结构的有效性。我们可以从上图看到,RCF的曲线比其他的方法咬断,这或许揭示着RCF保留置信度较高的边缘。

       上面的表格列出了不同边缘检测方法在BSD500上的性能评估数值以及实际运行速度。检测性能最好的是RCF-ResNet101-MS, 速度最快的是RCF。整体来看,RCF在性能上与速度上的综合性能最好。

7.2 NYUD Dataset

下载地址: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2

NYUD 数据集由不同的室内场景中的视频序列组成,它是由微软的Kinect的RGB与深度相机拍摄而成。NYUD数据集具有以下特征:

  • 1449 对校正后的RGB图像与深度图像
  • 464个来自于3个不同城市的新场景
  • 407024未标注的帧图像
  • 每一个目标的类别都进行了标注,而且每个实例的标注都区分开来,例如 cup1, cup2, cup3

该数据集由3部分组成:

  • Labeled: 视频数据拥有一个经过密集多类别标注的子集。这些数据还经过预处理,以填充缺少的深度标签。
  • Raw: Kinect提供的原始rgb,depth,以及加速器数据
  • Toolbox: 用来评估数据以及标签的函数

Labeled Dataset

       标注的数据集是原始数据集的一个子集,它由成对的RGB和深度帧组成,这些帧已被同步,并为每个图像添加了密集的标签。与原始数据不同的是,标注的数据的文件形式是mat文件,其包含的变量如下:

  • accelData - N×4:表示着每帧图像的采集时间的加速器竖直,每一列分别表示 roll(横摇), yaw(偏航), pitch(俯仰), titlt angle(倾斜角度)
  • depths - H×W×N 矩阵:H和W分别表示补全深度图的高和宽,N表示图像的数量。深度元素数值的单位是米
  • images - H×W×3×N矩阵:RGB图像,N表示图像个数
  • instances - H×W×N矩阵 : 实例映射图,可以使用 get_instace_masks.m 将实例的Mask显示到图象上
  • labels - H×W×N : 目标标注的masks, labels的范围[1, C], C是总的类别数。如果像素的标注值是0, 则说明其未被标注
  • names - C×1 : 每个类别的英文名称
  • namesTolds - label names 到 class ID的映射
  • rawDepths - H×W×N : 原始深度图像。这些深度映射是在将深度图像投影到RGB图像平面上捕捉的,是缺失的深度值被填充之前的深度图像。此外,Kinect设备的深度非线性已经被移除,每个深度图像的值都以米为单位。
  • rawDepthFilenames - N×1 cell array: 在标注数据集中的深度图像使用的文件名
  • raeRgbFileNames - N×1 cell array : RGB图像使用的文件名
  • scenes - N×1 cell array : 每张图像的场景名
  • sceneTypes - N×1 cell array : 每张图像的场景类型

Raw Dataset

       我们可以看到深度图像中缺失了一些数值,造成这种结果原因有以下几个:(a) 由红外发射器与相机之间的差异造成的阴影; (b)由镜面或低反照率表面造成的随机缺失或假值。
       原始数据集包含来自Kinect的原始图像和加速器dumps。RGB与深度图像的采样率在20到30FPS之间。虽然帧不是同步的,但是每个RGB、depth 和 accelerometer文件的时间戳都包含在每个文件名中,可以使用get_synched_frames.m生成同步的连续视频。

Toolbox

Matlab toolbox中包含着一些处理数据的函数:

  • camera_params.m : 包含采集数据所使用的Kinect的相机参数
  • crop_image.m : 裁剪图像,其目的是只适用深度信号映射的区域
  • fill_depth_colorization.m : 使用 Colorization 方法来填充深度图
  • fill_depth_cross_bf.m : 使用多尺度交叉双边滤波方法填充深度图
  • get_instance_masks.m : 妇女会每个目标实例的二值mask
  • get_synched_frames.m : 返回可以用来生成每个场景RGBD视频的同步RGB和depth帧
  • get_timestamp_from_filename.m : 从原始数据集文件名返回时间戳。这对于以均匀的时间间隔采样原始视频转储非常有用
  • project_depth_map.m : 在RGB图像平面上从Kinect映射深度图。

       本文根据HED中的设定来训练和验证RCF。我们使用HHA来利用深度信息,这些深度信息被编码为3个通道: 水平视差(horizontal disparity),离地高度(height above ground),与重力的角度(angle with gravity)。因此 HHA特征可以通过正则化表示成一张彩色图像。本文将RGB model与HHA model分开进行训练。在训练的过程中,lanbda的设定值为1。因为NYUD只有一个ground truth,所以 A在这里不起作用, 其他的设置与 BSDS500一样。在测试阶段,最终的边缘预测是RGB与HHA模型输出的平均值。当进行性能评估时,增加定位误差的容忍成都[0.0075, 0.011],即预测像素与gt之间的匹配距离,因为NYUD数据中的图像要比BSDS500中的图像大。

       上述图像为本文算法与其他算法的对比结果。OEF只使用了RGB图像,其他的方法都是用了深度与RGB的信息。RCF在NYUD数据集中得到了最好的结果,性能明显的优于HED。

       上述表格为统计得到的一些数据, 可以看到RCF在HHA、RGB、HHA+RGB上都取得了很好的结果。

7.3 NetWork Discussion

       为了进一步探索本文提出的网络结构的有效性,本文使用VGG16实现了一些混合网络,将丰富的特征侧输出连接到一些卷积阶段,同时将HED的边输出连接到其他阶段。实验仅在BSDS500上进行训练与测试,并且是在单尺度的状态下,性能评价结果如下表所示:

       最后两行分别表示HED与RCF的评价结果。从其他结果可以看到,所有的这些混合网络都要比HED性能好。因此,可以证明本文提出的RCF策略的重要性。
       为了研究加入额外的非线性是否对网络有帮助,本文在 1121和111之后连接了Relu层。然而,实验结果不是很好。尤其是,当我们尝试着将非线性激活函数加在111之后时,网络很难收敛。

7.4 Experiments on Image segmentation

       自然图像预测的边缘往往会用在另一个低层次的视觉技术领域,即图像分割,其旨在将相似的像素聚集在一起形成感知区域。为了将边缘预测映射应用到图像分割中,本文将RCF应用到COB框架中,COB是一个非常经典的图像分割方法。评价标准有两个:一个是 boundary measure,另一个是评价分割结果与ground truth之间的region similarity 。
       实验结果如下:

发布了38 篇原创文章 · 获赞 29 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/ruotianxia/article/details/100055506
今日推荐