最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于卷積神經(jīng)網(wǎng)絡(luò)(tensorflow)的人臉識(shí)別項(xiàng)目【深度學(xué)習(xí)】

2022-08-22 17:11 作者:AI精品課程搬運(yùn)工  | 我要投稿

前言

經(jīng)過(guò)前段時(shí)間研究,從LeNet-5手寫數(shù)字入門到最近研究的一篇天氣識(shí)別。我想干一票大的,因?yàn)槲冶旧韽氖碌木褪荂++/Qt開發(fā),對(duì)Qt還是比較熟悉,所以我想實(shí)現(xiàn)一個(gè)基于Qt的界面化的一個(gè)人臉識(shí)別。


對(duì)卷積神經(jīng)網(wǎng)絡(luò)的概念比較陌生的可以看一看這篇文章:卷積實(shí)際上是干了什么

想了解神經(jīng)網(wǎng)絡(luò)的訓(xùn)練流程、或者環(huán)境搭建的可以看這篇文章:環(huán)境搭建與訓(xùn)練流程


如果想學(xué)習(xí)本項(xiàng)目請(qǐng)先去看第一篇:基于卷積神經(jīng)網(wǎng)絡(luò)(tensorflow)的人臉識(shí)別項(xiàng)目(一)


基本思路

具體步驟如下:


首先需要收集數(shù)據(jù),我的想法是通過(guò)OpenCV調(diào)用攝像頭進(jìn)行收集人臉照片。

然后進(jìn)行預(yù)處理,主要是對(duì)數(shù)據(jù)集分類,訓(xùn)練集、驗(yàn)證集、測(cè)試集。

開始訓(xùn)練模型,提前創(chuàng)建好標(biāo)簽鍵值對(duì)。

測(cè)試人臉識(shí)別效果,通過(guò)OpenCV捕獲人臉照片然后對(duì)圖片進(jìn)行預(yù)處理最后傳入模型中,然后將識(shí)別的結(jié)果通過(guò)文字的形式打印在屏幕上,以此循環(huán),直到輸入q退出。

本篇主要是對(duì)上述步驟中的第二步進(jìn)行實(shí)現(xiàn)。


關(guān)于環(huán)境

由于部分環(huán)境不兼容,這里對(duì)環(huán)境重寫進(jìn)行調(diào)整。 所以這里我?guī)Т蠹掖罱ㄒ淮苇h(huán)境。

我下面列出了所有用到的包,首先需要將這些內(nèi)容全部復(fù)制到一個(gè)文件中,你可以保存為*.yaml文件。

通過(guò)anaconda導(dǎo)入配置

通過(guò)anaconda導(dǎo)入配置,免去環(huán)境的痛苦。
首先打開Anaconda軟件,點(diǎn)擊左側(cè)的Envirconments。然后點(diǎn)擊下方的import導(dǎo)入。

這里我們選擇本地導(dǎo)入


然后選擇對(duì)應(yīng)的*.yaml文件,然后點(diǎn)擊imort。接下來(lái)你就可以去喝杯茶或者干點(diǎn)別的,等它慢慢安裝即可。


數(shù)據(jù)集

訓(xùn)練集、驗(yàn)證機(jī)與測(cè)試集

一般手中拿到的都是歷史數(shù)據(jù),通過(guò)歷史數(shù)據(jù)的學(xué)習(xí)去預(yù)測(cè)未知新數(shù)據(jù)。如果用全量歷史數(shù)據(jù)進(jìn)行學(xué)習(xí),并進(jìn)行驗(yàn)證,得到的驗(yàn)證結(jié)果是學(xué)習(xí)數(shù)據(jù)的準(zhǔn)確率。

模型的調(diào)優(yōu)方向,讓模型具有更強(qiáng)的對(duì)未知數(shù)據(jù)的預(yù)測(cè)能力,也叫做泛化能力。

通過(guò)從歷史數(shù)據(jù)中抽出一部分作為驗(yàn)證集(測(cè)試集),對(duì)當(dāng)前學(xué)習(xí)到的模型進(jìn)行泛化能力的驗(yàn)證。如果測(cè)試集的準(zhǔn)確率和訓(xùn)練集的準(zhǔn)確率相當(dāng),那么說(shuō)明模型的泛化能力是足夠的。


