Py学习  »  机器学习算法

计算机是如何理解图片的?——基于深度学习的计算机视觉与卷积神经网络

新机器视觉 • 1 年前 • 153 次点击  

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达


近年来,人工智能快速发展,让人工智能像人一样的思考,是许多研究者们追求的目标。为此,人们开发出计算机视觉技术,使计算机更好的理解周围的世界。

计算机视觉是指创建数字系统,以与人类相同的方式处理、分析和理解视觉数据(图像或视频)。从技术上讲,机器试图通过特殊的软件算法检索视觉信息、处理信息并解释结果,以便于根据这些信息采取行动或提出建议。它赋予了计算机发现、观察和理解的能力,为后续人工智能的计算与思考提供基础。


目前,计算机视觉已被广泛应用于自动驾驶、目标检测、图像分割、人脸识别、图像分类等多个领域。


理论基础:

计算机视觉技术是一种典型的交叉学科研究领域,包含了生物、心理,物理,工程,数学,计算机科学等领域,存在与其他许多学科或研究方向之间相互渗透、相互支撑的关系。随着生物科学与其他学科的蓬勃发展,计算机视觉也得到了有效的理论支持。

计算机视觉技术倾向于模仿人脑的工作方式。不同的是人眼看到的是彩色图像,而计算机“看到”的是二位数据矩阵。过去,人们认为大脑的神经计算和计算机的数值计算没有本质区别,而从现在神经科学的进展看,“神经计算”与数值计算在有些情况下还是会产生本质区别。

左:人眼看到的 右:计算机看到的

计算机学习对输入的数据进行分析,直到识别出差异并最终识别图像。如果通过模型输入了足够的数据,计算机将“查看”数据并自学如何区分图像。


深度学习:

对计算机视觉进行训练的过程会用到两种关键技术:一种是机器学习中的深度学习,另一种是卷积神经网络 (CNN)。


深度学习来自于传统的机器学习方法-神经网络,即Neural Network。科学家们从生物神经网络的运作机制得到启发,构建了人工神经网络。人工神经网络(ANN)由节点层组成,包括输入层、一个或多个隐藏层和输出层。每个节点连接到另一个节点,并具有相关的权重和阈值。如果任何单个节点的输出高于指定的阈值,则激活该节点,将数据发送到网络的下一层。否则,该节点不会将数据传递到网络的下一层。

深度学习中的“深度”则是指神经网络中的层数。包含输入和输出的三层以上的神经网络可以被认为是深度学习算法或深度神经网络。只有三层的神经网络只是一个基本的神经网络。

神经网络因为训练速度慢、容易过拟合、经常出现梯度消失以及等情况,效果并不比其他算法更优,实际应用的很少。加入更多隐藏层的深度学习网络可以实现更加复杂的运算和逻辑处理,效果也会更好。


深度学习的另一大优势就是,深度学习可进行自监督学习,可成熟地处理大量的未标记数据。如果将人的眼睛比作照相机,那么人眼平均每200ms就会拍摄一张照片,三年的时间就可以积攒上亿张真实世界照片,巨大的数据库使人脑有充足的经验进行图像处理。而使计算机达到这个训练量是十分困难的,而这时自监督学习的优势便得以体现。自监督学习可再无标记的情况下进行训练,相比传统模式效率更更高,投入更少。


卷积神经网络:

在深度学习中,当人们加入更多的隐藏层时,如果对所有层同时训练,计算量太大,根本无法训练。如果每次训练一层,偏差就会逐层传递,最终训练出来的结果会严重欠拟合。因此,需要一个更合理的神经网络结构来有效处理图片数据。随着数值计算效率得到巨大提升,卷积神经网络(CNN)处理数字图像数据的巨大潜能被充分发现挖掘。


动物是视觉处理总是从简单的结构开始,例如硬线条或者边缘,而这一原则成为了计算机视觉背后的核心原则。就像人类辨别远距离的图像一样,CNN构造多层的神经网络,从较低层的识别初级的图像特征开始,以若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类。


CNN网络结构基本是由卷积层、池化层以及全连接层组成。其中,卷积层被认为是提取图像特征的主要部件,卷积层不会一次性解析所有训练数据,而是创建滑动窗口对图片进行扫描。通过卷积核与图像像素矩阵进行卷积运算输入数据被送入卷积层。每个节点只需要处理离自己最近的邻近节点,卷积层也随着扫描的深入而趋于收缩。 

从图中可以看到,输入图像送入卷积神经网络中,通过卷积层进行特征提取,之后通过池化层过滤细节(一般采用最大值池化、平均池化),最后在全连接层进行特征展开,送入相应的分类器得到其分类结果。


结语:

计算机视觉在今年来蓬勃发展,并广泛用于许多行业,是人机交互,人工智能等许多领域的技术基础。但受制于数据库数量,计算量等限制,仍未能达到人眼识别水平。在这一领域,仍有极大的潜力等待技术人员挖掘。


本文参考:

https://www.ibm.com/topics/computer-vision

https://easyai.tech/ai-definition/computer-vision/

https://blog.csdn.net/daliying_/article/details/80165393

https://hackernoon.com/a-brief-history-of-computer-vision-and-convolutional-neural-networks-8fe8aacc79f3

https://www.forbes.com/sites/bernardmarr/2019/04/08/7-amazing-examples-of-computer-and-machine-vision-in-practice/#3e12a0fe1018

https://www.ted.com/talk

转自技术饭

本文仅做学术分享,如有侵权,请联系删文。

—THE END—

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