深度学习中的图像分割:方法和应用
点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
作者:missinglink.ai
编译:ronghuaiyang
介绍使图像分割的方法,包括传统方法和深度学习方法,以及应用场景。
基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今,它被用于图像分类、人脸识别、图像中物体的识别、视频分析和分类以及机器人和自动驾驶车辆的图像处理等应用上。
许多计算机视觉任务需要对图像进行智能分割,以理解图像中的内容,并使每个部分的分析更加容易。今天的图像分割技术使用计算机视觉深度学习模型来理解图像的每个像素所代表的真实物体,这在十年前是无法想象的。
深度学习可以学习视觉输入的模式,以预测组成图像的对象类。用于图像处理的主要深度学习架构是卷积神经网络(CNN),或者是特定的CNN框架,如AlexNet、VGG、Inception和ResNet。计算机视觉的深度学习模型通常在专门的图形处理单元(GPU)上训练和执行,以减少计算时间。
什么是图像分割?
图像分割是计算机视觉中的一个关键过程。它包括将视觉输入分割成片段以简化图像分析。片段表示目标或目标的一部分,并由像素集或“超像素”组成。图像分割将像素组织成更大的部分,消除了将单个像素作为观察单位的需要。图像分析有三个层次:
-
分类 - 将整幅图片分成“人”、“动物”、“户外”等类别 -
目标检测 - 检测图像中的目标并在其周围画一个矩形,例如一个人或一只羊。 -
分割 - 识别图像的部分,并理解它们属于什么对象。分割是进行目标检测和分类的基础。
语义分割 vs. 实例分割
在分割过程本身,有两个粒度级别:
-
语义分割 - 将图像中的所有像素划分为有意义的对象类。这些类是“语义上可解释的”,并对应于现实世界的类别。例如,你可以将与猫相关的所有像素分离出来,并将它们涂成绿色。这也被称为dense预测,因为它预测了每个像素的含义。
-
实例分割 - 标识图像中每个对象的每个实例。它与语义分割的不同之处在于它不是对每个像素进行分类。如果一幅图像中有三辆车,语义分割将所有的车分类为一个实例,而实例分割则识别每一辆车。
传统的图像分割方法
还有一些过去常用的图像分割技术,但效率不如深度学习技术,因为它们使用严格的算法,需要人工干预和专业知识。这些包括:
-
阈值 - 将图像分割为前景和背景。指定的阈值将像素分为两个级别之一,以隔离对象。阈值化将灰度图像转换为二值图像或将彩色图像的较亮和较暗像素进行区分。
-
K-means聚类 - 算法识别数据中的组,变量K表示组的数量。该算法根据特征相似性将每个数据点(或像素)分配到其中一组。聚类不是分析预定义的组,而是迭代地工作,从而有机地形成组。
-
基于直方图的图像分割 - 使用直方图根据“灰度”对像素进行分组。简单的图像由一个对象和一个背景组成。背景通常是一个灰度级,是较大的实体。因此,一个较大的峰值代表了直方图中的背景灰度。一个较小的峰值代表这个物体,这是另一个灰色级别。
-
边缘检测 - 识别亮度的急剧变化或不连续的地方。边缘检测通常包括将不连续点排列成曲线线段或边缘。例如,一块红色和一块蓝色之间的边界。
深度学习如何助力图像分割方法
现代图像分割技术以深度学习技术为动力。下面是几种用于分割的深度学习架构:
使用CNN进行图像分割,是将图像的patch作为输入输入给卷积神经网络,卷积神经网络对像素进行标记。CNN不能一次处理整个图像。它扫描图像,每次看一个由几个像素组成的小“滤镜”,直到它映射出整个图像。
传统的cnn网络具有全连接的层,不能处理不同的输入大小。FCNs使用卷积层来处理不同大小的输入,可以工作得更快。最终的输出层具有较大的感受野,对应于图像的高度和宽度,而通道的数量对应于类的数量。卷积层对每个像素进行分类,以确定图像的上下文,包括目标的位置。
集成学习 将两个或两个以上相关分析模型的结果合成为单个。集成学习可以提高预测精度,减少泛化误差。这样就可以对图像进行精确的分类和分割。通过集成学习尝试生成一组弱的基础学习器,对图像的部分进行分类,并组合它们的输出,而不是试图创建一个单一的最优学习者。
DeepLab 使用DeepLab的一个主要动机是在帮助控制信号抽取的同时执行图像分割 —— 减少样本的数量和网络必须处理的数据量。另一个动机是启用多尺度上下文特征学习 —— 从不同尺度的图像中聚合特征。DeepLab使用ImageNet预训练的ResNet进行特征提取。DeepLab使用空洞卷积而不是规则的卷积。每个卷积的不同扩张率使ResNet块能够捕获多尺度的上下文信息。DeepLab由三个部分组成:
-
Atrous convolutions — 使用一个因子,可以扩展或收缩卷积滤波器的视场。 -
ResNet — 微软的深度卷积网络(DCNN)。它提供了一个框架,可以在保持性能的同时训练数千个层。ResNet强大的表征能力促进了计算机视觉应用的发展,如物体检测和人脸识别。 -
Atrous spatial pyramid pooling (ASPP) — 提供多尺度信息。它使用一组具有不同扩展率的复杂函数来捕获大范围的上下文。ASPP还使用全局平均池(GAP)来合并图像级特征并添加全局上下文信息。
SegNet neural network 一种基于深度编码器和解码器的架构,也称为语义像素分割。它包括对输入图像进行低维编码,然后在解码器中利用方向不变性能力恢复图像。然后在解码器端生成一个分割图像。
图像分割的应用
图像分割有助于确定目标之间的关系,以及目标在图像中的上下文。应用包括人脸识别、车牌识别和卫星图像分析。例如,零售和时尚等行业在基于图像的搜索中使用了图像分割。自动驾驶汽车用它来了解周围的环境。
目标检测和人脸检测
这些应用包括识别数字图像中特定类的目标实例。语义对象可以分类成类,如人脸、汽车、建筑物或猫。
-
人脸检测 - 一种用于许多应用的目标检测,包括数字相机的生物识别和自动对焦功能。算法检测和验证面部特征的存在。例如,眼睛在灰度图像中显示为谷地。 -
医学影像 - 从医学影像中提取临床相关信息。例如,放射学家可以使用机器学习来增强分析,通过将图像分割成不同的器官、组织类型或疾病症状。这可以减少运行诊断测试所需的时间。 -
机器视觉 - 捕捉和处理图像,为设备提供操作指导的应用。这包括工业和非工业的应用。机器视觉系统使用专用摄像机中的数字传感器,使计算机硬件和软件能够测量、处理和分析图像。例如,检测系统为汽水瓶拍照,然后根据合格 - 不合格标准分析图像,以确定瓶子是否被正确地填充。
视频监控 — 视频跟踪和运动目标跟踪
这涉及到在视频中定位移动物体。其用途包括安全和监视、交通控制、人机交互和视频编辑。
-
自动驾驶 自动驾驶汽车必须能够感知和理解他们的环境,以便安全驾驶。相关类别的对象包括其他车辆、建筑物和行人。语义分割使自动驾驶汽车能够识别图像中的哪些区域可以安全驾驶。 -
虹膜识别 一种能识别复杂虹膜图案的生物特征识别技术。它使用自动模式识别来分析人眼的视频图像。 -
人脸识别 从视频中识别个体。这项技术将从输入图像中选择的面部特征与数据库中的人脸进行比较。
零售图像识别
这个应用让零售商了解货架上商品的布局。算法实时处理产品数据,检测货架上是否有商品。如果有产品缺货,他们可以找出原因,通知跟单员,并为供应链的相应部分推荐解决方案。
英文原文:https://missinglink.ai/guides/computer-vision/image-segmentation-deep-learning-methods-applications/
请长按或扫描二维码关注本公众号
喜欢的话,请给我个在看吧!
本文分享自微信公众号 - AI公园(AI_Paradise)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Google推出可用来保护容器供应链的工具Voucher
Google云用户现可以使用容器供应链安全工具 Voucher ,确保部署到生产环境代码的安全性。Voucher是由电子商务公司Shopify所开发,可在Google云评估CI/CD所创建的容器镜像,并仅于满足预先定义的安全标准下,才给予这些镜像签章,二进制授权(Binary Authorization )会在部署时验证签章,确保符合组织策略和要求的代码,才能部署到生产环境中。 不少开发人员使用Kubernetes建构可扩展应用,但Google提到,要安全的进行扩展,必须要在应用供应链加入治理能力,包括托管安全基础镜像、容器Registry漏洞扫描,以及二进制授权等,才能保证大量部署的代码品质。 而Voucher则可以补齐二进制授权工具链,让用户保护应用供应工作管线,Voucher是一个开源工具,遵守元数据服务器Grafeas规范,其生成的签章,可供二进制授权或是Kubernetes策略引擎Kritis使用。 使用者可在镜像构建之后,在生产部署之前,于CI/DC工作管线呼叫Voucher,Voucher会从镜像库中,撷取新构建的镜像,并且进行用户要求的所有检查,一旦通过检查,Vouch...
- 下一篇
一文把三个经典求和问题吃的透透滴。
点击上方“五分钟学算法”,选择“星标”公众号 重磅干货,第一时间送达 今天为大家带来三道求和问题,通过文字,图画,动图为大家解析,很容易就能读懂,每道题目都是经典题,大家快来打卡吧。 题目来源:leetcode 1.两数之和(简单) 15.三数之和(中等) 18.四数之和(中等) 两数之和 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 题目很容易理解,即让查看数组中有没有两个数的和为目标数,如果有的话则返回两数下标,在这为大家提供两种解法双指针(暴力)法,和哈希表法,大家可以看一下。 哈希表法 解析 哈希表的做法很容易理解,我们只需通过一次循环即可,假如我们的 target 值为 9,当前指针指向的值为 2 ,我们只需从哈希表中查找是否含有 7,因为...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长