计算机视觉的深度学习应用

224 阅读16分钟

计算机视觉的深度学习应用

深度学习一直是计算机视觉领域的游戏规则改变者。它被广泛用于教导计算机 "看 "和分析环境,类似于人类的方式。它的应用包括自动驾驶汽车,机器人,数据分析,以及更多。

在这篇博文中,我们将详细解释深度学习在计算机视觉中的应用。但在此之前,让我们了解一下什么是计算机视觉和深度学习。

什么是计算机视觉?

计算机视觉(CV)是人工智能的一个领域,使计算机能够从图像、视频和其他视觉来源中提取信息。

作为一门科学学科,计算机视觉关注的是从图像中提取信息的人工系统背后的理论。作为一门技术学科,计算机视觉试图将其理论应用于实际计算机视觉系统的开发。计算机视觉的总体目标是开发能够自动识别、处理和解释视觉内容的系统,以解决各种领域的任务。计算机视觉被用于视频监控、公共安全,最近还被用于汽车的驾驶辅助,以及制造和物流等过程的自动化。

What is compter vision

什么是深度学习?

深度学习(DL)是一种基于人工神经网络(ANN)的机器学习方法。深度学习涉及在大型数据集上训练人工神经网络。这些网络由许多层信息处理单元(神经元)组成,其灵感松散地来自于大脑的工作方式。

每个神经元对来自其他单元的输入执行自己的简单操作,并将其输出发送到后续层的其他单元,直到我们得到一个具有预测值的输出层。深度神经网络可以有许多参数(在某些情况下超过1000万),这使它们能够学习输入和输出之间复杂的非线性关系。

有几种类型的NNs:

  • 卷积式(CNN)
  • 递归式(RNN)
  • 生成对抗性(GAN)
  • 递归

用于计算机视觉的最关键的神经网络类型是卷积神经网络。它们已经成功地应用于许多不同的领域,如航空航天和医疗保健。

什么是卷积神经网络?

卷积神经网络(CNNs)是具有卷积层的人工神经网络。CNN的主要好处是,它们可以直接从原始像素值中学习特征,而不需要任何手工设计的特征或以前关于世界的知识。

以下是用于图像识别的过程。网络被赋予一个由像素组成的图像。在第一个卷积层中,过滤器被应用于图像中的每个像素以创建一个特征图。然后,该图被送入另一层过滤器,产生另一个图,如此反复,直到最后一层做出预测。

Convolutional neural networ structure

计算机视觉的历史

1959年,第一台数字图像扫描仪将图像转换成数字网格,使计算机能够识别图片。几年后,被普遍认为是互联网和计算机视觉先驱的劳伦斯-罗伯茨,促进了关于从二维图像中得出三维几何数据的可能性的讨论。在此之后,一些学者开始研究低层次的视觉任务,如分割和识别。

一些概念被开发出来,包括记录和/或捕捉物体并通过构成部分识别它们的方法。这些都是基于这样的假设:人眼可以通过将物体分解成主要的组成单位来识别它们。20世纪80年代,日本计算机科学家Kunihiko Fukushima发明了新认知,即现代卷积神经网络的前身。

在整个20世纪90年代和21世纪,一个叫做特征工程的过程被用来手动构建特征,以训练视觉任务的机器学习算法。

2012年,当AlexNet计算机视觉算法在ImageNet大规模视觉识别挑战赛上的表现比其竞争对手高出10%时,计算机视觉领域取得了重大突破。该模型并不依赖手工生成的特征,而是依赖神经网络。

AlexNet computer vision algorithm

从那时起,由于深度学习和计算能力的发展,计算机视觉系统的效率、精度和整体可靠性都有了明显的提高。计算机视觉现在几乎能够像人眼一样有效地识别物体和模式。随着深度学习网络的发展势头,CNN架构是最常用的神经网络类型之一。

深度学习是如何应用于计算机视觉任务的?

那么,DL究竟是如何应用于计算机视觉的呢?在卷积神经网络的帮助下,深度学习能够完成以下任务。

  • 物体识别
  • 人脸识别
  • 运动检测
  • 姿势估计
  • 语义分割

物体识别(检测)

如今,人工智能能够以99%的准确率识别静态和动态移动的物体。这是如何做到的呢?一般来说,就是把图像分成几个片段,让算法找到与现有物体之一的相似之处,以便把它归入其中一个类别。

分类在这个过程中起着重要作用,物体识别的成功很大程度上取决于物体数据库的丰富程度。

一阶段和两阶段的物体识别方法

在引入YOLO(You Only Look Once)算法之前,物体识别是分两个阶段进行的。首先,图像被划分为几个边界框,重点是潜在的物体。之后,进行物体的识别。

在单阶段方法中,网络一次性检测和识别图像。观看这个简短的视频,看看物体识别是如何实时工作的。

