遷移學(xué)習:共享AI智慧的途徑
高煥堂? (臺灣VR產(chǎn)業(yè)聯(lián)盟主席,廈門(mén)VR/AR協(xié)會(huì )榮譽(yù)會(huì )長(cháng)兼顧問(wèn))
本文引用地址:http://dyxdggzs.com/article/202003/410498.htm0 引言
遷移學(xué)習(Transfer Learning)就像俗稱(chēng)的“拿來(lái)主義”,善用別人已經(jīng)訓練好模型的參數(智慧),引入到 自己的模型里,可以迅速建立1個(gè)AI的應用情境。本文 以ResNet50為例,說(shuō)明如何復用(Reuse)已經(jīng)訓練好的 ResNet50的智慧(模型和參數),幫您瞬間探索任何一張 圖像的特征(Feature),然后幫您識別出圖片里的人或物 的種類(lèi),如水牛、斑馬、貓頭鷹或汽車(chē)等。
1 認識遷移學(xué)習:以ResNet50為例
AI的智慧是來(lái)自機器的自我學(xué)習,通稱(chēng)為機器 學(xué)習。它經(jīng)常需要借助大量的數據來(lái)訓練。例如, ResNet50就使用100多萬(wàn)張圖像而訓練出來(lái)的。在訓練 的過(guò)程中,它去探索每張圖像中的特稱(chēng),并且學(xué)習歸納 和分類(lèi)。目前的ResNet50可以準確地識別出1000種人 或物,如日常生活中常遇到的狗、貓、食物、汽車(chē)和各 種家居物品等。例如,您可以隨意從百度圖片上截取一 張224x224大小的圖片,如圖1。
當您把這圖片提交給ResNet50,它會(huì )瞬間探 索并進(jìn)行分類(lèi),然后告訴您:我預測這是大熊貓(Giant panda)。
2 介紹ResNet50模型的結構
目前最常見(jiàn)的AI圖像識別模型是:卷積網(wǎng)路(CNN) 模型。這ResNet50就是基于CNN的模型,如圖2。
其中,CNN模型包含兩部分:卷積層(Convolution Layers)與全連接層(Full-Connected Layers)。前者我特 別稱(chēng)之為丫鬟部分;而后者則稱(chēng)之為格格部分[1-2],如圖3。
Conv部分比較復雜,共約有40個(gè)層;而FC部分約 有10個(gè)層。所以稱(chēng)之為ResNet50模型。
3 復用ResNet50智慧的方法
典型的復用(Reuse)步驟如下。
1)撰寫(xiě)Python程式來(lái)建立一個(gè)ResNet50模型。 您可以從網(wǎng)路下載此Python程式的源碼來(lái)做修改。網(wǎng)址為:
https://github.com/fchollet/deep-learning-models/ releases/
如圖4的綠色框部分:
2)從網(wǎng)絡(luò )下載已經(jīng)訓練好的模型參數(智慧)。 例如,圖4里的紅色框部分。包含2個(gè)檔案(下文詳細 說(shuō)明)。
3)把所下載的模型參數檔案內容載入您剛才建立 的ResNet50模型里。
經(jīng)由這3個(gè)步驟,就把別人已經(jīng)訓練(學(xué)習)好的模型 參數,順利地遷移(Transfer)到您自己建立的模型里了。
4 新潮方法:使用Excel把ResNet50模型包裝起來(lái)
4.1 準備執行環(huán)境(不需要編程)
使用Excel來(lái)包裝Python程式,可以讓許多不熟悉編 程者,來(lái)輕易地使用AI的各種應用情境。只要您的電 腦上安裝有Excel和Python的相關(guān)套件(如TensorFlow、 Keras等)就能夠執行基于Excel+Python的AI模板 (Template)了。至于這項執行環(huán)境的安裝指南,可以參 閱筆者的博客:https://www.cnblogs.com/SmartADT/。
安裝好了執行環(huán)境,就可以從上述網(wǎng)頁(yè)里下載兩個(gè) 模板:jjt18.zip,依據說(shuō)明文件復制到您的環(huán)境里,然 后就可以執行了。 4.2 開(kāi)始執行jjt18模板
首先,把這張圖像放在圖5里。
準備把c:/oopc/im001pd.pg圖像提交給ResNet50去探 索和分類(lèi)。接著(zhù),請您開(kāi)啟Python程式:jjt18.py。畫(huà)面 上就出現了預先寫(xiě)好的Python程式:
然后執行這個(gè)程式,就呈現出Excel畫(huà)面:
請按下“Predict”按鈕,這Excel背后的ResNet50就 展開(kāi)瞬間探索這張像并進(jìn)行分類(lèi),然后輸出如下:
它告訴您了:我預測99%的可能性是大熊貓(Giant panda)。
5 僅復用丫鬟,訓練自己的格格
5.1 說(shuō)明 由于ResNet50是典型的CNN模型,包含卷積層與 FC層。在上一節里,使用Excel畫(huà)面來(lái)操作ResNet50, 并復用了全部(卷積層與FC層)的權重,就不必重新訓 練,而直接用來(lái)辨別圖像里的東西。在本節里,就來(lái)介 紹另一種用法:只復用它的卷積層(丫鬟)部分,而不復 用FC層(格格)部分的權重。也就是,要自己來(lái)訓練FC層 (格格)部分。
在CNN 模型(如ResNet50)里,丫鬟部分負責探索像 的特征,然后把這些特征值交給格格,讓格格(依據特 征值)來(lái)分辨出種類(lèi)。例如,丫鬟看到一張圖片里的動(dòng) 物特征是:身體黑白條紋、4只腳,然后格格就依據這 特征而判斷這很可能是一匹斑馬。
雖然ResNet50里的格格已經(jīng)有智慧來(lái)進(jìn)行圖像分類(lèi) (Classification)了,而且可以辨識1000種日常生活中的 人或物。然而,在一些較狹窄的應用場(chǎng)域里,只需要 (更準確)辨識較少的種類(lèi)時(shí),就需要訓練自己的格格。
剛才提到了,有些場(chǎng)合需要重新訓練格格來(lái)分類(lèi), 但是丫鬟具有的探索像特征的智慧,卻可以復用之。亦即,能借助于ResNet50的丫鬟(即卷積部分)的智慧,幫 忙探索我的圖片,來(lái)協(xié)助訓練新的格格。一旦新格格訓 練好了之后,ResNet50原有的丫鬟就能和新格格協(xié)同合 作,來(lái)更精確地區分特定的數據(圖片)集了。由于不必 重新訓練丫鬟部分,就能節約許多訓練(丫鬟的)時(shí)間。
5.2 準備數據,來(lái)訓練新格格
茲拿一個(gè)較狹小的應用場(chǎng)域,只需要格格來(lái)分辨 3個(gè)種類(lèi):斑馬、貓頭鷹和蘑菇。于是,筆者在/oopc/ v_data/train/文件夾里,準備了150張圖片(皆為224 x 224),包括50張斑馬、50張貓頭鷹、以及50張蘑菇的圖 片。將它們分別放在這3個(gè)小文件夾里:
例如,其中的/Zebra/小文件夾里有50張圖片,如圖 6里。
亦即,在/v_data/train/里共有150張圖片,分為3 種類(lèi)(Classes)。接下來(lái),就拿3類(lèi)的圖像來(lái)訓練自己的 格格。于是,繼續使用jjt18模板,執行jjt18.py呈現出 <工作表2”的畫(huà)面,并按下<Train”按鈕,就展開(kāi)訓 練了:
大約經(jīng)過(guò)5分鐘,就可訓練完畢了。接著(zhù)點(diǎn)選“工 作表3”,并按下“Show”按鈕,就顯示出一張圖片, 如下圖。
接著(zhù),按下“Predict”,就把這張圖片提交給 ResNet50去識別。此時(shí),就先由(ResNet50原有的)丫鬟 先去探索這張圖片的特征,然后把特征值轉交給新格格 去分類(lèi)。最后由格格輸出結果如圖7。
6 結語(yǔ)
本文是以ResNet50為例,說(shuō)明如何借助ResNet50已 經(jīng)訓練好的智慧去識別形形色色的圖像。此外,還可以 復用ResNet50里的丫鬟智慧,搭配自己的圖片集,來(lái)訓 練自己的新格格,更新了ResNet50的智慧。
隨著(zhù)AI的應用領(lǐng)域愈來(lái)愈多,除了ResNet50之外, 您還可以通過(guò)本文所介紹的“遷移學(xué)習”途徑來(lái)共享更 多的AI模型和智慧。
參考文獻:
[1] 高煥堂.學(xué)AI之路,從探索特征出發(fā)[J].電子產(chǎn)品世界, 2019(11):81-84.
[2] 高煥堂.邁向AI與IC產(chǎn)業(yè)結合之路——從AI神鷹設計模式談起 [J].電子產(chǎn)品世界,2019(12):78-80.
本文來(lái)源于科技期刊《電子產(chǎn)品世界》2020年第03期第85頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評論