根据大小分割大文本_基于深度学习的图像分割在高德地图的实践

一、前言

图像分割(Image Segmentation)是计算机视觉领域中的一项重要基础技术,是图像理解中的重要一环。图像分割是将数字图像细分为多个图像子区域的过程,通过简化或改变图像的表示形式,让图像能够更加容易被理解。更简单地说,图像分割就是为数字图像中的每一个像素附加标签,使得具有相同标签的像素具有某种共同的视觉特性。

图像分割技术自 60 年代数字图像处理诞生开始便有了研究,随着近年来深度学习研究的逐步深入,图像分割技术也随之有了巨大的发展。早期的图像分割算法不能很好地分割一些具有抽象语义的目标,比如文字、动物、行人、车辆。这是因为早期的图像分割算法基于简单的像素值或一些低层的特征,如边缘、纹理等,人工设计的一些描述很难准确描述这些语义,这一经典问题被称之为“语义鸿沟”。


得益于深度学习能够“自动学习特征”的这一特点,第三代图像分割很好地避免了人工设计特征带来的“语义鸿沟”,从最初只能基于像素值以及低层特征进行分割,到现在能够完成一些根据高层语义的分割需求。

47f7a62dc035f7fa972505185ec866ca.png

(图像分割的发展历史)

高德地图拥有图像/视频大数据,在众多业务场景上都需要理解图像中的内容。例如,在数据的自动化生产中,通常需要寻找文字、路面、房屋、桥梁、指示牌、路面标线等目标。这些数据里有些是通过采集车辆或卫星拍摄,也有些数据则是通过用户手机拍摄,如下图所示:

1fa9a8dd10d827f716ba4d87f427e0cb.png

面对这些场景语义复杂、内容差异巨大的图像,高德是如何通过图像分割对其进行理解的?本文介绍了图像分割在高德地图从解决一些小问题的“手段”,逐步成长为高度自动化数据生产线的强大技术助力。

二、探索期:一些早期的尝试

在街边的数据采集中,我们需要自动化生产出采集到的小区、店铺等 POI (Point of Interest)数据。我们通过 OCR 算法识别其中文字,但苦恼于无法确定采集图像中到底有几个 POI。例如,下图中“领秀丽人”与“燕子童装”两家店铺,人眼可以很容易区分,但是对于机器则不然。一些简单的策略,比如背景颜色,容易带来很多的错误。

70b08cb57decaba88762e73f2d8eb839.png

例如,遇到两个样式十分相近的挂牌的时候,我们利用无监督的 gPb-owt-ucm 算法 [1] 在检测多级轮廓的基础上结合改进的分水岭算法将图像切分为多个区域,并利用 Cascade Boosting 的文字检测结果将图中带有文字的区域进行了分割。

三、成长期:自然场景下的语义分割

于 2014 年底问世的全卷积神经网络 [2](FCNs, Fully Convolutional Networks)无疑是继 2012 年问鼎 ImageNet 大赛以来深度学习发展的又一里程碑。FCNs 提供了第一个端到端式的深度学习图像分割解决方案。FCNs 在 CNN 的基础上可以从任意尺寸的输入进行逐像素的分类。我们也在第一时间将其落地到高德自身的应用场景中,例如文字区域的分割。自然场景下的文字由于其背景、光照复杂,文字朝向、字体多样,使得人工构建特征十分困难。

很快地,我们发现 FCNs 还并不能很好地满足我们的需求。虽然 FCNs 在解决语义鸿沟问题上提供了解决方案,但在一般情况下只能给出一个“粗糙”的区域分割结果,不能实现很好的“实例分割”,对于目标虚警、目标粘连、目标多尺度、边缘精度等问题上也没有很好地解决。一个典型的例子就是在分割文字区域时,“挨得近”的文字区域特别容易粘在一起,导致在计算图像中的文本行数时造成计数错误。

7021a123d330ea2a1839f851ab6452ab.png

因此,我们提出了一个多任务网络来实现自己的实例分割框架。针对目标粘连的问题,我们在原始网络中追加了一个分割任务,其目标是分割出每个文本行的“中轴线”,然后通过中轴线区域来拆分粘连的文本行区域。拆分的方法则是一个类似于 Dijkstra 的算法求解每个文本区域像素到区域内中轴线的距离,并以最短距离的中轴线作为像素归属。

