欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

?用OpenCV和深度學(xué)習(xí)進(jìn)行年齡識(shí)別

新機(jī)器視覺 ? 來(lái)源:新機(jī)器視覺 ? 2023-03-13 10:21 ? 次閱讀


			

									

e5f2aa1c-c141-11ed-bfe3-dac502259ad0.png

在本教程中,您將學(xué)習(xí)如何使用OpenCV,深度學(xué)習(xí)Python執(zhí)行年齡的自動(dòng)識(shí)別/預(yù)測(cè)。

學(xué)完本教程后,您將能夠以相當(dāng)高的精確度去自動(dòng)預(yù)測(cè)靜態(tài)圖像文件和實(shí)時(shí)視頻中的人物年齡。

要了解如何使用OpenCV和深度學(xué)習(xí)進(jìn)行年齡識(shí)別,請(qǐng)繼續(xù)閱讀!

用OpenCV和深度學(xué)習(xí)進(jìn)行年齡識(shí)別

在本教程的第一部分中,您將學(xué)習(xí)年齡識(shí)別,這包括從圖片或視頻中自動(dòng)預(yù)測(cè)人的年齡需要的步驟(以及為什么應(yīng)該將年齡識(shí)別當(dāng)做分類問(wèn)題而不是回歸問(wèn)題)。

下面,我們將介紹這個(gè)基于深度學(xué)習(xí)的年齡識(shí)別模型,然后學(xué)習(xí)如何使用這兩種模型:

1.靜態(tài)圖像中的年齡識(shí)別

2.實(shí)時(shí)視頻中的年齡識(shí)別

然后,我們將分析我們所做的年齡預(yù)測(cè)工作的結(jié)果。

什么是年齡識(shí)別?

e687982a-c141-11ed-bfe3-dac502259ad0.png

圖1:在本教程中,我們使用OpenCV和預(yù)先訓(xùn)練的深度學(xué)習(xí)模型來(lái)預(yù)測(cè)給定人臉的年齡。

(圖片來(lái)源:https://www.researchgate.net/publication/336955775_Age_Estimation_in_Make-up_Cosmetics_Using_Color_and_Depth_Images)。

年齡識(shí)別是僅用人臉的照片去自動(dòng)識(shí)別其年齡的過(guò)程

通常,您會(huì)看到年齡識(shí)別可分為兩個(gè)階段進(jìn)行實(shí)現(xiàn):

1.階段1:檢測(cè)輸入圖像/視頻中的人臉

2.階段2:提取人的面部(感興趣區(qū)域,ROI),并通過(guò)年齡檢測(cè)器的算法去預(yù)測(cè)人物的年齡

對(duì)于階段1,能夠?yàn)閳D片中的人臉生成邊框的人臉檢測(cè)器都是可用的,這些檢測(cè)器包括但不限于Haar cascades,HOG+線性SVM,單桿檢測(cè)器(SSD)等。

使用哪種人臉檢測(cè)器取決于您的項(xiàng)目:

·Haar cascades速度很快,并且能夠在嵌入式設(shè)備上實(shí)時(shí)運(yùn)行,存在的問(wèn)題是它們的準(zhǔn)確度較低并且極易出現(xiàn)假陽(yáng)性檢測(cè)。

·HOG+線性SVM模型比Haar cascades更精確,但速度較慢。它們對(duì)遮擋(即部分面部可見)或視角變化(即面部的不同視圖)的容錯(cuò)性也較低。

·基于深度學(xué)習(xí)的人臉檢測(cè)器功能最為強(qiáng)大,它提供了最高的準(zhǔn)確度,但比Haar cascades和HOG+線性SVM需要更多的計(jì)算資源。

在為您的應(yīng)用選擇人臉檢測(cè)器時(shí),請(qǐng)花點(diǎn)時(shí)間考慮您的項(xiàng)目需求——速度或準(zhǔn)確性,哪個(gè)對(duì)您更加重要?我還建議對(duì)每個(gè)面部檢測(cè)器進(jìn)行一些試驗(yàn),以便讓這些結(jié)果來(lái)指導(dǎo)您做決定。

一旦您的面部檢測(cè)器在圖像/視頻中生成了人臉的邊界框坐標(biāo),您就可以進(jìn)入第2階段——識(shí)別人的年齡。

確定了臉部的邊界框坐標(biāo)(x,y)后,您首先提取面部ROI,而忽略圖像(幀)的其余部分。這樣做可以使年齡檢測(cè)器僅將注意力放在人臉上,而不是圖像中其他不相關(guān)的“噪點(diǎn)”。

然后將面部ROI傳遞給模型,從而得到實(shí)際的年齡預(yù)測(cè)。

