《嵌入式人工智能技術(shù)應(yīng)用》課件 2.2-基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)_第1頁(yè)
《嵌入式人工智能技術(shù)應(yīng)用》課件 2.2-基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)_第2頁(yè)
《嵌入式人工智能技術(shù)應(yīng)用》課件 2.2-基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)_第3頁(yè)
《嵌入式人工智能技術(shù)應(yīng)用》課件 2.2-基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)_第4頁(yè)
《嵌入式人工智能技術(shù)應(yīng)用》課件 2.2-基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目二使用計(jì)算機(jī)視覺(jué)算法實(shí)現(xiàn)圖像識(shí)別嵌入式人工智能技術(shù)應(yīng)用基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)任務(wù)二職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)了解人臉屬性分析算法原理;掌握使用人臉屬性分析算法識(shí)別人臉屬性的方法。掌握利用OpenCV實(shí)現(xiàn)圖像的采集;掌握調(diào)用算法接口,進(jìn)行人臉多屬性分析。職業(yè)能力目標(biāo)01知識(shí)目標(biāo)技能目標(biāo)職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)

本實(shí)驗(yàn)將實(shí)現(xiàn)用人臉檢測(cè)和人臉屬性算法對(duì)USB攝像頭采集畫面進(jìn)行人臉檢測(cè)和人臉屬性分析,并標(biāo)注人臉框和人臉屬性顯示在notebook。任務(wù)描述任務(wù)要求使用人臉檢測(cè)算法和人臉屬性分析算法對(duì)單張圖像進(jìn)行人臉檢測(cè)和人臉?lè)治觯换诙嗑€程使用人臉檢測(cè)算法和人臉屬性分析算法對(duì)USB攝像頭采集的畫面進(jìn)行人臉檢測(cè)和人臉屬性分析;標(biāo)注人臉框和人臉屬性并進(jìn)行顯示。任務(wù)描述與要求02職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)任務(wù)分析根據(jù)自己的了解說(shuō)說(shuō)人臉屬性有哪些?實(shí)現(xiàn)人臉屬性分析可能會(huì)涉及到哪些步驟?任務(wù)分析與計(jì)劃03任務(wù)計(jì)劃表項(xiàng)目名稱使用計(jì)算機(jī)視覺(jué)算法實(shí)現(xiàn)圖像識(shí)別任務(wù)名稱基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)計(jì)劃方式自主設(shè)計(jì)計(jì)劃要求請(qǐng)用6個(gè)計(jì)劃步驟來(lái)完整描述出如何完成本次任務(wù)序號(hào)任務(wù)計(jì)劃1

2

3

4

5

6通過(guò)上面的思考,你是否對(duì)本任務(wù)要完成的工作有所了解?讓我們一起來(lái)制訂完成本次任務(wù)的實(shí)施計(jì)劃吧!任務(wù)分析與計(jì)劃03職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)04知識(shí)儲(chǔ)備人臉識(shí)別1人臉多屬性分析2人臉識(shí)別04人臉識(shí)別,是基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù)。用攝像機(jī)或攝像頭采集含有人臉的圖像或視頻流,并自動(dòng)在圖像中檢測(cè)和跟蹤人臉,進(jìn)而對(duì)檢測(cè)到的人臉進(jìn)行臉部識(shí)別的一系列相關(guān)技術(shù),通常也叫做人像識(shí)別、面部識(shí)別。人臉識(shí)別04人臉識(shí)別系統(tǒng)主要包括四個(gè)組成部分,分別為:人臉圖像采集及檢測(cè)、人臉圖像預(yù)處理、人臉圖像特征提取以及匹配與識(shí)別。人臉識(shí)別04

1.企業(yè)、住宅安全和管理:如人臉識(shí)別門禁考勤系統(tǒng),人臉識(shí)別防盜門等。人臉識(shí)別應(yīng)用場(chǎng)景人臉識(shí)別04

2.電子護(hù)照及身份證:中國(guó)的電子護(hù)照計(jì)劃公安部一所正在加緊規(guī)劃和實(shí)施。人臉識(shí)別應(yīng)用場(chǎng)景人臉識(shí)別04

3.公安、司法和刑偵:如利用人臉識(shí)別系統(tǒng)和網(wǎng)絡(luò),在全國(guó)范圍內(nèi)搜捕逃犯。人臉識(shí)別應(yīng)用場(chǎng)景人臉識(shí)別04

4、自助服務(wù):

人臉識(shí)別應(yīng)用場(chǎng)景人臉識(shí)別04

