999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenMV的人臉識別智能門鎖設計

2020-11-02 02:34:32唐孟雪邢曉燕
電腦知識與技術 2020年25期
關鍵詞:人臉識別

唐孟雪 邢曉燕

摘要:得益于現(xiàn)代科技的飛速發(fā)展,人們的生活水平得到了極大的提升,與此同時人們對安全的要求也越來越高。門鎖一直是一個家庭安全保障的關鍵性物件,門鎖的發(fā)展更是經(jīng)歷了從普通物理門鎖到密碼鎖,指紋鎖到如今利用生物特征識別技術的門鎖。其中人臉識別技術更是在近年來得到了大眾的追捧和普遍認可,并已逐漸被應用于一些高科技產(chǎn)品設計上。

該次設計初探人臉識別門鎖制作,采用OpenMV智能采集人臉信息,利用其內(nèi)置的STM32F65VI AMR Cortex M7處理器計算處理信息,通過對比圖像LBP算子的方式,識別判斷人臉信息。同時將OpenMV與單片機相連接,外接LCD1602顯示屏,矩陣鍵盤,繼電器,蜂鳴器完整模擬一款可以進行用戶人臉信息注冊、人臉識別、電子顯示、開鎖、報警等多功能的智能識別人臉門鎖。

關鍵詞:OpenMV;LBP算子;人臉識別;門鎖

中圖分類號:TP18 ? ? ?文獻標識碼:A

文章編號:1009-3044(2020)25-0005-04

1 背景

人臉識別技術是近代以來飛速發(fā)展的一種生物識別技術,由于每個人長相不同,臉部輪廓幅度不同,用人臉信息作為識別身份的依據(jù)是可靠的。因而現(xiàn)如今也出現(xiàn)了人臉識別的廣泛應用,比如支付寶刷臉支付、手機刷臉解鎖,公安監(jiān)控系統(tǒng)的人臉識別等。但就對于普通家庭而言,門鎖才是安全的第一保障,而傳統(tǒng)的鑰匙門鎖易丟失,易復制;密碼鎖密碼需定時更換,且容易被錄像竊取;指紋鎖在智能人臉門鎖的特征優(yōu)勢下也顯得相形見絀。雖然人臉識別門鎖成本較高,但具有可記錄圖像,處理和分析圖像的功能,不僅防止了外來非法人員的進入,更可以幫助使用者了解試圖闖入人員的面部信息,起到很好的安全防范作用。

人臉識別是通過對圖像中人臉各個維度信息進行分析,再將分析后的數(shù)據(jù)與數(shù)據(jù)庫內(nèi)的數(shù)據(jù)進行對比判斷,從而達到識別的效果。一般步驟為,定義局部區(qū)域,局部區(qū)域特征的提取,經(jīng)過樣本訓練后得到的變換矩陣將人臉圖像向量映射為人臉特征向量;然后進行分類。分類器多采用組合分類器的形式,每個局部特征對應一個分類器,后可用投票或線性加權(quán)等方式得到最終識別結(jié)果。

人臉識別算法的分類按維數(shù)分類可大致分為二維算法和三維算法。

二維算法是利用人臉上分布的由低到高的80個節(jié)點來檢測量眼睛、顴骨、下巴等之間的距離從而實現(xiàn)身份認證。其主要算法有:基于模板匹配的方法;基于奇異值特征方法;子空間分析法;局部保持投影(Locality Preserving Projections,LPP);主成分分析(PCA);其他方法還有彈性匹配方法、特征臉法(基于KL變換)、人工神經(jīng)網(wǎng)絡法、支持向量機法、基于積分圖像特征法(adaboost學習)、基于概率模型法。

由于三維算法可以有效地解決二維圖像中姿態(tài),光照,表情,面部遮擋物等方面對識別精度的影響,自90年代初期,科學家們就開展了對三維算法的研究,并取得了極大的進展。目前三維人臉識別方法有基于圖像特征的方法和基于模型可變參數(shù)的方法。

