隨著AI的發展,美國橡樹嶺國家實驗室的一些專家預測,到2040年,AI技術將會強大到足以替代程序員。AI技術將會強大到足以替代程序員,AI編寫軟件將比人類程序員更好、更快。換句話說,軟件編寫的軟件比人類編寫的更好?! ?/p>
這是怎么發生的?AI能真正學會如何做需要高度創造性的智力工作嗎?畢竟創造性一直被認為是人類特有的。AI能學到的東西會比我們教它的更多嗎?
穩住,別慌今天本文將分享一篇AI入門實戰的項目經驗分享,專門為對于沒有動過手的同學準備,以此來啟發新手們如何開動,了解AI技術~
漢字書法識別入門
前段時間參加了一次TinyMind舉辦的漢字書法識別挑戰賽,說是挑戰賽其實就是一場練習賽。為一些剛剛入門的同學和沒有比賽經驗的同學提供了一個探索圖像識別領域的平臺。我目前是暫列榜首(沒想到轉眼就被超越了-。-),所以把自己的思路和想法稍微做一個分享,給有需要的人提供一個base line。
先來看數據集~~
100個漢字的訓練集
10000張書法圖片的測試集
上面的訓練集總共有100個漢字,每一個漢字都有400張不同字體的圖片,數據量上來看算是一個比較小的數據集。
等等,看到的確定是漢字嗎,第一眼望過去我是真的emmmmm.....甲骨文,篆體各種字體都冒出來了。先喝口水冷靜一下,仔細看一看發現圖片都是gray的。想了一想突然覺得這個和mnist并沒有太大的區別只是字體更加復雜一些,可能要用稍微深一點的網絡來訓練。
圖片看完了,那么開始擼代碼了。分析終究是分析,還是實踐才能說明一切?! ?/p>
數據集劃分
競賽中只給了train和test,所以需要自己手動劃分一個val來做模型訓練的驗證測試。在這里簡單說明一下經常用的兩種劃分數據集的方法。
本地劃分
內存劃分
本地劃分:圖片是按照文件夾分類的,所以只需要從每個文件夾中按ratio抽取部分圖片到val中即可,當然不要忘記了shuffle。
內存劃分:把所有圖片和標簽讀進內存中,存為list或者array然后shuffle后按長度劃分。前提是把數據讀進去內存不會爆炸掉。內存劃分只適合小型數據集,不然會Boom!!!
注:劃分數據集的時候一定要打亂數據,shuffle很重要?。?!
注:這里只給出部分代碼,文章最下面github有完整鏈接?! ?/p>
注:這里引用dwSun的linux shell腳本,如果想用簡單腳本實現也可以采用他的代碼~
模型建立與數據預處理
對于CNN網絡來說,大的數據集對應大的訓練樣本,如果小的數據集想要用深層次的網絡來訓練的話,那么必不可少的一步就是數據增強。
數據增強的大部分方法,所有深度學習框架都已經封裝好了。這里我采用的是keras自帶的數據增強方法。
由于漢字是具有筆畫順序的,所以做了翻轉以后訓練的效果不是很好。這里就做了一個寬度和高度的偏移,由于給的數據集圖片長寬不是固定的而且字體的內容也是有長有短。所以用這兩種增強方式可以提高模型的準確率,結果測試這兩種方式還是有效的。
數據處理完了,那么下面就是我們可愛的CNN網絡模型了
cnn一把梭
嗯,就是干。
這里用了6個簡單的卷積層,和PRelu+bn層?! ?/p>
下面是一個比較大的模型ResNet50,模型是已經merge在了keras的applications中,可以直接用。不過需要調整分類層。
好了,煉丹爐有了接下來就是你懂的?! ?/p>
訓練模型
訓練模型和調參真的是一個技術活,這里我跑了共40個epoch。思路只有一個那就是先把train的數據跑到loss下降并且先過擬合再說。只要過擬合了后面的一切都好調整了,如果訓練數據都不能到過擬合或者99以上那么要仔細想想數據量夠不夠和模型的選擇了。
loss
acc
可以很清楚的看出來,訓練數據集已經過擬合了。我用的優化器是sgd,學習率設置的是lr=0.01。val_acc可以跑到了0.94左右,這是一個比較正常的訓練水平。還可以進一步的提高?! ?/p>
提高方法
數據增強:采取其他的數據增強方法進一步擴大訓練數據,這里可以采用GAN來生成近似于真實圖片的數據。
衰減學習率:當到達一定epoch的時候,loss不再下降了這個時候可以通過減小學習率的方法進一步訓練。
模型融合:模型融合的方法在大部分數據集上都會有所提高,這個是最常用的一種競賽方式。
以上就是我自己做的流程和思路,提交結果和評測的代碼寫在我的github上面了,有興趣參加比賽練手的同學可以參考一下。
github地址:https://github.com/FlyEgle/chinese_font_recognition/
好多小伙伴是從開發或者是其他工程上轉到AI的,所以下面我給有需要的同學列舉出一些必要的基礎知識點:
數學:線性代數和概率論是必須要會的,而且基本的概念和計算都要懂??梢园迅邤?,線性代數和概率論看一遍,這里推薦李航的統計學習方法?! ?/p>
圖像處理:如果是做圖像方面的小伙伴,那么需要把岡薩雷斯的圖像處理那本巨作看一遍,需要懂基本的圖像概念和基本方法?! ?/p>
還有機器學習 深度學習經典書、如果能把這幾本書完全吃透那也很厲害了,當然學習知識點的途徑還有很多。
學習社區
TinyMind
1024你懂的国产日韩欧美_亚洲欧美色一区二区三区_久久五月丁香合缴情网_99爱之精品网站
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。