5.信息安全:如計(jì)算機(jī)登錄、電子政務(wù)和電子商務(wù)。在電子商務(wù)中交易全部在網(wǎng)上完成,電子政務(wù)中的很多審批流程也都搬到了網(wǎng)上。使用生物特征,就可以做到當(dāng)事人在網(wǎng)上的數(shù)字身份和真實(shí)身份統(tǒng)一。人臉識(shí)別應(yīng)用場(chǎng)景人臉識(shí)別04思考人臉識(shí)別和人臉檢測(cè)有什么區(qū)別呢?他們之間有什么關(guān)系?人臉識(shí)別04人臉檢測(cè)是一個(gè)比人臉識(shí)別更廣泛的術(shù)語(yǔ)。人臉檢測(cè)意味著系統(tǒng)可以識(shí)別圖像/視頻中是否有人臉。人臉檢測(cè)有許多應(yīng)用,人臉識(shí)別只是其中之一。人臉檢測(cè)也可以用于自動(dòng)對(duì)焦相機(jī)。它可以用來(lái)計(jì)算進(jìn)入特定區(qū)域的人數(shù)。人臉識(shí)別04什么是人臉檢測(cè)?

人臉檢測(cè)是指用某種策略搜索任何給定的圖像/視頻幀,以確定它是否包含人臉,如果包含,則返回人臉的位置、的大小和姿態(tài)。人臉識(shí)別04人臉檢測(cè)的原理是什么?

人臉檢測(cè)算法通常從搜索人眼開始。眼睛形成所謂的山谷區(qū)域,是最容易被發(fā)現(xiàn)的特征之一。一旦檢測(cè)到眼睛,該算法可以嘗試檢測(cè)面部區(qū)域,包括眉毛、嘴、鼻子、鼻孔和虹膜。一旦算法推測(cè)它已經(jīng)檢測(cè)到一個(gè)面部區(qū)域,它可以應(yīng)用附加的測(cè)試來(lái)驗(yàn)證它是否已經(jīng)實(shí)際檢測(cè)到一個(gè)面部。人臉識(shí)別04什么是人臉識(shí)別?人臉識(shí)別是一種基于人臉特征信息的生物識(shí)別技術(shù)。簡(jiǎn)而言之,人臉識(shí)別解決了“這是誰(shuí)的臉”的問(wèn)題。人臉識(shí)別04人臉檢測(cè)和人臉識(shí)別之間的關(guān)系?

人臉檢測(cè)最重要的應(yīng)用之一就是人臉識(shí)別。人臉識(shí)別技術(shù)描述了一種生物識(shí)別技術(shù),其技術(shù)遠(yuǎn)不止于在人臉出現(xiàn)時(shí)進(jìn)行識(shí)別。它實(shí)際上試圖確定它是誰(shuí)的臉。該過(guò)程使用計(jì)算機(jī)應(yīng)用程序進(jìn)行工作,該計(jì)算機(jī)應(yīng)用程序捕獲個(gè)人人臉的數(shù)字圖像(有時(shí)是從視頻幀中獲取)并將其與存儲(chǔ)的記錄數(shù)據(jù)庫(kù)中的圖像進(jìn)行比較。盡管人臉識(shí)別并非100%準(zhǔn)確,但它可以非常準(zhǔn)確地確定何時(shí)人臉很可能與數(shù)據(jù)庫(kù)中的某人匹配。