2 總體設計

2.1 系統(tǒng)總體框圖

本系統(tǒng)主要是由五個硬件部分組成,其中核心的處理器為OpenMV搭載的STM32F65VI AMR Cortex M7芯片,輸入模塊有按鍵和攝像頭;輸出模塊有LCD顯示和繼電器模擬門鎖開關。

2.2 系統(tǒng)總體方案

本設計按照用戶具體操作情況可以分為兩大部分,一是管理員操作模塊,二是用戶使用模塊。其中管理員操作模塊分為三個部分:驗證管理員信息;采集人臉信息;退出管理員系統(tǒng)。用戶使用模塊又可細化為下面四個步驟:攝像頭采集人臉,處理人臉信息,根據(jù)人臉信息選擇是否開鎖,系統(tǒng)復位。具體描述如下:

1)通過鍵盤選擇進入管理員操作系統(tǒng)或用戶系統(tǒng)。

2)若檢測到指定按鍵被按下,攝像頭立刻采集人臉圖片三次。

3)處理器處理采集到的人臉圖片,與系統(tǒng)內(nèi)儲存的合法人臉相對比,若三次采集的圖像數(shù)據(jù)對比吻合度都達到閾值要求,則打開門鎖。

4)門鎖打開后,按任意鍵關閉門鎖。

5)若用戶想進入管理員系統(tǒng)需按下按鈕并輸入管理員密碼。

6)檢測管理員密碼是否正確,若正確進入管理員操作系統(tǒng);若錯誤發(fā)出提示音,若連續(xù)三次輸入錯誤,則鎖住按鍵,不能更改。

7)錄入人臉信息20次。

8)按任意鍵退出管理員系統(tǒng)。

3 硬件設計

本設計主要是由OpenMV、STC89C51單片機,矩陣鍵盤,液晶顯示器,繼電器控制模塊等部分組成。

3.1 OpenMV

OpenMV攝像頭是一款低功耗,容易上手,擴展性強的電路板,其使用python編程語言可以幫助使用者較為輕松地完成機器視覺應用的實現(xiàn)。它由STM32F65VI AMR Cortex M7處理器搭配OV7725感光元件構(gòu)成,其中處理器有一個全速USB(12Mbs)接口,可供OpenMV插入電腦端;一個μSD卡槽,;一個SPI總線,;一個 I2C總線,CAN總線, 和一個異步串口總線(TX/RX) ,;一個12-bit ADC 和一個12-bit DAC;三個 I/O 引腳用于舵機控制;一個RGB LED(三色), 兩個高亮的 850nm IR LED(紅外)。

OpenMV是一個開源的,搭載了一個強大的32位處理器的攝像頭,達到了本項目的技術要求水平,并且可以使用SD卡可以更方便將圖像流數(shù)據(jù)提取出來,是一個較為完整地開發(fā)系統(tǒng)。相較于在STM32單片機上搭載攝像頭,OpenMV更加的便捷高效。相較于用樹莓派搭載攝像頭采集人臉信息,然后調(diào)用opencv與face++的API對照片進行識別而言,OpenMV會更加方便快捷。

3.2 STC89C51單片機

本設計中,管理員系統(tǒng)采用了STC89C51作為主處理芯片,STC89C51是電子類大學生普遍接觸的一款單片機類型,具有低功效,高性能的特點。STC89C51含有32個雙向I/O口,2個16位可編程定時器、計數(shù)器中斷,2個串行中斷,2個外部中斷,2個讀寫中端口,具有低功效空閑和掉電模式,可軟件設置睡眠和喚醒功能。

由時鐘電路和復位電路構(gòu)成單片機最小系統(tǒng),時鐘電路為單片機提供運行振蕩時鐘,是單片機工作的前提;復位電路提供快速復位操作,一般單片機都提供了上電自動復位和手動復位。

3.3 LCD1602顯示屏

