目 录
摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 Python 3
1.2图像二值化 3
1.3 Opencv 3
1.4图像去噪 3
1.5本章小结 4
2 动态目标检测算法 5
2.1 背景差分法 5
2.2 帧差法 7
2.3 光流法 9
2.4 本章小结 10
3 动态目标跟踪算法 11
3.1 Mean Shift 11
3.2 Cam Shift 13
3.3 本章小结 14
4 人脸分类器模型 15
4.1 Haar分类器 15
4.2 分类器训练 16
4.3 本章小结 18
5 对比实验及结论 19
5.1 目标检测算法对比 19
5.2 目标跟踪算法对比 21
5.3 案例实现 24
5.3.1项目结构 24
5.3.2图像输入模块 25
5.3.3人脸检测模块 25
5.3.4人脸跟踪模块 26
5.3.5云台控制模块 26
5.4 本章小结 26
结 论 27
致 谢 28
参考文献 29
摘 要
随着科学核心技术的发展,机器视觉方向的研究备受关注。同时视频监控领域充满着未来发展所具备的所有性质。监控技术正朝着智能化、人性化、工具化方向稳定发展。截止目前,监控系统能够完成对拍摄的视频进行自动化分析,对场景中的运动物体进行检测,识别和跟踪,并及时产生相应的反馈动作。
视频监控系统代表数字信息行业的将来发展趋势,并且蕴含着巨大的经济利益,受到各行各业及相关机构的高度重视。在机器视觉的未来发展前景及对动态目标跟踪技术研究的基础上,充分结合生活真实场景,完成基于机器视觉的动态物体追踪的研究。
该文章对机器视觉领域中的运动目标检测及跟踪两个方向的相关核心算法的原理和逻辑进行深一步的研究并做详细的阐述。在背景实时变化的状态下,依靠自主调整角度的单目摄像机,完成对单一运动目标检测及跟踪,为机器视觉技术在视频监控系统中的运用做好铺垫。项目将以人脸的检测与跟踪的实现为例,摄像机对人脸进行检测,采用运动目标检测算法及基于Opencv的人脸分类器检测出动态场景中的人脸,分析人脸位置坐标的改变,根据运动目标追踪算法调整云台摄像机角度进行实时的跟踪。
关键词:机器视觉;动态目标;目标检测;目标跟踪
Abstract
With the mature development of the science, researching machine vision has attracted much attention. At the same time, the field of video monitoring is full of all the characteristics of the future development. At present, the monitoring system allows automatic analysis, detection and detection Detect and track video records and generate on-site feedback.
Video monitoring system represents the future development of digital information industry, also contains huge economic interests that is highly valued by all walks of life and relevant institutions. These organizations attach great importance to them. On the basis of the future development prospect of machine vision and the research on dynamic target tracking technology, the research on dynamic object tracking based on machine vision is completed by combining with real life scenes.
In this document, racial variations and descriptions of basic methods define and reflect movements in image editing areas. In the dynamic background, In the dynamic background, the monocular camera with self-adjusting Angle can detect and track the single target, which lays a foundation for the application of machine vision technology in video surveillance system. The project will take the realization of face detection and tracking as an example, the camera will detect the face, use the moving target detection algorithm and the face classifier based on Opencv to detect the face in the dynamic scene, analyze the change of face position coordinates, and adjust the Angle of the camera based on the moving target tracking algorithm for real-time tracking.
keywords: machine vision; dynamic target; object detection; target tracking
引 言
21世纪以来,国家稳步前进,科学技术成熟发展,国民对出行及生活安保问题的逐渐重视,商场、银行、红绿灯违章拍摄等场所对现场记录和安防警示系统的要求逐渐规范,需求大量增加,加快机器视觉技术迅速革新。一方面随着摄像机,视觉传感器等相关基础硬件的成熟发展,视频拍摄的分辨率、存储能力、图像处理速度有了质的提高。另一方面,伴随着图像处理技术和视觉计算基础理论等学科的不断创新发展,结合计算机的性价比的快速飞升,以及公共场合对机器视觉应用的需求不断增长,机器视觉将会更宽泛的普及,将会是未来安防系统、交通生活不可或缺的核心元素,未来高科技产品中重要组成部分。本文重点对机器视觉中的两个分支进行研究和学习,即动态目标检测与跟踪算法。
动态目标检测与跟踪算法,不单单在机器视觉领域备受研究者的关注,更是在人工智能、视频分析、智能图像处理等领域深受到学者的热爱。眼睛是人类获取外界所有信息的核心方式,由于视觉信息结构的独一无二,导致其始终无法被其他信息所替代。随着科学技术的迅猛发展,机器视觉在动态变化场景的视频监控中的应用与日俱增。即便是在机器视觉的辅助下监控系统的优化逐渐完善,但现阶段对视频中有价值信息的筛选及处理能力依旧欠缺。若将动态目标检测算法及跟踪算法与视频监控系统结合,筛选关键帧有价值信息,不仅减少工作人员繁重无意义的工作,更能够降低成本。综上所述,运动目标检测和跟踪算法与智能频监控系统融合是必要的。
动态目标检测算法和目标跟踪算法在不断的优化,新颖的思路也不断涌现,但也很难同时处理复杂的场景,在不同的场景中检测和跟踪会受到不同因素的影响,如背景与目标特征的相似性、多目标间的相似性、运动方向的突然改变、摄像机分辨率的差异、动态目标旋转、目标距离变化等因素。这些因素的变化将影响动态目标检测及跟踪的可靠性、准确性、实时性及稳定性。基于以上因素,采用在相同的实验环境下控制单变量的模式,对检测和跟踪算法进行实验,分析算法产生的对应效果。
本文以人脸的检测与跟踪为具体案例,对运动目标检测和跟踪算法进行原理和算法逻辑的详细研究与总结,完成基于机器视觉的动态目标跟踪的研究与实现。
本论文权威结构划分为六章,章节结构内容安排如下:
第一章 基础理论
本章对课题研究涉及到的理论进行阐述。
第二章 目标检测算法综述
本章对运动目标检测算法做综合的研究和详细的概述。
第三章 目标跟踪算法综述
本章对运动目标跟踪算法做综合的研究和详细的概述。
第四章 人脸分类器模型训练
本章对人脸检测算法进行概述。采集人脸数据训练人脸分类器模型。
第五章 动态目标检测与跟踪算法的应用实现
本章对检测和跟踪算法实验比对,得到算法优缺点。以人脸为案例进行具体实现。
1 相关技术
该项目以Windows系统为研究环境,以Pycharm为开发工具,Python为主要开发语言,进行动态目标检测及跟踪算法的对比实验。以图像处理为基础,以Opencv视觉库为基础训练人脸分类器模型。项目的案例实现以Openmv进行开发。以人脸的检测与跟踪为具体的案例,完成基于机器视觉的动态目标跟踪的研究与实现。
1.1 Python
Python是一种可升级、可扩展、可移植、易于维护和编译的开发语言。Python由ABC、Modula-3、C、C+、Algol-68、Smalltalk组成,与Java和C++编程语言相比,Python具有更简单的语法规则。Python创新了新的数据类型。Python还有许多其他的系统表达式,Python是一种解释和编译的编程语言。在开发过程中不需要编译,提高了Python的性能。按照当前编程语言排行榜的显示,Python在人工智能的相关领域应用范围十分的广泛,包括数据分析,机器视觉。简便的语法规则更是可以用于网站的开发。
1.2 图像二值化
图像二值化是把目标图像变成只有黑白两种颜色[1],将图像中的像素值处理成两种数值模式:0,255。通过该方法能够达到展现图像局部特征的效果。
在进行视觉方向的图像处理时,二值化操作会经常被用到,特别是在处理实际环境的过程中,图像二值化技术被用来分析图像和占据图像预处理方法中主要地位。将图像转换成灰度图像大小,通过对应的算法将目标图像改变成最后要得到的二值化图像,提高了研究效率,减少了数据计算量。
1.3 Opencv
OpenCV是Open Source Computer Vision Library的缩写[2]。包含了大量不同语言所对应的接口,C、C++、Python、MATLAB。Opencv的开源为许多机器视觉的爱好者提供了大量的便捷,同时Opencv封装了大量的图像处理函数,在实际的工作环境中只需调整参数,根据相应的应用情况具体调整即可,避免了复杂的图像函数实现过程。Opencv也支持许多现有的案例,随着Opencv底层的不断精简,底层代码量的优化提升,使得其在更多项目中得以应用。
1.4 图像去噪
在收集图像信息并将该图像信息传递的过程中不可避免的会产生噪声[3]。产生这些噪声也是由很多因素导致的,例如外界环境光线的变化,拍摄过程中摄像机出现不必要的振动,传输过程中出现的偏差也会导致造成的产生。噪声的存在对下一步的图像处理会产生极大的负面影响。常见的噪声类型有椒盐噪声和高斯噪声[4]。解决这两个噪声最常用的是均值滤波处理和中值滤波处理[5]。均值滤波处理是通过对图像像素均值做平滑处理达到去噪效果。而中值滤波是将噪声像素用其周围像素的中值代替进而对噪声像素做平滑处理。
1.5 本章小结
本章主要对该课题研究用到的基础理论,包括实现算法的Python语言,在图像预处理阶段用到的图像处理相关算法,以及案例实现用的计算机视觉视觉库。为课题的研究打下坚实的基础。
2 动态目标检测算法
运动目标检测主要是从视频中检测出运动的目标,该环节位于机器视觉系统的基础阶段,其检测的效率及效果影响着下一阶段的目标识别和目标跟踪等相关技术处理的效果。由于外界环境的不固定,光照变化、运动目标速度不稳定、运动物体的影子等其他无关噪声像素对检测的影响,给目标检测造成一定的难度。虽然检测环节位于起初环节,该环节所包含的信息量以及它对信息的处理影响着后续所有环节,因此它对计算机监控系统的影响是很广泛的,是现阶段机器视觉主要研究的热门方向之一。
按照摄像机是否运动的状况主要分为两类:如果拍摄过程中摄像头没有发生位置变化或者其他改变这种情况下称为静态的背景检测;如果摄像头发生了位置变化或者其他改变这种情况下称为动态的背景检测,这种情况下摄像头和拍摄的场景都在运动的情况下,会有更多的其他问题需要处理,存在处理难度更大的相对运动。本章对背景差分法、帧间差分法、光流法这三种算法做详细的阐述并更深入的对算法进行研究[6]。
2.1 背景差分法
背景差分方法通过将当前帧的图像和背景图像做相减操作进而得到图像的差值[7],若该差值超过阈值,该区域被认定为运动区域。完成背景差分法相对不复杂,从相减的数值能够间接得到运动物体的位置、外形等相关信息,并且能够提供运动区域完好的信息。该算法的基本过程即可体现出该算法实现的简单性和处理的高效性。
背景差分法主要有预处理、背景建模、前景检测、后处理四个主要模块[8]。预处理主要是为了接下来计算的简单和处理的便利。现阶段通过前N帧图像进行运算得到背景图像进而进一步的做背景建模。也可以采用基于单个高斯模型或者基于混合高斯模型的背景构建可以解决主动更新适应背景图像的变换的难题且能够应对长时间的检测。前景检测主要是做差处理为了得到视频前景中运动的区域。后处理为了克服背景图像模型的更新[9],对背景模型的更新在背景差分法整个处理过程中是必不可少的关键环节,采用混合高斯模型方式或者滑动平均方法对背景模型进行更新能够达到很好的更新效果。
对于背景图像的确定通常由存储背景图像、滑动平均算法和混合高斯模型算法解决,但在实际的生产环境中环境的实时变化很难提前储存背景图像,实际的工作环境下不太现实。滑动平均算法是采集视频中的N帧图像对背景图像进行提取,综合得到平均背景图像,遗憾的是,该模式一定程度上对光照和其他外界无关噪声像素极其敏感,显示运行环境下背景图像与真实背景会有出入。通过混合高斯模型算法进行背景建模得到背景图像能够很大程度保证背景图像的更新的效率,保证检测的准确性。虽然算法的处理质量有所提高,处理过程变得稳定,但该算法比较耗时。
背景差分法对静止的背景情况下的运动目标检测是占应用绝多数的,在不考虑噪音的影响,视频当前帧图像可以看成背景图像和运动目标组成。
(2-1)
因此,可得运动目标。
(2-2)
考虑到现实问题,其他的噪声问题是难以避免的,具体的计算运动区域和噪音组成的差分图像如(2-3)。
(2-3)
得到运动目标后需要根据灰度阈值T进一步的判断
(2-4)
图2.1为背景差分法处理流程。
图2.1背景差分法处理过程
背景差分法算法实现简单,运行逻辑易懂,适用于静态场景下,不能够用于摄像头可以发生变换的场景下,需要获取当前环境的背景图像,能够提取更加准确的运动目标图像,能够完整描述运动目标区域。在实际的工作环境中背景差分法还存在一些待解决问题,随着时间的变化,光照变化,其他噪声因素影响,对背景模型更新存在一定程度的影响。
2.2 帧差法
帧差法的核心思想是把相近的两帧图像做减法运算。如果该区域像素变化浮动较大,那么该区域存在运动情况,通过该方法可以检测出来运动目标。顾名思义,帧差法通过相减操作来判断是否有运动物体,相应的就存在两帧帧差法和三帧差法这两种类型,这两个方法主要区别在于三帧差法多做一次减法运算,检测出来的结果更准确。即便相邻的两帧图像具有均值、灰度处理等复杂的图像特征也可以进行差分处理[10]。总结来说,只要与背景对比存在明显的像素变化的运动物体均可检测出来。
对收集获得的两帧图像进行差值化操作,两帧图像存在相同的背景像素,当两帧图像相减时留下的是前景的运动目标物体。将做差获得的图像进行二值化运算,对比已经确定好的阈值,若大于阈值则是部分运动目标[11],若小于确定的阈值,则是部分背景图像。根据该基本原理将运动目标从背景中完整的分割出来。但图像依照阈值进行分割后会存在些许的噪声,为解决噪声影响直接采用形态学滤波对噪声进行处理达到减弱效果。当处理噪声影响后会给运动区域的图像造成空洞现象,这时候就需要做图像连通性处理,至此为止,才可以完成效果较好的运动目标。
为第k帧图像,为第t(即k+1或者k-1)帧图像,对应的帧差计算公式如(2-5)。
= | | (2-5)
其中,为两帧之间帧差图像的帧差,随后根据阈值T进行分割,如式子(2-6)。
(2-6)
根据T值对图像进行分割操作,能够得到二值化图像。
两帧差法处理流程如图2.2所示。
图2.2两帧间差分法处理过程
在运动物体运动速度缓慢以及运动物体面积较小的情况下,两帧差法对该情况下的物体检测效果存在很大漏洞。为了避免运动目标的处理丢失以及检测效果,甘明刚及团队提出了三帧差法,能够有效的应对运动速度缓慢和运动物体面积较小状况下的检测。三帧差法在一定程度上能够消除“重影”现象。其计算过程实现如公式(2-7)所示。
(2-7)
其中, 为视频的连续三帧图像为差分图像值。根据阈值T,则到二值化的差分图像:
(2-8)
三帧差法的处理流程图2.3所示。
图2.3三帧间差分法处理过程
阈值的选择对帧差法有一定的影响,该环节关乎到后期的对图像的处理效果。阈值的选择有全局阈值法和局部阈值法之分[12]。全局阈值法指的是在处理开始时阈值已经确定完毕,在随后的处理过程中不会有变化。局部阈值主要针对图像中敏感度不均匀且逐渐变化的情况,在该情况下将图像分割成子模块并分块进一步的详细处理。阈值的选择应该根据实际所要应用的场合,数值的大小并不是固定不变的,资料上的阈值只是提供参考数值,应该根据实际应用的处理效果做相应的调整。
2.3 光流法
光流法检测的主要思想是将图像中的每个像素点初始化矢量速度形成完整的运动矢量场[13]。依照像素点的矢量[14],对运动物体的形态做更加具体的判断。如果二者的运动矢量是差不多相仿的,则没有运动物体。若二者的运动矢量是不一样的,则有运动物体。根据这个判定规则对图像做处理,能够确定物体在视频每一帧中的准确位置。
在理想条件下,假设图像上一个像素点,在t时刻的亮度为,同时表示该点在水平和竖直方向上的速度分量,则速度分量可由公式(2-9)表示。
(2-9)
经过时间以后,该点对应的光亮度为。在运动距离趋于0的情况下,利用泰勒公式对上述公式进行详细的展开,则可以等如公式 (2-10)所示。
-
(2-10)
当趋近与0时(2-11)。
(2-11)
光流法的处理流程如图2.4所示。
图2.4光流法处理过程
如上文所述,光流法在理想情况下无需清楚所应用场景的信息,可以完成检测独立运动对象,并精准的计算物体速度,虽然该方法是在摄像机静止状态下,但同样可以应用在摄像机运动状态下。同样的,该方法会受到光线、阴影等噪声的影响,导致得到的光流场精度存在很多问题。光流法本身采用的循环迭代算法,导致计算过程复杂,并且该算法的计算量十分庞大,单纯的依赖算法本身的逻辑是不能够达到实时检测的效果。但是截至目前,日本学者通过使用该算法自身的优势结合数字传感器并且搭配计算力强大的芯片有效的解决实时检测问题。
2.4 本章小结
本章主要对选取的运动检测算法做详细的阐述,包括算法的原理、算法的处理方向以及算法的计算过程,深入的分析每一个算法。并且对每个算法的使用和适用场景进行综合的分析,对上述三种检测算法的优点进行总结并对导致其缺点的原因做详细阐述,该章的主要目的是为最后项目的检测模块打下坚实的基础。
3 动态目标跟踪算法
目标跟踪主要是在视频中找到定义的想要寻找的运动目标,并在时间序列增加的连续帧中,准确定位该目标位置。在实际生活中,目标跟踪是很复杂的问题,外界不可控制的因素的经常变化和可控因素的自身变化以及不确定性会给跟踪带来许多难题,使得跟踪问题变得难上加难。
运动目标的跟踪可以分为如几个类型:
(1)对目标物体的外部轮廓进行跟踪[15]。
(2)对训练好的目标物体模型进行跟踪。
(3)根据目标物体具有的特征进行跟踪。
(4)根据对视频区域选择的物体进行跟踪。
虽然有如上的不同跟踪算法思路,例如以方便计算机描述为核心的轮廓算法,以物体特殊特征为核心的模型算法,以区域划分为核心的区域选择算法。但究其本质,目标跟踪相关的算法从大体上可以称之为二分类法[16],就是把对运动目标的跟踪过程看作对所检测的物体进行详细的分类过程:目标或者非目标。本文将对选取的两个算法进行具体的阐述,介绍这两个算法原理、各自优缺点及其适合的环境。
3.1 Mean Shift
Mean Shift算法又被称为均值偏移算法[17]。它完全可以根据辅助空间中的采样点计算密度函数的值,而无需任何已知条件。该算法是根据无参数密度估计算法。利用训练数据进行充分的计算和估计。在估计过程不受目标物体形状变化的影响。由连续点的密度由该点附近的几个采样点估计。
估计核密度的方法是基于直方图法并加入核函数。基于Mean Shift算法,首先需要算出选中区域内的特征概率,其次要在下一个区域中得到相应的模型描述。最后根据参数选择与实际最接近的相似模型,确定正确的移动方向。从起始位置移动到正确位置的向量。
假设存在一个样本集合,其内部样本的密度不均匀,需要找到密度最高的地方。中间移动是在样本中绘制一个区域,并在中心和采样点之间添加向量,以获得介质层向量。由于采样点在所示区域内分布稀疏,分布越密集,对介质层矢量的影响就越大。
样本集合如图3.1所示。
图3.1样本集合
将蓝色框移向中间移位并更新中间移位向量。最后,蓝框会收敛到当前的目标位置,即样本最密集的地方。如图3.2所示。
图3.2 Mean Shift移动方向
目标跟踪从像素开始,像素,,…,代表中心,右上角代表迭代次数,周围的黑色像素代表运动测试点,箭头代表样本点相对于核函数中心像素的漂移矢量。曲面是密度估计范围的大小。估算的矢量会指向区域中最密集的地方。当Mean shift算法逐渐进行收敛状态的时候[18],在当前帧图像中反复进行搜索操作,找到相对于其他区域该区域最密集的地方。按照密度递增的运动方向移动即可跟踪到目标当前区域,达到跟踪的目的。
Mean Shift在实现时需要构建度量距离的函数。概率密度估计函数负责确定局部移动方向。Mean Shift类中需要包含对点进行移动的函数,根据在概率密度估计函数的计算下进行移动,也要包括分类函数,将移动后的结果做具体的分类处理。
3.2 Cam Shift
Cam Shift被称为连续自适应的均值漂移算法,该算法是基于Mean Shift算法基础之上利用颜色概率分布图进行优化和增强。由于RGB颜色空间中的基础三色之间有一定的联系,当光照变化发生改变会产生不利的影响,而在HSV颜色空间中的基础变量之间联系很小,对光照变化不敏感。该算法最大的优化就是其能够自主适应的调整搜索窗口,并且跟踪框能够根据物体的大小变化自动的调大或调小,基于该环节的优化,对后续环节处理的效果有了更加直观的判断。在跟踪方框得以优化的情况下,该算法的计算量依旧保持原算法的计算量,跟踪的效率和运行速度却得到很大的提高。Cam Shift算法的主要由颜色模型相互转换、直方图的反向投射、基于Mean Shift算法的迭代搜索目标位置、自动调整窗口大小四部分组成。
Cam Shift算法核心处理为:在视频序列中,通过目标检测确定的目标或者手动选择跟踪区域,将视频序列中的RGB颜色空间模型进行转变,同时建立目标的HSV色彩空间模型,随后将H通道的颜色分量从色彩空间中分离,根据其颜色分布直方图通过相反的方向进行投影之后计算得出。利用该算法对目标所在区域进行精准定位,对当前搜索窗口的大小,根据零阶距方法进行智能调节,反复的对上述步骤进行迭代,能够很好的达到对运动目标实时跟踪的效果,且效果相比于Mean Shift有一定的提升。
Cam Shift处理流程如图3.3所示。
图3.3 Cam Shift处理流程
Cam Shift实时性能强,精度良好,鲁棒性强。该算法是基于颜色的不变性,这是在跟踪过程中不受目标物体外形大小变化的影响的主要因素,在目标物体没有被完全遮挡的情况下依旧可以正常的进行跟踪。若受到背景因素的影响,跟踪效果会大大降低,严重情况时会出现无法跟踪,直接失效。目标物体运动速度过快时也会失效。
3.3 本章小结
本章主要对选取的运动目标跟踪算法做详细的阐述,包括算法的原理、算法的处理方向以及算法的计算过程,深入的分析每一个算法,旨在为最后项目的跟踪模块打下坚实的基础。
4 人脸分类器模型
人脸检测方向一直属于机器视觉方向,人脸检测以人脸识别为目的。随着需求的增大,人脸检测的环境变得逐渐复杂,因而人脸检测成为独立的研讨方向。本章主要介绍本项目实现所涉及的人脸检测技术及其原理,通过训练得到人脸分类器模型。
4.1 Haar分类器
现阶段主要通过知识和统计来做人脸检测。基于知识的方法是根据人脸外部位置结构进行人脸检测[19]。基于统计是通过大量的人脸图像学习得到人脸模型,通过该模型能够进一步的判断出这是否为人脸。本文将根据AdaBoost算法训练得到的强分类器按照对应规则相互组合[20],获得最终的人脸分类器模型。
Haar分类器由Haar-Like特征、积分图方法、AdaBoost和级联等组成[21]。基于该特征做具体处理,能够很容易地用矩形特征来描述人脸的某些特征,所有图像区域的像素之和可以通过一次图像遍历来确定,同时AdaBoost算法是一种强大的人脸分类器。为了提高分类精度,采用滤波级联的方法对分类器进行级联。
首先,通过规则组合和计算训练能够得到弱分类器,随后根据对应的组合规则把这些弱分类器组合成强分类器[22],依次进行训练,进而构建出最终的强分类器。弱分类器的每层含义及整体的树状结构如图4.1所示。在具体的训练过程中,必须进行筛选过程,通过筛选过程可以获得最优的弱分类器,从而减少了工作量和效率。可以提高检测效率。
图4.1弱分类器
4.2 分类器训练
Haar分类器训练可以分为五个步骤[23]:
(一)人脸数据的获取
(二)计算所需数值
(三)选择最优分类器
(四)按照级联算法进行训练
(五)最终分类器级联处理
本文将具体的训练过程分为三个主要部分:样本的采集、分类器的训练、分类器进行识别[24]。
在训练开始之前对正负人脸数据集采集,理想照片正负比例为1:3,该比例不存在绝对数值比例,但要保证负样本数据集比正样本数据集多且保证数据集多样化。正样本数据集选用ORL-face的人脸数据集,挑选100张人脸图像,对图像进行归一化和灰度操作,尺寸为2020防止训练时内存不足。负样本集采用Weizmann团队的数据集,选用300张图像,对图像进行归一化和灰度操作,尺寸为2020。部分数据如图4.2所示。
图4.2部分数据集
图像采集处理完成后,把人脸数据集照片分别放在Y_img和N_img文件夹中,并新建文件夹XML用来保存训练得到的分类器模型。安装目录中的opencv_createsamples.exe和opencv_haartraining.exe文件放在相同的位置下,opencv_createsamples.exe用来对所在文件夹的图像进行具体的描述,方便下一步信息的具体处理,opencv_haartraining.exe将Haar特征提取和AdaBoost训练过程封装完成。分别在Y_img和N_img中生成对图片描述的txt文件,将Y_img中文件描述中加上图像大小该属性,其中1代表当前图像出现过几次,剩下的几个数字代表图片开始的位置,及图片的大小,具体含义是指图片的大小。对图像的具体描述如图4.3所示。
图4.3图片描述文件
将Y_img、N_img、XML文件夹和pos.txt、neg.txt文档以及opencv_createsamples.exe和opencv_haartraining.exe放在同一个文件夹下,直接在当前路径下生成模型。如图4.4所示。
图4.4 文件集合
创建pos.vec文件,命令行如下。
opencv_createsamples.exe -vec pos.vec -info Y_img\pos.txt -bg N_img\neg.txt -w 20 -h 20 -num 100
通过opencv_haartraining.exe文件训练模型。命令行如下。
opencv_haartraining.exe -vec pos.vec -bg N_img\neg.txt -data xml -w 20 -h 20 -men 1024 -npos 45 --nneg 180 -nstages5 -model all
通过分类器的计算即可得到最后的人脸分类器模型。其中N表示层数。%SMP指的是在训练过程中样本使用多少。ST.THR指的是当前分类器所采用的阈值。HR指的是当前的分类器识别的准确率能够达到多少。FA值得是当前分类对错误的数据集识别出来的准确率能达到多少。EXP.ERR值得是理想状态下模型失误率能够降到多少。
模型训练过程如图4.5所示。
图4.5模型训练过程
模型训练结果如图4.6所示。
图4.6模型训练结果
对训练得到的人脸分类器模型进行实例检测,其检测效果如图4.7所示。
图4.7 检测效果
4.3 本章小结
本章主要对项目要用到的人脸分类器模型进行训练。由概括到详细的阐述Haar分类器的基本构成及其工作原理。对收集到的人脸图片做相关图像操作即预处理,训练得到人脸分类器模型。
5 对比实验及结论
5.1 目标检测算法对比
前文中对本文所选取的运动目标检测算法进行了具体的研究,接下来为对比三种算法之间的差异性,选取一段视频进行研究,选取的视频总共为84帧。在win10系统下进行试验,实验硬件为HUAWEI Mate Book D,CPU为i7-8550U。为增强差异性,采用同帧同行异帧同列原则。对比结果如图5.1所示。
图5.1检测算法效果图
在实验中,以第2帧、第30帧、第60帧为例。分别采用背景差分法、帧差法和光流法作为实验方法。如上图所示,A1,B1,C1为原视频该帧时的图像,a2,b2,c2为背景差分法处理后的图像,a3,b3,c3为帧间差分法处理后的当前帧图像,a4,b4,c4光流法处理后的当前帧图像。
如图5.1所示,背景差分法、帧差法和光流法都能够做到对运动物体的准确检测。相对于背景差分法,背景差分法首先需要对背景知识做建模操作,那么他就需要前期的数据集中进一步进行建模操作,出于建模操作的影响,刚开始的检测效果并不是很好,与另外二者算法相比差强人意,处理过程有拖影现象,随着背景图像建模完成,检测效果逐渐精准,拖影现象在逐渐消失。对于帧差法来说,检测到物体呈现出的轮廓不完整,某些帧图像出现运动物体部分丢失情况,前景检测效果整体呈现空洞感,且边缘结果不清晰。光流法可准确的检测运动目标本实验中视频长度84帧,视频后半段时间处理效果不理想,对硬件要求比较高,难以广泛运用。
进一步的对比三种算法实时性效果。采用检验实时性的标准为在相同帧区间内处理的速度,第一段区间为210帧,第二段区间为2030帧,第三段区间为50~60帧,共计28帧作为研究对象。其时间对比如表5.1所示。
表5.1 时间对比
2~10帧(s) 20~30帧(s) 50~60帧(s) 总时间(s) 均时(s/f)
背景差分法 0.826 0.594 0.539 1.959 0.070
帧差法 0.973 0.761 0.726 2.46 0.088
光流法 1.859 1.176 1.089 4.124 0.147
从表5.1可以得知:背景差法的速度最快,它只需要根据相应的规则进行更新,运动目标识别只需要减去当前帧和背景图像。帧差法需要帧帧之间相减根据相减结果做下一步处理,会有一定的计算量,在时间上与背景差法相比较慢。而光流法时间性能与前二者相比时间更慢,主要原因在于光流法需要计算每一个像素的运动矢量,计算量大,计算复杂。
根据以上实验结果可得出如表5.2的结论。
表5.2 检测算法实验结论
算法类型 优点 缺点
背景差分法 ①算法简单
②易于实现
③背景清晰时,处理效果更好 ①需要在背景静止的情况下
②大量计算,实时性较差
③环境要求较高
帧差法 ①逻辑简单
②适用性强
③速度快,实时性强 ①难以得到完整轮廓
②物体移动速度不能太快
③检测物体成空洞感
光流法 ①适应性强
②无需预先建模 ①硬件要求高,难以推广
②计算量大
③实时性差
运动目标检测算法在不断优化与创新,检测算法变得日益成熟,但许多外界因素导致检测算法会出现不同的失效。导致检测算法失效的因素总结如下:
1.运动目标的区分:背景图像的某些区域与目标相似,导致目标检测出错。
2.光线变化:光照的逐渐改变,忽明忽暗,导致前景检测出错。
3.颜色相似:前景图像与背景图像大面积的颜色相同,检测出现空洞现象。
4.背景变化:背景大面积改变给背景建模带来困难,前景物体检测丢失。
5.位置突变:运动物体突然停止,导致前景运动物体检测后半部分消失
6.相机变化:相机角度自调节会给拍摄造成影响,导致整体检测失效。
5.2 目标跟踪算法对比
前面对Mean Shift、Cam Shift各自的原理以及优缺点进行详细的阐述。为对比两算法之间的差异性,选取一段视频进行研究,选取的视频总共为914帧。增强效果对比度,采用同帧同行异帧同列原则。对比结果如图5.2所示。
图5.2 跟踪算法效果对比图
本次实验中,分别采用第2帧、第90帧、第150帧作为研究对象。以Mean Shift和Cam Shift为实验方法。如图5.2所示当车辆从远处行驶过来的时候,两种跟踪算法都可以很好的对车辆进行跟踪,但是Mean Shift算法的跟踪框并不能随着车辆靠近而进行自主的大小调节,相同情况下Cam Shift算法能够有效的对跟踪框大小进行调节。
如图5.3所示,采用Mean Shift和Cam Shift算法对有遮挡物情况下进行跟踪,三组图片分别表示:目标物体出现,接近遮挡物,离开遮挡物。
图5.3 遮挡物情况下效果对比图
视频选取了三帧图像,图像展示所用的算法从左至右分别是Mean Shift和Cam Shift。在第一组图像中,目标物体出现在视频中,无任何遮挡物、无背景颜色干扰及其他干扰能够准确地跟踪。在第二组图像中,目标物体靠近遮挡物,目标物体被部分遮挡,Mean Shift算法对目标物体的完全跟踪失效,而Cam Shift物体部分失效。在第三组图像中,目标物体离开遮挡物,Mean Shift算法做到重新跟踪目标物体,然而Cam Shift算法还是没有作用。总结来说,当在视频中出现遮挡物,两种算法对遮挡物的处理并不能达到正常时的跟踪效果。
接下来对目标物体颜色与背景颜色相似的环境下进行试验。由于Mean Shift算法的跟踪框无法自调整大小适应物体位置的变化,而Cam Shift算法的核心原理与Mean Shift算法的核心原理相似,将采用Cam Shift算法进行仿真实验。效果如图5.4所示。
图5.4 颜色相近时效果对比图
如图5.4,受背景颜色的持续影响,及颜色相近环境下,Cam Shift及其容易受到周围环境的影响,在第五帧的时候能够准确跟踪目标物体。在第15帧的时候,目标跟踪框的漂移值计算已经出现问题,跟踪框出现发散现象。在第25帧的时候,目标跟踪框发散程度变大,不能够准确地定位目标的位置,实际偏差较大。因此,颜色相近时很容易受干扰。
根据以上结果总结如表5.3结论。
表5.3 跟踪算法实验结论
算法类型 优点 缺点
Mean Shift ①算法简单,能够实时跟踪
②算法具有一定自适应性
③可与其他跟踪算法融合 ①跟踪窗口大小不能改变
②按照颜色跟踪时,背景颜色会成为干扰物
③目标运动速度过快或突然消失,导致跟踪失败
Cam Shift ①算法简单,计算量小
②跟踪效果精准
③跟踪框大小可以自适应变化 ①遮挡物干扰导致算法失效
②目标运动速度过快或突然消失,导致跟踪失败
运动目标跟踪算法在不停的发展,基于人工智能的跟踪算法正在代替传统的跟踪算法,但许多外界因素导致跟踪算法会出现不同程度的失效。导致传统跟踪算法失效的外界因素总结如下:
1.背景颜色:环境颜色与运动目标颜色相似,目标跟踪有很大偏差。
2.速度突变:目标物体的速度突然变化,会导致跟踪失效。
3.突然静止:运动物体运动状态突变,会导致跟踪失效。
4.遮挡物存在:当存在大面积遮挡物时,跟踪会出现不同程度的失效。
5.3案例实现
通过之前章节对运动目标检测、运动目标跟踪、人脸检测技术的具体研究和实验效果对比。将结合以上算法,完成以人脸检测与跟踪为案例的项目实现。项目在Openmv中具体实现。
5.3.1项目结构
项目包括人脸检测模块、跟踪模块。云台控制模块三大部分。项目运行时,通过摄像头的拍摄对视频进行抓取,输入图像数据,人脸检测模块完成人脸检测,检测所在帧是否存在人脸,若存在人脸则标识人脸所在区域,根据人脸跟踪模块调用云台控制模块进行人脸跟踪。系统的整体结构如图5.5所示。
图5.5 系统整体结构图
由图5.5能够清晰得出,项目整体可以由具体的云台控制模块和人脸检测两大模块构成。云台控制模块来控制云台的角度和高度变化,主要是通过云台的角度变化来调整摄像机的位置能够进行人脸的跟踪。人脸检测模块具体分为视频图像输入、人脸检测、人脸跟踪三个子模块,这是人脸检测的逻辑流程,其中视频图像输入包括图像采集和图像灰度化两个子模块,该模块就是对输入的图像进行基本的图像操作,为了下一步处理更加准确和方便。
5.3.2图像输入模块
输入模块的主要功能是从摄像机采集的视频中提取视频关键帧,并为人脸识别准备提取的图像。其流程如图5.6所示。
图5.6 图像处理流程
该流程包括的函数和说明如下:
(1) reset():初始化相机传感器
(2) set_contrast():设置相机对比度。
(3) set_pixformat():设置图像灰度格式。
(4) set_framesize():设置图像分辨率。
(5) skip_frames():跳过帧数,等待相机稳定。
(6) snapshot():拍摄照片并将照片返回。
5.3.3人脸检测模块
人脸识别模块采用AdaBoost算法对人脸进行识别。该模块主要对处理后的图像进行人脸识别,并对人脸进行检测。如果有脸,则将面部区域框起来,为脸的后续处理奠定基础。其流程如图5.7所示。
图5.7 人脸检测流程
该流程包括的函数和说明如下:
(1) HaarDec():用来检测存在人脸的函数
(2) find_max():寻找最大色块函数
(3) find_features():用来判断是否存在人脸的函数
5.3.4人脸跟踪模块
人脸跟踪模块的功能实现是基于Cam Shift算法对检测到的人脸进行目标跟踪[25],如图5.8所示。
图5.8 人脸跟踪模块流程
该处理流程中主要使用trackFace()函数,该函数完成对视频中出现的人脸进行实时精准的跟踪该核心功能,对下一阶段的云台调整极为重要。
5.3.5云台控制模块
云台控制模块的主要功能是根据人脸在视频中的位置变化,调整摄像机的角度,使人脸始终保持在摄像机视野内。该模块流程如图5.9所示。
图5.9 云台控制模块流程
该处理流程主要使用get_pid()函数,该函数完成实现根据视频中人脸坐标的变换实时调整云台摄像机角度进行跟踪这一功能,是整个项目的最后处理模块。
5.4 本章小结
本章主要将前文所述的算法做深入的分析,在相同的环境下进行对比实验。总结每个算法的优缺点,并且对每类算法存在的干扰问题进行陈述。并以人脸为案例将算法进行具体实现。
结 论
动态目标检测及跟踪算法在生活中处处得以应用,城市智慧大脑,自动驾驶,视频监控领域以及只能视频分析等生活各方面。本文对运动目标检测和跟踪算法进行研究并实现,在相同环境下对各个算法进行分析和总结。
首先介绍了本文所需要的基础知识,包括用到的Python开发语言、为明确图像处理而对数字对象进行概要介绍,为提高处理速度而进行图像灰度化处理,为训练人脸分类器模型而对Opencv进行详细阐述。
其次介绍了三种经典的运动目标检测算法和两种经典的运动目标跟踪算法。对该五种算法的原理和运算逻辑进行详细的阐述。在相同的实验环境下进行无关变量控制,对比各个算法在相同实验环境下的适应性及准确性。总结出算法的优缺点及存在的干扰因素。对AdaBoost算法原理进行详细阐述,并得到人脸分类器模型。
根据对实验效果的分析及对传统算法的优化,根据人脸检测、人脸分类器模型、人脸跟踪和云台控制模块完成以人脸为案例的基于机器视觉的运动目标跟踪的具体实现。
基于社会快速发展和科学技术的成熟发展,各技术领域都会产生难以预想的改变,机器视觉领域亦是如此,有着其他领域成熟发展的基础,运动目标检测与跟踪技术出现了许多新的解决方案和方向。同时也有更多基于经典算法的优化案例。该技术是长久的研究课题,相信在不久的未来,许多技术难题都会被逐一攻克,使该技术能够更加成熟的应用在生活之中。
致 谢
四年时光,转瞬即逝。论文的撰写也到了结尾,此时心中感慨万分。曾以为四年的时间会很漫长,却不知毕业已经到来。己亥末,庚子初,受疫情影响,举国上下倾尽全力,网络答辩结束我四年的学习生涯。这四年充满了感动,艰辛与成长。毕业设计的顺利完成得力于许多人的帮助,在此表示衷心的感谢。
首先感谢我的我的导师朱元华和刘建生老师。两位老师用他们渊博的学识使我的论文更加完善。特别感谢朱老师一次次的修改与指导才让我的毕业设计顺利完成。由衷的感谢两位老师!其次还要感谢教研室的其他几位老师,他们的言行举止对我的学习生涯起着至关重要的作用。我的同学在我的毕业设计阶段给与我莫大的帮助。最后,感谢我的父母。是他们的鼓励和支持让我没有后顾之忧,顺利的完成毕业设计!
向曾经关心、帮助和指导过我的人们致以最衷心的感谢!由于本人能力有限,论文中难免出现疏漏之处,还请各位老师批评指正!
虽有不舍,砥砺前行!
参考文献
[1]朱良.机器视觉在工业机器人抓取技术中的应用[D].中国科学院研究生院(沈阳计算技术研究所),2016
[2]葛林.基于ARM9和OpenCV的视频监控系统的研究[D].湖北工业大学,2013
[3]Zijun Sha,Lin Hu,Babak Daneshvar Rouyendegh.Deep learning and optimization algorithms for automatic breast cancer detection[J]. International Journal of Imaging Systems and Technology,2020,30(2):69-73
[4]高向.基于OpenCV运动目标检测与跟踪算法研究[D].宁夏大学,2019
[5]刘洪波.非局部均值滤波在重力异常数据处理中的应用[J].世界地质,2019,38(02):461-469.
[6]郭真子.基于视频图像的城市交通流量统计算法研究[D].西安科技大学,2019
[7]何银飞.基于改进的帧差法和背景差法实现运动目标检测[D].燕山大学,2016
[8]郭富强.智能视频监控系统中的前景目标检测技术研究[D].西安电子科技大学,2019
[9]黄敏.基于视频的运动目标检测研究[D].东南大学,2014
[10]刘硕.视频序列图像运动目标检测算法研究[D].西安电子科技大学,2013
[11]武昊男.CMOS图像预处理方法研究与FPGA实现[D].中北大学,2019
[12]杨忱浩.基于Jetson TX2的车道线与车辆识别系统的设计与实现[D].杭州电子科技大学,2019
[13]刘洁.基于光流法的运动目标检测和跟踪算法研究[D].中国矿业大学,2015
[14]鹿乐.基于Intel Xeon Phi众核架构的视频算法研究[D].西安电子科技大学,2017
[15]王朋月.基于全局运动估计补偿的目标检测算法研究[D].北京工业大学,2018
[16]漆随平.基于计算机视觉的检测方法与应用研究[D].浙江大学,2005
[17]Kenshi Saho, Masao Masugi.Performance analysis ofα-β-γtracking filters using position and velocity measurements[J]. EURASIP Journal on Advances in Signal Processing, 2015:32-35
[18]徐骁翔.基于Mean Shift的运动目标检测与跟踪研究[D].浙江工业大学,2015
[19]万川.基于动态序列图像的人脸表情识别系统理论与方法研究[D].吉林大学,2013
[20]Jinze Du,Jean-François Diouris,Yide Wang.A RSSI-based parameter tracking strategy for constrained position localization[J]. EURASIP Journal on Advances in Signal Processing, 2017 :12-16
[21]贺瑜飞.基于Haar特征和改进的AdaBoost算法的人脸图像识别[J].榆林学院学报,2019,29(06) :69-71
[22]He Jiang,Weihua Zheng,Liangqing Luo,Yao Dong. A two-stage minimax concave penalty based method in pruned AdaBoost ensemble[J]. Applied Soft Computing Journal,2019 :83-87
[23]蒋政.人脸识别中特征提取算法的研究与实现[D].南京邮电大学,2016
[24]管凤旭.基于流形学习及可拓分类器的手指静脉识别研究[D].哈尔滨工程大学,2010
[25]姚洪猛.运动物体检测与跟踪的设计与实现[D].河北科技大学,2019