0
本文作者: AI研習(xí)社-譯站 | 2018-08-01 17:06 |
雷鋒網(wǎng)按:本文為AI研習(xí)社編譯的技術(shù)博客,原標(biāo)題 Tutorial:Alphabet Recognition In Real Time — A Deep Learning and OpenCV Applica,作者為 Akshay Chandra Lagandula 。
翻譯 | 趙若伽 李欣 校對(duì) | 汪其香 整理 | MY
這是一個(gè)關(guān)于如何構(gòu)建深度學(xué)習(xí)應(yīng)用程序的教程,該應(yīng)用程序可以實(shí)時(shí)識(shí)別由感興趣的對(duì)象(在這個(gè)案例中為瓶蓋)寫(xiě)出的字母。
項(xiàng)目描述
深度學(xué)習(xí)技術(shù)的能力的一個(gè)主流的證明就是在圖像數(shù)據(jù)里的目標(biāo)識(shí)別。
這個(gè)深度學(xué)習(xí) python 的應(yīng)用可以從網(wǎng)絡(luò)攝像頭數(shù)據(jù)中實(shí)時(shí)的識(shí)別字母,使用者被允許使用一個(gè)感興趣的對(duì)象(在這個(gè)案例中是一個(gè)水瓶蓋)在屏幕上寫(xiě)出字母。
你可以點(diǎn)擊這里訪問(wèn)整個(gè)項(xiàng)目的源碼。
工作實(shí)例
編碼要求
代碼是用 3.6 版的 Python,同時(shí)結(jié)合了 OpenCV 和 Keras 庫(kù)來(lái)編寫(xiě)成的。
關(guān)注這篇 medium 博客在 Python 3 中安裝 OpenCV 和 Keras。
數(shù)據(jù)描述
用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的「擴(kuò)展 Hello World」目標(biāo)識(shí)別是用于手寫(xiě)字母識(shí)別的 EMNIST 數(shù)據(jù)集,他是 MNIST 數(shù)據(jù)集 (「Hello World」的目標(biāo)識(shí)別) 的一個(gè)擴(kuò)展版本。
就像上面顯示的一樣,字母 『e』 被儲(chǔ)存在一個(gè) 28 x 28 的 numpy 數(shù)組。
編碼說(shuō)明
步驟 1:訓(xùn)練一個(gè)多層感知模型
1.1 加載數(shù)據(jù)
我們使用 Python 的 mnist 庫(kù)來(lái)加載數(shù)據(jù):
我們已經(jīng)準(zhǔn)備好要給到模型的數(shù)據(jù)了。將數(shù)據(jù)分為訓(xùn)練和測(cè)試集、標(biāo)準(zhǔn)化圖片以及其他基本的情況。
1.2 定義模型
在 Keras,模型被定義為層的序列。我們首先初始化一個(gè) 『序列模型』,然后用各自的神經(jīng)元去添加各自的層, 接下來(lái)的代碼做了同樣的事情。
這個(gè)模型如我們希望的那樣使用 28 x 28 像素(我們展平圖片然后將每個(gè)像素值放入一個(gè)一維向量)作為輸入。模型的輸出必須由某個(gè)字母決定,所以我們?cè)O(shè)置輸出層有 26 個(gè)神經(jīng)元(決定是由概率做出)。
1.3 編譯模型
現(xiàn)在已經(jīng)定義好了模型,我們可以編譯它了。使用高效的數(shù)字庫(kù)例如 Theano 或 TensorFlow 來(lái)編譯模型。
在這里我們可以指定一些需要用來(lái)訓(xùn)練網(wǎng)絡(luò)的特性。通過(guò)訓(xùn)練,我們嘗試找到可以在輸出時(shí)做出決定的最好的權(quán)重組合。我們必須指定用來(lái)評(píng)估權(quán)重組合的損失函數(shù),用來(lái)為網(wǎng)絡(luò)尋找不同的權(quán)重組合的優(yōu)化器和任何我們?cè)谟?xùn)練中想收集和報(bào)告的備選的矩陣。
1.4 Fit Model
在這里,我們通過(guò)模型檢查點(diǎn)來(lái)訓(xùn)練模型,這個(gè)檢查點(diǎn)會(huì)幫助我們保存最好的模型(根據(jù)我們?cè)谏弦徊蕉x的矩陣來(lái)判斷是否是最好)。
1.5 評(píng)估模型
在 EMNIST 數(shù)據(jù)集上模型的測(cè)試準(zhǔn)確度是 91.1%.
1.6 把他們結(jié)合起來(lái)
將所有步驟結(jié)合起來(lái),我們得到了一個(gè)通過(guò) EMNIST 數(shù)據(jù)訓(xùn)練出來(lái)的合適的多層感知器模型的所有代碼。
步驟 2:訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型
2.1 和 2.2?—?加載數(shù)據(jù)及定義模型
這兩步和我們建立多層感知器模型的步驟是完全相同的。
2.3 定義模型
由于部分內(nèi)容超出了本教程所講范圍,我事先定義了一個(gè) CNN 框架來(lái)解決手頭的問(wèn)題。想了解更多有關(guān) CNN 的信息,請(qǐng)?jiān)L問(wèn)該教程。
2.3 編譯模型
與 MLP 模型不同,這次我將使用 ADADELTA 優(yōu)化器。
2.4 擬合模型
想要了解模型參數(shù) batch_size 和 epochs 是如何影響模型性能的,可訪問(wèn)這里。
2.5 評(píng)估模型
此模型在數(shù)據(jù)集 EMNIST 上的測(cè)試準(zhǔn)確率為 93.1%。
2.6 小結(jié)
綜上,我們獲得了用來(lái)構(gòu)建良好 CNN 模型所需的完整代碼,此模型是在 EMNIST 數(shù)據(jù)集上訓(xùn)練的。
步驟 3:初始化
......
想要繼續(xù)閱讀,請(qǐng)移步至我們的AI研習(xí)社社區(qū):https://club.leiphone.com/page/TextTranslation/616
更多精彩內(nèi)容盡在 AI 研習(xí)社。
不同領(lǐng)域包括計(jì)算機(jī)視覺(jué),語(yǔ)音語(yǔ)義,區(qū)塊鏈,自動(dòng)駕駛,數(shù)據(jù)挖掘,智能控制,編程語(yǔ)言等每日更新。
手機(jī)端可以掃描二維碼訪問(wèn):
雷鋒網(wǎng)雷鋒網(wǎng)
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。