年齡檢測(cè)器的算法有很多,但是最受歡迎的是基于深度學(xué)習(xí)的年齡檢測(cè)器——在本教程中,我們將使用這種基于深度學(xué)習(xí)的年齡檢測(cè)器。

我們基于深度學(xué)習(xí)的年齡檢測(cè)器模型

e693e36e-c141-11ed-bfe3-dac502259ad0.png

圖2:用深度學(xué)習(xí)進(jìn)行年齡識(shí)別是一個(gè)活躍的研究領(lǐng)域。在本教程中,我們使用由Levi和Hassner在其2015年論文中構(gòu)建和訓(xùn)練的模型(圖像來(lái)源https://talhassner.github.io/home/projects/cnn_agegender/CVPR2015_CNN_AgeGenderEstimation.pdf)。

我們?cè)谶@里使用的深度學(xué)習(xí)年齡檢測(cè)器模型是Levi和Hassner在其2015年發(fā)表的《使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行年齡和性別分類》(https://talhassner.github.io/home/publication/2015_CVPR)中構(gòu)建和訓(xùn)練的。

在這篇論文里,作者提出了一個(gè)類似AlexNet的簡(jiǎn)單體系,該體系總共學(xué)習(xí)了8個(gè)年齡段:

1 0-2

2 4-6

3 8-12

4 15-20

5 25-32

6 38-43

7 48-53

8 60-100

您可能會(huì)注意到這些年齡段是不連續(xù)的——這是有意而為的,因?yàn)橛糜谟?xùn)練模型的Adience數(shù)據(jù)集(https://talhassner.github.io/home/projects/Adience/Adience-data.html#agegender)定義了年齡段(我們將在下一節(jié)中介紹為什么這樣做)。

在這篇文章中,我們將使用預(yù)先訓(xùn)練的年齡檢測(cè)器模型。但是如果您有興趣學(xué)習(xí)如何從頭開始訓(xùn)練它,請(qǐng)務(wù)必閱讀《用Python進(jìn)行計(jì)算機(jī)視覺深度學(xué)習(xí)》(https://www.pyimagesearch.com/deep-learning-computer-vision-python-book/),在那里我將向您展示如何訓(xùn)練。

我們?yōu)槭裁床粚⒛挲g預(yù)測(cè)看做回歸問(wèn)題?

e69dfc82-c141-11ed-bfe3-dac502259ad0.png

圖3:用深度學(xué)習(xí)進(jìn)行年齡預(yù)測(cè)可以被歸類為回歸或分類問(wèn)題。

您會(huì)在上面注意到,我們將年齡離散化為“不同的區(qū)間”,從而將年齡預(yù)測(cè)作為分類問(wèn)題——為什么不將它看做回歸問(wèn)題(我們?cè)诜績(jī)r(jià)預(yù)測(cè)教程中所使用的方法:https://www.pyimagesearch.com/2019/01/28/keras-regression-and-cnns/)?

從技術(shù)上講,沒(méi)有理由不能將年齡預(yù)測(cè)看做回歸任務(wù)。甚至有一些模型可以通過(guò)回歸來(lái)實(shí)現(xiàn)。

問(wèn)題在于年齡預(yù)測(cè)本質(zhì)上是主觀的,并且僅基于容貌。

一個(gè)五十多歲的人一生中從未吸煙,出門總是擦防曬霜,而且每天都要護(hù)理皮膚。而一個(gè)三十多歲的人一天要抽很多煙,不擦防曬霜去從事體力勞動(dòng),并且沒(méi)有適當(dāng)?shù)钠つw護(hù)理。這個(gè)五十歲的人很可能看起來(lái)比這個(gè)三十歲的人年輕。

而且不要忘記基因是衰老最重要的驅(qū)動(dòng)因素——有些人就是比其他人衰老得慢。

例如,看看下面的Matthew Perry(在電視情景喜劇Friends中扮演Chandler Bing)的圖片,并將它與Jennifer Aniston(扮演Rachel Green)的圖片進(jìn)行比較:

e6a75be2-c141-11ed-bfe3-dac502259ad0.png

圖4:許多名人和行業(yè)領(lǐng)袖努力使自己看起來(lái)更年輕。這對(duì)使用OpenCV深度學(xué)習(xí)進(jìn)行年齡檢測(cè)提出了挑戰(zhàn)。

您能猜出Matthew Perry(50歲)實(shí)際上比Jennifer Aniston(51歲)小一歲嗎?

除非您事先了解了關(guān)于這些演員的情況,否則我不會(huì)相信。

但另一方面,您能猜到這些演員在48-53歲嗎?

