国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于并行算法的快速人臉識別系統(tǒng)設計與實現(xiàn)

2020-04-30 06:49許嘉誠
無線互聯(lián)科技 2020年6期
關鍵詞:Python語言并行計算人臉識別

許嘉誠

摘 ? 要:為了提高人臉識別實時處理速度,并充分利用當前多核處理器資源,文章實現(xiàn)了一種在Python環(huán)境下基于并行算法的快速人臉識別系統(tǒng)。人臉特征與數(shù)據(jù)庫的儲存實時交互,利用各子程序安全通信實現(xiàn)同步處理,并行處理實時人臉檢測和人臉特征編碼提取,同時進行最相似人臉匹配。實驗結果表明,程序并行后有著速度快、準確度高、實時性強等優(yōu)點。為大數(shù)據(jù)人臉識別處理提供了方法,也有利于實際的使用。

關鍵詞:人臉識別;并行計算;多核;Python語言

人臉識別技術在某些領域相對安全,識別效率高、領域廣[1],但是當前海量人臉數(shù)據(jù)使得人臉識別系統(tǒng)的效率急劇下降,同時多核處理器技術迅猛發(fā)展,為人們提供了充足的多核資源。所以為了提高人臉識別效率,并充分利用多核資源,開發(fā)相應的并行化應用程序勢在必行[2]。

1 ? ?相關概念

1.1 ?人臉識別概述

人臉識別是通過生物特征對人的身份進行辨認,是計算機視覺領域的一個研究方向[3]。人臉識別至今盡管已經有30年左右的研發(fā)歷史,但其相關的技術和產品仍然受光照、視角、遮擋、年齡等不同方面因素的綜合影響。同時人臉識別技術的實現(xiàn)也是一個較為復雜的過程,因為人臉識別技術的實現(xiàn)就是通過計算機算法來統(tǒng)一和協(xié)調各個步驟,通過采集、預處理、特征提取、識別匹配4個步驟分部進行[4]。

1.2 ?人臉識別過程

人臉檢測是一個特別復雜的過程,根據(jù)所選檢測系統(tǒng)的不同,使用到的檢測算法、原理以及編程語言等也會相應不同,比如Harmon和Lesk采用多維特征矢量來表示,而Kaya和Kobayashi則采用歐氏距離來表示[5],但歸納起來大致都可以分為以下流程:人臉檢測、人臉關鍵點檢測、人臉規(guī)整、人臉特征提取、人臉識別。

1.3 ?Python中的并行計算工具

multiprocessing是Python中支持產生進程的包,可以充分地利用機器上的多個核心。Threading以及pyQt5都可以產生線程。以上是主要的并行工具。

1.3.1 ?multiprocessing

在multiprocessing中,Process類被用來表示一個進程對象。創(chuàng)建該子進程對象時,只需傳入函數(shù)和參數(shù)即可,然后通過Start開始進程。對于Python進程之間的共享數(shù)據(jù),可以使用Multiprocessing.Manager創(chuàng)建變量用于進程間的共享數(shù)據(jù)。其支持的數(shù)據(jù)類型有l(wèi)ist,Dict,Namespace。程序的同步也使用Manager進行實現(xiàn)。

1.3.2 ?threading

對于線程的建立使用threading中的Thread類完成,Thread的主要方法和屬性和Process相似。

2 ? ?程序設計

2.1 ?單進程處理程序

使用多核進行計算的程序,主要處理單張圖像的人臉識別,根據(jù)相對應的需求處理結果,如標出識別結果、保存結果等。其可以分為以下幾個模塊:

(1)初始化線程,獲取數(shù)據(jù)庫人臉特征和進程信息。

(2)根據(jù)同步信息更改緩存的人臉特征以及各種處理信息。

(3)根據(jù)全局同步信息,等待識別圖像準備完畢,直到收到可處理信號為止。此步驟為了使得處理圖像具有統(tǒng)一時序性,防止圖像重復處理或者未處理。

(4)通過參數(shù)中的list,獲取需要處理的圖像。

(5)進行人臉檢測以及特征提取,用于做后面的比較以及定位等。

(6)得到的特征和數(shù)據(jù)庫中的已有的人臉數(shù)據(jù)特征進行比較,根據(jù)歐式距離判斷人臉屬于誰。

(7)進行結果的圖像繪制,以便于更直觀地展示人臉識別信息,并且整合得到的結果。

(8)等待上一個進程結果寫入結束,此步驟主要為了保證處理結果具有統(tǒng)一時序性,結果不會多次讀取也不會出現(xiàn)未讀取等情況,該步驟也保證了讀取結果始終為最新結果。

(9)將處理后的圖像、處理時間以及人臉識別的結果放入對應的list中。結束后跳轉(2),再次等待響應,循環(huán)往復。

由上可知,當處理某圖像時,需要其他線程將待處理圖像放入對應list中,然后修改同步信息并進行運算,如此往復。

2.2 ?待識別圖像獲取以及同步信息處理程序

此程序為單個線程,主要用于從視頻或者攝像頭中獲取待識別圖像放入相應的list,以及按照用戶需求切換視頻和攝像頭,控制開始、暫停以及處理延遲的作用。程序先進行初始化;然后根據(jù)全局同步信號,判斷當前用戶動作,更改相應數(shù)據(jù)源;等待錄入的待識別圖像處理完畢,獲取新的待識別圖像;最后進入延遲等待,此延時是使得處理后的每幀延時間均勻分布,增加處理視頻的流暢性。其等待時間大致為單個圖像處理時間除以工作進程數(shù),然后更改同步信息,通知進程進行處理。

