• 服务热线:13728883399
  • wangyp@shangeai.com

嵌入式GPU人脸识别踪轮式机器人设计

时间:2018-10-20 10:22:19点击:335次

百度百科对自动化专业做出了这样的介绍:

该专业是以自动控制理论为主要理论基础,以电子技术、计算机信息技术、传感器与检测技术等为主要技术手段,对各种自动化装置和系统实施控制,是计算机硬件与软件结合、机械与电子结合、元件与系统结合、运行与制造结合,集控制科学、计算机技术、电子技术、机械工程为一体的综合性学科专业。

综合性学科!是的!

作为自动化专业出身的我,实际接受的本科教育与研究生教育也恰恰验证了这一点,这是一个大融合、大杂烩的专业。

这样就容易造成什么了解,而又是什么都不太精通的尴尬局面。

从电子角度来看,数电、模电、电路等基础的电子技术不必多说,从最基础的8位51单片机和16位Freescale单片机的学习开始,到工业PLC,再到嵌入式系统级别的电子芯片ARM等等,最后还要接触纯硬件设计的FPGA。为了应用这些电子芯片,就需要学习高级算、高等数学、最优控制等等。

总之一系列学习下来,回想到得意之作,自己心里也在犯嘀咕,所有曾经做过的东西都是入门级别的实验,哪儿能称的上“得意”二字。后来仔细想想,也许“得意”对我来说,就是每次接触新器件、新技术的好奇感和新鲜感,以及利用这些器件完成一个电子作品而产生的自豪感。

犹记得第一次接触Zynq时,对其拥有“ARM+FPGA”硬件结构的那种惊奇,而后用此完成了一些设计;犹记得第一次使用GPU通过软件并行的方式完成算法加速。

我的得意之作
本次带来的“得意”之作就是利用英伟达首款嵌入式GPU加速套件Jetson Tk1做出作品--人脸跟踪轮式机器人(小车)的设计。

对于人脸识别,国内目前的研究大多数采用CPU方案。虽然2010年开始,国内一些研究者也开始使用GPU进行人脸识别加速,比如有人采用AMD的GPU进行开发,但开发过程比较复杂,且受限于显卡的性能,其相对于CPU的人脸识别速度提升有限,且大部分是在PC端实现的,PC端是存在弊端的。

方案选择也是艰难的
我们的设计采用嵌入式系统设计,而针对嵌入式系统计算性能有限的现状,故采用NVIDIA公司最新推出的Jetson TK1嵌入式开发套件,其最大的特点是嵌入一颗NVIDIA Tegra K1的GPU,性能强大直逼桌面端GPU,且其采用NVIDIA CUDA平台进行开发,充分运用GPU的并行运行的特性,能大大提升算法运算性能。

不仅如此,其还嵌入一颗四核心的ARM Cortex –A15处理器,以及2GB的运行内存,能够很好运行Linux系统,这样能充分发挥GPU在嵌入式应用的威力,大大提升人脸识别速度,并可迅速作出响应。

由于此开发套件只是一个小型的开发板,携带便利,应用场合更加灵活,故我们在人脸检测的基础上做出一个小车,用以时时刻刻对人脸进行跟踪。本次开发在Linux操作系统的层面完成整个脸部识别的控制过程,设计的主要内容如图1所示。

图1 课题主要研究内容框图

包括:嵌入式软硬件平台和外设硬件如摄像头和轮式机器人的搭建,选用并行性高的算法,通过开源函数库来完成人脸识别的算法描述,利用CUDA开发工具对GPU进行开发,实现算法的并行运算以提升人脸识别的速度,最终将人脸识别的结果信号反馈给轮式机器人,驱动轮式机器人的移动对人脸进行跟踪。为了实时查看脸部检测的结果,本作品还需将摄像头返回的图像利用WIFI无线传输到电脑上。

人脸识别主要由人脸图像采集及检测、人脸图像特征提取以及匹配与识别这几部分组成。

首先是人脸检测,人脸检测算法的可靠性很大程度上依赖于分类器的设计,本系统的人脸检测部分尝试了三种不同方法:

第一种,在OpenCV 中有直接能拿来用的Haar 分类器,该方法对于被遮挡了部分的人脸是基本检测不出来的,在TK1 上的运行速度大概每秒8 帧左右;

第二种,在OpenCV 2.X 以上扩充的基于LBP 特征的人脸检测器,与Haar 特征相比,LBP 是整数特征,因此训练和检测过程都会比Haar 特征快几倍。在TK1 上的运行速度能达到每秒20 帧左右,但是检测准确率LBP 比Haar 效果要差;

第三种,Dlib 库的人脸检测算法使用的hog 特征与级联分类器,Dlib 自带人脸检测器准确度非常高,即使受到硬件条件限制,摄像头拍到比较模糊的画面,在这种情况下其他一些人脸库检测率都非常低,而Dlib的效果却能出乎意料,美中不足的是,速度比较慢。

人脸特征提取是根据已知人脸数据库中的人脸表征方法,提取出该人脸图像的特征值,对人脸特征进行建模,将人脸图像映射到特征空间的过程。

人脸特征提取的方法很多,可以分为两大类:一种是基于知识的表征方法,例如:几何特征、固定特征模板等;另外一种是基于代数特征或统计学习的表征方法,例如:代数特征、特征脸等。

在Linux平台,可以利用Dlib机器学习库进行人脸特征提取部分。人脸图像匹配与识别就是将提取的人脸图像的特征值与数据库中存储的特征模板进行搜索比较,当两者相似度超过某一阈值,则认为成功匹配,把匹配得到的结果输出。

  • 标签: