计算机视觉(1)什么是计算机视觉?

Table of content
  1. 1. 计算机视觉应用
  2. 2. 视觉信息的处理方式
    1. 2.1. 自底向上(Bottom-up)方式
    2. 2.2. 自顶向下(Top-down)方式
  3. 3. 参考
什么是计算机视觉

计算机视觉是一个算法程序,接受各种视觉信号作为输入,比如图像信号,音频信号,视频信号,算法用于识别信号中的各种模式,比如车牌号,一个方框中包含几位数字和字母,最后基于算法的结果做出决策。

计算机视觉应用

计算机视觉应用

如今,计算机视觉技术已经被广泛使用,从人脸认证,到自动驾驶计算机视觉应用都发挥了巨大的作用,常见的应用比如:图像处理,用于Photoshop、美图秀秀,物体跟踪,物体识别,视觉信息获取等。并且,随着深度学习技术的不断突破,使得计算机视觉应用更加广泛。

视觉信息的处理方式

传统的处理视觉信息方式分为两种,一是自底向上(Bottom-up)方式,二是自顶向下(Top-down)方式。

自底向上(Bottom-up)方式

自底向上方式通过整合早期低级决策的结果来做出越来越“高级”的决策。这里以车牌号识别为例:

自底向上方式识别车牌

第一步先找到图像中构成边的像素,第二部将这些像素连起来构成线,第三步将这些线连起来构成方框,因为车牌是长方形,第四步找到最合适的候选框及其边的像素,最后在这个框中做识别任务。

分析这种方式可以看出,Bottom-up方式是将大的图像信息分为小的区域,在小的区域中做分析任务,对应大致分为低等级分析,中等级分析和高级分析。低等级分析通过一些过滤算子找出图像中的边,中等级分析是将得到的边连起来组成小的区域或形状,高级分析就在这些小的区域中处理识别任务,就是根据特定领域的规则做决策,还是以车牌识别为例:

自底向上方式识别车牌的三个等级

例子是以英国车牌为例,高级分析主要是根据不同的规则识别字母和数字,从左到右,为了区分第五个形状是“D”还是“0”,如果是三个字母开头,则后面是三个字符数字加一个字母,因此第五个就是“0”。从低等级到高等级分析,“语义(semantics)信息”等级也是在逐步提高。

什么是“语义(semantics)”
摘自Australian Institute for Machine Learning (AIML):
In general, semantics concerns the extraction of meaning from data. Semantic vision seeks to understand not only what objects are present in an image but, perhaps even more importantly, the relationship between those objects.
In semantic vision, an image is typically segmented into regions of interest. Each segment is allocated a classification so that all pixels in an image are assigned a class (e.g. car, road, footpath, person, tree, sky).
Contextual relationships provide important cues for understanding a scene.

大致意思是从像素数据中提取处有用的像素,来构成物体对象即我们感兴趣的区域,并且分析区域之间的联系。

自顶向下(Top-down)方式

自顶向下(Top-down)方式是用现有的模型直接去原始数据中匹配区域。还是以车牌号识别为例:

自顶向下方式

现有模型的属性有车牌的中心点坐标(x,y)、高度(h)和宽度(w),接着去图像中找这样的长方形,如何判断找到的是否合适呢?可以用x,y,h和w构成一个四维坐标系,将找到的所有方框映射到这个坐标系,与现有模型最近的点即最佳匹配。

自顶向下方式匹配过程是一个非常耗时的操作,因为需要遍历每一个可能,一些启发式(heuristics)的优化方式可以用来解决这些困扰。比如,我们假设车牌的宽度w是高度h的两倍,则搜索范围就被缩小,如下图,只有位于红色区域的数据才会被使用,极大地减少了数据遍历的范围。

启发式优化 是好是坏?

自顶向下方式中一个重要的步骤是评价函数(fitness function)的设计,好的评价函数会使映射的点靠近现有模型,差的评价函数无法起到区分的作用,通常使用平滑度(smooth)来说明评价函数,如下图,左侧函数能很好地区分好与不好,右侧数据无法得到区分。

smooth of fitness function

下图直观地展示了具有良好平滑度的评价函数。

smooth of fitness function

评价函数的设计可以通过之前的经验总结(启发式)或数据学习得到,比如识别手写数字“9”,启发式的方式是只要看到一个圈并且在它的右边又一个竖线,就代表是“9”,而通过学习的方式,就需要给计算机很多张数字图片,其中包含“9”和其它数字,让计算机自己归纳处数字“9”的特点来进行区分。

fitness function can be specified by heuristic or learning

对于启发式的方法,如何使用我们的先验知识呢?还是以车牌识别为例,在设计评价函数是可以考虑:

  1. 车牌都是长方形的
  2. 长方形的位置,大小,形状,款和高符合一定的比例
  3. 长方形中的像素具有两种高对比度的色调

最后,总结自底向上和自顶向下这两种方式,在应用是两者可以互相结合,可以在自底向上分析的基础上,做自顶向下分析来简化模型匹配问题。

自底向上和自顶向下两种方式对比

参考

  1. https://www.adelaide.edu.au/aiml/our-research/robotic-vision/semantic-vision#:~:text=In semantic vision%2C an image,cues for understanding a scene.