python行人跟踪,opencv行人检测python

  python行人跟踪,opencv行人检测python

  上次介绍了行人检测的基本算法——滑动窗口法物体检测中的行人检测(1)。这一次,我们将介绍具有良好检测效果的聚合通道特征算法。该算法的优势在于良好的行人检测性能和极快的检测速度。

  聚合信道特征介绍

  聚合渠道特征(ACF)是大神Piotr Dollar提出的。起初,它被称为积分通道特征(ICF),其在Matlab中的实现在他的开源工具箱中给出。

  所谓聚合通道特征,其实就是几个不同的特征叠加形成一个统一的特征。为了明确这个概念,我们首先需要解释什么是特色渠道。好了,我们从图片开始,见图1。

  图1特征通道示意图

  特征通道,在八股文中,是对输入画面的某种输出反应。简单理解就是映射输入图片。这种映射可以是点对点的,也可以是区域性的。简而言之,就是完成从输入到与输入大小相同的图片的转换。这个变换的图像是通道特征。至于灰度图像,可以认为是最简单的通道,而彩色图像包含RGB三个颜色通道,也可以计算出对应的灰度通道或LUV颜色通道。在此基础上,一阶通道特征可以定义为某个区域内某个输入通道的像素之和,而高阶通道特征则定义为任意数量的一阶通道特征叠加后的结果值。在图1中,对于输入图像(A),分别计算其L(b)、U(c)、V(d)颜色通道、梯度幅度通道(E)和四个梯度方向通道(f)-(i)的特性。聚合通道特性的来源

  本文介绍了聚合渠道的特点(一开始也叫积分渠道的特点),这个时候我很想知道它是怎么来的。它可以追溯到在VJ检测算法中使用的Haar-like特征和积分图。在目标检测(1)的行人检测中,提到了VJ通道级联分类器方法大大加快了检测过程中各个窗口的分类过程。但是,对于级联分类器来说,每一级的判别特征应该如何选择呢?VJ中采用了Haar-like特征,示意图如图2所示。

  图2类哈尔特征示意图

  对于矩形区域,其类哈尔特征值可以表示为白色像素值之和减去黑色像素值之和。该特征是鲁棒的,并且对光照变化不敏感,特别是在人脸检测中。但其缺点是特征计算是基于原始图像的灰度。众所周知,HoG特征在行人检测中非常有用,现在我们有了特征通道的概念。那么,我们能以同样的方式表达猪的特征吗?当然,这是积分通道特性的想法。此时,只要将Haar-like计算过程中的图片从灰度图像变为某一方向的梯度图像(图1f-图1i),那么一个区域的Haar-like特征就变成了“梯度方向Haar-like特征”。聚合信道特征计算

  描述了类哈尔特征。每个特征值的计算是一个区域内像素的总和。如果对每个区域进行循环叠加统计,计算还是太麻烦。因此,VJ提出了积分图的方法来快速计算一个区域的像素之和,如图3所示。

  图3积分图

  对于积分图中的任意一点,其“像素值”是从原图像的上角到该点的所有像素值之和。这样,每个区域的像素值之和,如D,可以简化为四次查表运算和三次加法运算(f(D)=f(4)-f(1) f(2) f(3)),在给定积分图的情况下,其计算复杂度为O(1)。对于一个图像,积分图只在初始化时计算一次。

  对于每个特征通道,我们可以计算出其对应的积分图,同时可以计算出任意区域的“类哈尔通道特征值”。一个区域需要计算直方图特征怎么办?也简单,用积分直方图就可以了。原理图见图4。

  图4积分直方图

  在积分直方图中,任意一点的“像素值”不再是单一值,而是代表该点左上区域直方图统计量的向量。使用与积分图相同的思想,通过查表可以很容易地得到一个区域的直方图。此时,聚合渠道的特性才能发挥其效用。特色渠道的选择

  有了聚合信道特征的概念和相应的计算方法,剩下的问题是哪些特征应该包括在聚合信道特征中。这只能通过实验来验证。在图像处理领域,特征通道通常包括颜色通道(RGB颜色通道、LUV颜色通道、灰度通道)、梯度通道(包括梯度幅度通道和梯度方向通道)和边缘通道(Sobel边缘通道和Canny边缘通道)。所以,首先,用一个单一的特征通道来测试和验证每个通道的有效性。在INRIA行人数据集上的结果如下:

  表1特征信道性能表

  从表中可以看出,梯度方向通道和HoG通道的检测效果更好,正好符合人们之前关于行人检测的认知(行人检测中使用最好的特征是HoG特征)。聚合信道特征的表示

  具有单一类型信道特征的检测性能(信道特征不限于上面提到的,可以进行更广泛的实验,例如测试Gabor滤波特征、SIFT特征等。),可以组合几个特征来获得聚合的信道特征。Dollar在实验中发现结合LUV颜色通道渐变幅度通道渐变方向通道形成的特征检测效果非常好,所以现在是聚合通道特征的标准配置。此时,当形成一个窗口的特征描述时,需要将通道特征一起列出,如图5j所示。

  图5聚合信道特征描述符示意图

  通过在窗口中列出通道特征而形成的特征描述将在后面被称为集合通道特征。用它作为窗口的特征表示,此时得到每个窗口统一维数的特征向量。

  特征图像金字塔

  还记得在《物体检测(1)》的行人检测中,说过要用不同的窗口分别扫描图片。其实还有一种方法,就是在保持窗口大小不变的情况下,改变图片的大小。前一种方法的思路是缩放窗口,后一种方法的思路是缩放图片,效果差不多。这涉及到图像特征金字塔的生成。参见图6。

  图6特征图像金字塔

  对于每个尺度(即不同尺寸)上的原始图像(示意箭头上方的图像),需要计算其对应的特征图像(箭头下方的图像)。形成的整个特征图像集称为特征图像在尺度空间中的特征图像金字塔。这个计算过程非常耗时。Dollar做了相应的查询后发现,其实不需要对每一个尺度都做特征计算,只需要几个尺度,比如每8个尺度,其他尺度上的特征图像直接由相邻尺度上的特征图像进行缩放。这样大大减少了特征的计算时间,而且检测效果还不错。与特征计算相比,图像缩放的计算量可以忽略不计,因此加速的思想相当明显。

  至此,整个检测过程就变成了这样。对于一个输入图片,首先构建图像的特征图像金字塔(根据输入图片的大小计算尺度空间的大小,特征包括LUV颜色通道、梯度幅度通道和梯度方向通道)。然后,对于金塔中的每一层,使用固定大小的窗口扫描该层。每次窗口经过时,都会获得图5所示的聚合通道的特征描述符。描述符被扔进分类器以确定当前窗口是否是行人。分类器采用级联的形式来加速计算过程。当计算出所用比例中的所有窗口时,将标记出图片中的所有行人。

  好了,就这样。接下来说说检测性能优秀的Fast-RCNN是如何做检测的。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: