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