程序员如何学习计算机视觉?你需要了解这五大技术!


程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
译者 | 王柯凝出品 | AI科技大本营(公众号ID:rgznai100)
【 AI 科技大本营导读】目前,计算机视觉是深度学习领域最热门的研究领域之一 。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经科学)和心理学(认知科学)等等 。许多科学家认为,计算机视觉为人工智能的发展开拓了道路 。
那么什么是计算机视觉呢? 这里给出了几个比较严谨的定义:
? “对图像中的客观对象构建明确而有意义的描述”(Ballard&Brown,1982)
? “从一个或多个数字图像中计算三维世界的特性”(Trucco&Verri,1998)
? “基于感知图像做出对客观对象和场景有用的决策”(Sockman&Shapiro,2001)
▌为什么要学习计算机视觉?
一个显而易见的答案就是,这个研究领域已经衍生出了一大批快速成长的、有实际作用的应用,例如:
  • 人脸识别: Snapchat 和 Facebook 使用人脸检测算法来识别人脸 。
  • 图像检索:google Images 使用基于内容的查询来搜索相关图片,算法分析查询图像中的内容并根据最佳匹配内容返回结果 。
  • 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect 。
  • 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中 。
  • 生物识别技术:指纹、虹膜和人脸匹配仍然是生物识别领域的一些常用方法 。
  • 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源 。
视觉识别是计算机视觉的关键组成部分,如图像分类、定位和检测 。神经网络和深度学习的最新进展极大地推动了这些最先进的视觉识别系统的发展 。在本文中,我将分享 5 种主要的计算机视觉技术,并介绍几种基于计算机视觉技术的深度学习模型与应用 。
▌1?、图像分类 
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
给定一组各自被标记为单一类别的图像,我们对一组新的测试图像的类别进行预测,并测量预测的准确性结果,这就是图像分类问题 。图像分类问题需要面临以下几个挑战???:
视点变化,尺度变化,类内变化,图像变形,图像遮挡,照明条件和背景杂斑
我们怎样来编写一个图像分类算法呢?
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
计算机视觉研究人员提出了一种基于数据驱动的方法 。
该算法并不是直接在代码中指定每个感兴趣的图像类别,而是为计算机每个图像类别都提供许多示例,然后设计一个学习算法,查看这些示例并学习每个类别的视觉外观 。也就是说,首先积累一个带有标记图像的训练集,然后将其输入到计算机中,由计算机来处理这些数据 。
因此,可以按照下面的步骤来分解:
  • 输入是由 N 个图像组成的训练集,共有 K 个类别,每个图像都被标记为其中一个类别 。
  • 然后,使用该训练集训练一个分类器,来学习每个类别的外部特征 。
  • 最后,预测一组新图像的类标签,评估分类器的性能,我们用分类器预测的类别标签与其真实的类别标签进行比较 。
目前较为流行的图像分类架构是卷积神经网络(CNN)——将图像送入网络,然后网络对图像数据进行分类 。卷积神经网络从输入“扫描仪”开始,该输入“扫描仪”也不会一次性解析所有的训练数据 。比如输入一个大小为 100*100 的图像,你也不需要一个有 10,000 个节点的网络层 。相反,你只需要创建一个大小为 10 *10 的扫描输入层,扫描图像的前 10*10 个像素 。然后,扫描仪向右移动一个像素,再扫描下一个 10 *10 的像素,这就是滑动窗口 。
程序员如何学习计算机视觉?你需要了解这五大技术!

文章插图
 
输入数据被送入卷积层,而不是普通层 。每个节点只需要处理离自己最近的邻近节点,卷积层也随着扫描的深入而趋于收缩 。除了卷积层之外,通常还会有池化层 。池化是过滤细节的一种方法,常见的池化技术是最大池化,它用大小为 2*2 的矩阵传递拥有最多特定属性的像素 。
现在,大部分图像分类技术都是在 ImageNet 数据集上训练的,ImageNet 数据集中包含了约 120 万张高分辨率训练图像 。测试图像没有初始注释(即没有分割或标签),并且算法必须产生标签来指定图像中存在哪些对象 。


推荐阅读