產(chǎn)品經(jīng)理也能動(dòng)手實(shí)踐的AI(二)- 做個(gè)識(shí)別寵物的AI

上一篇《產(chǎn)品經(jīng)理也能動(dòng)手實(shí)踐的AI(一)- FastAI介紹》噪伊,介紹了為什么選擇FastAI,為什么適合產(chǎn)品經(jīng)理氮唯,為什么值得學(xué)習(xí)這項(xiàng)技能鉴吹。而寫這篇文章的目標(biāo)是,看完了之后可以更好的看懂教程中的內(nèi)容惩琉。

概覽

直接上例子豆励,核心代碼一共3行:

data = ImageDataBunch.from_name_re(path_img, fnames, pat, ds_tfms=get_transforms(),size=224) learn = cnn_learner(data, models.resnet34, metrics=error_rate)learn.fit_one_cycle(4)

識(shí)別準(zhǔn)確率是94.3%,在2012年瞒渠,寵物識(shí)別的準(zhǔn)確率才59%

核心步驟

  1. 創(chuàng)建圖像數(shù)據(jù) databunch?object

  2. 創(chuàng)建學(xué)習(xí)對(duì)象 learn object

  3. 開始訓(xùn)練 fit one cycle

  4. 調(diào)試

    1. 保存之前的模型

    2. 數(shù)據(jù)糾錯(cuò)

    3. 找到學(xué)習(xí)率

    4. 重新訓(xùn)練

前3個(gè)就是訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)必要的代碼良蒸,而之后的那些都是從各個(gè)角度去發(fā)現(xiàn)問題,然后提高準(zhǔn)確率伍玖。

這里還有幾個(gè)重要概念:

  1. 遷移學(xué)習(xí) transfer learning:類似于大師已經(jīng)提供了一套學(xué)習(xí)方法诚啃,我們?cè)谶@基礎(chǔ)上訓(xùn)練自己的學(xué)習(xí)方法;

  2. 錯(cuò)誤率 error rate:就是驗(yàn)證組數(shù)據(jù)私沮,預(yù)測(cè)錯(cuò)誤的百分比始赎;

  3. 損失 loss:我形象的稱為打臉指數(shù)和橙,就是越自信,但是卻預(yù)測(cè)錯(cuò)誤造垛,那loss就高

  4. 驗(yàn)證組 validation set:數(shù)據(jù)一般分為訓(xùn)練組和驗(yàn)證組魔招,驗(yàn)證組就是用來驗(yàn)證訓(xùn)練好的模型的準(zhǔn)確度五辽,驗(yàn)證組的數(shù)據(jù)是AI沒有見過的數(shù)據(jù)办斑;

  5. 過度擬合 overfit:有點(diǎn)類似于牛肉吃多了,吃什么都覺得像牛肉味……我舉不出更好的例子了杆逗,有想法記得給我留言挣柬;

  6. 學(xué)習(xí)率 learning rate:就類似于1個(gè)字1個(gè)字讀→一個(gè)個(gè)詞讀→一句句話讀,1個(gè)個(gè)字讀就屬于小的學(xué)習(xí)率睛挚,比較容易發(fā)現(xiàn)更細(xì)節(jié)的特征點(diǎn)邪蛔,而大的學(xué)習(xí)率會(huì)發(fā)現(xiàn)更宏觀的特征點(diǎn);

詳細(xì)講解

這節(jié)課的重點(diǎn)是跑通一個(gè)模型扎狱,并且調(diào)試到比較好的效果侧到,最終將準(zhǔn)確率提高到了95.8%。

Jeremy專門做了很多函數(shù)委乌,可以一鍵導(dǎo)入數(shù)據(jù),而不是在第一節(jié)課就制造N多阻礙荣回,所以只要在Jupyter notebook里一步步運(yùn)行就一定可以跑通遭贸,但是每一步或者每一個(gè)參數(shù)代表什么,是需要在實(shí)踐的過程中搞清楚的心软,前3個(gè)核心步驟基本看教程都很容易搞懂壕吹,不懂的查找文檔也很好理解。

這里重點(diǎn)說下調(diào)試部分删铃,首先需要保存一下現(xiàn)有訓(xùn)練的結(jié)果:

learn.save('stage-1')

然后可以通過2種方式去調(diào)節(jié)模型耳贬,一是創(chuàng)建 解釋器interpretation,找到異常圖片猎唁,然后刪掉它(下節(jié)課才講如何刪)咒劲;二是找到合適的 學(xué)習(xí)率learning rate進(jìn)行 微調(diào)fine-tuning。

先看解釋器,提到了2個(gè)函數(shù):plot_top_loss 和 most_confused腐魂,第一個(gè)是把錯(cuò)的最離譜的圖片都打出來帐偎,第二個(gè)是把猜錯(cuò)次數(shù)最多的類別給打出來。這樣就非常容易發(fā)現(xiàn)問題蛔屹,比如把出錯(cuò)次數(shù)最多的打出來之后削樊,發(fā)現(xiàn)這2種狗確實(shí)很接近,人的話也不是特別容易區(qū)分兔毒,這就可能需要單獨(dú)的大量的圖片訓(xùn)練漫贞。