LCD1602是一款點陣式LCD,由16*2個顯示單元組成,每個顯示單元可以顯示一個字符,一個顯示單元由5*7的點陣字符顯示位構(gòu)成。顯示單位的點陣字符的明暗反映出顯示的內(nèi)容,而屏幕上的顯示單元又與顯示RAM區(qū)字節(jié)一一對應,實現(xiàn)了控制顯示。

LCD1602共具有16個引腳,其中2個電源引腳VSS和VCC,一個顯示屏對比度調(diào)整端VL,一個寄存器選擇引腳RS,一個讀寫引腳R/W,一個使能引腳E,一正一負兩個背光源引腳,七個雙8位雙向口數(shù)據(jù)線D0~D7。

LCD1602的讀寫,光標和顯示模式的控制操作則都是由指令編碼完成。一共有十一條指令:清除、返回、輸入模式設置、顯示開關、控制、以為、功能設置、CGRAM地址設置、DDRAM地址設置、讀忙信號和光標地址、寫數(shù)據(jù)、讀數(shù)據(jù)。

3.4 AT24C02存儲模塊

AT24C02是一款美國Atmel公司生產(chǎn)的低功效CMOS型E2PROM,具有掉電存儲功能,利用IIC總線數(shù)據(jù)傳送協(xié)議,它共有6個引腳,其中有串行時鐘線SCL,串行數(shù)據(jù)/地址線SDA,A0-A2器件地址輸入端,WP寫保護。

3.5 繼電器控制模塊

電磁繼電器是利用電磁感應原理,可以通過小電壓控制較大電流,其主要組成部分有鐵芯、線圈、銜鐵、觸點簧片。當給線圈兩邊施加一定電壓,線圈周圍將會產(chǎn)生磁場,從而吸引銜鐵使之向鐵芯方向移動,同時也導致了銜鐵的動觸點與靜觸點吸合,使輸出回路連通。當斷電后,銜鐵在彈簧的拉力作用下返回原來位置,動觸點與靜觸點斷開,輸出回路斷開。在此設計中,利用繼電器控制門鎖的開關是合適的。

3.6 矩陣鍵盤模塊

本次設計需要用戶輸入密碼,這里采用的是最普遍的0-9數(shù)字密碼,因而選用了4*4矩陣鍵盤。將鍵盤設計成矩陣的形式可以減少I/O口的占用,4*4一共16個僅占用一個端口即可設計完成。

4 軟件設計

此次開發(fā)設計選用OpenMV作為圖像處理處理器,而OpenMV的二次開發(fā)一般選用Python程序語言。Python具有上手簡單;不用考慮內(nèi)存的申請和釋放;已有開發(fā)團隊封裝好的各種算法和模塊可以直接調(diào)用;還有MicroPython庫可以直接用等的優(yōu)點,并且Python在圖像處理,機器學習,網(wǎng)絡編程中都得到了廣泛應用。

4.1 主函數(shù)程序框圖

4.2 各子程序設計

4.2.1 OpenMV采集人臉程序設計

OpenMV采集人臉只需要將當前攝像頭所拍攝的圖像信息儲存到用戶庫中即可。為了提高樣本集,在此處設置每個用戶拍攝20張照片,并且拍攝過程中需要用戶盡可能調(diào)整自己的面部表情。

采集人臉程序代碼:

import sensor, image, pyb

red_led ? = LED(1)

green_led = LED(2)

blue_led = LED(3)

lcd.init() # 初始化lcd.

sensor.reset() # 初始化攝像頭.

sensor.set_pixformat(sensor.GRAYSCALE)

sensor.set_framesize(sensor.B128X128)

sensor.set_windowing((92,112))#設置屏幕窗口大小

sensor.skip_frames(10)

sensor.skip_frames(time = 2000)

num = 3#被拍攝人臉信息編號

n = 10 #每個用戶拍攝10張照片

while(n):

red_led.on()#亮紅燈

sensor.skip_frames(time = 2000) # 暫停2s

blue_led.on()

