计算机视觉是当前最热门的研究之一,是一门多学科交叉的研究,涵盖计算机科学(图形学、算法、理论研究等)、数学(信息检索、机器学习)、工程(机器人、NLP等)、生物学(神经系统科学)和心理学(认知科学)。由于计算机视觉表示对视觉环境及背景的相对理解,很多科学家相信,这一领域的研究将为人工智能行业的发展奠定基础。
那么,什么是计算机视觉呢?下面是一些公认的定义:
1).从图像中清晰地、有意义地描述物理对象的结构(BallardBrown,);
2).由一个或多个数字图像计算立体世界的性质(TruccoVerri,);
3).基于遥感图像对真实物体和场景做出有用的决定(SockmanShapiro,);
那么,为什么研究计算机视觉呢?答案很明显,从该领域可以衍生出一系列的应用程序,比如:
1).人脸识别:人脸检测算法,能够从照片中认出某人的身份;
2).图像检索:类似于谷歌图像使用基于内容的查询来搜索相关图像,算法返回与
3).查询内容最佳匹配的图像。
4).游戏和控制:体感游戏;
5).监控:公共场所随处可见的监控摄像机,用来监视可疑行为;
6).生物识别技术:指纹、虹膜和人脸匹配是生物特征识别中常用的方法;
7).智能汽车:视觉仍然是观察交通标志、信号灯及其它视觉特征的主要信息来源;
正如斯坦福大学公开课CS所言,计算机视觉任务大多是基于卷积神经网络完成。比如图像分类、定位和检测等。那么,对于计算机视觉而言,有哪些任务是占据主要地位并对世界有所影响的呢?本篇文章将分享给读者5种重要的计算机视觉技术,以及其相关的深度学习模型和应用程序。相信这5种技术能够改变你对世界的看法。
1.图像分类
图像分类这一任务在我们的日常生活中经常发生,我们习惯了于此便不以为然。每天早上洗漱刷牙需要拿牙刷、毛巾等生活用品,如何准确的拿到这些用品便是一个图像分类任务。官方定义为:给定一组图像集,其中每张图像都被标记了对应的类别。之后为一组新的测试图像集预测其标签类别,并测量预测准确性。
如何编写一个可以将图像分类的算法呢?计算机视觉研究人员已经提出了一种数据驱动的方法来解决这个问题。研究人员在代码中不再关心图像如何表达,而是为计算机提供许多很多图像(包含每个类别),之后开发学习算法,让计算机自己学习这些图像的特征,之后根据学到的特征对图像进行分类。
鉴于此,完整的图像分类步骤一般形式如下:
1).首先,输入一组训练图像数据集;
2).然后,使用该训练集训练一个分类器,该分类器能够学习每个类别的特征;
3).最后,使用测试集来评估分类器的性能,即将预测出的结果与真实类别标记进行比较;
对于图像分类而言,最受欢迎的方法是卷积神经网络(CNN)。CNN是深度学习中的一种常用方法,其性能远超一般的机器学习算法。CNN网络结构基本是由卷积层、池化层以及全连接层组成,其中,卷积层被认为是提取图像特征的主要部件,它类似于一个“扫描仪”,通过卷积核与图像像素矩阵进行卷积运算,每次只“扫描”卷积核大小的尺寸,之后滑动到下一个区域进行相关的运算,这种计算叫作滑动窗口。
从图中可以看到,输入图像送入卷积神经网络中,通过卷积层进行特征提取,之后通过池化层过滤细节(一般采用最大值池化、平均池化),最后在全连接层进行特征展开,送入相应的分类器得到其分类结果。
大多数图像分类算法都是在ImageNet数据集上训练的,该数据集由万张的图像组成,涵盖个类别,该数据集也可以称作改变人工智能和世界的数据集。ImagNet数据集让人们意识到,构建优良数据集的工作是AI研究的核心,数据和算法一样至关重要。为此,世界组织也举办了针对该数据集的挑战赛——ImageNet挑战赛。
第一届ImageNet挑战赛的第一名是由AlexKrizhevsky(NIPS)获得,采用的方法是深层卷积神经网络,网络结构如下图所示。在该模型中,采用了一些技巧,比如最大值池化、线性修正单元激活函数ReLU以及使用GPU仿真计算等,AlexNet模型拉开了深度学习研究的序幕。
自从AlexNet网络模型赢得比赛之后,有很多基于CNN的算法也在ImageNet上取得了特别好的成绩,比如ZFNet()、GoogleNet()、VGGNet()、ResNet()以及DenseNet()等。
2.目标检测
目标检测通常是从图像中输出单个目标的BoundingBox(边框)以及标签。比如,在汽车检测中,必须使用边框检测出给定图像中的所有车辆。
之前在图像分类任务中大放光彩的CNN同样也可以应用于此。第一个高效模型是R-CNN(基于区域的卷积神经网络),如下图所示。在该网络中,首先扫描图像并使用搜索算法生成可能区域,之后对每个可能区域运行CNN,最后将每个CNN网络的输出送入SVM分类器中来对区域进行分类和线性回归,并用边框标注目标。
本质上,是将物体检测转换成图像分类问题。但该方法存在一些问题,比如训练速度慢,耗费内存、预测时间长等。
为了解决上述这些问题,RossGirshickyou提出FastR-CNN算法,从两个方面提升了检测速度:
1)在给出建议区域之前执行特征提取,从而只需在整幅图像上运行一次CNN;2)使用Softmax分类器代替SVM分类器;
虽然FastR-CNN在速度方面有所提升,然而,选择搜索算法仍然需要大量的时间来生成建议区域。为此又提出了FasterR-CNN算法,该模型提出了候选区域生成网络(RPN),用来代替选择搜索算法,将所有内容整合在一个网络中,大大提高了检测速度和精度。
近年来,目标检测研究趋势主要向更快、更有效的检测系统发展。目前已经有一些其它的方法可供使用,比如YOLO、SSD以及R-FCN等。
3.目标跟踪
目标跟踪是指在给定场景中跟踪感兴趣的具体对象或多个对象的过程。简单来说,给出目标在跟踪视频第一帧中的初始状态(如位置、尺寸),自动估计目标物体在后续帧中的状态。该技术对自动驾驶汽车等领域显得至关重要。
根据观察模型,目标跟踪可以分为两类:产生式(generativemethod)和判别式(discriminativemethod)。其中,产生式方法主要运用生成模型描述目标的表观特征,之后通过搜索候选目标来最小化重构误差。常用的算法有稀疏编码(sparsecoding)、主成分分析(PCA)等。与之相对的,判别式方法通过训练分类器来区分目标和背景,其性能更为稳定,逐渐成为目标跟踪这一领域的主要研究方法。常用的算法有堆栈自动编码器(SAE)、卷积神经网络(CNN)等。
使用SAE方法进行目标跟踪的最经典深层网络是DeepLearningTracker(DLT),提出了离线预训练和在线微调。该方法的主要步骤如下:
1).先使用栈式自动编码器(SDAE)在大规模自然图像数据集上进行无监督离线预训练来获得通用的物体表征能力。
2).将预训练网络的编码部分与分类器相结合组成分类网络,然后利用从初始帧获得的正、负样本对网络进行微调,使其可以区分当前对象和背景。在跟踪过程中,选择分类网络输出得分最大的patch作为最终预测目标。
3).模型更新策略采用限定阈值的方法。
基于CNN完成目标跟踪的典型算法是FCNT和MDNet。
FCNT的亮点之一在于对ImageNet上预训练得到的CNN特征在目标跟踪任务上的性能做了深入的分析:
1).CNN的特征图可以用来做跟踪目标的定位;
2).CNN的许多特征图存在噪声或者和物体跟踪区分目标和背景的任务关联较小;
3).CNN不同层提取的特征不一样。高层特征更加抽象,擅长区分不同类别的物体,而低层特征更加
转载请注明:http://www.0431gb208.com/sjszyzl/4297.html