我愿意打賭您可能有這個(gè)能力。

雖然人類天生不擅長(zhǎng)預(yù)測(cè)年齡的準(zhǔn)確值,但我們實(shí)際上在預(yù)測(cè)年齡段方面還是不錯(cuò)的。

當(dāng)然,上面是一個(gè)示例。

Jennifer Aniston的基因近乎完美,再加上有非常優(yōu)秀的整形外科醫(yī)生,她似乎青春不老。

但這印證了我的觀點(diǎn)——人們有意掩飾自己的年齡。

而且,如果人類準(zhǔn)確地預(yù)測(cè)一個(gè)人的年齡很困難的話,那么機(jī)器肯定也會(huì)同樣困難。

一旦你將年齡預(yù)測(cè)看做回歸問(wèn)題,那么對(duì)于一個(gè)模型,要準(zhǔn)確預(yù)測(cè)人的圖像中的年齡值是極困難的。

但是,如果您將其視為分類問(wèn)題,為模型定義了年齡段,那么我們的年齡預(yù)測(cè)模型將更容易訓(xùn)練,通常會(huì)比基于回歸的預(yù)測(cè)提供更高的準(zhǔn)確性。

簡(jiǎn)而言之:將年齡預(yù)測(cè)看做分類問(wèn)題可以極大地“緩解”問(wèn)題,使其更容易解決——通常我們不需要一個(gè)人的確切年齡;粗略的估計(jì)就足夠了。

項(xiàng)目結(jié)構(gòu)

請(qǐng)確保從本文的“下載”部分中獲取代碼,模型和圖片。提取文件后,您的項(xiàng)目將如下所示:

e7111208-c141-11ed-bfe3-dac502259ad0.png

前兩個(gè)目錄由年齡預(yù)測(cè)器和面部檢測(cè)器組成。這兩個(gè)深度學(xué)習(xí)模型都基于Caffe。

我提供了三張用于年齡預(yù)測(cè)的測(cè)試圖片;您也可以添加自己的圖片。

在本教程的其余部分,我們將討論這兩個(gè)Python腳本:

·detect_age.py:圖片年齡預(yù)測(cè)

·detect_age_video.py:視頻年齡預(yù)測(cè)

這些腳本都會(huì)檢測(cè)圖片/幀中的人臉,然后使用OpenCV對(duì)它們進(jìn)行年齡預(yù)測(cè)。

運(yùn)行我們的OpenCV圖像年齡檢測(cè)器

讓我們開始在靜態(tài)圖像中使用OpenCV進(jìn)行年齡檢測(cè)。

在您的目錄中打開detect_age.py文件,讓我們開始工作:

e724ec92-c141-11ed-bfe3-dac502259ad0.png

為了啟動(dòng)我們的年齡檢測(cè)器腳本,我們先導(dǎo)入NumPy和OpenCV。我建議查看我的pip install opencv教程(https://www.pyimagesearch.com/2018/09/19/pip-install-opencv/)來(lái)配置您的系統(tǒng)。

此外,我們需要導(dǎo)入Python內(nèi)置的os模塊,它可以添加模型所需的路徑。

最后,我們導(dǎo)入argparse來(lái)解析命令行參數(shù)(https://www.pyimagesearch.com/2018/03/12/python-argparse-command-line-arguments/)。

我們的腳本需要四個(gè)命令行參數(shù):

·--圖片:提供為年齡檢測(cè)輸入圖像的路徑

·--人臉:為預(yù)先訓(xùn)練的面部檢測(cè)器模型提供路徑

·--年齡:預(yù)先訓(xùn)練的年齡探測(cè)器模型

·--置信度:最小概率閾值,以便篩除低置信檢測(cè)

如上所述,我們的年齡檢測(cè)器是一種分類器,可以根據(jù)預(yù)定義的年齡分段,通過(guò)人的面部ROI預(yù)測(cè)這個(gè)人的年齡——我們不會(huì)將其視為回歸問(wèn)題。現(xiàn)在讓我們定義這些年齡段的bucket:

e73f90d8-c141-11ed-bfe3-dac502259ad0.png

我們的年齡是在預(yù)先訓(xùn)練好的年齡檢測(cè)器的bucket(即類別標(biāo)簽)中定義的。我們將使用此列表和相關(guān)的索引來(lái)獲取年齡段,從而在輸出的圖像上進(jìn)行注釋。

完成了導(dǎo)入,命令行參數(shù)和年齡段的設(shè)置,我們現(xiàn)在就可以加載兩個(gè)預(yù)先訓(xùn)練的模型:

e7583688-c141-11ed-bfe3-dac502259ad0.png

在這里,我們加載兩個(gè)模型:

·我們的人臉檢測(cè)器可以找到并定位圖片中的人臉(第25-28行)

·年齡分類器確定特定面孔所屬的年齡范圍(第32-34行)

這些模型均使用Caffe框架進(jìn)行了訓(xùn)練。我在PyImageSearch Gurus課程(https://www.pyimagesearch.com/pyimagesearch-gurus/)中介紹了如何訓(xùn)練Caffe分類器。

現(xiàn)在我們已經(jīng)完成了所有初始化,讓我們從磁盤加載圖像并檢測(cè)面部ROI:

e763f23e-c141-11ed-bfe3-dac502259ad0.png

37-40行加載并預(yù)處理了我們輸入的圖像。我們使用OpenCV的blobFromImage方法——請(qǐng)?jiān)谖业慕坛蹋╤ttps://www.pyimagesearch.com/2017/11/06/deep-learning-opencvs-blobfromimage-works/)中閱讀有關(guān)blobFromImage的更多信息。

為了檢測(cè)圖片中的人臉,我們通過(guò)CNN傳送blob,得到了detections的列表?,F(xiàn)在讓我們循環(huán)面部ROI的檢測(cè):

e76ddd6c-c141-11ed-bfe3-dac502259ad0.png

當(dāng)我們循環(huán)detections時(shí),我們清除了低置信度的面部(第51-55行)。

對(duì)于滿足了最低置信度標(biāo)準(zhǔn)的面部,我們提取它們的ROI坐標(biāo)(第58-63行)?,F(xiàn)在,我們?cè)趦H包含單個(gè)面部的圖像中有了小小收獲。我們?cè)诘?4-66行根據(jù)此ROI創(chuàng)建一個(gè)blob(即faceBlob)。