sensor.snapshot().save("photo/s%s/%s.pgm" % (num, n) ) # 將用戶人臉信息保存到SD卡里面

n -= 1

blue_led.off()

print("注冊人臉信息已成功")

4.2.2 OpenMV識別人臉程序設計

為了提高識別人臉時數(shù)據(jù)采集的精準性,使用了判斷標識關鍵字的方式,利用for循環(huán)語句,進行三次人臉采集,分別判斷當前人臉與用戶庫人臉數(shù)據(jù)的對比數(shù)據(jù)是否超過閾值,當差異度小于閾值,將標識字賦值為1,否則為0。當關鍵字為0時,退出識別人臉程序,并閃爍紅燈,標識人臉識別失敗。當三次識別均成功時,閃爍綠燈,打開繼電器。

識別人臉代碼:

import sensor, time, image, pyb, lcd

from pyb import Pin

from pyb import LED

red_led ? = LED(1)

green_led = LED(2)

lcd.init() #

sensor.reset() # 初始化攝像頭.

sensor.set_pixformat(sensor.GRAYSCALE)

sensor.set_framesize(sensor.B128X128)

sensor.set_windowing((92,112))#設置屏幕窗口大小

sensor.skip_frames(10)

sensor.skip_frames(time = 2000)

NUM_SUBJECTS = 3 #圖庫中的用戶人數(shù)

NUM_SUBJECTS_IMGS = 10 #每個人的合法樣本數(shù)

flag = 1

p_in = Pin('P6', Pin.IN, Pin.PULL_UP)# P6為輸入引腳,并上拉電阻

value = p_in.value() # get value, 0 or 1#讀P6引腳的值

print(value)

def min_value(a, b, c):

global num

if a

pmin=b

num=c

return a

if value==0 and flag ==1:

for n in range(0,3):

# 拍攝當前人臉。

Img_now = sensor.snapshot()

####display###

for i in range (1,100):

lcd.display(Img_now) #拍攝當前照片并顯示出來

##############

L0 = Img_now.find_lbp((0, 0, img.width(), img.height()))

#將當前人臉的lbp特征保存在L0中

Img_now = None

pmin = 999999#最大化

num=0

for s in range(1, NUM_SUBJECTS+1):

dist = 0

for i in range(2, NUM_SUBJECTS_IMGS+1):

img = Img_now.Image("photo/s%d/%d.pgm"%(s, i))

L1 = Img_now.find_lbp((0, 0, Img_now.width(), Img_now.height()))

#將文件夾中的lbp特征保存在L1中

dist += Img_now.match_descriptor(L0, L1)#計算人臉的特征差異度。

print("Average dist for subject %d: %d"%(s, dist/NUM_SUBJECTS_IMGS))

pmin = min_value(pmin, dist/NUM_SUBJECTS_IMGS, s)#打印當前照片與用戶庫中照片的特征差異度

if (pmin<6500):

flag = 1

else:

flag = 0

print(pmin)

print(num_value) # num為當前最匹配的人的編號。

if(pmin<6500):

print("the door is open.")

Img_now.draw_string(200,200,"the door is open.", color = (255, 0, 0))

green_led.on()

time.sleep(500)

else:

print("the face is not detected,please try again.")

Img_now.draw_string(200,200,"the face is not detected,please try again.")

red_led.on()

time.sleep(500)

else:

print("the face is not detected,please try again.")

Img_now.draw_string(200,200,"the face is not detected,please try again.")

red_led.on()

time.sleep(500)

4.2.3 密碼驗證程序設計

在驗證管理員信息時需要對輸入的密碼與AT24C02中儲存的密碼進行比較驗證,并且設置了三次密碼錯誤啟動鍵盤鎖,此時將不能再通過按鍵輸入密碼。

4.2.4 按鍵程序設計

本次設計采用的是矩陣鍵盤,判斷是否有按鍵按下,需要CPU對所有的鍵盤進行實時監(jiān)視,判斷按下的是哪個鍵盤需要按行按列依次掃描鍵盤確認位置,并且掃描時要注意去除抖動。