關(guān)于三類數(shù)據(jù)集之間的關(guān)系,常常用一個(gè)不恰當(dāng)?shù)谋扔鱽?lái)說(shuō)明:

訓(xùn)練集:相當(dāng)于課后的練習(xí)題,用于日常的知識(shí)鞏固。

驗(yàn)證集:相當(dāng)于周考,用來(lái)糾正和強(qiáng)化學(xué)到的知識(shí)。

測(cè)試集:相當(dāng)于期末考試,用來(lái)最終評(píng)估學(xué)習(xí)效果。


劃分規(guī)則

如果給定的樣本數(shù)據(jù)充足,我們通常使用均勻隨機(jī)抽樣的方式將數(shù)據(jù)集劃分成3個(gè)部分——訓(xùn)練集、驗(yàn)證集和測(cè)試集,這三個(gè)集合一般沒有交集。但是通常情況下只會(huì)給定訓(xùn)練集和測(cè)試集,而不會(huì)給驗(yàn)證集。這時(shí)候驗(yàn)證集就會(huì)從訓(xùn)練集中均勻隨機(jī)抽樣一部分樣本作為驗(yàn)證集。


預(yù)處理

從指定路徑讀取訓(xùn)練數(shù)據(jù)

這里對(duì)傳入的路徑進(jìn)行判斷,如果是文件夾就繼續(xù)遞歸,否則就進(jìn)行讀取。

設(shè)置標(biāo)簽

給文件夾后綴,加標(biāo)簽,使其向量化,如果添加新的人,就可以對(duì)應(yīng)文件夾和下標(biāo)


按照指定圖像大小調(diào)整尺寸

對(duì)從數(shù)據(jù)集中取出的照片進(jìn)行尺寸修剪,并且增加邊界。

數(shù)據(jù)歸一化

不同的采集環(huán)境會(huì)對(duì)識(shí)別產(chǎn)生較大影響,比如:它會(huì)隨著光線的變化發(fā)生變化、對(duì)聲音的改變以及像素以及頭部姿態(tài)等因素。目前常規(guī)的表情識(shí)別模型都是在標(biāo)準(zhǔn)化下采集的人臉表情數(shù)據(jù),如果光線變的更亮或處在昏暗環(huán)境下、都會(huì)使得正確率發(fā)生變化,而這種變化是對(duì)我們不利的。在這其中光照強(qiáng)度和頭部姿態(tài)的影響最為巨大,針對(duì)這種情況,我們只能從不變的光強(qiáng)和從正面采集人臉以求得正確率的提升。

基于各向同性擴(kuò)散的歸一化,它能使圖像中的噪聲減少,但其中非常重要的特征因素不會(huì)受其影響。(例如邊緣或線條)


最值歸一化(normalization)

把所有數(shù)據(jù)映射到0~1之間;只適用于有明顯邊間的情況,比如像素點(diǎn)中的像素值(0-255)。

公式如下:

注:x為數(shù)據(jù)集中每一種特征的值;將數(shù)據(jù)集中的每一種特征都做映射;


均值方差歸一化(standardization)

它的另一個(gè)叫法是標(biāo)準(zhǔn)化,不管你中間過(guò)程如何,但最終它都會(huì)把數(shù)據(jù)的均值和方差分別控制為0和1。如果我們應(yīng)用的數(shù)據(jù)沒有邊界或邊界不容易區(qū)分,或數(shù)據(jù)與數(shù)據(jù)間的差別非常大時(shí),此方法就非常合適。比如人的工資有人可能好幾百萬(wàn)但是有人可能只有幾千。

實(shí)現(xiàn)

在本文中將采用最值歸一化。

加載數(shù)據(jù)集并按照交叉驗(yàn)證的原則劃分?jǐn)?shù)據(jù)集

這里將數(shù)據(jù)集加載到本地內(nèi)存中,然后將數(shù)據(jù)集進(jìn)行劃分,訓(xùn)練集與驗(yàn)證集的比例為4:1。測(cè)試集將會(huì)在所有數(shù)據(jù)中隨機(jī)取出一半。然后根據(jù)keras庫(kù)要求的維度順序重組訓(xùn)練數(shù)據(jù)集。還包含了數(shù)據(jù)歸一化操作。


注意:K.image_dim_ordering() =\= 'th': 如果報(bào)錯(cuò)的話請(qǐng)?zhí)鎿Q為K.image_data_format() == 'channels_first' “channels_last”對(duì)應(yīng)原本的“tf”,“channels_first”對(duì)應(yīng)原本的“th”。