d08fd7bc26d64735ee5d61417a0ccc53.png

另外一个比较困扰的问题是 FCNs 结果中的虚警,即非文字区域被分割为文字区域。虽然相较于一些传统方法,FCNs 结果中的虚警已经少了很多,但为了达到更好的分割正确率,我们在原有网络基础上增加了一个并行的 R-CNN 子网络进行文字的检测,并利用这些检测结果抑制虚警的产生(False Alarms Suppression)。

为了通过端到端的学习使得网络达到更好的效果,我们设计了一个一致性损失函数(Consistency Loss Function),来保证网络主干下分割子网络和检测子网络能够相互指导、调优。从优化后分割网络输出的能量图可以看到,虚警的概率明显降低了。若想要了解详细细节,可以参考我们 17 年公布在 arxiv 上的文章[3]。

73988abf98458252b417ec73b2e8c833.png

四、成熟期:分割的精细化与实例化

得益于 Mask R-CNN 框架 [4] 的提出,实例化的图像分割变得更加容易。以之前提到的商户挂牌的分割为例,挂牌区域的分割也十分容易出现粘连,且挂牌样式多样,不存在文本行这样明显的“中轴线”。目标检测方法可以对提取挂牌的外包矩形。但问题在于,自然场景下挂牌的拍摄往往存在非垂直视角,因此在图像上并不是一个矩形,通常的检测算法则会带来不准确的边缘估计。Mask R-CNN 通过良好地整合检测与分割两个分支,实现了通用的实例化图像分割框架。其中目标检测分支通过 RPN 提取目标区域,并对其进行分类实现目标的实例化;然后在这些目标区域中进行分割,从而提取出精准的边缘。

一些更加复杂的场景理解需求,也对图像分割分割精细程度提出了更高的要求。这主要体现在两个方面:(1)边缘的准确度(2)不同尺度目标的召回能力。

在高精地图的数据数据生产需要分割出图像中的路面,然而高精地图对于精度的要求在厘米级,换算到图像上误差仅在 1~2 个像素点。观察原始分割的结果不难发现,分割的不准确位置一般都是出现在区域边缘上,区域内部是比较容易学习的。

因此,我们设计了一个特殊的损失函数,人为地增大真值边缘区域产生的惩罚性误差,从而加强对边缘的学习效果,如图所示,左侧为可行驶路面区域分割,右侧是路面及地面标线分割。

7e1e0393459fa9b0db76f5f6d08384f1.png

道路场景下需要理解的目标种类繁多,一方面其本身有大有小,另一方面由于拍摄的景深变化,呈现在图像上的尺度也大小各异。特别的是,有些特殊目标,例如灯杆、车道线等目标是“细长”的,在图像上具有较大长度,但宽度很小。这些目标的特性都使得精细的图像分割变得困难。

095e2458e4afe0c9dc5f2ca45f081c54.png

首先,由于受到网络感受野的限制,过大和过小的目标都不容易准确分割,比如道路场景下的路面与灯杆,卫星影像中的道路与建筑群。针对该问题,目前的 PSPNet [5], DeepLab [6], FPN [7] 等网络结构都能在不同程度上解决。


其次,由于目标尺度不同,导致分割网络样本数量的比例极不均衡(每一个像素可以认为是一个样本),我们将原先用于目标检测任务的 Focal Loss [8] 迁移到图像分割网络中来。Focal Loss 的特点在于可以让误差集中在训练的不好的数据上。这一特性使得难以学习的小尺度目标能够被更加准确地分割出来。

123994a96e25640631ff39fb21b2c110.png

五、未来的展望

图像分割技术目前朝着越来越精确的方向上发展,例如 Mask Scoring R-CNN [9]、Hybrid Task Cascade [10] 的提出,在 Mask R-CNN 的基础上持续优化了其分割的精确程度。然而站在应用角度,基于深度学习的图像分割相较于当量的分类任务则显得“笨重”。

