吳必瑞,蒙永富,金志揚
(寧德師范學院 信息與機電工程學院,福建 寧德 352100)
隨著人臉檢測算法的成熟,人臉識別技術(shù)在很多領(lǐng)域都得到了應(yīng)用,特別是在智能監(jiān)控領(lǐng)域,攝像頭已能實現(xiàn)對目標的檢測、識別和追蹤,但傳統(tǒng)方法存在識別效果不佳、系統(tǒng)效率不高、準確性較低等問題[1-3]。文獻[4-6]采用單片機分析人臉特征點,檢測其與頭部姿態(tài)的關(guān)系,并設(shè)計相似度算法,實現(xiàn)了攝像頭的自動追蹤,但程序較為復雜。采用K210型芯片能避免以上算法設(shè)計復雜的問題,簡化設(shè)計過程。
本研究基于K210型芯片的人臉坐標輸出,首先根據(jù)攝像頭反饋的圖像將其定義為一個平面內(nèi)的X、Y軸,圖像中心點為(0,0),然后識別出人臉在畫面中的位置, 最后通過K210型芯片輸出PWM控制舵機的角度轉(zhuǎn)向,從而實現(xiàn)人臉的自動識別與追蹤。目前該產(chǎn)品已成功應(yīng)用于手機支架做追蹤云臺用,可通過擴展應(yīng)用于人臉識別門禁系統(tǒng),并可根據(jù)人的身高改變攝像頭的位置來提高人臉識別速度。
系統(tǒng)以嘉楠科技公司生產(chǎn)的勘智K210型芯片為控制核心器件。該芯片在機器視覺上自帶神經(jīng)網(wǎng)絡(luò)加速器KPU,可完成基于神經(jīng)網(wǎng)絡(luò)的圖像分類任務(wù),進行人臉識別與檢測,簡化系統(tǒng)程序設(shè)計。OV2640型攝像頭采集模塊將采集到的圖像信息傳輸?shù)終210型芯片,該芯片檢測到人臉數(shù)據(jù)信息后會通過系統(tǒng)自帶的函數(shù)運算功能進行PWM值運算,根據(jù)人臉的不同位置給出PWM值,控制云臺進行人臉實時追蹤,具體的硬件電路原理如圖1所示。系統(tǒng)采用OV2640型攝像頭作為 CMOS 圖像傳感器,用2個PAM3101DAB120型芯片分別為攝像頭提供工作電源和基準電壓,5 V的外接輸入電壓通過EA3036型芯片轉(zhuǎn)化后為K210型芯片供電。系統(tǒng)實物見圖2。
圖1 硬件電路原理Fig.1 Hardware circuit schematic diagram
圖2 系統(tǒng)實物Fig.2 The real device
該系統(tǒng)的軟件開發(fā)環(huán)境為C++語言,采用模塊化程序設(shè)計,其主程序流程如圖3所示。軟件由攝像頭圖像采集、K210型芯片處理、PID算法、PWM調(diào)節(jié)和鍵盤設(shè)定程序等各子組成。攝像頭采集的圖像經(jīng)過K210型芯片處理后得出人臉的位置坐標,再通過PID運算輸出相應(yīng)的PWM值來控制云臺轉(zhuǎn)向。軟件程序首先完成系統(tǒng)初始化,主要包括系統(tǒng)中斷、串口、OV2640型攝像頭、舵機等功能模塊的初始化。
本設(shè)計采用幀同步的信號接收方式,幀同步信號即VSYNC為高電平時有效、VSYNC為低電平時進行圖像傳輸,直到讀取完一整幀圖像后VSYNC變?yōu)楦唠娖?。程序設(shè)計即當HREF為高電平時開始接收信號,當HREF為低電平時不進行數(shù)據(jù)接收,檢測到HREF為高電平后,等待第1個PCLK的上升沿,在PCLK為上升沿后開始讀取第1個像素的低字節(jié),之后進行第2個PCLK的上升沿等待,如此循環(huán),具體如圖4所示。
圖3 軟件主程序流程Fig.3 Flow chart of software main program
圖4 攝像頭圖像讀取流程Fig.4 Flow chart of camera image reading
首先對攝像頭反饋的圖像信息進行處理,然后將其導入事先訓練好的人臉識別模型中進行卷積神經(jīng)運算,再根據(jù)畫面中的人臉張數(shù)進行運算,最后將人臉的位置以X坐標軸和Y坐標軸的形式輸出。
本設(shè)計利用K210型芯片自帶的強大運算功能在多張人臉的情況下進行人臉面積比較,根據(jù)人臉識別范圍的大小來判別人臉的遠近。程序中將第1張識別到的人臉面積記為C1,C1=A1*B1,其中A1為人臉識別框的長、B1為人臉識別框的寬。同理,第2張人臉定義為C2=A2*B2。然后,C1-C2=D,如果D為正數(shù)則輸出C1的坐標,否則輸出C2的坐標。在現(xiàn)實中人臉大小差別不大,根據(jù)小孔成像原理,當攝像頭與人臉的距離不同時,人臉在攝像頭的圖像中所占面積也不同,距離攝像頭近的人臉所呈現(xiàn)出來的面積會更大一些。在進行多張人臉識別時,K210型芯片會優(yōu)先進行人臉面積比較,然后對面積大的人臉進行位置輸出,從而使智能追蹤穩(wěn)定器對面積大的人臉進行自動追蹤。當芯片未檢測到人臉時,智能追蹤穩(wěn)定器則保持上一秒的狀態(tài)。
陀螺儀在穩(wěn)定器中起著至關(guān)重要的作用,它能使穩(wěn)定器在一定誤差范圍內(nèi)保持動態(tài)穩(wěn)定。本設(shè)計的智能追蹤穩(wěn)定器在Y軸上采用陀螺儀進行控制,K210型芯片根據(jù)陀螺儀傳感器所反饋的傾斜角度進行調(diào)整。首先對反饋的數(shù)據(jù)進行校正,然后進行數(shù)據(jù)融化和運算,將得出的結(jié)果與所要求控制的目標進行比對,最后根據(jù)偏差值進行Y軸舵機的PWM值控制輸出,使得人臉始終在畫面正中心。角度控制流程如圖5所示。
圖5 角度控制流程Fig.5 Angle control flow chart
本設(shè)計的云臺舵機采用PID算法控制轉(zhuǎn)向。云臺能實現(xiàn)二自由度的追蹤,其轉(zhuǎn)向是由前面輸出的X、Y軸坐標值經(jīng)過比例、積分、微分的運算,輸出不同的PWM電脈沖進行舵機角度轉(zhuǎn)向,然后輸出PWM占空比實現(xiàn)云臺舵機的角度控制。經(jīng)典的增量PID控制算法如下:
Δu(n)=Kp[e(n)-e(n-1)]+Kie(n)+Kd[e(n)-2e(n-1)-e(n-2)],
式中:Kp為比例系數(shù);Ki為積分時間常數(shù);Kd為微分時間。
PID算法控制如圖6所示。
圖6 PID算法控制Fig.6 PID control algorithms
由于本設(shè)計采用的OV2640型攝像頭不具有自動調(diào)焦功能,所以第一步需要進行有效距離測試。測試開始時首先初始化舵機,測試對象(人臉)不動,然后分別對舵機轉(zhuǎn)動30°、90°、120°進行測試。多次測試后取平均值,結(jié)果顯示該智能追蹤穩(wěn)定器的有效追蹤距離為15~209 cm,數(shù)據(jù)如表1所示。由于人臉受到不同光照強度的影響,所以攝像頭能讀取到的人臉數(shù)據(jù)有不同程度的差別,導致自動追蹤的有效距離也有差別。
表1 有效距離測試結(jié)果Tab.1 The test results of effective range
穩(wěn)定性考驗智能追蹤穩(wěn)定器的數(shù)據(jù)處理能力和反應(yīng)速度。云臺穩(wěn)定性測試結(jié)果如表2所示,表2中的數(shù)據(jù)為測量10次的平均值。從測試結(jié)果可知,當人臉以較快的速度停頓或移動時,云臺識別人臉的成功率會有所下降,當人臉以較慢的速度移動時,云臺的追蹤成功率高達98%,即使兩張人臉同時出現(xiàn)在畫面仍能夠?qū)崿F(xiàn)穩(wěn)定追蹤。人臉以較快速度移動時云臺自動追蹤成功率較低的原因在于攝像頭對畫面的采集,人臉以較快速度移動使其不能實時檢測出人臉,就會造成自動追蹤的失敗。
表2 云臺穩(wěn)定性測試結(jié)果Tab.2 The test results of cradle stability
本設(shè)計采用K210型芯片為核心控制器件,實現(xiàn)了人臉識別、PID運算、PWM控制等功能,同時還具有超高的運算速率,能夠進行人臉的實時識別和追蹤。測試結(jié)果表明,從人臉識別到PWM電脈沖輸出控制舵機轉(zhuǎn)向,整個過程可在0.5 s內(nèi)完成。目前本設(shè)計已成功應(yīng)用于手機支架做追蹤云臺用,可通過擴展應(yīng)用于人臉識別門禁系統(tǒng),并可根據(jù)人的身高改變攝像頭位置來提高人臉識別速度。