5 調(diào)試

5.1 人臉識別特征差異閾值

由于LBP特征識別算法是將圖像的局部紋理特征轉(zhuǎn)化為一個LBP值,因此在對比圖像時,LBP的差異度即特征差異度越小,說明檢測到的人臉與樣本人臉更為相似。

在本設計中,用于區(qū)分是否為本人的這個特征差異度稱之為閾值。這個閾值的選擇需要實際實驗測得數(shù)據(jù)來選擇,同時還考慮到了樣本照片,光線強弱,人物背景,人物表情等因素對特征差異度的影響。下面是控制變量法下的實驗數(shù)據(jù)。

由表中數(shù)據(jù)可以看到,通過圖片檢測的特征差異度普遍在7000-8000之間,而真實人臉檢測的特征差異度可以在6500左右。因此在實際選擇閾值時選擇設置閾值為6500,并且進行多次檢測的方式減少誤差比較合適。

5.2 OpenMV調(diào)試

對OpenMV調(diào)試主要是將其連接至電腦端,單獨運行人臉識別和人臉存儲的代碼。由于代碼是用python語法,因此有一個常見的錯誤提醒:SyntaxError: invalid syntax,這種錯誤常由于在def,class,if,elif,for,while等語句末尾沒有加上“:”或是因為縮進不正確。由于python是一個沒有中括號的編程語言,語言的邏輯包含關系全都由縮進體現(xiàn),因此在整個編程中要特別注意縮進。另外在調(diào)試代碼時出現(xiàn)了沒有語法錯誤,但是出來的結(jié)果并非期望值的情況,這時就只能一步一步地看代碼,在關鍵代碼處可以添加一行輸出來查看這時一些關鍵值的變化,這樣可以快速定位出錯的邏輯位置。

還有一個小問題值得一提,由于OpenMV保存人臉信息是保存至本地的SD內(nèi)存卡中,在提取人臉信息算法中要輸入相應的路徑,該路徑下存有已經(jīng)保存的人臉信息分別放至s1-s6的文件夾中。開始本以為路徑和文件夾都可以自動生成,但是測試時發(fā)現(xiàn)都不行,而且在提取完人臉信息后,文件夾內(nèi)是不會立即更新的,需要將OpenMV重啟后才能看到。

5.3 LCD顯示屏調(diào)試

本次設計中的管理員系統(tǒng)采用了LCD1602顯示屏,用于用戶輸入密碼顯示。整體來說LCD1602的調(diào)試比較簡單,可以通過在51學習板上進行范例代碼的測試,由此判斷顯示屏是否工作正常,只要顯示成功余下的就是編碼的問題了。

5.4 矩陣鍵盤調(diào)試

矩陣鍵盤測試的重點是硬件方面,在焊接時一定要仔細仔細再仔細,每次焊接完一行或者一列都需要用萬用表測試是否連通,是否存在虛焊的情況。用萬用表確認基本無誤后,將在學習板測試成功的簡單按鍵操作代碼修改引腳后用于測試。

5.5 系統(tǒng)安裝

1)設計需求分析,按照本次設計的需求現(xiàn)將設計成為相應模塊,并構(gòu)思好系統(tǒng)的框架結(jié)構(gòu)。

2)按照模塊需求,列出每個模塊需要的元器件,并匯總為總元器件清單。

3)按照元器件清單購買元器件,并根據(jù)設計的原理圖將元器件按照每個模塊焊接完成,并用萬能表測試焊接情況,初步排除虛焊,漏焊等情況。

4)在相應的編程軟件中,按照模塊順序編寫相應程序,如果方便可以先在學習板上測試程序功能。

5)在軟硬件準備工作完成后,將所有的模塊相連,挨個測試模塊功能是否完成。模塊測試完成后再編寫主程序,耐心調(diào)試。

6)在主程序測試成功后,對整體代碼邏輯順序進行梳理,多次測試完善,直到最終達到理想效果。