現(xiàn)在,我們將進(jìn)行年齡識(shí)別:

e79e36f6-c141-11ed-bfe3-dac502259ad0.png

我們使用face blob進(jìn)行年齡預(yù)測(cè)(第70-74行),從而得出年齡段和年齡的置信度。我們使用這些數(shù)據(jù)點(diǎn)以及面部ROI的坐標(biāo)來(lái)注釋最初輸入的圖片(第77-86行)并顯示結(jié)果(第89和90行)。

在下一部分中,我們將分析結(jié)果。

OpenCV的年齡識(shí)別結(jié)果

讓我們運(yùn)行OpenCV年齡檢測(cè)器。

首先,從本教程的“下載”部分下載源代碼,預(yù)先訓(xùn)練的年齡檢測(cè)器模型及示例圖像。

從那里打開一個(gè)終端,然后執(zhí)行以下命令:

e7bc4290-c141-11ed-bfe3-dac502259ad0.png

e7cc81a0-c141-11ed-bfe3-dac502259ad0.png

圖5:在我30歲時(shí)的照片中,該OpenCV年齡檢測(cè)器正確識(shí)別了我的年齡。

在這里,您可以看到我們的OpenCV年齡檢測(cè)器以57.51%的置信度預(yù)測(cè)了我的年齡為25-32歲——實(shí)際上,該年齡檢測(cè)器是正確的(我拍攝這張照片時(shí)是30歲)。

讓我們?cè)倥e一個(gè)例子,這是著名演員Neil Patrick Harris小時(shí)候的照片:

e8354942-c141-11ed-bfe3-dac502259ad0.png

e85708b6-c141-11ed-bfe3-dac502259ad0.png

圖6:使用OpenCV進(jìn)行年齡預(yù)測(cè)時(shí),可以很確定地認(rèn)為拍攝這張照片時(shí)的Neil Patrick Harris是8-12歲。

我們的年齡預(yù)測(cè)值又是正確的——拍攝這張照片時(shí),Nat Patrick Harris看起來(lái)的確在8-12歲年齡段中的某個(gè)年齡。

讓我們嘗試另一張圖片;這張圖是Samuel L. Jackson,他是我最喜歡的演員之一:

e8f22e72-c141-11ed-bfe3-dac502259ad0.png

e908798e-c141-11ed-bfe3-dac502259ad0.png

圖7:使用OpenCV通過(guò)深度學(xué)習(xí)進(jìn)行年齡預(yù)測(cè)并不總是準(zhǔn)確的,正如Samuel L. Jackson的照片所證明的那樣。年齡預(yù)測(cè)只是一個(gè)軟件,對(duì)人類來(lái)說(shuō)是主觀的。

這里我們的OpenCV年齡檢測(cè)器出錯(cuò)了——Samuel L. Jackson大約71歲,這使我們的年齡預(yù)測(cè)大約有了18歲的偏差。

也就是說(shuō),僅僅看照片——Jackson先生看上去像71歲嗎?