簡(jiǎn)而言之,盡管所有人臉識(shí)別系統(tǒng)都使用人臉檢測(cè),但并非所有人臉檢測(cè)系統(tǒng)都具有人臉識(shí)別組件。04知識(shí)儲(chǔ)備人臉識(shí)別1人臉多屬性分析2人臉屬性04人臉屬性分析是人臉識(shí)別的另一種應(yīng)用場(chǎng)景,依賴于人臉識(shí)別接口來(lái)確定人臉的位置信息。人臉屬性分析算法接口的調(diào)用,不但要進(jìn)行識(shí)別檢測(cè),還要把結(jié)果顯示在圖像上,比如說(shuō)把人臉框畫在圖像上,并把人臉屬性,年齡,性別寫在圖像上等等。人臉屬性04人臉屬性1.人臉矩形檢測(cè)到的每個(gè)人臉對(duì)應(yīng)于響應(yīng)中的faceRectangle字段。這是一組像素坐標(biāo),用于檢測(cè)臉部的左邊緣、頂部、寬度和高度。使用這些坐標(biāo)可以獲取人臉的位置及大小。在API響應(yīng)中,人臉按照從大到小的順序列出。2.人臉I(yè)D人臉I(yè)D是在圖像中檢測(cè)到的每個(gè)人臉的唯一標(biāo)識(shí)符字符串。可以在人臉-檢測(cè)API調(diào)用中請(qǐng)求人臉I(yè)D。人臉屬性043.人臉特征點(diǎn)人臉特征點(diǎn)是人臉上的一組易于查找的點(diǎn),例如瞳孔或鼻尖。默認(rèn)情況下,有27個(gè)預(yù)定義的特征點(diǎn)。下圖顯示了所有27個(gè)點(diǎn):以像素為單位返回的點(diǎn)坐標(biāo)。Detection_03模型目前具有最準(zhǔn)確的地標(biāo)檢測(cè)能力。此模型返回的眼睛和瞳孔地標(biāo)足夠精確,可以對(duì)面部進(jìn)行注視跟蹤。人臉屬性044.屬性屬性是可由人臉-檢測(cè)API選擇性地檢測(cè)到的一組特征。以下屬性可以檢測(cè)到:配飾。給定的人臉是否戴有配飾。此屬性會(huì)返回可能的配飾,包括頭飾、眼鏡和口罩,每個(gè)配飾的置信度分?jǐn)?shù)介于0到1之間。Age:特定人臉的估計(jì)年齡(歲)。Blur:圖像中人臉的模糊度。此屬性返回0到1的值,以及非正式分級(jí):low、medium或high。Emotion:給定人臉的情感列表及其檢測(cè)置信度。置信度分?jǐn)?shù)會(huì)進(jìn)行標(biāo)準(zhǔn)化,所有情感的分?jǐn)?shù)加起來(lái)后得到一個(gè)總的分?jǐn)?shù)。返回的情感包括快樂(lè)、悲傷、中性、憤怒、蔑視、厭惡、驚訝、恐懼。Exposure:圖像中人臉的曝光度。此屬性返回0到1的值,以及非正式的分級(jí):underExposure、goodExposure或overExposure。Facialhair:給定人臉的胡須狀態(tài)和長(zhǎng)度。Gender:給定人臉的估計(jì)性別。可能的值為male、female和genderless。人臉屬性04Glasses:給定的人臉是否戴有眼鏡。可能的值為NoGlasses、ReadingGlasses、Sunglasses和SwimmingGoggles。Hair:人臉的發(fā)型。此屬性顯示頭發(fā)是否可見、是否檢測(cè)到禿頂,以及檢測(cè)到了哪種發(fā)色。Headpose:人臉在3D空間中的擺向。Makeup:人臉是否有化妝。此值返回eyeMakeup和lipMakeup的布爾值。口罩。人臉是否佩戴口罩。此屬性會(huì)返回可能的口罩類型,以及一個(gè)布爾值,用于指示鼻子和嘴巴是否被覆蓋。Noise:在人臉圖像中檢測(cè)到的視覺(jué)噪點(diǎn)。此屬性返回0到1的值,以及非正式分級(jí):low、medium或high。Occlusion:是否存在遮擋人臉部位的物體。此屬性返回eyeOccluded、foreheadOccluded和mouthOccluded的布爾值。Smile:給定人臉的微笑表情。此值介于0(未微笑)與1(明確的微笑)之間。QualityForRecognition是與檢測(cè)中使用的圖像是否具有足夠高的質(zhì)量嘗試人臉識(shí)別有關(guān)的整體圖像質(zhì)量。人臉屬性041.廣告投放通過(guò)人臉識(shí)別技術(shù)對(duì)來(lái)往觀看廣告的人員進(jìn)行人臉檢測(cè),然后分析檢測(cè)出的行人的人臉年齡、性別。根據(jù)人臉檢測(cè)分析了解相應(yīng)人群的年齡、性別、顏值等信息,推送相應(yīng)的廣告內(nèi)容,實(shí)現(xiàn)廣告的精準(zhǔn)投放。人臉多屬性應(yīng)用場(chǎng)景人臉屬性042.門店用戶畫像在商業(yè)方面,通過(guò)人臉識(shí)別技術(shù)對(duì)對(duì)門店中的視頻、來(lái)往客戶等人臉圖像進(jìn)行檢測(cè),對(duì)門店客流的年齡、性別、顏值等屬性進(jìn)行分析,幫助商家構(gòu)建用戶畫像。商家還可以通過(guò)人臉識(shí)別檢測(cè)顧客的面部表情分析對(duì)商品的購(gòu)買情況,實(shí)現(xiàn)精準(zhǔn)營(yíng)銷。人臉多屬性應(yīng)用場(chǎng)景人臉屬性043.娛樂(lè)活動(dòng)在一些娛樂(lè)app、H5或者是小程序中,使用到人臉識(shí)別技術(shù)對(duì)用戶上次的人臉照片進(jìn)行檢測(cè),分析人物的顏值、年齡、微笑值等屬性。人臉檢測(cè)與屬性分析在娛樂(lè)方面的應(yīng)用可以使有更多的娛樂(lè)玩法,提升用戶的樂(lè)趣。在日常生活中有越來(lái)越多的場(chǎng)景通過(guò)人臉識(shí)別技術(shù)對(duì)人臉圖像進(jìn)行檢測(cè),并且進(jìn)行年齡、顏值等屬性的分析,為運(yùn)營(yíng)和營(yíng)銷更為精準(zhǔn)化。人臉多屬性應(yīng)用場(chǎng)景人臉屬性04(1)相似性不同個(gè)體之間的區(qū)別不大,所有的人臉的結(jié)構(gòu)都相似,甚至人臉器官的結(jié)構(gòu)外形都很相似。(2)易變性人臉的外形很不穩(wěn)定,人可以通過(guò)臉部的變化產(chǎn)生很多表情,而在不同觀察角度,人臉的視覺(jué)圖像也相差很大,另外,人臉識(shí)別還受光照條件(例如白天和夜晚,室內(nèi)和室外等)、人臉的很多遮蓋物(例如口罩、墨鏡、頭發(fā)、胡須等)、年齡等多方面因素的影響。(3)用戶配合度現(xiàn)有的人臉識(shí)別系統(tǒng)在用戶配合、采集條件比較理想的情況下可以取得令人滿意的結(jié)果。但是,在用戶不配合、采集條件不理想的情況下,現(xiàn)有系統(tǒng)的識(shí)別率將陡然下降。人臉多屬性應(yīng)用難點(diǎn)職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)二基于人臉屬性分析算法實(shí)現(xiàn)人臉檢測(cè)05任務(wù)實(shí)施利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析2調(diào)用人臉多屬性分析算法接口142圖片加載與人臉檢測(cè)1模型加載與配置3人臉屬性分析顯示算法處理的圖像調(diào)用人臉多屬性分析算法接口05調(diào)用人臉多屬性分析算法接口人臉多屬性分析是人臉識(shí)別的另一種應(yīng)用場(chǎng)景,所以有依賴于人臉識(shí)別接口,來(lái)確定人臉的位置信息。人臉多屬性分析算法接口的調(diào)用,不但要進(jìn)行識(shí)別檢測(cè),還要把結(jié)果顯示在圖片上。比如說(shuō)把人臉框畫在圖片上,并把人臉屬性,年齡,性別寫在圖片上等等。調(diào)用人臉多屬性分析算法接口05fromlib.faceDetectimportNLFaceDetectfromlib.faceAttrimportNlFaceMultiAttrimportcv2importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)1.模型加載與配置(1)導(dǎo)入算法接口庫(kù)NLFaceDetect#人臉識(shí)別庫(kù)NlFaceMultiAttr#人臉多屬性庫(kù)這兩種算法庫(kù)都是是底層由C寫的算法庫(kù),集成在核心開發(fā)板上,在經(jīng)過(guò)python的對(duì)接后,形成了一套python的接口庫(kù),可以直接調(diào)用。face_libNamePath='/usr/local/lib/libNL_faceEnc.so'#指定人臉識(shí)別庫(kù)文件路徑nlFaceDetect=NLFaceDetect(face_libNamePath)#實(shí)例化人臉識(shí)別算法類em_libNamePath='/usr/local/lib/libNLMultiAttrPredEnc.so'#指定人臉多屬性庫(kù)文件路徑nlFaceMulti=NlFaceMultiAttr(em_libNamePath)#實(shí)例化人臉多屬性算法類(2)實(shí)例化算法接口對(duì)象實(shí)例化的時(shí)候,會(huì)自動(dòng)執(zhí)行init()初始化函數(shù),該函數(shù)功能主要是加載算法庫(kù),指定函數(shù)參數(shù)類型和返回值類型,并初始化結(jié)構(gòu)體變量,libNamePath是固定庫(kù)文件路徑,執(zhí)行沒(méi)有報(bào)錯(cuò),表示實(shí)例化成功。調(diào)用人臉多屬性分析算法接口05configPath=b"/usr/local/lib/rk3399_AI_model"#指定模型以及配置文件路徑nlFaceDetect.NL_FD_ComInit(configPath)#加載人臉識(shí)別模型并初始化nlFaceMulti.NL_EM_ComInit(configPath)#加載人臉多屬性分析模型并初始化1.模型加載與配置(3)加載模型和配置將內(nèi)存分配到各個(gè)模塊,比如,在人臉識(shí)別里面是人臉檢測(cè),人臉對(duì)齊等等,在人臉多屬性里面,是針對(duì)人臉多屬性模塊的分配。configPath是模型和配置文件路徑,執(zhí)行沒(méi)有報(bào)錯(cuò),表示加載成功。調(diào)用人臉多屬性分析算法接口05importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)image=cv2.imread("./exp/face1.jpg")imgbox=widgets.Image()#定義一個(gè)圖像盒子,用于裝載圖像數(shù)據(jù)display(imgbox)#將盒子顯示出來(lái)imgbox.value=cv2.imencode('.jpg',image)[1].tobytes()#把圖像值轉(zhuǎn)成byte類型的值ret1=nlFaceDetect.NL_FD_InitVarIn(image)#圖像加載到人臉?biāo)惴ㄖ?.圖片加載與人臉檢測(cè)(1)加載圖片數(shù)據(jù)將采集到的圖片數(shù)據(jù),加載到兩個(gè)算法中(image為圖片數(shù)據(jù)),返回0表示加載成功。ret2=nlFaceDetect.NL_FD_Process_C()#返回值是目標(biāo)個(gè)數(shù)(2)調(diào)用人臉檢測(cè)主函數(shù)處理圖像返回人臉個(gè)數(shù),并輸出人臉框的位置信息,在輸出結(jié)構(gòu)體,可以獲取相關(guān)信息。nlFaceMulti.faceNum=nlFaceDetect.djEDVarOut.numret3=nlFaceMulti.NL_EM_InitVarIn(image)#圖像加載到人臉多屬性算法中(3)取出人臉個(gè)數(shù)值從人臉檢測(cè)輸出結(jié)構(gòu)體里面,獲取人臉個(gè)數(shù),并賦值給人臉屬性分析。調(diào)用人臉多屬性分析算法接口05fFDCoordinates=[]foriinrange(nlFaceDetect.djEDVarOut.num):outObject=nlFaceDetect.djEDVarOut.faceInfos[i].bboxfFDCoordinates.append(outObject.x1)fFDCoordinates.append(outObject.y1)fFDCoordinates.append(outObject.x2)fFDCoordinates.append(outObject.y2)cv2.rectangle(image,(int(outObject.x1),int(outObject.y1)),(int(outObject.x2),int(outObject.y2)),(0,0,255),2)image=nlFaceMulti.NL_EM_bbox(fFDCoordinates,image)print(fFDCoordinates)3.人臉屬性分析(1)將人臉坐標(biāo)信息輸入人臉多屬性模型根據(jù)人臉個(gè)數(shù),把人臉坐標(biāo)的位置信息,作為人臉多屬性的輸入。ifret3==0:ret4=nlFaceMulti.NL_EM_Process_C()(2)取出人臉個(gè)數(shù)值調(diào)用主處理函數(shù),分析人臉多屬性,包括年齡,性別,有無(wú)口罩,是否帶眼鏡等等,具體看接口信息。如果沒(méi)有人臉就不執(zhí)行主處理函數(shù),否則會(huì)報(bào)錯(cuò)。返回的是能獲取到屬性的人臉個(gè)數(shù)信息。調(diào)用人臉多屬性分析算法接口05image=nlFaceMulti.result_show(image)4.顯示算法處理的圖像(1)結(jié)果畫在圖片上調(diào)用結(jié)果函數(shù),輸出結(jié)果,并描繪在圖片上。nlFaceMulti.result_show(rgb)該函數(shù)里面有調(diào)用freetype的中文描繪模塊,目的是把中文顯示在圖片上,opencv是不支持中文顯示的。importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)imgbox=widgets.Image()#定義一個(gè)圖像盒子,用于裝載圖像數(shù)據(jù)display(imgbox)#將盒子顯示出來(lái)imgbox.value=cv2.imencode('.jpg',image)[1].tobytes()#把圖像值轉(zhuǎn)成byte類型的值nlFaceDetect.NL_FD_Exit()#釋放算法內(nèi)存和模型nlFaceMulti.NL_EM_Exit()(2)結(jié)果可視化利用jupyter的畫圖庫(kù)和顯示庫(kù)將經(jīng)過(guò)算法處理的圖像顯示,并釋放內(nèi)存和模型。05任務(wù)實(shí)施利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析2調(diào)用人臉多屬性分析算法接口142定義攝像頭采集線程1引入相關(guān)的庫(kù)3定義算法識(shí)別線程啟動(dòng)與停止線程利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析05利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析利用多線程,使圖像采集和算法識(shí)別同時(shí)運(yùn)行,從而實(shí)現(xiàn)視頻流的人臉檢測(cè),并且可以避免一些因花時(shí)間太久,導(dǎo)致的視頻卡頓。利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析05importtime#時(shí)間庫(kù)importcv2#引入opencv圖像處理庫(kù)importthreading#這是python的標(biāo)準(zhǔn)庫(kù),線程庫(kù)importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)fromlib.faceDetectimportNLFaceDetect#人臉識(shí)別算法庫(kù)接口fromlib.faceAttrimportNlFaceMultiAttr#人臉多屬性算法接口1.引入相關(guān)的庫(kù)threading線程庫(kù)多線程類似于同時(shí)執(zhí)行多個(gè)不同程序,多線程運(yùn)行有如下優(yōu)點(diǎn):使用線程可以把占據(jù)長(zhǎng)時(shí)間的程序中的任務(wù)放到后臺(tái)去處理;用戶界面可以更加吸引人,比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來(lái)顯示處理的進(jìn)度;程序的運(yùn)行速度可能加快;在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析05classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打開攝像頭

