物体检测的前世今生(一)

今天是高考结束的日子,祝广大考生在前两天里已经发挥了自己的水平,上了大学后也为AI事业添砖加瓦。

聊完题外话,我们回到今天的主题,物体检测。上次说到

计算机识图

的基本概念,给自己埋了这个坑,今天我们就来补上这一课。

01

物体检测

物体检测作为计算机视觉(CV)领域的一个重要问题,一直受到学界和工业界的普遍关注,是一个非常热点的研究方向。简单来说,物体检测就是要解决一张图里面在什么地方出现了什么东西的问题。什么地方由物体检测框给出,什么东西则表明当前框里面物体是什么。下图中标注了人和车这两种物体。不同类别由不同的颜色表示(绿色是人,红色是车),物体框由框的位置坐标(xmin,ymin,xmax,ymax)表示。

02

问题难点

物体的姿态变化。由于有些物体本身是非刚体。例如人,在图像中出现时可以具备不同的姿态,人可以具有站、跑、跳、蹲等不同的动作,同时呈现给摄像头的角度也有区别,采集数据的摄像头可能拍摄到行人正面、侧面抑或背面的信息,因此需要检测系统具备足够强的识别能力。

光照的变换。在数据采集时,由于天气晴朗、阴暗的变幻,光线的明暗,采集设备的分辨率限制等,都会影响到最终输入图像的质量。特别是对于在夜晚采集的监控视频数据,由于灯光的影响而使得噪声变多,大大加剧了从中准确提取出物体的难度。

物体相互遮挡。在摄像头采集的数据中,通常每个物体都不是单独存在的。对于人类来说,大脑可以很容易的通过所呈现的信息自动脑补被遮挡的部分,可是对计算机来说,则需要拥有一些先验的背景知识,才能够识别出被遮挡的物体,因此如何有效处理遮挡也是该问题的难点之一。

尺寸变化。对于同一个待检测的物体对象,它在一个视频的多个位置出现时,会因为距离摄像头的远近不同而使得它在最终的图像中呈现出不同的尺寸。对于固定分辨率的摄像头而言,意味着这个物体所占区域像素总面积多与少的区别。不同尺寸物体所保留细节信息的多少也有很大差异。

因此,总的来说,虽然检测结果的呈现是给物体画个带标签的框就好,但里面还是有很多难以处理的问题点,所以解决起来并不像它看上去那样简单。

03

传统的物体检测方法

物体检测并不是一个新问题,学界对它有很长的研究历史,传统的做法是使用滑动窗的办法来判别物体位置。

滑动窗口方法。你可以简单理解为每次用一个大小不同的滑块,从上到下,从左到右的把整幅图像扫描一遍,然后对每个位置进行判别,找出其中包含物体的滑块位置,就是我们要检测物体的位置坐标。

窗口描述。上面说到判别窗口的过程中会涉及到一个问题,对于每一个窗口中的内容,我们应该怎么表示呢?对于这个问题,最容易想到的方法就是将整个窗口里所有像素罗列成一个向量来作为窗口描述。但是这样表示出来的数据可能会不稳定,稍微遇到光照或者颜色变化,图像块的描述结果就有很大差别,所以历史上人们会找一些对明亮,位置等因素不敏感的手工特征来表示这个窗口。例如以前常听到的用来做人脸检测的Haar-like特征、影响力巨大的SIFT特征(下图),专门为行人检测设计的(Histogram of Gradient,HoG)特征等。

窗口判别。有了滑块的描述,下面就是怎样判别的问题了。由于每帧图像都要做大量的判断(因为要从左往右、从上到下的扫描),所以判别的性能在这里很重要,在传统的方法中会采用把几个不同分类能力的判别器级联在一起的方式来处理数据(见下图)。只有通过上一层判别器分类为正的样本,才能进入下一层更复杂的分类器做判断,从而将大量负样本在早期就筛选出去。这个过程就好像升级打怪一样,普通玩家(大量负样本)很早就被低级小怪淘汰出局,只有很强悍的选手才能一路过关斩将,打到大boss。这样若非遇到顶级选手,大boss也不用轻易出马,从而保证了整个检测算法的速度,同时又不失精准。

传统的方法做物体检测到这里就介绍完毕,在下一篇中,我们再来讲一讲深度学习的方法怎么在这个领域里大展身手的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180609G0R9GV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券