然后是fine-tuning,這里是重點(diǎn)S迅脐!多強(qiáng)調(diào)一下,要想微調(diào)擂红,就要搞清楚圖像識(shí)別的原理仪际,或者叫CNN(convolutional neural network)卷積神經(jīng)網(wǎng)絡(luò)的原理,作者拿出了Clarify的CEO發(fā)表的一片通過視覺化理解卷積網(wǎng)絡(luò)的論文昵骤,詳細(xì)介紹了其中的原理树碱。

首先第一層的訓(xùn)練,屬于學(xué)習(xí)率特別低的訓(xùn)練变秦,機(jī)器找到了邊緣的規(guī)律成榜,發(fā)現(xiàn)這幾種顏色的漸變是特別常見的。

然后第二層蹦玫,基于第一層找到的邊緣赎婚,發(fā)現(xiàn)這些邊緣的連接,比如直角或者一個(gè)弧形是比較有共性的東西樱溉。

然后第三層挣输,基于第二層發(fā)現(xiàn)的線條,發(fā)現(xiàn)了各種形狀福贞。

然后第四層第五層撩嚼,感覺已經(jīng)可以識(shí)別特定的形狀和特定的物體了,隨著層級(jí)的提高挖帘,能識(shí)別的共性圖像的復(fù)雜性也在提高完丽,是因?yàn)閷W(xué)習(xí)率的提高,機(jī)器會(huì)選擇性的忽略細(xì)節(jié)拇舀,反而更多的關(guān)注宏觀的相似逻族。

第一次訓(xùn)練用的架構(gòu)叫做ResNet34,是一個(gè)基于上百萬(wàn)張圖片訓(xùn)練了34層之后得到的一個(gè)通用的圖片識(shí)別模型骄崩。之前的訓(xùn)練就是在這個(gè)模型之后增加個(gè)4個(gè)層聘鳞,訓(xùn)練之后的結(jié)果就已經(jīng)非常不錯(cuò)了薄辅,如果想變得更好,就只能將之前的模型解凍unfreeze搁痛,然后連貫起來重新訓(xùn)練长搀,并通過

learn.lr_find()learn.recorder.plot()

找到loss和lr的關(guān)系

這張圖可以看到當(dāng)learning rate超過 10-4之后,loss明顯升高鸡典,就說明之前默認(rèn)的0.003的lr偏高了源请,所以調(diào)整lr

learn.fit_one_cycle(2, max_lr=slice(1e-6,1e-4))

至于為什么調(diào)到這個(gè)區(qū)間,之后的課程會(huì)將彻况,而現(xiàn)在就是一個(gè)可以充分實(shí)踐的機(jī)會(huì)谁尸。

最后得出的準(zhǔn)確率94.7%,比之前的94.3%只高了一點(diǎn)點(diǎn)纽甘,而95.8%的準(zhǔn)確率是通過ResNet50來實(shí)現(xiàn)的良蛮,因?yàn)檫@個(gè)pre-train的模型跑了50層,識(shí)別率更高悍赢,但非常占用計(jì)算機(jī)性能决瞳。

好了,草草的把介紹寫完了左权,很多東西沒法一篇文章寫完皮胡,一方面得自己多動(dòng)手嘗試去感受,另一方面確實(shí)有些概念得逐漸理解赏迟,希望這篇文章讓你對(duì)FastAI運(yùn)作的模式有了一個(gè)清晰的認(rèn)識(shí)屡贺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锌杀,隨后出現(xiàn)的幾起案子甩栈,更是在濱河造成了極大的恐慌,老刑警劉巖糕再,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件量没,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡突想,警方通過查閱死者的電腦和手機(jī)殴蹄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒿柳,“玉大人饶套,你說我怎么就攤上這事漩蟆±萏剑” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵怠李,是天一觀的道長(zhǎng)圾叼。 經(jīng)常有香客問我蛤克,道長(zhǎng),這世上最難降的妖魔是什么夷蚊? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任构挤,我火速辦了婚禮,結(jié)果婚禮上惕鼓,老公的妹妹穿的比我還像新娘筋现。我一直安慰自己,他們只是感情好箱歧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布矾飞。 她就那樣靜靜地躺著,像睡著了一般呀邢。 火紅的嫁衣襯著肌膚如雪洒沦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天价淌,我揣著相機(jī)與錄音申眼,去河邊找鬼。 笑死蝉衣,一個(gè)胖子當(dāng)著我的面吹牛括尸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播买乃,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼姻氨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了剪验?” 一聲冷哼從身側(cè)響起肴焊,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎功戚,沒想到半個(gè)月后娶眷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啸臀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年届宠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乘粒。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豌注,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灯萍,到底是詐尸還是另有隱情轧铁,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布旦棉,位于F島的核電站齿风,受9級(jí)特大地震影響药薯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜救斑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一童本、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脸候,春花似錦穷娱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至茶袒,卻和暖如春梯刚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薪寓。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工亡资, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人向叉。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓锥腻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親母谎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘦黑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容