設計安裝完成及調(diào)試過程如圖3。

參考文獻:

[1] 何玉.基于Python語言圖像邊緣檢測及其算法分析[J].計算機產(chǎn)品與流通, 2018(6):147.

[2] 郭向,星田斐.智能人臉識別門鎖控制系統(tǒng)設計[J].電子技術與軟件工程, 2019(17):115-116.

[3] 李勇.基于RFID與人臉識別技術的智能門禁系統(tǒng)研究與設計[D].重慶:重慶大學,2009.

【通聯(lián)編輯:謝媛媛】

猜你喜歡
人臉識別
人臉識別 等
作文中學版(2022年1期)2022-04-14 08:00:34
揭開人臉識別的神秘面紗
學生天地(2020年31期)2020-06-01 02:32:06
人臉識別技術的基本原理與應用
電子制作(2019年14期)2019-08-20 05:43:34
人臉識別技術在高速公路打逃中的應用探討
基于(2D)2PCA-LBP 的人臉識別方法的研究
電子制作(2017年17期)2017-12-18 06:40:55
淺談人臉識別技術
人臉識別在高校安全防范中的應用
電子制作(2017年1期)2017-05-17 03:54:46
巡演完美收官 英飛拓引領人臉識別新潮流
人臉識別在Android平臺下的研究與實現(xiàn)
基于Metaface字典學習與核稀疏表示的人臉識別方法
主站蜘蛛池模板: 久久综合色天堂av| 欧美一级99在线观看国产| 国产成人精品午夜视频'| 亚洲国产成人精品无码区性色| 国产浮力第一页永久地址 | 国产精品视频猛进猛出| 免费网站成人亚洲| 亚洲综合色区在线播放2019| 免费观看成人久久网免费观看| 国产精品99一区不卡| 亚洲一级毛片免费观看| 国产欧美日韩另类精彩视频| 欧洲精品视频在线观看| 中文字幕乱码中文乱码51精品| 精品福利国产| 男女男精品视频| 玖玖精品在线| 人人妻人人澡人人爽欧美一区| 午夜久久影院| 亚洲成AV人手机在线观看网站| 91蝌蚪视频在线观看| 高清不卡一区二区三区香蕉| 欧美爱爱网| 99热这里只有免费国产精品 | 亚洲精品自在线拍| 国产剧情国内精品原创| 好吊妞欧美视频免费| 久久女人网| 2020国产精品视频| 免费一级毛片完整版在线看| 久久久久国色AV免费观看性色| 久久99国产综合精品女同| 成年A级毛片| 国产成人凹凸视频在线| 日本成人不卡视频| 国产性生交xxxxx免费| 自拍偷拍欧美| 久久精品人妻中文系列| 精品一区二区无码av| 国产91熟女高潮一区二区| 久一在线视频| 91视频99| 天天摸天天操免费播放小视频| 国产导航在线| 国模极品一区二区三区| 亚洲无码熟妇人妻AV在线| 992tv国产人成在线观看| 午夜精品区| a毛片基地免费大全| 日韩毛片免费观看| 欧美日韩第三页| 日韩免费成人| jijzzizz老师出水喷水喷出| 99视频只有精品| 四虎成人精品| 青青草原国产免费av观看| 不卡无码网| 亚洲综合香蕉| 91网站国产| 亚洲三级色| 最新日本中文字幕| 久久九九热视频| 国产欧美日韩专区发布| 国产精品福利在线观看无码卡| 伊人久久青草青青综合| 91色在线观看| 美女国产在线| 亚洲美女高潮久久久久久久| 尤物精品国产福利网站| 欧美精品伊人久久| 欧美色丁香| 亚洲第一在线播放| 国产激情在线视频| 欧美不卡视频一区发布| 91在线国内在线播放老师| 久久久久久久97| 青青青伊人色综合久久| 91久久大香线蕉| 亚洲婷婷在线视频| 成色7777精品在线| 欧洲成人免费视频| 亚洲欧美极品|