2.3 ?主程序

主程序主要包括各種進程和線程的建立、用戶選擇數(shù)據(jù)源(視頻、圖像、攝像頭)、錄入人臉信息、獲取識別結果和處理識別結果。進程和線程的建立是關鍵部分,進程和線程的建立過程:初始化各個通信同步變量,獲取數(shù)據(jù)庫信息;控制工作進程數(shù)workProcess_num;創(chuàng)建相應進程線程,此處代碼為:

pools.append(threading.Thread(target=captureThread,args=(GlobalVariable, …,)))

pools[0]. start()

for process_id in range(1, workProcess_num + 1):

pools.append(Process(target=workProcess,args=(process_id,GlobalVariable, …,)))

pools[process_id]. start()

主程序還進行識別結果的處理,此處設置timer,每0.001 s響應一次,判斷同步信息是否有未獲取的圖像結果;若有,則從獲取結果并處理。

3 ? ?實驗結果分析

文章實驗過程中使用數(shù)據(jù)選自美國麻省大學安姆斯特分校制作的人臉數(shù)據(jù)集Labeled Faces in the Wild人臉數(shù)據(jù)集進行測試,對于閾值為0.39的情況人臉識別率有高達99.38%的準確率。

3.1 ?實驗環(huán)境

硬件配置:Intel(R) Core(TM) i7-8750H ?CPU @ 2.20 GHz 2.21 GHz, 16 GB內存。

軟件:Windows10 家庭中文版操作系統(tǒng)。PyCharm 2018.3.5 (Community Edition) Python 3.6環(huán)境。

3.2 ?實驗結果

在保證人臉識別率穩(wěn)定的前提下,本文采用不同數(shù)量的進程并行進行實驗,得出了不同數(shù)量進程數(shù)在人臉識別過程中系統(tǒng)每秒所能處理視頻幀數(shù)之間的關系,結果如圖1所示。

3.3 ?測試結果分析

每秒所處理的攝像頭幀數(shù)隨著進程數(shù)增加而增加。雖然進程數(shù)增加會使處理幀數(shù)增多,但是增加的趨勢會逐漸變緩,這是程序在并行過程中的額外開銷。

4 ? ?結語

文章設計并實現(xiàn)了基于并行算法的快速人臉識別系統(tǒng),提高了在多核環(huán)境下人臉識別的速度以及CPU利用率。該系統(tǒng)僅需提供人臉特征數(shù)據(jù),即可利用該系統(tǒng)獲得高效且準確的識別結果。實驗結果表明:該人臉識別系統(tǒng)具有準確的識別結果和高效的處理速度,可以投入到日常使用中。

[參考文獻]

[1]張春悅,韓飛.人臉識別系統(tǒng)設計[J].湖北農機化,2019(12):85.

[2]鄭曉薇,于夢玲.基于Matlab多核集群的人臉識別算法的并行化設計[J].計算機應用,2011(10):2597-2599.

[3]梁晶,史記征.基于Python庫的人臉識別方法研究[J].網(wǎng)絡安全技術與應用,2019(7):46-47.

[4]R DATTA,D JOSHI,J LI,et al.Image retrieval:ideas,influences,and trends of the new age[J].Acm Computing Surveys,2010(2):2007.

[5]張枝令. Python實現(xiàn)基于深度學習的人臉識別[J].電子商務,2018(5):47,96.

Design and implementation of fast face recognition system based on parallel algorithm

Xu Jiacheng

(Kunming University of Science and Technology, Kunming 650000, China)

Abstract:In order to improve the real-time processing speed of face recognition and make full use of the current multi-core processor resources, this paper implements a fast face recognition system based on parallel algorithms in Python. The facial features are stored and interacted with the database in real time. The subroutines are used to securely communicate with each other in parallel. Real-time face detection and facial feature code extraction are processed in parallel. Similar face matching. At the same time, the program was improved so that it can handle multiple source data. The experimental results show that the parallel program has the advantages of fast speed, high accuracy, high stability, good recognition effect, and strong real-time performance. It provides a method for face recognition processing in big data and is also beneficial to practical use.

Key words:face recognition; parallel computing; multi-core; Python language

猜你喜歡
Python語言并行計算人臉識別
人臉識別 等
揭開人臉識別的神秘面紗
云計算中MapReduce分布式并行處理框架的研究與搭建
并行硬件簡介
基于類獨立核稀疏表示的魯棒人臉識別
基于K-L變換和平均近鄰法的人臉識別
班玛县| 江西省| 沽源县| 武鸣县| 永春县| 南安市| 任丘市| 阿拉善左旗| 通许县| 康平县| 临桂县| 阜新| 泗水县| 保亭| 金门县| 永州市| 玉林市| 桂林市| 聂荣县| 甘谷县| 翼城县| 张北县| 耿马| 青铜峡市| 延庆县| 时尚| 深州市| 张家口市| 苏尼特左旗| 霍州市| 阜城县| 托里县| 揭东县| 四平市| 久治县| 江都市| 连平县| 云林县| 南涧| 通榆县| 洮南市|