社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

基于深度学习的图像边缘和轮廓提取方法介绍

小白学视觉 • 2 年前 • 679 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达


作者:黄浴 奇点汽车 首席科学家

整理:Hoh Xil

来源:

https://zhuanlan.zhihu.com/p/78051407



导读:边缘和轮廓的提取是一个非常棘手的工作,细节也许就会被过强的图像线条掩盖,纹理(texture)本身就是一种很弱的边缘分布模式,分级(hierarchical)表示是常用的方法,俗称尺度空间(scale space)。以前做移动端的视觉平台,有时候不得不把一些图像处理功能关掉,原因是造成了特征畸变。现在 CNN 模型这种天然的特征描述机制,给图像预处理提供了不错的工具,它能将图像处理和视觉预处理合二为一。

——边缘提取——

1. HED

整体嵌套边缘检测(Holistically-Nested Edge Detection,HED 是一个深度学习的边缘提取的算法,两个特色:(1)整体图像训练和预测; (2)多尺度、多层特征学习。该深度模型利用全卷积网络,自动学习丰富的分层表示(基于侧面响应的深层监督指导)。

多尺度深度学习可分为四类,即多流学习(multi-stream)、跳网(skip-net learning)学习、多输入单模型以及独立网训练,如图所示:(a)多流架构; (b)跳网架构; (c)多尺度输入的单一模型; (d)不同网络独立训练; (e)HED,其中添加多个侧面输出。

在表示和计算复杂性方面,(a)-(d)方法存在冗余。(e)HED 是一个相对简单的变体,能够从多个尺度产生预测。该结构可以被解释为(d)“独立网络”法的“整体嵌套”版,包括多个侧输出的单流深度网络。隐藏层监督可以改善图像分类任务的优化和泛化。如果需要统一输出,多侧向输出可以灵活地添加额外的融合层。

如图是 HED 的网络架构图,在卷积层之后插入侧输出层,在每个侧输出层施加深度监督,引导侧输出成为边缘预测。HED 输出是多尺度多层,侧输出面变小,感受野变大。一个加权融合层自动学习如何组合来自多个尺度的输出。整个网络通过多个误差传播路径(虚线)训练。

下图给出HED的部分实验结果。(a)测试图像;(b)手工标注的边缘;(c)HED 结果。(d)、(e)和(f)卷积神经网络的层2、3和4的侧边响应。(g)、(h)和(i)Canny 边缘检测器在尺度 σ= 2.0、σ= 4.0 和 σ= 8.0 的边缘响应。HED 与 Canny 在一致性方面显示出明显的优势。

2. CASENet

CASENet 将每个边缘像素与多于一个的边缘类相关联,是一种基于 ResNet 的端到端深度语义边缘学习的架构,同时也是一种跳层(skip-layer)架构,其中顶层卷积层的类别边缘激活共享并与底层特征的同一集融合,这里一种多标签损失函数来监督激活的融合。

三种 CNN 架构的比较如图(a)-(c)所示。图中实心矩形表示 CNN 层的组合块。宽度减小表示输出特征图的空间分辨率下降2倍。箭头旁边的数字表示输出特征的通道数。蓝色实心矩形是一堆 ResNet 块。紫色实心矩形是分类模块。红色虚线框表示输出由损失函数监控。灰色实心矩形是侧面特征提取模块。深绿色实心矩形是融合分类模块,执行 K 个分组1×1卷积。图(d)-(h)是图(a)-(c)中模块细节,其中矩形是输入和输出特征图。

图(a)是基础网络,采用全卷积网络框架,在 ResNet-101 删除平均池化和全连接层并保留底部卷积块;将 ResNet-101 中第一个和第五个卷积块(“res1”和“res5”)的步幅从2改为1;将扩张因子(dilation factors)引入后续的卷积层以保持原始 ResNet 相同的感受野;在基础网络的顶部,添加分类模块(图(d))作为1×1卷积层,然后是双线性上采样(由 K 分组反卷积层实现)产生一个 K 个激活图 { A1,···,AK } 的集合,其中每个激活图都与图像尺寸相同;然后,Yk(p)=σ(Ak(p))定义的 sigmoid 单元对像素属于第 k 类边缘的概率建模。

前面 HED 网络的基本思路是除了顶部网络损失以外还考虑底层卷积损失。另外,通过监督侧面激活的线性组合来获得融合边缘图。不过,HED 仅执行二进制边缘检测。深度监督网络(DSN)扩展了这种架构,处理侧输出的K通道和最终输出的 K 通道,如图(b)所示。在该网络中,将上述分类模块连接到每个残差块的输出,产生5个侧分类激活图 { A(1), ... , A(5)},其中每个激活图都有K通道。然后,通过切片连接层(sliced concatenation layer)融合这5个激活图(图中颜色表示图(g)的通道索引)产生 5K 通道激活图:

Af 馈入融合分类层,该分类层执行 K-组 1×1卷积(图(f))产生 K-通道激活图A(6)。最后,在激活图 {A(1),...,A(6)}计算6个损失函数,为该网络提供深入监督。

由于监督5个侧面激活,隐含地约束了那些侧面激活的每个通道只带有该类别最相关的信息。由于切片级联和分组卷积,像素 p 的融合激活由下式给出:

CASENet 采用嵌套式架构(nested architecture),改进点如下:

① 将底部分类模块更换为特征提取模块。

② 放置分类模块,仅在网络顶部施加监督。

③ 采用共享串联(图(h))而不是切片连接。

侧面特征提取和侧面分类之间的区别在于前者仅输出单个通道特征图 F(j)而不是 K 类激活。共享级联从 Side-1-3 复制底部特征 F = {F(1),F(2),F(3)},分别与 K 个顶部激活的每一个相连接:

到的连接激活图再被馈送到有 K-分组卷积的融合分类层,产生 K-通道激活图 A(6)。

通常 CASENet 被认为是联合边缘检测和分类的网络,它让较低级的特征参与并通过跳层结构增强高级的语义分类。

下图是 CASENet 和 DSN 的结果比较,从左到右:输入,基础事实,DSN 和 CASENet。CASENet 在具有挑战性的目标上显示出更好的检测质量,而 DSN 在非边缘像素有更多的误报。

——轮廓提取——

1. DeepEdge

以前大多使用纹理或显著性等低级特征来检测轮廓,而 DeepEdge 利用目标相关特征作为轮廓的高级线索检测。设计的是多级深度网络,由五个卷积层和一个分叉全连接子网络(bifurcated fully-connected subnetwork)组成。从输入层到第五个卷积层是预训练网络,直接用于图像输入的四个不同尺度。将这四个平行且相同的数据流连接到两个独立训练的分支组成的分叉子网络,一个分支学习预测轮廓似然(以分类为目标),而另一个分支训练学习在给定点轮廓的存在(基于回归测度),如图是 DeepEdge 架构图,其中 Canny 边缘检测器提取候选轮廓点,然后在每个候选点周围,提取四个不同尺度的补丁,同时通过预训练的 KNet 五个卷积层。

一个解释模型架构的单尺度示意图,在下图给出:首先,输入以候选点为中心的补丁,经过 KNet 五个卷积层;为了提取高级特征,在每个卷积层提取围绕中心点的特征图的小子容积,并在子容积上执行最大、平均和中心池化。池化值馈入分叉子网络。测试时,从分叉子网络的分支计算的标量输出做平均,生成最终轮廓预测。

如图给出部分实验结果:左到右依次为输入图像、Canny 边缘检测器产生的候选点集合、非阈值预测、阈值预测和基础事实图。为了生成阈值预测,概率阈值设为0.5。

2. CEDN

另外一种方法利用全卷积编码器-解码器网络(CEDN),端到端训练的数据来自 PASCAL VOC 中修正的不准确的多边形标注,其网络架构如图所示。

部分实验结果见图:从左到右依此是(a)输入图像,(b)GT 轮廓,(c)具有预训练 CEDN 的轮廓检测,和(d)具有细调 CEDN 的轮廓检测。

——参考文献——

1. G Bertasius, J Shi, L Torresani,“DeepEdge: A Multi-Scale Bifurcated Deep Network for Top-Down Contour Detection”, CVPR, 2015

2. S Xie, Z Tu,“Holistically-Nested Edge Detection“, ICCV 2015

3. W Shen et al.,“DeepContour: A Deep Convolutional Feature Learned by Positive-sharing Loss for Contour Detection”, CVPR 2015

4. Z Yu et al.,“CASENet: Deep Category-Aware Semantic Edge Detection”, CVPR 2017    

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/123383
 
679 次点击