全部代碼

load_ data.py文件

keras_train.py文件

測(cè)試結(jié)果

將數(shù)據(jù)進(jìn)行打印。

輸出拆分的數(shù)據(jù)集量。

報(bào)錯(cuò)以及解決方案

過(guò)程及其曲折,我只能記得部分錯(cuò)誤了。


AttributeError: module ‘keras.backend’ has no attribute ‘image_dim_ordering’

使用K.image_dim_ordering() =\= 'th'語(yǔ)句 如果報(bào)錯(cuò)的話請(qǐng)?zhí)鎿Q為K.image_data_format() == 'channels_first' “channels_last”對(duì)應(yīng)原本的“tf”,“channels_first”對(duì)應(yīng)原本的“th”。

Error:TypeError: Invalid shape (1, 28, 28) for image data

調(diào)用:plt.imshow(img, cmap=“gray”) 時(shí)出錯(cuò):TypeError: Invalid shape (1, 28, 28) for image data

這是因?yàn)檫@個(gè)image是三維的,我們可以改為:plt.imshow(img.squeeze(), cmap=“gray”)

squeeze()函數(shù)可以把三維數(shù)組變?yōu)槎S。因?yàn)樗鼤?huì)把為1的維度給去掉。

AttributeError: module ‘numpy’ has no attribute ‘version’

這個(gè)錯(cuò)誤就是就是罪魁禍?zhǔn)?,?dǎo)致我環(huán)境搞了幾個(gè)小時(shí)。網(wǎng)上的方法都是讓卸載掉然后在安裝。

但是我嘗試了 結(jié)果就是告訴我沒有適合的版本。我直接裂開。所以我就采用碰運(yùn)氣的方式重裝了環(huán)境。如果有大佬知道這個(gè)問(wèn)題怎么解決請(qǐng)?jiān)u論區(qū)說(shuō)一聲。

總結(jié)

在讀取數(shù)據(jù)集以及拆分?jǐn)?shù)據(jù)集和預(yù)處理中,主要的問(wèn)題就是環(huán)境的搭建一個(gè)numpy庫(kù)搞我半天,

再就是還有一些方法的迭代更新,其實(shí)核心技術(shù)沒有多少,可能需要了解一下交叉驗(yàn)證吧。

這里給大家準(zhǔn)備了一些我精心挑選的AI的學(xué)習(xí)資料。關(guān)注VX公眾H【咕泡AI】回復(fù)【333】即可領(lǐng)取!

①10G教學(xué)視頻包(附課件+代碼)

②AI人工智能:54份行業(yè)重磅報(bào)告匯總

③能寫進(jìn)簡(jiǎn)歷的企業(yè)級(jí)項(xiàng)目實(shí)戰(zhàn)。

④100篇+深度學(xué)習(xí)論文合集

⑤人工智能必讀書籍

⑥專屬學(xué)習(xí)路徑規(guī)劃

⑦不定期大神直播,學(xué)習(xí)和困惑解答

⑧拿來(lái)就能跑通的論文復(fù)現(xiàn)代碼講解及數(shù)據(jù)集

這些資料都比較珍貴,但是對(duì)自我的職業(yè)發(fā)展價(jià)值則是無(wú)價(jià)的!

別慌,這些資料這一次全部免費(fèi)分享給大家。覺得好,就不要吝嗇你的三連哦,這樣我才有動(dòng)力持續(xù)更新哦??

基于卷積神經(jīng)網(wǎng)絡(luò)(tensorflow)的人臉識(shí)別項(xiàng)目【深度學(xué)習(xí)】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
普定县| 新巴尔虎左旗| 涪陵区| 韶关市| 湖北省| 哈巴河县| 图们市| 兴和县| 全南县| 佛山市| 陵水| 龙陵县| 泾阳县| 巧家县| 台湾省| 方山县| 同仁县| 濉溪县| 浦东新区| 津南区| 忻城县| 翼城县| 湘潭市| 堆龙德庆县| 赤城县| 石狮市| 葫芦岛市| 清流县| 兴仁县| 安溪县| 张掖市| 枣庄市| 邵阳市| 久治县| 海宁市| 吴川市| 吐鲁番市| 威宁| 英吉沙县| 抚州市| 陆丰市|