我的猜測(cè)應(yīng)該是50到60歲左右。至少對(duì)我來(lái)說(shuō),他不像70歲多一點(diǎn)的男人。

但這恰恰印證了我在前文提出的觀點(diǎn):

用視覺進(jìn)行年齡預(yù)測(cè)的過(guò)程很困難,當(dāng)計(jì)算機(jī)或人試圖猜測(cè)某人的年齡時(shí),我認(rèn)為這是主觀的。

為了評(píng)估年齡檢測(cè)器,您不能依賴人的實(shí)際年齡去評(píng)價(jià)。相反,您需要衡量預(yù)測(cè)年齡和感知年齡之間的準(zhǔn)確度。

為實(shí)時(shí)視頻運(yùn)行我們的OpenCV年齡檢測(cè)器

現(xiàn)在我們可以在靜態(tài)圖像中實(shí)現(xiàn)年齡檢測(cè),但實(shí)時(shí)視頻可以嗎?

我們可以這樣做嗎?

您應(yīng)該猜我們可以。我們的視頻腳本與圖像腳本非常相似。不同之處在于,我們需要設(shè)置視頻流并在每個(gè)幀上循環(huán)進(jìn)行年齡檢測(cè)。本文將重點(diǎn)介紹視頻功能,因此請(qǐng)根據(jù)需要參考上面的流程。

要了解如何在視頻中進(jìn)行年齡識(shí)別,那就來(lái)看看detect_age_video.py。

e9515320-c141-11ed-bfe3-dac502259ad0.png

我們需要導(dǎo)入三個(gè)新的模塊:(1)VideoStream (2)imutils (3)time。這些導(dǎo)入允許我們對(duì)視頻進(jìn)行設(shè)置和使用webcam功能。

我決定定義一個(gè)快捷函數(shù)來(lái)獲取幀,定位面部并預(yù)測(cè)年齡。函數(shù)通過(guò)進(jìn)行檢測(cè)和邏輯預(yù)測(cè),使我們的幀處理循環(huán)不會(huì)那么龐大(您也可以將此函數(shù)放到單獨(dú)的文件中)?,F(xiàn)在讓我們進(jìn)入這個(gè)程序:

e9644c5a-c141-11ed-bfe3-dac502259ad0.png

我們的 detect_and_predict_age 輔助函數(shù)接受以下參數(shù):

·frame:視頻通過(guò)webcam獲取的單個(gè)幀

·faceNet:初始化的深度學(xué)習(xí)人臉檢測(cè)器

·ageNet:初始化的深度學(xué)習(xí)年齡分類器

·minConf:篩去較差人臉識(shí)別的置信度閾值

這里的參數(shù)和我們的圖片年齡檢測(cè)器腳本的命令行參數(shù)是相似的。

我們的AGE_BUCKETS再次被定義(第12和13行)。

然后我們定義一個(gè)空列表來(lái)保存面部定位和年齡檢測(cè)的結(jié)果。

第20-26行進(jìn)行面部檢測(cè)。

接下來(lái),我們將處理每個(gè)detections:

e96f718e-c141-11ed-bfe3-dac502259ad0.png

請(qǐng)看29-43行——它們循環(huán)檢測(cè),以確保較高的置信度,然后提取出面部ROI。

第46-47行是新的——由于以下兩個(gè)原因,我們要確保視頻中的面部ROI足夠大:

·首先,我們要篩掉幀中檢測(cè)到的假陽(yáng)性面部。

·其次,年齡分類結(jié)果對(duì)于遠(yuǎn)離相機(jī)的臉(即臉部很?。﹣?lái)說(shuō)并不準(zhǔn)確。

為了完成我們的輔助功能,我們將進(jìn)行年齡識(shí)別并返回結(jié)果:

e979e70e-c141-11ed-bfe3-dac502259ad0.png

在這里,我們預(yù)測(cè)人臉的年齡并提取出年齡段和年齡置信度(第56-60行)。

第65-68行在一個(gè)字典中存儲(chǔ)面部定位和年齡預(yù)測(cè)。循環(huán)檢測(cè)的最后一步是將該字典放到結(jié)果列表中(第69行)。

如果所有檢測(cè)都已經(jīng)完成,并且結(jié)果都得到了,那我們將結(jié)果返回給調(diào)用者。

定義好輔助函數(shù)后,現(xiàn)在我們可以繼續(xù)處理視頻了。但我們需要先定義命令行參數(shù):

e99d839e-c141-11ed-bfe3-dac502259ad0.png

我們的腳本需要三個(gè)命令行參數(shù):

·--face:預(yù)先訓(xùn)練的面部檢測(cè)器模型的目錄的路徑

