彭聚森 黃艷麗 趙若冰 周瀟琦
摘 要:文章設(shè)計(jì)具有測溫及統(tǒng)計(jì)功能的人臉識別系統(tǒng)。設(shè)計(jì)包含 2個(gè)模式:防控模式和非防控模式非防控期間,學(xué)生可正常刷人臉進(jìn)出;防控期間,學(xué)生需佩戴口罩并監(jiān)測體溫,異常時(shí)發(fā)出警告。該設(shè)計(jì)為校園管控提供一定的參考。
關(guān)鍵詞:測溫:人臉識別;防控
中圖法分類號:TP391文獻(xiàn)標(biāo)識碼:A
1 引言
后疫情時(shí)代,大部分高校將采取開放式管理。正常情況下,學(xué)生進(jìn)出校園只需進(jìn)行人臉識別,但疫情防控期間,佩戴口罩和檢測就成為必然,每天進(jìn)出校園人口眾多,當(dāng)未佩戴口罩時(shí),1 秒鐘內(nèi)檢測者被感染的概率是較大的,因此設(shè)計(jì)一個(gè)具有口罩識別及測溫功能的系統(tǒng)就顯得尤為重要。
同時(shí),隨著科技的快速發(fā)展,人臉識別技術(shù)也在不斷地突破,尤其是在日常生活中,技術(shù)帶來的便捷大幅提高了人們的生活效率。其中,OpenCV 是特別關(guān)鍵的技術(shù)。其不僅可以應(yīng)用在科研跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫, 也可以運(yùn)行在Linux、Windows、Android 和Mac OS 操作系統(tǒng)上。它具有輕量級且高效的特點(diǎn), 同時(shí)也提供了Python, Ruby,Matlab 等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的通用算法[1?4] 。
2 具有測溫及統(tǒng)計(jì)功能的人臉識別系統(tǒng)的介紹
具有測溫及統(tǒng)計(jì)功能的人臉識別系統(tǒng)是基于Opencv 跨平臺計(jì)算機(jī)視覺庫,在PyCharm 和Python平臺下進(jìn)行設(shè)計(jì)開發(fā)。設(shè)計(jì)包括2 個(gè)模式:防控模式和非防控模式。非防控期間,學(xué)生可正常刷人臉進(jìn)出;防控期間,學(xué)生需佩戴口罩并監(jiān)測體溫。流程介紹如圖1 所示。
3 原理介紹
3.1 口罩識別原理
利用OpenCV 庫的級聯(lián)分類器,并選取了Haar 特征和Adaboost 級聯(lián)分類。機(jī)器的眼睛是攝像頭,機(jī)器看到的只有數(shù)據(jù),也就是像素,當(dāng)需要識別某一種特定的圖像時(shí),就需要找到圖像的一系列特征,這個(gè)就是Haar 特征(Haar?like features 是用于物體識別的一種數(shù)字圖像特征)[5] 。當(dāng)對圖像進(jìn)行運(yùn)算特征值時(shí),由于彩色圖像的通道數(shù)較多,以及像素的數(shù)據(jù)較大,為了高效進(jìn)行運(yùn)算,需先將圖像轉(zhuǎn)化為灰度圖像,然后進(jìn)行Haar 特征運(yùn)算,而Haar 特征運(yùn)算一共有14種,較為基礎(chǔ)的為BASIC 的5 種運(yùn)算。由于要對口罩識別模型進(jìn)行構(gòu)建,因此為了增強(qiáng)模型的識別度,使用了ALL 的14 種特征運(yùn)算。
3.2 測溫原理
任何物體在高于絕對零度(?273℃)時(shí)都會向外發(fā)出紅外線,而額溫槍通過傳感器接收紅外線,從而得出感應(yīng)溫度數(shù)據(jù)。
4 模塊設(shè)計(jì)
4.1 信息錄入
導(dǎo)入cv2 模塊,調(diào)取攝像頭,拍照錄取信息。首先檢查攝像頭是否處于開啟狀態(tài),開啟后通過攝像頭進(jìn)行拍照,按“s”鍵保存照片,并按照指定的格式進(jìn)行命名照片,最后釋放攝像頭和內(nèi)存。
4.2 數(shù)據(jù)訓(xùn)練
將保存的照片導(dǎo)入模塊,進(jìn)行數(shù)據(jù)訓(xùn)練。通過遍歷將所有圖片導(dǎo)入模塊,并將黑白化圖像轉(zhuǎn)換為數(shù)組;獲取圖片人臉特征及對應(yīng)的id 和姓名并數(shù)字化存儲;對比臉部特征和id,以確保識別的準(zhǔn)確性。
4.3 疫情情況下的人臉識別系統(tǒng)
人臉識別系統(tǒng)進(jìn)行圖片的讀取利用了OpenCV 庫的級聯(lián)分類器,選取了Haar 特征和Adaboost 級聯(lián)分類,若檢測到鼻子、嘴巴,則證明沒有戴口罩。若未檢測到鼻子、嘴巴,則接著使用opencv 的haar 眼睛特征分類器,若未檢測到眼睛,則結(jié)束。若檢測到眼睛,則把RGB 顏色空間轉(zhuǎn)為HSV 顏色空間,進(jìn)行口罩區(qū)域的檢測??谡謪^(qū)域檢測流程是把距離坐標(biāo)原點(diǎn)較近的橫坐標(biāo)作為口罩區(qū)域開始的橫坐標(biāo),離坐標(biāo)原點(diǎn)較遠(yuǎn)的橫坐標(biāo)作為口罩區(qū)域結(jié)束的橫坐標(biāo)。離坐標(biāo)原點(diǎn)較遠(yuǎn)的縱坐標(biāo)作為口罩區(qū)域開始的縱坐標(biāo),離坐標(biāo)原點(diǎn)較遠(yuǎn)的縱坐標(biāo)與眼睛高度2 倍的和作為口罩區(qū)域結(jié)束的縱坐標(biāo)。檢測到口罩之后,對比數(shù)據(jù),進(jìn)行識別[6] 。
Haar 特征和Adaboost 級聯(lián)分類模塊運(yùn)行過程如下。
face _ cascade = cv2. CascadeClassifier ( ' D:/opencv/ sources/ data/ haarcascades/ haarcascade _cdefault.xml')
eye_cascade = cv2.CascadeClassifier('D:/ opencv/sources/ data/ haarcascades/ haarcascade_eye.xml')
mouth _ cascade = cv2. CascadeClassifier ( ' D:/opencv/ sources/ data/ haarcascades/ haarcascade _ mcs _mouth.xml')
upper_body = cv2.CascadeClassifier('D:/ opencv/sources/ data/ haarcascades/ haarcascade_ upperbody. xml')
#Adjust threshold
bw_threshold = 80 # User message
font = cv2.FONT_HERSHEY_SIMPLEX
org = (30, 30)
weared_mask_font_color = (255, 255, 255)
not_weared_mask_font_color = (0, 0, 255)
thickness = 2
font_scale = 1
weared_mask = "Thank You for wearing MASK"
not_weared_mask = " Please wear MASK to d
efeat
Corona"
def name():
path = './ data/ jm/ '#names = []
imagePaths = [os.path.join(path,f) for f inos.listdir(path)]
for imagePath in imagePaths:
name = str ( os. path. split ( imagePath)
[1].split('.',2)[1])
names.append(name)
def tw():
webdu = int(input(""))
if webdu >= 37.3:
print("體溫異常,請稍等?。。ⅲ?/p>
else:
print("體溫正常")# Read video
cap = cv2.VideoCapture(0)
name()
tw()
while 1:
ret, img = cap.read()
img = cv2.flip(img, 1)
# Convert Image into gray
gray = cv2. cvtColor ( img, cv2. COLOR _BGR2GRAY)# Convert image in black and white
(thresh, black_and_white) = cv2.threshold
(gray, bw_threshold, 255, cv2.THRESH_BINARY)
# detect face
faces = face_cascade.detectMultiScale(gray,1.1, 4) # Face prediction for black and white
faces _ bw = face _ cascade. detectMultiScale(black_and_white, 1.1, 4)
if (len(faces) = = 0 and len(faces_bw) = =0):
cv2. putText(img, " have_mask pjs",org, font, font _ scale, weared _ mask _ font _ color,thickness, cv2.LINE_AA)
else:
for (x, y, w, h) in faces:
roi_gray = gray[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
mouth _ rects = mouth _ cascade.
detectMultiScale(roi_gray, 1.5, 5)
if (len(mouth_rects) = = 0):
cv2.rectangle(img, (x, y), (x+ w, y + h), (0, 255, 0), 2)
else:
cv2.rectangle(img, (x, y), (x+ w, y + h), (0, 0, 255), 2)
4.4 非疫情情況下的人臉識別系統(tǒng)
關(guān)閉口罩識別功能和體溫測量功能,只進(jìn)行人臉識別功能。
5 設(shè)備功能及實(shí)現(xiàn)
在非疫情狀態(tài)下,當(dāng)人員靠近攝像頭時(shí),會對人臉進(jìn)行掃描并對比數(shù)據(jù)庫,對比成功人員方可通過;在疫情狀態(tài)下,當(dāng)人員靠近攝像頭時(shí),若未佩戴口罩,則圖像會將人像顯示紅框以此來警告,當(dāng)戴上口罩時(shí),攝像頭顯示綠框并測量體溫,體溫正常人員可通過,體溫異常會及時(shí)通知管理人員并上傳數(shù)據(jù)[7?8] 。
6 結(jié)束語
在門禁系統(tǒng)的基礎(chǔ)上,增加防控模式。當(dāng)通行人員進(jìn)行人臉識別時(shí),判斷其是否佩戴口罩,同時(shí)對其溫度進(jìn)行測量,整個(gè)識別測量過程是非接觸式。對體溫超出一定閾值的人員,終端會發(fā)出異常預(yù)警,并對其體溫進(jìn)行展示。本文產(chǎn)品設(shè)計(jì)遵循經(jīng)濟(jì)實(shí)用、安全穩(wěn)定的設(shè)計(jì)思想,設(shè)計(jì)采用技術(shù)成熟、性能卓越、簡約時(shí)尚的門禁設(shè)備及體溫測量,既能滿足當(dāng)前管理需要,又能適應(yīng)未來發(fā)展。
參考文獻(xiàn):
[1] 譚儉輝.基于K210人臉身份識別與測溫系統(tǒng)設(shè)計(jì)[D].廣東:廣東工業(yè)大學(xué),2021.
[2] 劉鵬鋒.嵌入式健康信息處理系統(tǒng)的研究與設(shè)計(jì)[D].武漢:武漢紡織大學(xué),2018.
[3] 李天睿,謝衛(wèi)平.體溫檢測在人臉識別門禁終端的應(yīng)用[J].電腦與電信,2021(7):68?70.
[4] 侯國棟,常迎梅.具有紅外測溫功能的人臉識別門禁系統(tǒng)設(shè)計(jì)[J].科技信息,2010(20):519?520.
[5] 任啟宏,侯國棟,常迎梅.具有紅外測溫功能的非接觸式智能門禁系統(tǒng)[J].常熟理工學(xué)院學(xué)報(bào),2010,24(2):83?86.
[6] 張宣妮,馬秀霞,魯方瑩,等.智慧小區(qū)的人臉識別門禁系統(tǒng)[J].信息系統(tǒng)工程,2021(4):95?96.
[7] RATHKANTHIWAR S, CHAUDHARY T, GAJBHE A, etal. Access Control system with contactless temperaturedetection[J]. International Research Journal of Engineeringand Technology,2021,8(5):3446?3449.
[8] COSTANZO S, FLORES A M. IoT Non?contact BodyTemperature Measurement System Implementing AccessControl for COVID?19 [ J ]. Trends and Applications inInformation Systems and Technologie,2021,13 (20): 255?264.
作者簡介:
彭聚森(2000—),本科,研究方向:通信工程嵌入式。
黃艷麗(1984—),碩士,講師,研究方向:計(jì)算機(jī)通信、電子技術(shù)、模塊識別。
趙若冰(2001—),本科,研究方向:單片機(jī)。
周瀟琦(2001—),本科,研究方向:計(jì)算機(jī)通信。