计算机视觉技术分类 - ouyuming/AiLearn GitHub Wiki
帖子来源:https://www.jianshu.com/p/e3ec3f1ed6fc
1.计算机视觉是深度学习领域最热门的研究领域之一,交叉学科
- 计算机科学(图形、算法、理论、系统、体系结构)
- 数学(信息检索、机器学习)
- 工程学(机器人、语音、自然语言处理、图像处理)
- 物理学(光学 ),生物学(神经科学)和心理学(认知科学) 2.计算机视觉定义
- 对图像中的客观对象构建明确而有意义的描述
- 从一个或多个数字图像中计算三维世界的特性
- 基于感知图像做出对客观对象和场景有用的决策 3.计算机视觉应用
- 人脸识别: Snapchat 和 Facebook 使用人脸检测算法来识别人脸。
- 图像检索:Google Images 使用基于内容的查询来搜索相关图片,算法分析查询图像中的内容并根据最佳匹配内容返回结果。
- 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect。
- 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中。
- 生物识别技术:指纹、虹膜和人脸匹配仍然是生物识别领域的一些常用方法。
- 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源。 4.计算机视觉总结
- 视觉识别是计算机视觉的关键组成部分,如图像分类、定位和检测。
- 神经网络和深度学习的最新进展极大地推动了这些最先进的视觉识别系统的发展。
一、图像分类 1.图像分类定义 给定一组各自被标记为单一类别的图像,我们对一组新的测试图像的类别进行预测,并测量预测的准确性结果,这就是图像分类问题。 2.图像分类问题需要面临以下几个挑战
- 视点变化
- 尺度变化
- 图像变化
- 图像遮挡
- 照明条件
- 背景杂斑 3.图像分类算法(解决方案) (1)解决方案概述 该算法并不是直接在代码中指定每个感兴趣图像类别,而是为计算机每个图像类别都提供许多示例,然后设计一个学习算法,查看这些示例并学习每个类别的视觉外观。即首先积累一个带有标记图像的训练集,然后将其输入到计算机中,由计算机来处理这些数据。 (2)解决方案步骤
- 输入是由N个图像组成的训练集,共有K个类别,每个图像都被标记为其中一个类别。
- 使用该训练集训练一个分类器,来学习每个类别的外部特征
- 预测一组新图像的类标签,评估分类器的性能,我们用分类器预测的类别标签与真实的类别标签进行比较
(3)解决方案细节
目前较为流行的图像分类架构是卷积神经网络(CNN)
将图像送入网络,然后网络对图像数据进行分类
卷积神经网络从输入“扫描仪”开始,该输入“扫描仪”也不会一次性解析所有的训练数据
eg:1.输入一个大小为100100的图像,你也不需要一个有10000个节点的网络层。
2.相反,你只需要创建一个大小为1010的扫描输入层,扫描图像的前1010个像素。
3.然后,扫描仪向右移动一个像素,再扫描下一个1010的像素,这就是滑动窗口
4.输入数据被送入卷积层,而不是普通层。每个节点只需处理离自己最近的临近节点,卷积层也随着扫描的深入而趋于收缩。除了卷积层之外,通常还有池化层。 5.池化是过滤细节的一种方法,常见的池化技术是最大池化,它用大小为2*2的矩阵传递拥有最多特定属性的像素。 6.大部分图像分类技术都在ImageNet数据集上训练的,ImageNet数据集中包含了约120万张高分分辨率训练图像。测试图像没有初始注释(即没有分割或标签),并且算法必须产生标签来指定图像中存在哪些对象。 7.现存的很多计算机视觉算法,都是被来自牛津等顶级的计算机视觉团队在Imagenet数据集上实现的。通常来说,计算机视觉系统使用复杂的多级管道,并且,早期阶段的算法都是通过优化几个参数来手动微调的。 8.第一届ImageNet竞赛的获奖者是Alex Krizhevsky,他开创的神经网络类型基础上,设计一个深度卷积神经网络。 9.该网络架构除了一些最大池化层外,还包含7个隐藏层,前几层是卷积层,最后两层是全连接层。在每个隐藏层内,激活函数为线性的,要比逻辑单元的训练速度更快、性能更好。除此之外,当附近的单元有更强的活动时,它还使用竞争性标准化来压制隐藏活动,这有助于强度的变化。 10.就硬件要求而言,Alex在2个Nvidia GTX 580 GPU(速度超过1000个快速的小内核)上实现了非常高效的卷积网络。GPU非常适合矩阵间的乘法且有非常高的内存宽带。这使他能在一周内完成训练,并在测试时快速的从10个块中组合出结果。如果我们能够以足够快的速度传输状态,就可以将网络分布在多个内核上。 11.随着内核越来越便宜,数据集越来越大,大型神经网络的速度要比老式计算机视觉系统更快。在这之后,已经有很多种使用卷积神经网络作为核心,并取得优秀成果的模型,如ZFNet(2013),GoogLeNet(2014),RESNET(2015),DenseNet(2016)等
二、对象检测 三、目标跟踪 四、语义分割 五、实例分割