·--age:預(yù)先訓(xùn)練的年齡檢測(cè)器模型的目錄

·--confidence:最小概率閾值,以便篩除低置信檢測(cè)

在這里,我們將加載模型并初始化視頻:

e9be76b2-c141-11ed-bfe3-dac502259ad0.png

第86-89行加載并初始化了我們的面部檢測(cè)器,而第93-95行加載了年齡檢測(cè)器。

然后,我們使用VideoStream類來(lái)初始化webcam(第99和100行)。

webcam準(zhǔn)備好后,我們將開始處理幀:

e9e2b72a-c141-11ed-bfe3-dac502259ad0.png

在上面的循環(huán)中,我們:

·獲取幀,并將其調(diào)整為已知寬度(第106和107行)

·通過(guò)我們的detect_and_predict_age便捷函數(shù)傳遞幀,以便(1)檢測(cè)面部(2)確定年齡(第111和112行)

·在幀上注釋結(jié)果(第115-124行)

·顯示和捕獲鍵盤輸入(第127和128行)

·如果鍵入q,那么退出并清空(第131-136行)

在下一節(jié)中,我們將啟動(dòng)年齡檢測(cè)器,看看它是否有效!

使用OpenCV進(jìn)行實(shí)時(shí)年齡檢測(cè)的結(jié)果

現(xiàn)在,讓我們將OpenCV年齡檢測(cè)器應(yīng)用于實(shí)時(shí)視頻。

確保您已從本教程的“下載”部分下載源代碼和預(yù)先訓(xùn)練的年齡檢測(cè)器。

從那里打開一個(gè)終端,然后輸入以下命令:

e9fb3ade-c141-11ed-bfe3-dac502259ad0.png

ea0251a2-c141-11ed-bfe3-dac502259ad0.png

在這里,您可以看到OpenCV年齡檢測(cè)器將我的年齡范圍準(zhǔn)確地預(yù)測(cè)為25-32歲(在寫本文時(shí),我還是31歲)。

如何改善年齡預(yù)測(cè)結(jié)果?

由Levi和Hassner訓(xùn)練的年齡預(yù)測(cè)模型的問(wèn)題之一是,它嚴(yán)重偏向25-32歲年齡組,如他們?cè)及姹荆╤ttps://talhassner.github.io/home/projects/cnn_agegender/CVPR2015_CNN_AgeGenderEstimation.pdf)中的這個(gè)混淆矩陣表所示:

ea09b456-c141-11ed-bfe3-dac502259ad0.png

