什么是计算机视觉
什么是计算机视觉一、 什么是计算机视觉二、 计算机视觉如何运作三、 计算机视觉的商业用例四、 计算机视觉与卷积神经网络五、 包和框架一、 什么是计算机视觉计算机视觉(Computer Vision)是涉及任何视觉内容计算的总称 ,包括图像、视频、图标以及涉及像素的任何内容的计算。但在这个总称中,有一些特定的核心构建块:在对象分类中,可以在特定对象的数据集上训练模型,并且模型将新对象分类为属...
一、 什么是计算机视觉
计算机视觉(Computer Vision)是涉及任何视觉内容计算的总称 ,包括图像、视频、图标以及涉及像素的任何内容的计算。但在这个总称中,有一些特定的核心构建块:
- 在对象分类中,可以在特定对象的数据集上训练模型,并且模型将新对象分类为属于一个或多个训练类别;
- 对于对象识别,模型将识别为对象的特定实例。
计算机视觉的经典应用是用于数字化手写内容的手写识别。除了此之外,其他应用还包括:
- 视频运动分析使用计算机视觉来估计视频中的对象或摄像机本身的速度。
- 在图像分割中,算法将图像分成多组视图。
- 场景重建创建通过图像或视频输入的场景的3D模型(查看Selva)。
- 在图像恢复中,使用基于机器学习的滤波器从照片中去除诸如模糊的噪声。
涉及通过软件理解像素的任何其他应用程序都可以安全地标记为计算机视觉。
二、 计算机视觉如何运作
神经科学和机器学习中的一个主要开放问题是:我们的大脑究竟是如何工作的,我们如何用我们自己的算法来估算它?现实情况是,大脑计算的工作和综合理论很少; 因此,尽管神经网络应该“模仿大脑的工作方式”,但没有人确定这是否真的如此。杰夫霍金斯有一本关于这个主题的书,名为On Intelligence。
同样的悖论也适用于计算机视觉,因为我们还没有决定大脑和眼睛如何处理图像,所以很难说生产中使用的算法与我们所想的有多接近。例如,研究表明,我们认为在青蛙脑中发生的一些生物变化,实际上发生在眼睛中。我们与两栖动物相去甚远,但人类认知中存在类似的不确定性。
机器非常简单地解释图像:作为一系列像素,每个像素都有自己的一组颜色值。考虑下面的简化图像,以及如何将灰度值转换为简单的数字数组:
将图像视为不同方块或像素的巨大网格。图像中的每个像素都可以用数字表示,通常为0到255。右边的数字系列是软件在输入图像时看到的数字。对于图像,有12列和16行,这意味着该图像有192个输入值。
当开始添加颜色时,将变得更加复杂。计算机通常将颜色读取为一系列3个值,红色、绿色和蓝色(RGB),在相同的0 - 255范围内。现在,除了位置之外,每个像素实际上还有3个值供计算机存储。如果我们开始着色,那将有12 x 16 x 3个值或576个数字。
有关计算的一些观点,请考虑以下数值:
- 每个颜色值以8位存储。
- 每像素8位×3种颜色=每像素24位。
- 正常大小的1024 x 768图像x每像素24位=几乎19M位,或大约2.36兆字节。
这对于一个图像需要大量的内存和多次算法迭代。为了训练一个准确的模型,特别是对于深度学习,通常需要成千上万的图像,而且越多越好。即使使用转移学习来使用已经训练过的模型,仍然需要几千张图像来训练你的模型。
由于需要大量的计算能力和存储来培养计算机视觉的深度学习模型,因此不难理解为什么这两个领域的进步推动了机器学习向前发展到这种程度。
三、 计算机视觉的商业用例
计算机视觉是机器学习领域之一,其核心概念已经被整合到我们每天使用的主要产品中。谷歌正在使用地图中的图像数据来识别街道名称、企业和办公楼。Facebook正在使用计算机视觉识别照片中的人物,并使用该信息做许多事情。
不只是技术公司利用机器学习来实现图像应用。美国汽车制造商福特,自1900年代初以来大力投资自动驾驶汽车(AVs)。AV中的许多基础技术依赖于分析进入汽车的多个视频源并使用计算机视觉来分析和选择行动路径。
计算机视觉可以帮助的另一个主要领域是医学领域。大部分诊断是图像处理,如读取X射线,MRI扫描和其他类型的诊断。Google一直与医学研究团队合作,探索深度学习如何帮助医疗工作流程,并在准确性方面取得了重大进展。从他们的研究页面中解释:
“ 我们与医生和国际医疗保健系统密切合作,开发了一套先进的计算机视觉系统,用于阅读糖尿病视网膜病变的视网膜眼底图像,并确定我们的算法性能与美国董事会认证的眼科医生相当。我们最近在“ 美国医学会杂志”上发表了一些研究,并在博客文章中总结了这些亮点。”
除了突破性的东西之外,将计算机视觉集成到应用程序中变得更加容易。许多高质量的第三方提供商(如Clarifai)提供了用于标记和理解图像的简单API,而Kairos 提供了有关面部识别的功能。
四、 计算机视觉与卷积神经网络
在过去几年中,计算机视觉准确性取得的大进展,归功于一种特殊类型的算法-卷积神经网络。它是深度学习的一个子集,带有一些额外的附加操作,并且它们已被证明可以在图像相关任务上实现较大的准确性。
卷积神经网络(CNNs或ConvNets)利用神经网络的相同主要概念,在正常架构之前添加了一些步骤。这些步骤专注于特征提取,或者找到我们输入的最佳版本,这将对我们的模型产生最大程度的理解。理想情况下,这些功能将比原始的输入信息量更大。
CNN使用三种过滤器进行特征提取。
1.卷积(Convolution)
在卷积过程期间,输入图像像素由滤波器修改。这是一个矩阵(小于原始像素矩阵),将输入图像的不同部分相乘。输出(通常称为特征图 ,通常小于原始图像)理论上信息量更大。
2.线性单元(ReLU)
代表整流线性单元,这是一个简单的功能,将非线性引入特征图。所有负值都只是更改为零,从图像中删除所有黑色。函数表达为y = max(0,x)。
3.池化(Pooling)
在合并中,通过设定的像素宽度扫描图像,并且将这些像素的最大值、总和或平均值视为图像的部分。此过程进一步将特征图的大小减小到任何大小的因子。
所有这些操作(卷积、线性单元和池化)通常在结束特征提取过程之前连续应用两次, 然后将整个过程的输出传递到神经网络进行分类。最终的架构如下:
总之:
- 卷积神经网络(CNN)是一种特殊类型的深度学习,可以很好地用于计算机视觉任务。
- 对输入图像进行了大量的预处理工作,使其更好地针对神经网络的完全连接层进行优化。
五、 包和框架
1.OpenCV
OpenCV专为提高计算效率而设计,专注于实时应用。OpenCV在全球范围内采用,拥有超过47,000名用户社区,估计下载量超过1400万。用途范围从交互式艺术,到地雷检查,网上拼接地图或高级机器人。
2.SimpleCV
SimpleCV是一个用于构建计算机视觉应用程序的开源框架,可以访问几个高性能计算机视觉库,如OpenCV - 无需首先了解位深度,文件格式,色彩空间,缓冲区管理,特征值或矩阵与位图存储。
3.Mahotas
Mahotas是一个用于Python的计算机视觉和图像处理的库。 它包括许多用C ++实现的算法,以便在numpy数组中运行并具有非常干净的Python接口。Mahotas目前拥有100多种图像处理和计算机视觉功能,并且不断发展壮大。
4.Openface
OpenFace是使用深度神经网络进行人脸识别的Python和Torch实现,基于CVPR 2015论文FaceNet:由Florian Schroff,Dmitry Kalenichenko和James Philbin在Google 进行人脸识别和聚类的统一嵌入。Torch允许网络在CPU或CUDA上执行。
5.Ilastik
Ilastik是一个对用户友好的交互式图像分类、分割和分析的工具。它构建为模块化软件框架,目前具有自动(监督)像素和对象级分类,自动和半自动对象跟踪,半自动分割和对象计数的工作流程,无需检测。使用它不需要图像处理经验。
原文来自: https://blog.algorithmia.com/introduction-to-computer-vision/
更多推荐
所有评论(0)