计算机视觉是现在非常热门的一个研究领域,在无人驾驶等方面有许多应用。cs231n是由斯坦福大学李飞飞教授开设的一门有关计算机视觉的课程,在网上有许多的公开课视频可以学习,以下是我自己在观看课程及编程实现的过程中的笔记及个人理解和感悟。
我对计算机视觉的理解
在我看来,计算机视觉最基本的任务是进行图像识别,即向计算机中输入一张图片,计算机通过一定的算法运算返还出这张图片中的物体是什么。例如下面左边这张图片是一张猫的图片,一张800*600规格的彩色图片在计算机中就是800*600个像素点,每个像素点由三个数表示(RGB),那么就是800*600*3个数据。图像识别想做的就是希望输入这一800*600*3的数据到计算机中,计算机能输出这张图是猫的结果。(PS:下图截自cs231n课程视频ppt,后文不做特殊说明均默认图片来源于此)
有些学者尝试采用写出一组硬编码的方式来解决这一问题,比如处理图像得到冒的轮廓信息,从轮廓中寻找一些规定的特征来判断这是否是一只猫,比如三线交汇处可能是猫耳等等特征。然而由于一张图片中的猫可以是千姿百态的,摄像的角度也可以是多变的,同时还可能存在遮挡、背景干扰等因素,实际采用这种方法做到识别一张图片是非常困难的。
所以现在较为流行的方法是采用数据驱动方法(data Driven Approach)来解决图像识别的问题。
数据驱动方法
我对数据驱动方法的理解是依托于大量的数据的方法。人能够识别物体是因为我们通过眼睛观察具有了很多的经验,而计算机没有相关的经验,所以我们想要让计算机去识别物体就需要给他提供可以参考的经验,也就是数据。比如我们有十类动物的数据,每类动物有一百张图片,也就是总共有一千张图片的数据,并且我们还知道每张图片对应的是哪一种动物,也就是我们还有数据的标签。那么数据驱动方法就是基于这一千张已知数据去建立出一个模型或者说是分类器,当你输入一张未知类别的图片数据时,分类器可以返还一个正确的类别结果。这就是基于数据驱动方法的图像识别原理。
抽象来说数据驱动方法分为三个步骤:
1. 收集数据集及数据标签
2. 使用机器学习算法训练一个分类器
3. 用分类器对新的图片进行预测(识别)
所以说,图像识别实际上是一个图像分类的问题,将位置的图像分发到已知类别中的某一类的过程。
网友评论