圖8:Levi和Hassner的深度學(xué)習(xí)年齡檢測(cè)模型嚴(yán)重偏向25-32歲年齡段。為了在您的模型中解決此問(wèn)題,請(qǐng)考慮收集更多的訓(xùn)練數(shù)據(jù),使用類權(quán)重、數(shù)據(jù)擴(kuò)充和正則化技術(shù)。(圖片來(lái)源https://talhassner.github.io/home/projects/cnn_agegender/CVPR2015_CNN_AgeGenderEstimation.pdf)

不幸的是,這意味著我們的模型預(yù)測(cè)的25-32歲結(jié)果可能實(shí)際上屬于其他的年齡段——我在分析本教程的結(jié)果以及我自己的年齡預(yù)測(cè)中也遇到了幾次這樣的情況。

您可以通過(guò)以下方法消除這種偏差:

1 收集其他年齡段的額外訓(xùn)練數(shù)據(jù)以幫助平衡數(shù)據(jù)集

2 使用類權(quán)重來(lái)處理類失衡的問(wèn)題

3 注意數(shù)據(jù)擴(kuò)充

4 訓(xùn)練模型時(shí)使用正則化

其次,年齡預(yù)測(cè)結(jié)果可以通過(guò)使用人臉對(duì)齊(https://www.pyimagesearch.com/2017/05/22/face-alignment-with-opencv-and-python/)來(lái)改善。

人臉對(duì)齊功能會(huì)識(shí)別人臉的幾何結(jié)構(gòu),然后嘗試使用平移,縮放和旋轉(zhuǎn)獲得人臉的規(guī)范化。

在許多情況下(但并非總是如此),人臉對(duì)齊可以改善面部應(yīng)用的效果,包括面部識(shí)別,年齡預(yù)測(cè)等。

為簡(jiǎn)單起見,我們?cè)诒窘坛讨袥](méi)有使用人臉對(duì)齊功能,但是您可以按照這個(gè)教程(https://www.pyimagesearch.com/2017/05/22/face-alignment-with-opencv-and-python/)學(xué)習(xí)有關(guān)人臉對(duì)齊的更多信息,然后將其應(yīng)用于自己的年齡預(yù)測(cè)程序中。

性別預(yù)測(cè)呢?

我特意選擇不在本教程中介紹性別預(yù)測(cè)。

使用計(jì)算機(jī)視覺和深度學(xué)習(xí)來(lái)識(shí)別一個(gè)人的性別似乎是一個(gè)有趣的分類問(wèn)題,但實(shí)際上這是一個(gè)道德問(wèn)題。

某人在視覺上看上去怎樣,穿著什么或如何表現(xiàn),這些都并不意味著他們可能是某種(或其他)性別。

試圖將性別劃分為兩類的軟件只會(huì)把我們束縛在對(duì)于性別的過(guò)時(shí)觀念里。因此,我鼓勵(lì)您盡可能不要在自己的程序中使用性別識(shí)別。

如果必須進(jìn)行性別識(shí)別,請(qǐng)確保對(duì)自己負(fù)責(zé),并確保您不去創(chuàng)建使他人遵循性別偏見的應(yīng)用程序(例如根據(jù)感知到的性別去定義用戶體驗(yàn))。

性別識(shí)別幾乎沒(méi)有價(jià)值,而且它引起的問(wèn)題比它解決的問(wèn)題還要多。請(qǐng)盡可能避免它。

總結(jié)

在本教程中,您學(xué)習(xí)了如何使用OpenCV通過(guò)深度學(xué)習(xí)進(jìn)行年齡識(shí)別。

為此,我們利用了Levi和Hassner在2015年出版的《使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行年齡和性別分類》中的預(yù)訓(xùn)練模型。該模型使我們能夠以相當(dāng)高的準(zhǔn)確度去預(yù)測(cè)八個(gè)不同的年齡段;但是,我們必須認(rèn)識(shí)到年齡預(yù)測(cè)是一個(gè)很有挑戰(zhàn)性的問(wèn)題。

有很多因素可以決定一個(gè)人的視覺年齡,包括他們的生活方式,工作,吸煙習(xí)慣,最重要的是基因。其次,請(qǐng)記住,人們?cè)噲D掩飾自己的年齡——如果人類準(zhǔn)確地預(yù)測(cè)某人的年齡有困難的話,那么機(jī)器學(xué)習(xí)模型同樣會(huì)有困難。

因此,您必須根據(jù)感知年齡(而非實(shí)際年齡)去評(píng)估所有的年齡預(yù)測(cè)結(jié)果。在您自己的計(jì)算機(jī)視覺項(xiàng)目中進(jìn)行年齡識(shí)別時(shí),請(qǐng)記住這一點(diǎn)。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41596
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5518

    瀏覽量

    121612

