CN107688785A - 基于arm平台的双线程并行实时人脸检测的开发方法 - Google Patents
基于arm平台的双线程并行实时人脸检测的开发方法 Download PDFInfo
- Publication number
- CN107688785A CN107688785A CN201710749295.6A CN201710749295A CN107688785A CN 107688785 A CN107688785 A CN 107688785A CN 201710749295 A CN201710749295 A CN 201710749295A CN 107688785 A CN107688785 A CN 107688785A
- Authority
- CN
- China
- Prior art keywords
- face
- frame
- video image
- image data
- shrink
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
- G06V40/166—Detection; Localisation; Normalisation using acquisition arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于ARM平台的双线程并行实时人脸检测的开发方法,其主要思路为:使用摄像头采集第m帧视频图像,得到第m帧视频图像数据,m的初值为1,并发送至处理器;使用处理器对第m帧视频图像数据进行人脸矩形框的搜索检测,得到第m帧视频图像中的Nm个人脸矩形框,以及Nm个人脸矩形框中的Nm×4个角点坐标,记为第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果,进而得到处理完成的第m帧视频图像数据,并发送至显示屏进行显示;令m的值加1,直至得到处理完成的第Q帧视频图像数据,并发送至显示屏进行显示;然后将显示屏显示的处理完成的第1帧视频图像数据至处理完成的第Q帧视频图像数据,记为基于ARM平台的双线程并行实时人脸检测的开发结果。
Description
技术领域
本发明属于人脸检测技术应用的嵌入式开发技术领域,特别涉及一种基于ARM平台的双线程并行实时人脸检测的开发方法。
背景技术
人脸检测(Face Detection),即在一张图像中确定出所有人脸的位置、大小,并在图像中画出人脸矩形框;人脸检测最初作为自动人脸识别(Face Recognition)系统中的第一步定位环节而被提出。
近几年来随着智能电子应用的快速发展,人脸检测在身份鉴别、安全监测、图像检索、数字视频处理等众多领域的应用价值也越发显著;目前人脸检测的应用早已不仅限于PC平台上对静态图片的检测,更多的是应用在嵌入式处理器平台,如ARM、DSP、安卓等嵌入式处理器平台上对实时视频图像的处理,这就对人脸检测系统的实时性处理提出很高的要求。
一般来说,视频图像的采集显示过程是很快的,而搜索检测人脸框的处理过程相对采集显示过程较慢,对于常规单线程的视频图像的串行处理过程,容易出现因搜索检测人脸框处理速度过慢而引发的最终显示速度慢或卡壳的现象。
发明内容
针对上述现有技术存在的问题,本发明的目的在于提出一种基于ARM平台的双线程并行实时人脸检测方法,该种基于ARM平台的双线程并行实时人脸检测方法能够解决常规单线程串行处理过程中因搜索人脸矩形框处理速度过慢而引发的视频图像的最终显示速度过慢或卡壳的问题,并通过使用美国德州仪器(TI)公司的AM572x评估板的ARM平台设计出的人脸检测方法,通过创建双线程并行处理实现了可靠、流畅显示的实时人脸检测。
本发明的实现思路是:本发明中人脸检测方法运行的目标机采用美国德州仪器(TI)公司的ARM处理器硬件平台的AM572x评估板,而人脸检测方法开发的宿主机是配置了Linux操作系统和OpenCV软件的PC机,为后续在Linux操作系统环境下进行人脸检测方法的开发、基于OpenCV的Adaboost算法进行人脸检测做好准备;由于视频图像的人脸检测处理全过程一般包括图像的采集、搜索检测人脸矩形框、画矩形框、显示四个部分,且常规的人脸检测处理过程基本都是单线程串行处理,即视频图像的采集→搜索检测人脸矩形框→画人脸矩形框→显示;而本发明人脸检测应用的开发通过在程序里创建双线程。让一个线程负责进行视频图像的采集、画矩形框、显示;另一个线程专门进行相对耗时的视频图像的人脸矩形框检测搜索;如此视频图像的双线程相互配合并行处理,大大提高了人脸检测应用的开发过程处理效率,从而最终能够实现流畅的实时人脸检测。
为了达到上述目的,本发明采用以下具体技术方案予以实现。
技术方案一:
一种ARM平台,其特征在于,包括目标机和宿主机,目标机和宿主机串行电连接,所述目标机包括摄像头、处理器、显示屏,摄像头输出端电连接处理器输入端,处理器输出端电连接显示屏输入端;
所述摄像头用于获取视频图像,所述处理器用于对获取的视频图像依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,所述显示屏用于对处理器画出的人脸矩形框进行显示;所述宿主机用于设置摄像头获取视频图像的尺寸大小,用于控制处理器依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,以及用于控制显示屏对处理器画出的人脸矩形框进行显示。
技术方案二:
一种基于ARM平台的双线程并行实时人脸检测的开发方法,基于所述ARM平台,ARM平台包括目标机和宿主机,所述目标机包括摄像头、处理器、显示屏,所述基于ARM平台的双线程并行实时人脸检测方法,其特征在于,包括以下步骤:
步骤1,使用摄像头采集第m帧视频图像,得到第m帧视频图像数据datam,并发送至处理器;m的初值为1,m的最大值为Q,Q为设定的视频图像数据总帧数,Q为大于或等于1的整数;
步骤2,使用处理器对第m帧视频图像数据进行人脸矩形框的搜索检测,得到第m帧视频图像中的Nm个人脸矩形框,以及Nm个人脸矩形框中的Nm×4个角点坐标,记为第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果;其中,Nm为大于或等于0的整数;
步骤3,根据第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果,得到处理完成的第m帧视频图像数据,并发送至显示屏进行显示;
步骤4,令m的值加1,返回步骤1,直至得到处理完成的第Q帧视频图像数据,并发送至显示屏进行显示;
然后将显示屏显示的处理完成的第1帧视频图像数据至处理完成的第Q帧视频图像数据,记为基于ARM平台的双线程并行实时人脸检测的开发结果。
本发明的进一步改进在于:
在所述基于ARM平台的双线程并行实时人脸检测的开发方法中创建双线程,包括线程1和线程2,所述线程1用于每帧视频图像的获取、画每帧视频图像数据中的人脸矩形框和显示人脸矩形框,所述线程2用于对获取的每帧视频图像进行人脸框搜索和人脸矩形框的检测,且双线程之间同步且并行工作;
线程1对应步骤1和步骤3,线程2对应步骤2,步骤1至步骤3中的m为变量,m的初始值为1,m的最大值为Q,Q为设定的视频图像数据总帧数。
本发明的有益效果:
第一,本发明通过创建双线程并行处理,将采集显示等操作和搜索检测人脸矩形框相互配合并行处理;双线程并行大大提高了处理效率,从而实现了流畅显示的实时人脸检测App的开发。
第二,本发明为嵌入式产品的开发提供了一个典型的案例,为以后实用的嵌入式人脸检测和识别系统的设计提供参考。
附图说明
下面结合附图说明和具体实施方式对本发明作进一步详细说明。
图1为本发明实现人脸检测方法应用开发的ARM平台硬件架构图;
图2为本发明的一种基于ARM平台的双线程并行实时人脸检测的开发方法流程图;
图3(a)为常规单线程串行处理人脸检测总过程示意图;
图3(b)为本发明处理双线程人脸检测总过程示意图;
图4为本发明中的人脸检测方法在AM572x评估板上运行后得到的实物图。
具体实施方式
参照图1,为本发明实现人脸检测方法应用开发的ARM平台硬件架构图;所述ARM平台,包括目标机和宿主机,目标机和宿主机串行电连接,所述目标机包括摄像头、ARM高性能处理器、LCD显示屏,摄像头输出端电连接处理器输入端,处理器输出端电连接显示屏输入端。
所述摄像头用于采集获取视频图像,所述ARM高性能处理器用于对采集获取的视频图像依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,LCD显示屏用于对ARM高性能处理器画出的人脸矩形框进行显示;所述宿主机用于使用Linux操作系统中的V4L2接口设置摄像头采集获取视频图像的尺寸大小,用于控制ARM高性能处理器依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,即向ARM高性能处理器提供Linux操作系统中的OpenCV的Adaboost算法对获取的视频图像依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,以及用于通过Linux操作系统中的DRM接口控制LCD显示屏对ARM高性能处理器画出的人脸矩形框进行显示。
具体地,首先确定开发实时人脸检测应用的目标机和配置了开发环境的宿主机,得到目标机AM572x评估板和配置好Linux操作系统和OpenCV软件环境的宿主机PC机。
本发明基于ARM平台的双线程并行实时人脸检测应用的开发属于嵌入式产品开发领域,而嵌入式产品的开发需要相应的宿主机和目标机,其中宿主机用于开发人脸检测的开发方法,目标机用于运行最后开发出来的检测方法;本发明人脸检测方法的应用的开发的宿主机为具备开发环境的PC机,而开发出的人脸检测方法的应用是在目标机运行的;因此需要准备具备开发环境的宿主机PC机,和最终人脸检测方法实现的目标机。
由于Linux操作系统有成熟的设备接口,方便对摄像头进行视频图像的采集操作,且Linux操作系统开发的程序有很好的移植性,所以本发明的人脸检测App的程序开发选择在Linux操作系统环境下进行,故给宿主机PC机安装配置了Linux操作系统环境;另外本发明人脸检测中的人脸检测处理采用的是OpenCV的Adaboost算法,故给宿主机安装配置了OpenCV软件环境。
其中,宿主机PC机配置软件开发环境。由于宿主机PC机用于后续开发人脸检测应用,故其开发需要软件环境支持,主要为Linux操作系统和OpenCV;本实施例选用AM572x评估板作为运行本发明人脸检测的目标机:因为开发的人脸检测应用需要运行在目标机上,且AM572x评估板是美国德州仪器公司(TI)推出的一款具有ARM Cortex-A15内核的高性能处理器的开发板,具有三部分硬件模块,包括摄像头、ARM高性能处理器、LCD显示屏,方便后续人脸检测应用进行视频图像的采集、处理和显示功能,所以这里选用了美国德州仪器(TI)公司的AM572x评估板作为运行本发明人脸检测App的目标机。
由此得到目标机AM572x评估板和配置好Linux操作系统和OpenCV软件环境的宿主机PC机,从而开始了后续人脸检测应用程序的开发。
在宿主机PC机中开发人脸检测应用,并在AM572x评估板上实现人脸检测方法;在人脸检测方法中里创建双线程,包括线程1和线程2,所述线程1负责视频图像的采集、画矩形框和显示功能,所述线程2负责视频图像中人脸框的搜索和人脸矩形框的检测,控制好双线程之间同步并行工作。
图3(a)给出了常规单线程串行处理人脸检测总过程:采集视频图像→搜索检测人脸框→画人脸矩形框→显示,工作流程是每次只串行地对采集获取到的一帧视频图像数据依次进行搜索检测该帧视频图像中的人脸,
然后在该帧视频图像数据中画出人脸矩形框,
最后将画好人脸矩形框的视频图像显示,然后再开始下一帧视频图像的采集获取、搜索检测人脸框、画人脸矩形框和显示。
图3(b)给出了本发明处理双线程人脸检测总过程,包括线程1和线程2,线程1用于进行视频图像的采集、画人脸矩形框和显示操作,线程2用于对视频图像进行搜索人脸框处理,其工作流程是线程1每次采集获取一帧视频图像数据,既要进行后续画人脸矩形框并将画人脸矩形框后的视频图像进行显示的操作,又要同时将采集获取的一帧视频图像数据送到线程2进行搜索检测人脸框处理,一帧视频图像显示结束后,再进行下一帧视频图像的采集获取,并再次送入双线程同时进行画人脸矩形框显示操作和人脸检测处理,实现了双线程相互配合并行人脸检测处理的全过程。
参照图2,为本发明的一种基于ARM平台的双线程并行实时人脸检测的开发方法流程图;所述基于ARM平台的双线程并行实时人脸检测的开发方法,基于所述ARM平台,ARM平台包括目标机和宿主机,所述目标机包括摄像头、ARM高性能处理器、LCD显示屏,在所述基于ARM平台的双线程并行实时人脸检测的开发方法中创建双线程,包括线程1和线程2,所述线程1用于每帧视频图像的获取、画每帧视频图像数据中的人脸矩形框和显示人脸矩形框,所述线程2用于对获取的每帧视频图像进行人脸框搜索和人脸矩形框的检测,且双线程之间同步且并行工作,关于上述图3(b)人脸检测处理全过程里的视频图像采集、搜索检测人脸矩形框、画人脸矩形框、显示四个部分操作,所述基于ARM平台的双线程并行实时人脸检测方法,包括以下步骤:
步骤1,视频图像采集获取:要实现人脸检测,首先使用摄像头采集获取第m帧视频图像数据,本发明人脸检测开发中关于视频图像数据的采集主要使用了Linux操作系统关于摄像头设备的接口V4L2(Video4linux2),V4L2接口是Linux操作系统中关于视频设备的内核驱动,用于视频图像数据采集;在Linux操作系统中,摄像头属于设备文件,可以对摄像头进行读写操作;m的初值为1,m的最大值为Q,Q为设定的视频图像数据总帧数,Q为大于或等于1的整数。
在利用Linux操作系统的V4L2接口对本发明AM572x评估板的摄像头进行第m帧视频图像采集的过程为:
1a)利用V4L2接口打开AM572x评估板的摄像头;通过给V4L2接口的open函数输入AM572x评估板摄像头ID号打开视频通道,并返回检测符fd,若fd为1则成功打开AM572x评估板的摄像头,若fd为0则打开失败。
1b)查询该摄像头设备的性能,检测确定其视频输入功能正常。
使用V4L2接口的驱动性能查询函数VIDIOC_QUERYCAP函数查询输出AM572x评估板的摄像头的视频图像输入功能的结果,输出结果为1则表示视频图像输入功能正常,输出结果为0则表示视频图像输入功能不正常。
1c)使用V4L2接口的帧格式设置函数VIDIOC_S_FMT函数设置该摄像头将要采集的第m帧视频图像的长度和宽度,设置采集的第m帧视频图像的长度和宽度,分别与AM572x评估板的显示屏的长度和宽度取值相同;此处因为AM572x评估板的显示屏大小是800像素×600像素,故设置采集的第m帧视频图像长度为800,宽度为600。
1d)使用V4L2接口的分配缓存空间函数VIDIOC_REQBUFS函数分配第m帧缓存空间,缓存空间的大小为第m帧图像数据的大小为600×800×D,用于存放将要采集的第m帧视频图像数据,其中D为一个像素的大小。
1e)AM572x评估板的摄像头开始采集获取第m帧视频图像数据,存放在分配的第m帧缓存空间里面。
通过1a)至1e)实现第m帧视频图像数据的采集操作,m的初值为1,m的最大值为Q,Q为大于或等于1的整数;然后将第m帧视频图像数据发送至高性能ARM高性能处理器。
步骤2,搜索检测人脸矩形框:人脸检测的核心内容就是搜索检测出人脸矩形框,是利用OpenCV软件的Adaboost人脸检测算法从第m帧视频图像数据里搜索检测出的第m帧视频图像中的Nm个人脸矩形框,以及得到Nm个人脸矩形框中的Nm×4个角点坐标,并将Nm个人脸矩形框中的Nm×4个角点坐标依次输出,实现第m帧视频图像数据的搜索检测人脸框处理,Nm为大于或等于0的整数,其具体过程如下:
2a)输入需要进行搜索人脸框处理的第m帧视频图像信息,包括第m帧视频图像的长度lengthm、第m帧视频图像的宽度widthm、第m帧视频图像数据datam;本实施例中AM572x评估板的显示屏大小为800×600,故设置的采集的单帧视频图像长宽分别为800个像素和600个像素,则此处进行搜索人脸框处理输入的第m帧视频图像长度和宽度分别为800和600。
2b)对第m帧视频图像数据datam进行缩放预处理,即将第m帧视频图像数据datam的长度和宽度分别缩小a倍,a为大于0的正整数;将缩小a倍后的第m帧视频图像数据记为缩放预处理后的第m帧视频图像数据data_shrinkm;因为如果直接对800×600的第m帧视频图像进行搜索检测处理,会由于第m帧视频图像过大使得处理过程十分慢,所以此处将第m帧视频图像数据进行了缩放预处理;又由于如果的倍数过大,会使得检测出人脸矩形框易出现漏检现象,故本实施例根据多次实验将第m帧视频图像长度和宽度分别缩小的倍数a选定为4倍。
2c)使用由OpenCV软件的Adaboost人脸检测算法对缩放预处理缩放预处理后的第m帧视频图像数据data_shrinkm进行人脸矩形框搜索,得到缩放预处理缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果;设定缩放预处理缩放预处理后的第m帧视频图像数据data_shrinkm中包含Nm个人脸矩形框,Nm为大于或等于0的整数。
2c.1)若搜索检测到的Nm为0,则将缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果记为face_shrink_null_m。
2c.2)若搜索检测到的Nm大于0,则将缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果记为face_shrink_m,face_shrink_m=face_shrink1(x1,y1),face_shrink1(x2,y2),face_shrink1(x3,y3),face_shrink1(x4,y4),face_shrink2(x1,y1),face_shrink2(x2,y2),face_shrink2(x3,y3),face_shrink2(x4,y4),...,face_shrinki(x1,y1),face_shrinki(x2,y2),face_shrinki(x3,y3),
其中,i∈{1,2,…,Nm},face_shrinki(x1,y1)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第1个角点坐标,face_shrinki(x2,y2)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第2个角点坐标,face_shrinki(x3,y3)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第3个角点坐标,face_shrinki(x4,y4)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第4个角点坐标,Nm表示缩放预处理后的第m帧视频图像数据data_shrinkm中包含的人脸矩形框总个数。
2d)根据缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果,得到第m帧视频图像数据中的人脸矩形框坐标结果并输出。
由于缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果是由第m帧视频图像数据datam的长度和宽度各缩放预处理四倍得到的,所以若缩放预处理后的第m帧视频图像数据data_shrinkm中没有人脸矩形框,则第m帧视频图像数据datam中也没有人脸矩形框;若缩放预处理后的第m帧视频图像数据data_shrinkm中有人脸矩形框,则将缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果分别扩大4倍,即得到第m帧视频图像数据datam中的Nm个人脸矩形框的坐标,由此得到第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果:
2d.1)若缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果为face_shrink_null_m,则将第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果记为face_null_m。
2d.2)若缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果为face_shrink_m,则将第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果记为face_m,face_m=face1(ax1,ay1),face1(ax2,ay2),face1(ax3,ay3),face1(ax4,ay4),face2(ax1,ay1),face2(ax2,ay2),face2(ax3,ay3),face2(ax4,ay4),...,facei(ax1,ay1),facei(ax2,ay2),facei(ax3,ay3),
其中,i∈{1,2,…,Nm},facei(ax1,ay1)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第1个角点坐标,facei(ax2,ay2)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第2个角点坐标,facei(ax3,ay3)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第3个角点坐标,facei(ax4,ay4)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第4个角点坐标,a为第m帧视频图像数据datam的长度和宽度分别缩小的倍数,a为大于0的正整数;Nm表示缩放预处理后的第m帧视频图像数据data_shrinkm中包含的人脸矩形框总个数,与第m帧视频图像数据datam中包含的人脸矩形框总个数相同。
然后,将第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果输出;由此实现以第m帧视频图像的长度、第m帧视频图像的宽度、第m帧视频图像数据作为输入,搜索检测输出第m帧视频图像数据中的Nm个人脸矩形框坐标结果为输出的过程。
步骤3,画矩形框:人脸检测是为了最终显示视频图像数据时视频图像数据中的所有人脸都有被矩形框框出来,这就需要视频图像数据在显示前先画出视频图像数据中包含的所有人脸矩形框,然后输出画有该所有人脸矩形框的视频图像数据。
给第m帧视频图像画人脸矩形框的具体做法是:
3a)输入第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果。
3b)根据第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果给第m帧视频图像数据画Nm个人脸矩形框,其过程为:
3b.1)若输入的第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果为face_null_m,则不对第m帧视频图像进行画人脸矩形框操作;
3b.2)若输入的第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果为face_m,则使用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果face_(m-1)中Nm-1个人脸矩形框的Nm-1×4个角点坐标,在第m帧视频图像数据datam中的对应位置点依次画出Nm-1个人脸矩形框。
当m值为1时,不对第m帧视频图像数据datam进行画人脸矩形框操作,直接将第m帧视频图像数据datam输出至显示屏进行显示。
3c)将依次画出Nm-1个人脸矩形框的第m帧视频图像数据记为处理完成的第m帧视频图像数据data_rect_m并输出。
3a)至3c)上述操作完成对第m帧视频图像画Nm个人脸矩形框的操作,并发送至显示屏。
步骤4,显示:所述处理完成的第m帧视频图像数据data_rect_m最终是要送去AM572x评估板的显示屏显示的;本发明人脸检测方法的应用开发中关于视频图像数据的显示主要使用了Linux操作系统关于LCD显示屏的直接渲染管理器(Direct Render Manager,DRM)接口,DRM接口是Linux操作系统下一种显卡驱动的图形渲染架构,用于LCD显示屏的视频图像显示,用DRM接口实现视频图像输出到显示屏进行显示,用DRM接口对处理完成的第m帧视频图像数据data_rect_m进行显示过程如下:
4a)输入处理完成的第m帧视频图像数据data_rect_m,即输入依次画出Nm个人脸矩形框的第m帧视频图像数据。
4b)利用Linux操作系统的DRM接口建立处理完成的第m帧视频图像数据data_rect_m和AM572x评估板的LCD显示屏之间的连接;
利用Linux操作系统的DRM接口通过输入处理完成的第m帧视频图像数据data_rect_m的物理地址到显示屏的显卡上,从而建立处理完成的第m帧视频图像数据data_rect_m与显示屏之间的连接关系。
4c)利用DRM接口将处理完成的第m帧视频图像数据data_rect_m输出至显示屏进行显示。
其中,4a)至4c)完成处理完成的第m帧视频图像数据data_rect_m在AM572x评估板的LCD显示屏的显示操作,而且1a)至4c)分别是图3(b)线程1和线程2里采集第m帧视频图像、搜索检测人脸框、画Nm个人脸矩形框、显示四个部分的各自具体操作方式,但是线程1和线程2要连续并行处理完成人脸检测处理全过程,就不仅仅是四个部分各自简单的操作,而是需要双线程间相互配合协同工作。
步骤5,如前所述双线程间工作流程基本是线程1每次采集获取来的第m帧视频图像数据既要进行后续画人脸矩形框并将画人脸矩形框后的第m帧视频图像数据进行显示的操作,又要同时将线程1采集获取来的第m帧视频图像数据送到线程2进行搜索检测人脸矩形框处理,进而得到处理完成的第m帧视频图像数据data_rect_m输出至显示屏进行显示完成后,令m的值加1,返回步骤1进行第m帧视频图像的采集获取,然后再次送入双线程同时进行画人脸矩形框显示操作和搜索检测人脸矩形框处理操作,直至得到处理完成的第Q帧视频图像数据data_rect_Q,并发送至显示屏进行显示,然后将显示屏显示的处理完成的第1帧视频图像数据data_rect_1至处理完成的第Q帧视频图像数据data_rect_Q,记为基于ARM平台的双线程并行实时人脸检测的开发结果,由此实现双线程相互配合并行人脸检测处理的全过程。
具体地,关于上述图3(b)双线程相互配合并行处理工作流程有以下两点说明:
(一)内存拷贝,确保线程2能正常访问线程1的视频图像数据;由于线程1每次采集获取到的一帧视频图像数据既需要送去画人脸矩形框并进行显示操作,又需要被线程2处理用于搜索检测人脸框;线程1采集获取到的一帧图像数据是存放在一块内存里面的,而同一块内存里的数据在同一时间只能被一个线程访问,所以为了保证线程1在对采集获取到的一帧图像数据进行画矩形框和显示操作时,线程2也能访问到线程1刚采集获取到的一帧视频图像数据,故重新动态分配了一块内存,用于将线程1中每次采集到的一帧视频图像数据拷贝在这块内存里;这样线程2每次搜索检测人脸框处理时只需访问这块拷贝过来的一帧视频图像数据,就和线程1画框显示等操作互不影响了。
设线程1采集到的第m帧视频图像数据为datam,由第m帧视频图像数据datam拷贝到分配内存里的第m帧视频图像数据记为data_copy_m,则线程1后续画人脸矩形框显示时访问的即为采集获取第m帧视频图像数据datam,而线程2在进行搜索检测人脸矩形框处理时即访问新分配内存里拷贝来的分配内存里的第m帧视频图像数据data_copy_m。
(二)关于并行操作时线程1对采集到的第m帧视频图像直接画人脸矩形框操作,其画人脸矩形框时使用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果;即对第m帧视频图像数据datam进行画人脸矩形框操作,不是选用第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果face_null_m或face_m,而是采用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果face_null_(m-1)或face_(m-1);当m值为1时,不对第m帧视频图像数据datam进行画人脸矩形框操作,直接将第m帧视频图像数据datam输出至显示屏进行显示。
其中,datam为采集到的第m帧视频图像数据,datam-1为采集到的第m-1帧视频图像数据,face_null_m或face_m为第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果,face_null_(m-1)或face_(m-1)为第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果;之所以这样处理的原因如下:
原因一)线程1在采集到第m帧视频图像数据画Nm个人脸矩形框时可以直接利用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果直接进行画框操作,无需耗费时间等待第m帧视频图像搜索检测Nm个人脸矩形框结果,从而最终实现实时流畅显示。
原因二)之所以能用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果代替第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果画人脸矩形框,是因为摄像头采集到的视频图像是连续不断的,且视频采集速度也是很快的,每秒可达二十几帧,则采集到的相邻两帧视频图像数据是近似相等的,则相邻两帧视频图像里面的人脸矩形框坐标结果也近似相等的。
上述操作是本发明人脸检测方法的应用实现的完整有效、流畅显示的关键所在。
以上所有操作,可以确保线程1和线程2能一直连续有效配合工作,并行采集显示和搜索检测人脸过程,从而实现完整的有效、流畅的人脸检测过程,最终当总程序运行时,线程1和线程2即可并行运行处理,从而大大提高了程序的处理效率。
至此,PC机上的整个人脸检测方法的应用开发基本完成。
将宿主机PC机上开发的人脸检测应用置于目标机AM572x评估板上运行,得到的运行结果如图4所示,图4中目标机AM572x评估板的显示屏正在实时流畅地显示一帧画有人脸矩形框的视频图像,检测准确,过程流畅,即实现了双线程并行实时人脸检测。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种ARM平台,其特征在于,包括目标机和宿主机,目标机和宿主机串行电连接,所述目标机包括摄像头、处理器、显示屏,摄像头输出端电连接处理器输入端,处理器输出端电连接显示屏输入端;
所述摄像头用于获取视频图像,所述处理器用于对获取的视频图像依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,所述显示屏用于对处理器画出的人脸矩形框进行显示;所述宿主机用于设置摄像头获取视频图像的尺寸大小,用于控制处理器依次进行人脸框检测、搜索人脸矩形框、画人脸矩形框,以及用于控制显示屏对处理器画出的人脸矩形框进行显示。
2.一种基于ARM平台的双线程并行实时人脸检测的开发方法,基于权利要求1所述ARM平台,ARM平台包括目标机和宿主机,所述目标机包括摄像头、处理器、显示屏,所述基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,包括以下步骤:
步骤1,使用摄像头采集第m帧视频图像,得到第m帧视频图像数据datam,并发送至处理器;m的初值为1,m的最大值为Q,Q为设定的视频图像数据总帧数,Q为大于或等于1的整数;
步骤2,使用处理器对第m帧视频图像数据进行人脸矩形框的搜索检测,得到第m帧视频图像中的Nm个人脸矩形框,以及Nm个人脸矩形框中的Nm×4个角点坐标,记为第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果;其中,Nm为大于或等于0的整数;
步骤3,根据第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果,得到处理完成的第m帧视频图像数据,并发送至显示屏进行显示;
步骤4,令m的值加1,返回步骤1,直至得到处理完成的第Q帧视频图像数据,并发送至显示屏进行显示;
然后将显示屏显示的处理完成的第1帧视频图像数据至处理完成的第Q帧视频图像数据,记为基于ARM平台的双线程并行实时人脸检测的开发结果。
3.如权利要求2所述的一种基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,在所述基于ARM平台的双线程并行实时人脸检测的开发方法中创建双线程,包括线程1和线程2,所述线程1用于每帧视频图像的获取、画每帧视频图像数据中的人脸矩形框和显示人脸矩形框,所述线程2用于对获取的每帧视频图像进行人脸框搜索和人脸矩形框的检测,且双线程之间同步且并行工作;
线程1对应步骤1和步骤3,线程2对应步骤2,步骤1至步骤3中的m为变量,m的初始值为1,m的最大值为Q,Q为设定的视频图像数据总帧数。
4.如权利要求2所述的一种基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,步骤2的子步骤为:
2a)获取需要进行搜索人脸框的第m帧视频图像信息,包括第m帧视频图像的长度lengthm、第m帧视频图像的宽度widthm、第m帧视频图像数据datam;
2b)对第m帧视频图像数据datam缩放预处理,得到缩放预处理后的第m帧视频图像数据data_shrinkm;其中缩放预处理是将第m帧视频图像数据datam的长度和宽度分别缩小a倍,a为大于0的正整数;
2c)对缩放预处理后的第m帧视频图像数据data_shrinkm进行人脸矩形框搜索,得到缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果;
2d)根据缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果,得到第m帧视频图像数据中的人脸矩形框坐标结果。
5.如权利要求4所述的一种基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,2c)中所述缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果,具体为:
2c.1)若搜索检测到的Nm为0,则将缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果记为face_shrink_null_m;
2c.2)若搜索检测到的Nm大于0,则将缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果记为face_shrink_m,face_shrink_m=face_shrink1(x1,y1),face_shrink1(x2,y2),face_shrink1(x3,y3),face_shrink1(x4,y4),face_shrink2(x1,y1),face_shrink2(x2,y2),face_shrink2(x3,y3),face_shrink2(x4,y4),...,face_shrinki(x1,y1),face_shrinki(x2,y2),face_shrinki(x3,y3),
其中,i∈{1,2,…,Nm},face_shrinki(x1,y1)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第1个角点坐标,face_shrinki(x2,y2)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第2个角点坐标,face_shrinki(x3,y3)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第3个角点坐标,face_shrinki(x4,y4)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第4个角点坐标,Nm表示缩放预处理后的第m帧视频图像数据data_shrinkm中包含的人脸矩形框总个数。
6.如权利要求5所述的一种基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,2d)中所述第m帧视频图像数据中的人脸矩形框坐标结果,具体为:
2d.1)若缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果为face_shrink_null_m,则将第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果记为face_null_m;
2d.2)若缩放预处理后的第m帧视频图像数据data_shrinkm中的Nm个人脸矩形框坐标点结果为face_shrink_m,则将第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果记为face_m,
face_m=face1(ax1,ay1),face1(ax2,ay2),face1(ax3,ay3),face1(ax4,ay4),face2(ax1,ay1),face2(ax2,ay2),face2(ax3,ay3),face2(ax4,ay4),...,facei(ax1,ay1),facei(ax2,ay2),facei(ax3,ay3),
其中,i∈{1,2,…,Nm},facei(ax1,ay1)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第1个角点坐标,facei(ax2,ay2)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第2个角点坐标,facei(ax3,ay3)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第3个角点坐标,facei(ax4,ay4)为缩放预处理后的第m帧视频图像数据data_shrinkm中第i个人脸矩形框的第4个角点坐标,a为第m帧视频图像数据datam的长度和宽度分别缩小的倍数,a为大于0的正整数;Nm表示缩放预处理后的第m帧视频图像数据data_shrinkm中包含的人脸矩形框总个数,与第m帧视频图像数据datam中包含的人脸矩形框总个数相同。
7.如权利要求6所述的一种基于ARM平台的双线程并行实时人脸检测的开发方法,其特征在于,步骤3的子步骤为:
3a)根据第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果给第m帧视频图像数据画Nm个人脸矩形框,其过程为:
3a.1)若输入的第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果为face_null_m,则不对第m帧视频图像进行画人脸矩形框操作;
3a.2)若输入的第m帧视频图像数据datam中的Nm个人脸矩形框坐标结果为face_m,则使用第m-1帧视频图像数据datam-1中的Nm-1个人脸矩形框坐标结果face_(m-1)中Nm-1个人脸矩形框的Nm-1×4个角点坐标,在第m帧视频图像数据datam中的对应位置点依次画出Nm-1个人脸矩形框;
其中,当m值为1时,不对第m帧视频图像数据datam进行画人脸矩形框操作;
3b)将依次画出Nm个人脸矩形框的第m帧视频图像数据记为处理完成的第m帧视频图像数据data_rect_m。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749295.6A CN107688785A (zh) | 2017-08-28 | 2017-08-28 | 基于arm平台的双线程并行实时人脸检测的开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749295.6A CN107688785A (zh) | 2017-08-28 | 2017-08-28 | 基于arm平台的双线程并行实时人脸检测的开发方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107688785A true CN107688785A (zh) | 2018-02-13 |
Family
ID=61155579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710749295.6A Pending CN107688785A (zh) | 2017-08-28 | 2017-08-28 | 基于arm平台的双线程并行实时人脸检测的开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107688785A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020019353A1 (zh) * | 2018-07-27 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 跟踪控制方法、设备、计算机可读存储介质 |
CN114430500A (zh) * | 2022-04-02 | 2022-05-03 | 深圳酷源数联科技有限公司 | 带实时目标检测的视频推流方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663758A (zh) * | 2012-04-20 | 2012-09-12 | 北京工业大学 | 一种基于fpga控制核心的图像采集及处理方法 |
CN103093176A (zh) * | 2011-10-27 | 2013-05-08 | 上海德致伦电子科技有限公司 | 人脸检测芯片及人脸检测设备 |
CN103158620A (zh) * | 2013-03-25 | 2013-06-19 | 中国电子科技集团公司第三十八研究所 | 一种车辆行人检测跟踪预警系统 |
US20130243329A1 (en) * | 2012-03-15 | 2013-09-19 | Herta Security, S.L. | Parallel object detection method for heterogeneous multithreaded microarchitectures |
CN103679186A (zh) * | 2012-09-10 | 2014-03-26 | 华为技术有限公司 | 检测和跟踪目标的方法和装置 |
CN105469048A (zh) * | 2015-11-24 | 2016-04-06 | 山东超越数控电子有限公司 | 一种提高人脸检测性能的方法 |
CN106529408A (zh) * | 2016-10-10 | 2017-03-22 | 深圳云天励飞技术有限公司 | 一种人脸检测的方法及装置 |
CN106778478A (zh) * | 2016-11-21 | 2017-05-31 | 中国科学院信息工程研究所 | 一种基于混合特征的带缓存机制的实时行人检测与跟踪方法 |
-
2017
- 2017-08-28 CN CN201710749295.6A patent/CN107688785A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103093176A (zh) * | 2011-10-27 | 2013-05-08 | 上海德致伦电子科技有限公司 | 人脸检测芯片及人脸检测设备 |
US20130243329A1 (en) * | 2012-03-15 | 2013-09-19 | Herta Security, S.L. | Parallel object detection method for heterogeneous multithreaded microarchitectures |
CN102663758A (zh) * | 2012-04-20 | 2012-09-12 | 北京工业大学 | 一种基于fpga控制核心的图像采集及处理方法 |
CN103679186A (zh) * | 2012-09-10 | 2014-03-26 | 华为技术有限公司 | 检测和跟踪目标的方法和装置 |
CN103158620A (zh) * | 2013-03-25 | 2013-06-19 | 中国电子科技集团公司第三十八研究所 | 一种车辆行人检测跟踪预警系统 |
CN105469048A (zh) * | 2015-11-24 | 2016-04-06 | 山东超越数控电子有限公司 | 一种提高人脸检测性能的方法 |
CN106529408A (zh) * | 2016-10-10 | 2017-03-22 | 深圳云天励飞技术有限公司 | 一种人脸检测的方法及装置 |
CN106778478A (zh) * | 2016-11-21 | 2017-05-31 | 中国科学院信息工程研究所 | 一种基于混合特征的带缓存机制的实时行人检测与跟踪方法 |
Non-Patent Citations (4)
Title |
---|
JAROMÍR KRPEC ET AL.: "Face Detection CUDA Accelerating", 《ACHI 2012 : THE FIFTH INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTER-HUMAN INTERACTIONS》 * |
曹立军: "《单片机原理与应用》", 30 September 2009 * |
李明瑞: "嵌入式人脸检测与识别系统的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
瞿中 等: "多线程下的视频微动目标检测与提取算法研究", 《计算机科学》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020019353A1 (zh) * | 2018-07-27 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 跟踪控制方法、设备、计算机可读存储介质 |
CN110799984A (zh) * | 2018-07-27 | 2020-02-14 | 深圳市大疆创新科技有限公司 | 跟踪控制方法、设备、计算机可读存储介质 |
CN114430500A (zh) * | 2022-04-02 | 2022-05-03 | 深圳酷源数联科技有限公司 | 带实时目标检测的视频推流方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102319177B1 (ko) | 이미지 내의 객체 자세를 결정하는 방법 및 장치, 장비, 및 저장 매체 | |
WO2018177379A1 (zh) | 手势识别、控制及神经网络训练方法、装置及电子设备 | |
WO2020010979A1 (zh) | 手部关键点的识别模型训练方法、识别方法及设备 | |
KR102166861B1 (ko) | 시선 추적을 이용한 증강 현실의 인에이블링 | |
CN104331168B (zh) | 显示调整方法和电子设备 | |
US11182908B2 (en) | Dense optical flow processing in a computer vision system | |
CN110363133A (zh) | 一种视线检测和视频处理的方法、装置、设备和存储介质 | |
CN109410192A (zh) | 一种多纹理分级融合的织物缺陷检测方法及其装置 | |
CN106919891B (zh) | 一种图像处理方法及装置 | |
CN111626163A (zh) | 一种人脸活体检测方法、装置及计算机设备 | |
CN109033935B (zh) | 抬头纹检测方法及装置 | |
CN109151442A (zh) | 一种图像拍摄方法及终端 | |
CN107563978A (zh) | 人脸去模糊方法及装置 | |
CN108876858A (zh) | 用于处理图像的方法和装置 | |
CN112991180A (zh) | 图像拼接方法、装置、设备以及存储介质 | |
US11682212B2 (en) | Hierarchical data organization for dense optical flow processing in a computer vision system | |
CN104580883A (zh) | 图像处理装置、图像处理方法 | |
CN107688785A (zh) | 基于arm平台的双线程并行实时人脸检测的开发方法 | |
CN106919326A (zh) | 一种图片搜索方法及装置 | |
CN110321908A (zh) | 图像识别方法、终端设备及计算机可读存储介质 | |
CN110110666A (zh) | 目标检测方法和装置 | |
CN112379815A (zh) | 图像截取方法、装置和存储介质及电子设备 | |
CN115482523A (zh) | 轻量级多尺度注意力机制的小物体目标检测方法及系统 | |
CN112419456B (zh) | 一种特效画面生成方法和装置 | |
CN105913024B (zh) | 基于lap算子的抵抗重放攻击的安卓手机终端检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180213 |