【基于樹莓派的人臉識別系統(tǒng)設計與實現(xiàn)10000字】_第1頁
【基于樹莓派的人臉識別系統(tǒng)設計與實現(xiàn)10000字】_第2頁
【基于樹莓派的人臉識別系統(tǒng)設計與實現(xiàn)10000字】_第3頁
【基于樹莓派的人臉識別系統(tǒng)設計與實現(xiàn)10000字】_第4頁
【基于樹莓派的人臉識別系統(tǒng)設計與實現(xiàn)10000字】_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

人臉識別的研究有較長的歷史,Galton早在1888年和1910年就分別在具有普通電腦的所有基礎功能。故采用以樹莓派為硬件人臉識別系統(tǒng),利用OpenCV內(nèi)置的算法程序?qū)θ四橁P鍵詞:樹莓派人臉識別pythonOpenCV第一章緒論隨著近些年社會的發(fā)展,信息安全不斷受到新技術的挑戰(zhàn),人們逐漸將目光轉(zhuǎn)向安全性更高的生物特征識別技術,如指由于人臉識別具有非接觸性、非強制性以及準確性較高等優(yōu)勢,目前已經(jīng)被應用于支付系統(tǒng)、安檢系統(tǒng)以及門禁系統(tǒng)等應用系統(tǒng)中[1]。人臉識別技術取得了顯著進步,眾多的人臉識別模型和方法被研究出來,廣泛應用于國土安全[2]、視頻監(jiān)控、身份管理、教育[3]、鐵路安檢以及醫(yī)療衛(wèi)生[3]等領域,取得了很好的社會效人臉識別技術是當下社會中AI以及模式識別領域的熱點內(nèi)容,在近些年來逐步發(fā)展起來,在上世紀九十年代更成為科研的熱點,人臉識別最開始應用于對罪犯照片的存檔和刑事案件的偵破,隨著社會的進步和發(fā)展,對更快、更有效的自動人臉識別技術的需求愈加強烈。并且人臉識別技術在國家以及社會安全以及商業(yè)安全等領域都有著很多應用,例如證件驗證在核驗人的身份信息是經(jīng)常會對證件進行檢查驗證,在檢驗身份證、護照等等證件的照片時,人工檢驗就顯得非常麻煩,用機器就會使任務變得簡單許多,此時便可以應用到人臉識別技術進行自動化智能管理。刑偵破案在公安機關未得到嫌棄人照片是,常常利用目擊證人的描述,在經(jīng)過專業(yè)技術人員描繪出嫌疑人的大概樣貌信息的草圖,之后運用計算機運行出嫌疑人的大體面部信息,再將圖像和數(shù)據(jù)里中的人臉信息進行對比,最終找到嫌疑人。這樣不僅節(jié)省了時間提高了效率,使得公安機關的破案能力大大加強。入口控制在海關、機場、港口等地會存在大量可疑人員入境,但僅由人力進行觀察很囊將其繩之以法,所以就會運用到人臉識別技術對進出的人進行監(jiān)控與比對,一旦發(fā)現(xiàn)可疑人員,保安警察得以快速抓捕控制嫌疑人員。視頻監(jiān)控當今社會中公共場所各處都存在監(jiān)控設備,一旦出現(xiàn)異常事件是就需要用到人臉識別技術對當事人進行識別與追蹤,以及對各個人物進行比對分析。此外,人臉識別技術在各個領域也有廣泛應用,例如門禁通道,人機交互,公司或?qū)W校的打卡簽到等等方面。在學術研究領域,人臉識別的研究涉及到圖像處理、模式識別、神經(jīng)網(wǎng)絡、計算機視覺、人工智能、生理學、心理學及認知科學等多方面的知識。人臉識別牽扯到很多領域以及技術,在人臉識別技術不斷提高的同時也有助于相關領域的發(fā)展和研究,有著重要的研究學術價值。故對人臉識別的研究有重大意義,很大概率會對人類的未來生產(chǎn)建設以及人類的幸福生活產(chǎn)生深遠的影響。1.2樹莓派的特點優(yōu)勢RaspberryPi(中文名為“樹莓派”,簡寫為RPi,(或者RasPi/RPI)[5]是為學習計算機編程教育而設計),只有信用卡大小的微型電腦,其系統(tǒng)基于Linux。[6]隨著Windows10IoT的發(fā)布,我們也將可以用上運行Windows的樹莓派。[7]自問世以來,受眾多計算機發(fā)燒友和創(chuàng)客的追捧,曾經(jīng)一“派”難求。別看其外表“嬌小”,內(nèi)“心”卻很強大,視頻、音頻等功能通通皆有,可謂是“麻雀雖小,五臟俱全”。[8]其所采用的ARM處理器有著很高的效能,處理性能高且發(fā)熱量少,且兼容性良好,且十分廉價,和常見的51單片機以及嵌入式微控制器相比,樹莓派可以連接不同的引腳和組件來進行功能擴展,并且可以運行操作系統(tǒng),進行可視化操作,對各種計算機相關的事物進行處理,能夠滿足設計者的各種應用開發(fā)。不僅如此,樹莓派在開發(fā)語言上在C語言以外還能運行python、C++等等語言。還能夠連接如攝像頭等等硬件并對其進行控制,還可以搭建網(wǎng)絡服務器。如果僅僅使用電腦,則無法連接控制各種微型引腳與一些底層的硬件。1.3本文工作樹莓派體積小,價格便宜,可以運行電腦端的程序,完成一部分電腦任務。為本次人臉識別體統(tǒng)設計提供了硬件保證,以樹莓派作為主機連接用舵機控制的攝像頭來進行視覺輸入,OpenCV內(nèi)置有Hear分類器能進行大量機器學習來檢測面部信息,本設計將調(diào)用樹莓派內(nèi)置的OpenCV視覺處理庫中的Hear訓練器檢測器對人臉進行識別檢測,舵機來進行人臉的追蹤。1.4本章小結本課題設計不僅需要硬件開發(fā)平臺,也需要軟件開發(fā)平臺,軟件平臺包括各種函數(shù),驅(qū)動層序和應用程序,樹莓派操作系統(tǒng),攝像頭調(diào)用程序,視頻編碼解碼程序,電腦的顯示程序,其中硬件包括,樹莓派主機,攝像頭等視頻采集組件視頻傳輸部件和電腦充當?shù)娘@示部分。如圖所示系統(tǒng)設計框架。本次人臉識別系統(tǒng)第一步為搭建硬件環(huán)境,主要為組裝的開發(fā)板聯(lián)通電路。第二部搭建好軟件環(huán)境,主要為在PC端裝入可視化程序VNC以及文件傳輸軟件FileZilla,以及安裝好樹莓派的系統(tǒng)。第三步為在樹莓派中運用OpenCV和Spyder運用python進行編譯,對人臉識別程序進行調(diào)試驗證功能。本論文設計所用的樹莓派采用樹莓派4B為中心處理器,如下圖所示此版本的樹莓派搭載了博通最新的BCM2711處理器,擁有四顆ARM的A72面,這一代樹莓派有了最高4GB的運行內(nèi)存,對比之前的1GB,即使面對復雜多任務,也可以流暢運行,有了更強的多任務處理能力。在網(wǎng)絡方面,4B版本接口供電,對比Micousb接口更加方便,USB接口協(xié)寫能力有了質(zhì)的飛躍,支持輸出4K視頻,讓可視化界面的展示有了有多可能。2.3軟件平臺OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺和機器學習量級而且高效一—由一系列C函數(shù)和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接□,實現(xiàn)了圖像處理和計算機視覺方面的很多通用OpenCV用C++語言編寫,它具有C++,Python,Java和MATLAB接□,并支持Windows,Linux,Android和MacOS,OpenCV主要傾向于實時用,并在可用時利用MMX和SSE指令,如今也提供對于C#、Ch、Ruby,GO了C語言的優(yōu)化,在現(xiàn)如今的多核處理器的計算機內(nèi),它的運行速度會OpenCV可以通過開源的人臉識別數(shù)據(jù)庫和自己拍照建立的人臉數(shù)據(jù)庫進2.人臉檢測OpenCV采用一種叫做Haarcascadeclassifier的人臉檢測器,他利用保存在XML文件中的數(shù)據(jù)來確定每一個局部搜索圖像的位置,利用其內(nèi)置函數(shù)進行檢3.人臉識別人臉識別可由PCA算法實現(xiàn)。PCA方法(即特征臉方法)是M.Turk和(1)基于前面得到的M個特征臉,將視頻輸入的人臉信息與特征臉進行比對,(2)判斷視頻輸入的人臉是否為他人還是數(shù)據(jù)庫中人來就存在的人臉,只需判(3)如果是人臉圖像,則根據(jù)前面計算的權重集合(權重向量),利用權重模式將這個人臉分類劃歸到初始時計算得到的各個個體或者是成為一個新的個體(4)更新特征臉或者是相似度。(5)如果多次出現(xiàn)一個未知的人臉,也就意味著,這是一個新的人臉數(shù)據(jù),那么計算它的相似度,然后將其添加到已知人臉中.的任務,簡單的算法往往不能滿足人們的要求,所以近幾年出現(xiàn)的AI、卷積神Spyder是Python的一個簡單的可視化輕量化開發(fā)平臺,和其他python開發(fā)Python由荷蘭數(shù)學和計算機科學研究學會的GuidovanRossum于1990年代Python解釋器易于擴展,可以使用C或C++(或者其他可以通過C調(diào)用的3、python的許多語言邏輯與C語言類似,很多語言庫也由C語言構成符合計算4、Python由FLOSS(開源代碼)之一。對需要的python功能和組件可以對源代5、使用Python語言會自動清楚內(nèi)存,所以在編寫和運行程序時無需擔心后臺程序占用問題等等底層細節(jié)。6、由于它的本質(zhì)是開源,許多平臺已經(jīng)移植了python包括Linux、Windows、7、Python既為面向?qū)ο蟮囊矠槊嫦蜻^程的。在“面向?qū)ο蟆钡恼Z言中,程序是由功能和數(shù)據(jù)組合成的對象構建起來的,在“面向過程”語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構建起來的。8、在python代碼中可是使用不同的語言,使得python可以用很多語言的腳本來實現(xiàn)各種功能。10、python中有各種強制規(guī)則,使得最終代碼有很好的規(guī)范以及可讀性,并且python不需要轉(zhuǎn)譯成二進制代碼。本章介紹了本設計系統(tǒng)的設計方案,提到了將用到的OpenCV視覺處理庫的特點和原理以及所需的python語言的優(yōu)點,還提介紹了樹莓派結構以及4B型號樹莓派的優(yōu)點,以及如何利用樹莓派的內(nèi)置OPenCV軟件進行人臉識別的訓練第三章設計步驟所需硬件:PC樹莓派4b主板一塊、樹莓派IO□擴展板、16GTF卡、讀卡器、面包板、40p排線、連接線亞克力外殼。將樹莓派用塑料外殼包住將T型板3.2樹莓派WiFi連接SSH服務和VNC遠程桌面再用notepad++打開WiFi設置文件,將路由器名稱密碼輸入如圖2日vpa_supplicant.conf區(qū)123456789}在將調(diào)試好WiFi的conf文件放回樹莓派中就可以正常聯(lián)網(wǎng),在路由器官網(wǎng)查到樹莓派的IP地址,用VNC輸入IP地址,用戶名為pi,密碼為raspberry,端口×copyright","credits"or"license"formoreinformat看到Spyder軟件的圖標3.4測試攝像頭在Spyder軟件內(nèi)新建python文件輸入以下代碼測試攝像頭是否能正常工作cap=cv2.VideoCapture(frame=cv2.flip(frame,1)gray=cv2.cvtColor(frame,cv2ifcv2.waitKey(1)&0xFF==ord('q'):break若出現(xiàn)視頻圖像輸出則可以說明可以USB攝像頭能正常工作在樹莓派控制界面輸入sudoraspi-config即可進入樹莓派配置菜單找到i2c總線的開關,點擊打開。之后輸入i2cdetecty-1,若出現(xiàn)40則說明i2c舵機控制模塊已經(jīng)能成功運行。IRaspberryPiSoftwareConP1CameraEnable/DisableconnectionP4SPIEnable/DisableautomaticldefmapObjectPosition(x,y):print("[INFO]ObjectCentercoordenatesatX0={0}andY0={1}".format(x,#initializethevideostreamandalloVs=VideoStream(O).s#definethelowerandupperboundariesoftheobject#StartwithLEDoffframe=imutils.resize(frame,width=500)frame=imutils.rotate(frame,angle=0)hsv=cv2.cvtColor(frame,cv2.COLOR_BGmask=cv2.inRange(hsv,colorLower,colormask=cv2.erode(mask,None,iteratmask=cv2.dilate(mask,None,iterat#findcontoursinthem#(x,y)centeroftheobjectcnts=cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cnts=cnts[0]ifimutils.is_cv2()elsecnts[1]#onlyproceedifatleastonecontourwasfoundiflen(cnts)>0:#ittocomputetheminimu((x,y),radius)=cv2.minEnccenter=(int(M["m10"]/M["m00"]),int(M["m01#onlyproceediftheradiusmeetsaminimumsizeifradius>10:#thenupdatethelistoftrackedpointscv2.circle(frame,(int(x),int(y))cv2.circle(frame,center,5,(mapObjectPosition(int(x),iifnotledOn:#iftheballisnotdetected,turntheLEDoffelifledOn:ifkey==27:break#doabitofcleanup在運行以上代碼后,即可實現(xiàn)對小球的檢測,當LED燈發(fā)出紅光,則表明檢測到小球,把小球移開LED燈熄滅征兩矩形特征?三矩形特征?四矩形特征?對于每一個特征的計算我們需要計算白色和黑色矩形內(nèi)的像素和。為此,我們使用了積分圖像,使得整個步驟的運算更加高效快速簡單,每個區(qū)域的像素和只需要對積分圖像的四個像素操作。但是在計算得到的所有的這些特征中,大多數(shù)是不相關的。如下圖所示。上邊一行顯示了兩個好的特征,第一個特征看上去是對眼部周圍區(qū)域的描述,因為眼睛總是比鼻子黑一些。第二個特征是描述的是眼睛比鼻梁要黑一些o但是如果把這兩個窗口放到臉頰的話,就一點都不相關。使用Adaboost算法會讓計算變得更加簡單。Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器。Boosting,也稱為增強學習或提升法,是一種重要的集成學習技術,能夠?qū)㈩A測精度僅比隨機猜度略高的弱學習器增強為預測精度高的強學習器,這在直接構造強學習器非常困難的情況下,為學習算法的設計提供了一種有效的新思路和新方法。作為一種元算法框架,Boosting幾乎可以應用于所有目前流行的機器學習算法以進一步加強原算法的預測精度,應用十分廣泛,產(chǎn)生了極大的影響。而AdaBoost正是其中最成功的代表,被評為數(shù)據(jù)挖掘十大算法之一。在AdaBoost提出至今的十幾年間,機器學習領域的諸多知名學者不斷投入到算法相關理論的的成功不僅僅在于它是一種有效的學習算法,還在于1)它讓B特征值,說明其為檢測目標是否正確的最佳特征。(此過程十分復雜。在開始時到要求的準確率或者精確度)最終得到的分類器是錯誤分類器的集合品,將分類OpenCV中的Haar級聯(lián)檢測訓練好的分類器,其中包括:面部,眼睛,微笑等。這些XML文件保存在Rect(x,y,w,h)。一旦我們獲得這個位置,我們可以創(chuàng)建一個RO并在其中于OpenCV的人臉識別。在樹莓派的Linux操作系統(tǒng)下利用QT庫來開發(fā)圖形界面,以OpenCV圖像處理庫為基礎,使用OpenCV自帶的算法進行對任務的處練好的Hear分類器對目標圖片處理比對,檢測結果利用PCA算法進行訓練與比face_cascade=cv2.CascadeClassifier('haarcascade_feye_cascade=cv2.CascadeClassifier('haargray=cv2.cvtColor(img,cv2.COLfaces=face_cascade.detectMultiScale(gray,1.3,5)roi_gray=gray[y:y+h,x:x+w]roi_color=img[y:y+h,xprint(int(x+w/2),int(y+h/2))eyes=eye_cascade.detectMultiScale(roi_gray)cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh)k=cv2.waitKey(30)&0xffifk==27:#press'ESC'toquitbreak#初始化PCA9685和舵機servo_pwm=Adafruit_PCA9685.PCA9685()#實例話舵機云臺#設置舵機初始值,可以根據(jù)自己的要求調(diào)試servo_pwm.set_pwm_freq(60)#設置頻率為60HZservo_pwm.set_pwm(5,0,32servo_pwm.set_pwm(4face_cascade=cv2.CascadeClassifier('haarcascade_feye_cascade=cv2.CascadeClassifier('haarusb_cap=cv2.VideoCaptur#設置顯示的分辨率,設置為320×240pxpid_x=0pid_y=0pid_w=0pid_h=0pid_thisError_y=0#舵機的轉(zhuǎn)動角度pid_X_P=330pid_Y_P=330#轉(zhuǎn)動角度pid_flag=0#機器人舵機旋轉(zhuǎn)defRobot_servo():servo_pwm.set_pwm(5,servo_pwm.set_pwm(4,servo_tid.start()#開啟線程#StartwithLEDoffret,frame=usb_cap.read()#加載圖像gray=cv2.cvtColor(frame,cvfaces=face_cascade.detectMultiScale(gra#cv2.rectangle(img,(x,y),(x+w,y+h),(255roi_color=frame[y:y+eyes=eye_cascade.detectMultiScale(roi_gray)cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh)#找到人臉畫矩形iflen(faces)>0:(pid_x,pid_y,pid_w,picv2.rectangle(frame,(pid_x,pid_y),(pid_x+pid_h,pid_y+pid_w)result=(pid_x,pid_y,pid_w,pipid_x=result[0]+pid_wpid_y=result[1]+pid_h#誤差值處理pid_thisError_x=pid_x-1pid_thisError_y=pid_y-1pwm_x=pid_thisError_x*5+1*(pid_thisError_x-pid_lastErropwm_y=pid_thisError_y*5+1*(pid_thisError_y-pid_lastErro#迭代誤差值操作pid_lastError_x=pid_thisError_xpid_lastError_y=pid_thisError_ypid_XP=pwm_x/100pid_YP=pwm_y/100#pid_X_Ppid_Y_P為最終PID值pid_X_P=pid_X_P+int(pid_Xpid_Y_P=pid_Y_P+int(pid_ifpid_X_P>650:ifpid_X_P<0:ifpid_Y_P>650:ifpid_X_P<0:pid_Y_p=0#如果沒有檢測到球,關閉LED燈#顯示圖像cv2.imshow("MAKEROBORobot",frame)ifcv2.waitKey(1)==119:break#doabitofcleanupprint("\n[INFO]ExitingProgramandcleanu最終運行程序視頻輸出能出現(xiàn)下圖所示,藍色方框能顯示面部輪廓,綠色方框可以顯示面部信息,嘴部信息以及面部輪廓,且舵機能隨人臉轉(zhuǎn)動的方向進行追蹤,說明系統(tǒng)已經(jīng)可以正常運轉(zhuǎn)工作。V192.168.1.134(raspberrypi)-VNCViewer本章對理論知識進行了實際操作,首先按要求組裝好了樹莓派硬件,連接上攝像頭與舵機,完成了視覺系統(tǒng)的搭建,連接了各個引腳,激活安裝好了樹莓派系統(tǒng)。安裝了必要的軟件,以python語言設置了舵機調(diào)零程序進行了舵機調(diào)零,測試了攝像頭能否正常工作以及OpenCV內(nèi)置的hear級聯(lián)器能否正常工作,分類器是否對面部,眼睛實行檢測。舵機在識別到人臉是還能自行轉(zhuǎn)動,對人臉進第四章總結與展望本文目標利用樹莓派為主機,輔以影像系統(tǒng),利用可視化界面連接樹莓派系統(tǒng)用python對其進行編程,最終使得連接著攝像頭的舵機能對人臉進行識別并進行追蹤。本文的軟件為Opencv視覺處理庫,其支持多種語言,并且能運行在不同的操作系統(tǒng)中,提供了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論