出于图像分割任务对精度的要求,输入图像不会像分类任务一样被压缩至一个很小的尺寸,带来的则是计算量的指数级增加,使得图像分割任务的实时性较难保证。针对这个问题,ICNet, Mobile 等网络结构通过快速下采样减少了卷积初期的计算量,但也带来了效果上的折损。基于知识蒸馏(Knowledge Distillation)的训练方法,则像个更好的优化方案,通过大网络指导小网络学习,使得小网络的训练效果优于单独训练。知识蒸馏在训练过程中规避了网络剪枝所需要的经验与技巧,直接使用较低开销的小网络完成原先只能大网络实现的复杂任务。

对于高德地图来说,图像分割已经是一个不可或缺的基础技术,并在各个数据自动化生产线中得到了广泛应用,助力高德地图的高度自动化数据生产。未来,我们也将持续在地图应用场景下打造更加精准、轻量的图像分割技术方案。

六、参考文献

[1] Arbelaez, Pablo, et al. "Contour detection and hierarchical image segmentation." IEEE transactions on pattern analysis and machine intelligence 33.5 (2010): 898-916.

[2] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. "Fully convolutional networks for semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.

[3] Jiang, Fan, Zhihui Hao, and Xinran Liu. "Deep scene text detection with connected component proposals." arXiv preprint arXiv:1708.05133 (2017).

[4] He, Kaiming, et al. "Mask r-cnn." Proceedings of the IEEE international conference on computer vision. 2017.

[5] Zhao, Hengshuang, et al. "Pyramid scene parsing network." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

[6] Chen, Liang-Chieh, et al. "Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs." IEEE transactions on pattern analysis and machine intelligence 40.4 (2017): 834-848.

[7] Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

[8] Lin, Tsung-Yi, et al. "Focal loss for dense object detection." Proceedings of the IEEE international conference on computer vision. 2017.

[9] Huang, Zhaojin, et al. "Mask scoring r-cnn." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.

[10] Chen, Kai, et al. "Hybrid task cascade for instance segmentation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.

 a2dcb34dd9331b07317afff915e3b89c.gif

相关文章是什么能让 APP 快速精准定位到我们的位置?

e4333b1b92d270edbed013410e6db044.png

59c286986d610a1d408bd786dabe47f3.png

“哪吒头”—玩转小潮流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别人不让你发传单怎么办?

人生在世难免遇到几个傻逼,我今天没有上班,去外面兼职发了一天的传单,也许你们没有过发传单的经历,当然了,我也不是想为了增加人生阅历去发传单,单纯就是今天没什么事情,刚刚好公司停电&#xf…

模块化加载_谈谈双亲委派模型的第四次破坏-模块化

前言JDK9引入了Java模块化系统(Java Platform Moudle System)来实现可配置的封装隔离机制,同时JVM对类加载的架构也做出了调整,也就是双亲委派模型的第四次破坏。前三次破坏分别是:双亲委派模型推出之前,SPI机制,以及O…

第4章 原子操作

有一件事情,你不得不承认,C语言相对汇编来说是高级语言,为什么,因为高级语言会形成封装,比如,我需要把一个变量A,对于CPU来说,先从内存里把这个变量读进运算寄存器,然后运…

龙芯下中标系统C语言查找设备号_龙芯:主控进驻国产激光打印机并适配麒麟OS...

导读:龙芯中科宣布,龙芯1C0300B作为主控芯片,已经批量用于天津光电出品的多款激光打印机中,在打印扫描、通信控制、协议解析方面发挥着重要的作用。图:龙芯1C0300B 主控芯片龙芯1C系列是基于GS232处理器核的高性价比单…

随笔日记

最近加班比较多,昨晚上又坐了最后一班地铁回家,回到家已经是一点了,在路上遇到一个美团外卖的小哥,小哥跟我说,嗨,帅哥,我想借你的头盔用一下,你们可以想象一下,在晚上12…

C#的命名空间

对于大型组织而言,如果涉及到产品线,项目,公共平台很多,如何通过命名空间将所有代码有效的组织起来。就一个目的,用的时候能够很容易的找到。 对于命名空间在大型项目中,必须组织好,一般命名空间…

今日头条关键词排名怎么搜索_公众号搜索关键词排名、公众号怎么排名靠前

真正的互联网老鸟其实都知道,不管在线上推广什么产品都好,其实都没有所谓的难度,获取流量方式其实就是简单的一批,哪里有怎么玄乎,不管以后遇到什么问题,除了首先需要知道的核心关键词,无非就是…

