我们经常能听到计算机视觉这个词语,像数字图像处理,算法设计,深度学习等领域。但很少有人会先去了解清楚这门知识,而是用到什么再学什么,虽然这在项目进度上能节省不少时间,但有时候囫囵吞枣式地学习容易落下很多知识,也很难形成对这门知识的架构。
计算机视觉的定义并不复杂,顾名思义,就是针对视觉数据的研究。但为什么会说这门课这么重要呢,这是因为现在网络上大部分的流量源头都是视频,且很多学科的知识理都会包含视觉数据。对于我们来说,关键的地方在于怎么用算法来开发这些可以利用和理解的数据,对于算法来说这些视觉数据直观上就是很多数字,我们不进行处理以及给算法设计特别的功能的话,不亚于让其读天书。
在早期的视觉研究中,要在计算机中成像一幅图片,或者是一个3D物品,需要先将它的边缘构建出来,也就是通过一些手段将边缘描出来,一开始是用一个个叉仿照线的结构,勾勒出一个类似的边缘,接着我们通过不规则的曲线,把深度信息和物品与场景的不规则性拼接在一起,最终将已经构造出的内容拼接在一起,就能得到一个由表面和体积图等分层内容组装的3D模型。
顺着这个思路去想,我们要想结构一个视觉数据,思路就是上述所说的组装模型的逆推思路,但现实中的事物是非常复杂的,这就引出了用广义圆柱体和图形结构去构建模型。毕竟,就跟火柴人一样,很多事物都可以简化为用简单的几何图形去构建。进而,也就延伸出了图像分割的说法,即把图像中,关于某件事物的像素点从背景中提取出来,这有助于明确我们的任务方向和目标。
那么,如果要识别一个图案,最快的方法就是,我们把类似图片的重要特征提取了出来,这种特征在图案变化的过程中,往往是具有强的表现性和不变性的,匹配这些目标,比匹配整个图案更加简单,所提取的这种特征叫做SIFT特征。类似的,有一种叫做空间金字塔匹配的算法,是通过以不同分辨率从图像的不同部分提取特征一起放在特征描述符中,在这些特征上做一个支持向量机(对特征进行分类)。
当然,不可避免的由于数据集的限制,当我们用于训练模型去识别图片时,往往会出现过拟合的现象,即使我们对参数进行了调优,由于视觉数据过于复杂,所以我们会尽可能地让训练用的数据更丰富来减少过拟合现象(如果计算资源足够)。而随着时代的发展,不仅视觉数据的质量在上升,我们所使用的数据集,也有了不一样的处理方式:我们一般会采用有标注的图片进行训练(即标号是什么图片),有助于模型进行更好地学习。
学习来源于斯坦福教程:Stanford University CS231n: Deep Learning for Computer Vision