今天,我们可以选择一阶段或两阶段的方法,这取决于目标和对我们来说什么是优先事项--速度或准确性。例如,两阶段的物体识别方法将是分析病人的乳房X光检查的最佳解决方案。在这种情况下,准确性比速度更重要。相反,没有必要看到直接驶向你的汽车的所有细节。在这种情况下,关键是要识别物体的大小和方向,以便驾驶助手能在几秒钟内刹车,避免发生事故。

如果你想了解更多关于物体检测的知识,并练习自己做,可以看看这个长达5小时的TensorFlow课程

人脸识别

人脸识别的基本原则与物体识别的基本原则是一样的。不同的是,重点转移到识别图像或视频中人脸的必要细节。为此目的,使用了一个广泛的人脸数据库。该算法分析的细节包括面部轮廓、两眼之间的距离、耳朵和颧骨的形状等。

该过程中最复杂的部分是在不同角度、光照条件、或戴着面具或眼镜的情况下识别同一人物。目前,卷积神经网络正在被教导使用三维面孔的低维表示,分类器以其预测为基础。这种方法有可能实现比使用二维图像更好的准确性,以及比简单的三维识别更高的操作速度。

人脸检测和人脸识别之间的区别是什么?

人脸检测是验证图像/视频中是否存在人脸的事实。相比之下,人脸识别是对系统从数据库中已知的特定人进行识别。人脸检测是人脸识别过程的第一个阶段。

尽管人脸识别可以大大简化许多现实世界的流程,如机场的安全检查和监控,但这项技术仍然存在争议。问题是,通过人脸识别检索的数据的使用仍然不受监管,这引发了对隐私的担忧。

极端的例子是中国的社会信用体系 ,它包含了公民生活的所有方面,用于判断人们的 "可信度"。来自街头监控系统的数据,以及来自银行、政府机构和其他机构的信息,由一个中央中心进行分析。在此基础上,公民获得或失去信用点,影响他们获得工作和社会福利的能力。

在美国,执法部门使用面部识别是一个重要问题。由于这个原因,2021年11月,Facebook宣布关闭其面部识别系统,删除了超过10亿用户的面部扫描数据。

运动检测

运动检测是任何监控系统的一个关键部分。这可能被用来触发警报,向某人发送通知,或简单地记录事件供以后分析。

检测运动的一种方法是使用运动检测器,它检测图像序列帧之间的变化。运动检测的最简单形式是阈值处理。这种方法在帧中的每个像素上设置一个特定的值(阈值),并确定该像素与之前的值相比是否有足够的变化,从而被认为是有明显的变化。

运动检测也可以用边缘检测技术来完成。边缘检测工具在图像中寻找边缘,然后识别那些被标记为与周围像素不同的像素。

如果你想更深入地了解运动检测过程的技术层面,请观看此视频

姿势估计

人的姿势识别是一项具有挑战性的计算机视觉任务,因为人的形状和外观种类繁多,光照困难,而且景物拥挤。对于这些任务,照片、图像序列、深度图像或来自运动捕捉设备的骨骼数据被用来估计人体关节的位置。在深度学习出现之前,人体姿势估计是基于对身体部件的识别。

人体姿势估计包括从图像或图像序列中识别人的位置和方向。这可以使用单一的图像来完成,但通常是使用多个点来捕捉不同的身体部位,以提高准确性和稳定性。

下面的视频对姿势估计过程给出了一个很好的概念。

语义分割

语义分割是深度学习的一种类型,它试图将图像中的每个像素划分为几个类别之一,如道路、天空或草地。然后在训练中使用这些标签,这样当新的图像被处理时,也可以根据它们与以前看到的图片相比的样子,将它们划分到这些类别中。

语义分割的总体目标是将物体从背景中分离出来。它在自动驾驶汽车、机器人和人的互动或其他计算机视觉应用中可能很有用,在这些应用中,理解图像中发生的事情同时排除噪音是很重要的。

下面的视频对语义分割的工作原理做了更详细的解释。

关键的计算机视觉挑战

尽管计算机视觉最近有了显著的进步,但研究人员仍需解决几个主要挑战。

其中之一是物体定位。人工智能不仅要能对物体进行分类,还要能确定其位置。算法还需要非常快速地进行物体识别,以满足实时视频处理的要求。

计算机视觉中另一个有待解决的困难问题是场景识别。这项任务由几个子课题组成,需要回答以下问题。

  • 图像中正在发生什么?
  • 场景中的视觉和结构元素是什么?
  • 这些元素之间的关系如何?

这个问题的解决因另一个方面而变得复杂。在实时环境中,摄像机的输入往往是基于一系列从传感器不断传来的线条。它们被用来更新屏幕上不断变化的图像。算法可能会被各种因素混淆,例如,一辆卡车拖车在一辆汽车前面。