​CPU单挑到群架发展史

CPU 又称中央处理器,搞软件开发的兄弟已经耳熟能详了,CPU 的发展史最基本的矛盾就是软件性能需求的快速提升与 CPU 技术工艺性能提升发展相对缓慢之间的矛盾。摩尔定律也是基于此背景,将硬件性能的有限提升给软件开发者一个预期,告…

JDK、JRE、JVM三者间的关系

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含J…

典型方法_裴礼文老师编数学分析中的典型问题与方法练习参考答案的说明

裴礼文老师编《数学分析中的典型问题与方法》练习参考答案该书共计7章36节1036页,各章由知识点总结、例题和练习组成,知识点基本按照传统《数学分析》教材先后顺序跟进。例题和练习出自《数学分析》经典习题和近年《数学分析》考研试题,极具代…

第4章 原子操作 第二节

-------------------------------------------------------------上一章节说的原子操作,有同学在下面留言说,原子操作不是万能的吧?确实是,原子操作不是万能的,体系结构在完成原子操作部分也是花费了很大的心思&#x…

表格字体缩小 php_如何快速找出两个Excel表格不同的地方?

上一篇文章介绍了如何快速找出两个word文档不同的地方,这篇文章来说说如何快速找出两个Excel表格不同的地方,这里说的两个Excel表格,可以是同一个工作簿的不同sheet,也可以是两个不同的Excel文件,如下图:黄…

周一地铁遐想

连续两周的早上8点出门到晚上12点到家,今天中午睡不着,下午调试代码的时候感觉脑子眼睛有点迷糊,旁晚吃饭的时候,有几个同学还在微信私聊我问题,因为都是加了我的知识星球的同学,咨询的是个人的规划还有以后…

再说鸿蒙

上一篇文章已经被骂狗血了,我一直想找个时间好好澄清一些东西,正好今天晚上睡不着,现在是凌晨4点,我觉得应该再发下东西,当然了,还是以我特有的尿性,没有摆事实讲道理,就是我以为。1…

shell--基本语法

继续运算符模块。 part1 算术运算符 - * / % part2 关系操作 与(&#xff08;&#xff09;)连用 < > < > ! && || 注意&#xff1a;一个等号是赋值操作&#xff0c;两个等号是判断 test命令相关&#xff0c;[]可以达到一样的效果 part3 赋值运算符 * /…

锻炼身体

这周还没有发技术文章&#xff0c;着实是因为忙晕了头&#xff0c;不过不管有多忙&#xff0c;该吃饭的时候还是吃饭&#xff0c;该打球的时候还是打球&#xff0c;打球不是为了赚钱&#xff0c;但是是为了更好的赚钱&#xff0c;很多时候忽略了一些小事情&#xff0c;往往这些…

你今天忘本了吗?

我从小在农村长大&#xff0c;我们村前面有一条很长的河&#xff0c;我家在河的后面的那个小山坡上&#xff0c;背靠着大山&#xff0c;很多大师来我们家&#xff0c;都说我家这里是风水宝地&#xff0c;幸运的是&#xff0c;我就在这块风水宝地里长大了。后来&#xff0c;我很…

评分组件开发

我们知道&#xff0c;许多外卖app都有评分的星星&#xff0c;这里我总结一下对评分组件的开发&#xff0c;学习视频&#xff1a;饿了么实战&#xff08;慕课网&#xff09; 1.html部分 <div class"star" :class"starType"><span v-for"itemC…

第4章 第三节 内核同步

抢占式内核和非抢占式内核Linux 内核有两个空间&#xff0c;一个是内核空间一个是用户空间&#xff0c;如果一个进程正在内核态执行的时候&#xff0c;允许内核打断他的执行&#xff0c;让另一个进程执行&#xff0c;那么这个内核就是可抢占式内核。还有一种情况就是&#xff0…

第四章 第四节 per_cpu

我们上一章说了实现内核同步的方法很多&#xff0c;如下表技术说明适用范围每CPU变量在CPU之间复制数据结构所有CPU原子操作对一个计数器原子地“读-修改-写”的指令所有CPU内存屏障避免指令重新排序本地CPU或所有CPU自旋锁加锁时忙等所有CPU信号量加锁时阻塞等待所有CPU顺序锁…