self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#設(shè)置攝像頭分辨率寬度

self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#設(shè)置攝像頭分辨率高度

defrun(self):globalcamera_img#定義一個(gè)全局變量,用于存儲(chǔ)獲取的圖片,以便于算法可以直接調(diào)用

camera_img=Nonewhileself.working:ret,image=self.cap.read()#獲取新的一幀圖片

ifret:camera_img=imagedefstop(self):self.working=Falseself.cap.release()2.定義攝像頭采集線程結(jié)合上面的opencv采集圖像的內(nèi)容,利用多線程的方式串起來(lái),形成一個(gè)可傳參,可調(diào)用的通用類。這里定義了一個(gè)全局變量camera_img,用作存儲(chǔ)獲取的圖片數(shù)據(jù),以便于其他線程可以調(diào)用。init初始化函數(shù)實(shí)例化該線程的時(shí)候,會(huì)自動(dòng)執(zhí)行初始化函數(shù),在初始化函數(shù)里面,打開攝像頭,并設(shè)置分辨率。run函數(shù)該函數(shù)是在實(shí)例化后,執(zhí)行start啟動(dòng)函數(shù)的時(shí)候,會(huì)自動(dòng)執(zhí)行。在該函數(shù)里,實(shí)現(xiàn)了循環(huán)獲取圖像的內(nèi)容。利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析053.定義算法識(shí)別線程結(jié)合調(diào)用算法接口的內(nèi)容和圖像顯示內(nèi)容,利用多線程的方式整合起來(lái),循環(huán)識(shí)別,對(duì)攝像頭采集線程中獲取的每一幀圖片進(jìn)行識(shí)別,并顯示,形成視頻流的畫面。init初始化函數(shù)實(shí)例化該線程的時(shí)候,會(huì)自動(dòng)執(zhí)行初始化函數(shù),在初始化函數(shù)里面,定義了顯示內(nèi)容,并實(shí)例化算法和加載模型。run函數(shù)該函數(shù)是在實(shí)例化后,執(zhí)行start啟動(dòng)函數(shù)的時(shí)候,會(huì)自動(dòng)執(zhí)行。在該函數(shù)是一個(gè)循環(huán),實(shí)現(xiàn)了對(duì)采集的每一幀圖片進(jìn)行算法識(shí)別,然后將結(jié)果繪畫在圖片上,并將處理后的圖片顯示出來(lái)。利用多線程方式實(shí)現(xiàn)視頻流的人臉屬性分析05camera_th=CameraThread(0,640,480)face_attr_th=FaceAttrThread()camera_th.start()face_attr_th.start()4.啟動(dòng)和停止線程(1)啟動(dòng)線程實(shí)例化兩個(gè)線程,并啟動(dòng)這兩個(gè)線程,實(shí)現(xiàn)完整的人臉屬性分析功能

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論