Scene recognition in computer vision 另一个问题是对所识别场景的正确解释:物体是到达还是离开,门是打开还是关闭。为了正确地对事件进行分类,应该向系统提供更多的信息,由于缺乏数据或能力有限,这并不总是可能的。

计算机视觉的一个主要障碍是目前可用于物体识别的注释数据量很小。数据集通常包括大约12到100个物体类别的例子,而图像分类数据集可以包括多达10万个类别。众包通常会产生免费的图像分类标签(例如,通过解析用户提供的标题的文本)。然而,为物体识别创建准确的边界框和标签仍然非常耗费时间。

用于计算机视觉的高级深度学习方法

为了解决上述的计算机视觉挑战,有一系列的高级方法,研究人员不断地在努力。

它们包括:

  • 端到端学习这种方法用于深度神经网络(NN),它被教导解决一个复杂的任务,而不把它分解成子任务。它的主要优点是,学习过程由NN本身控制,这意味着它是一个完全自学的系统。

  • 一次性学习这种方法是基于差异评价问题,并意味着学习过程中需要一个或几个训练实例(相对于分类模型中的成千上万个实例)。这样的计算机视觉系统可以查看它以前从未见过的两幅图像,并确定它们是否代表同一个物体。

  • 零点学习在这种情况下,一个模型被教导去识别它以前没有见过的物体。零拍方法通过一些辅助信息将观察到的和未观察到的类别联系起来。例如,一个模型已经被训练成能够识别马,但却没有见过斑马。如果它知道斑马看起来像有条纹的黑白马,它就可以识别后者。

计算机视觉在各行业的应用

计算机视觉已经越来越多地被用于广泛的行业,包括运输、医疗体育、制造、零售等。在本节中,我们将看看一些更突出的例子。

运输业

得益于深度学习,大规模的交通分析系统可以通过相对便宜的监控摄像头来实现。随着CCTV摄像机、LiDAR(光探测和测距)和热成像设备等传感器的日益普及,有可能对道路上的车辆进行识别、跟踪和分类。

计算机视觉技术被用来自动检测违规行为,如超速、闯红灯或停车标志、错峰驾驶和非法转弯。

CNN也促成了有效的停车场占用检测方法的发展。基于摄像头的停车场检测的优势是大规模部署,低成本的安装和维护。

医疗保健

在医学上,计算机视觉被用于诊断皮肤癌和乳腺癌。例如,图像识别使科学家们能够确定核磁共振扫描中癌变和非癌变图像之间的微小差异。

深度学习模型被应用于检测严重的状况,如即将发生的中风、平衡障碍和步态问题,而不需要进行医疗检查。

姿势估计通过分析病人的动作,帮助临床医生更快、更准确地诊断病人。它也可以用于物理治疗。从中风和受伤中恢复的病人需要持续的监督。基于计算机视觉的康复计划在最初的训练中是有效的,确保病人正确地完成动作,防止他们得到额外的伤害。

运动

Application of computer vision technologies: sport

计算机视觉可以在记录或实时视频传输的一系列图像中检测人的位置和运动模式。例如,安装在水面上方和下方的摄像机已被用于实时确定游泳者的姿势。无需手动标记每一帧视频中的身体部位,视频片段就可以用来客观地评估运动员的表现。卷积神经网络被用来自动得出必要的位置信息并识别运动员的游泳风格。

计算机视觉应用能够检测和分类招式(例如在网球中)。泳姿识别为指导员、教练员和运动员提供了比赛分析和更有效发展的工具。

在团队运动中,运动分析技术可用于从视频内容中提取运动轨迹数据。这为改善球队的阵容和比赛策略提供了有用的分析方法。

制造业

计算机视觉是智能制造的一个重要组成部分。例如,它允许对口罩和头盔等个人防护进行自动检查。在建筑工地和工厂,计算机视觉有助于监测安全程序的遵守情况。

智能相机的应用提供了一种可扩展的方式来整合制造业和装配线的自动视觉检查和质量控制。具有物体检测功能的机器人手臂在准确性、速度、生产力和可靠性方面明显优于人类。

零售业

深度学习算法可以监测零售店的客户流量。他们可以识别在不同地点和排队所花费的时间,确定免费采样分配的最佳点,并评估服务质量。所有这些数据都用于客户行为分析,以优化零售店设计,并客观地衡量许多地点的关键性能指标。计算机视觉算法对安全也有帮助。它们可以自动分析环境,以检测可疑的活动,如进入限制区域或盗窃。

结论

计算机视觉的深度学习是一个极有前景的研究领域,它可以解决广泛的现实世界问题,并简化医疗、体育、交通、零售、制造等领域的各种流程。

该领域正在发展,其中最有潜力的一些方向包括以下任务:

  • 将一个文本或物体整合到一个图像中。
  • 提升图像的比例。
  • 从图像中去除无关的物体(如城市景观中的电缆或路标)。
  • 转移风格。