原文標(biāo)題:?用OpenCV和深度學(xué)習(xí)進(jìn)行年齡識(shí)別

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    在這篇文章中,我們將學(xué)習(xí)如何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè),它比目前流行的canny邊緣檢測(cè)器更精確。
    的頭像 發(fā)表于 05-19 09:52 ?2162次閱讀
    如何在<b class='flag-5'>OpenCV</b>中使用基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的邊緣檢測(cè)?

    【NanoPi2申請(qǐng)】基于opencv的人臉識(shí)別門禁系統(tǒng)

    opencv API,研究圖像處理算法。5、學(xué)習(xí)機(jī)器學(xué)習(xí),利用模板匹配方法進(jìn)行人臉識(shí)別。6、在linux上配置
    發(fā)表于 12-18 14:34

    labview測(cè)試tensorflow深度學(xué)習(xí)SSD模型識(shí)別物體

    文件調(diào)用labview深度學(xué)習(xí)推理函數(shù)完成識(shí)別以上是識(shí)別動(dòng)物和人等物體的labview識(shí)別效果。龍哥手把手教您LabVIEW視覺設(shè)計(jì)課程火熱
    發(fā)表于 08-16 17:21

    【飛凌RK3568開發(fā)板試用體驗(yàn)】使用OpenCV進(jìn)行人臉識(shí)別

    DNN模塊OK3568開發(fā)板自帶OpenCV 3.4.12,這個(gè)版本雖然有點(diǎn)低,但是已經(jīng)支持DNN進(jìn)行基于深度學(xué)習(xí)的人臉檢測(cè)了。廠商提供的OpenC
    發(fā)表于 01-11 22:06

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    什么是深度學(xué)習(xí)為了解釋深度學(xué)習(xí),有必要了解神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一種模擬人腦的神經(jīng)元和神經(jīng)網(wǎng)絡(luò)的計(jì)算模型。作為具體示例,讓我們考慮一個(gè)輸入圖像并識(shí)別
    發(fā)表于 02-17 16:56

    智能車識(shí)別圖anopenmv還是opencv

    智能車創(chuàng)意組識(shí)別圖anopenmv 還是 opencv 比較好
    發(fā)表于 10-24 06:24

    OpenCV進(jìn)行基本繪圖_《OpenCV3編程入門》書本配套源

    OpenCV3編程入門》書本配套源代碼:OpenCV進(jìn)行基本繪圖
    發(fā)表于 05-11 16:46 ?36次下載

    如何使用OpenCV、Python和深度學(xué)習(xí)在圖像和視頻中實(shí)現(xiàn)面部識(shí)別?

    Face ID 的興起帶動(dòng)了一波面部識(shí)別技術(shù)熱潮。本文將介紹如何使用 OpenCV、Python 和深度學(xué)習(xí)在圖像和視頻中實(shí)現(xiàn)面部識(shí)別,以基
    的頭像 發(fā)表于 07-17 16:20 ?8107次閱讀

    Opencv人臉識(shí)別的制作

    OpenCV(開源計(jì)算機(jī)視覺庫(kù))是一個(gè)非常有用的庫(kù)-它提供了許多有用的功能,例如文本識(shí)別,面部識(shí)別,對(duì)象檢測(cè),深度圖的創(chuàng)建和機(jī)器學(xué)習(xí)。
    的頭像 發(fā)表于 10-13 17:04 ?3512次閱讀
    <b class='flag-5'>Opencv</b>人臉<b class='flag-5'>識(shí)別</b>的制作

    OpenCV使用深度學(xué)習(xí)做邊緣檢測(cè)的流程

    導(dǎo)讀 分析了Canny的優(yōu)劣,并給出了OpenCV使用深度學(xué)習(xí)做邊緣檢測(cè)的流程。 在這篇文章中,我們將學(xué)習(xí)如何在OpenCV中使用基于
    的頭像 發(fā)表于 05-08 11:05 ?2330次閱讀
    <b class='flag-5'>OpenCV</b>使用<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>做邊緣檢測(cè)的流程

    使用DFRobot LattePanda進(jìn)行OpenCV人臉識(shí)別

    電子發(fā)燒友網(wǎng)站提供《使用DFRobot LattePanda進(jìn)行OpenCV人臉識(shí)別.zip》資料免費(fèi)下載
    發(fā)表于 10-28 10:14 ?1次下載
    使用DFRobot LattePanda<b class='flag-5'>進(jìn)行</b><b class='flag-5'>OpenCV</b>人臉<b class='flag-5'>識(shí)別</b>

    如何使用OpenCV通過(guò)深度學(xué)習(xí)進(jìn)行年齡識(shí)別

    對(duì)于滿足了最低置信度標(biāo)準(zhǔn)的面部,我們提取它們的ROI坐標(biāo)(第58-63行)。現(xiàn)在,我們?cè)趦H包含單個(gè)面部的圖像中有了小小收獲。我們?cè)诘?4-66行根據(jù)此ROI創(chuàng)建一個(gè)blob(即faceBlob)。
    發(fā)表于 03-17 13:59 ?1321次閱讀
    如何使用<b class='flag-5'>OpenCV</b>通過(guò)<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>進(jìn)行年齡</b><b class='flag-5'>識(shí)別</b>

    使用Xbox Kinect和OpenCV進(jìn)行面部識(shí)別

    電子發(fā)燒友網(wǎng)站提供《使用Xbox Kinect和OpenCV進(jìn)行面部識(shí)別.zip》資料免費(fèi)下載
    發(fā)表于 07-04 11:25 ?0次下載
    使用Xbox Kinect和<b class='flag-5'>OpenCV</b><b class='flag-5'>進(jìn)行</b>面部<b class='flag-5'>識(shí)別</b>

    OpenCV庫(kù)在圖像處理和深度學(xué)習(xí)中的應(yīng)用

    本文深入淺出地探討了OpenCV庫(kù)在圖像處理和深度學(xué)習(xí)中的應(yīng)用。從基本概念和操作,到復(fù)雜的圖像變換和深度學(xué)習(xí)模型的使用,文章以詳盡的代碼和解
    的頭像 發(fā)表于 08-18 11:33 ?964次閱讀

    深度學(xué)習(xí)在語(yǔ)音識(shí)別中的應(yīng)用及挑戰(zhàn)

    一、引言 隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,其在語(yǔ)音識(shí)別領(lǐng)域的應(yīng)用也日益廣泛。深度學(xué)習(xí)技術(shù)可以有效地提高語(yǔ)音識(shí)
    的頭像 發(fā)表于 10-10 18:14 ?970次閱讀