高煥堂
0引言
遷移學(xué)習(xí)(Transfer Learning)就像俗稱的“拿來(lái)主義”,善用別人已經(jīng)訓(xùn)練好模型的參數(shù)(智慧),引入到自己的模型里,可以迅速建立1個(gè)AI的應(yīng)用情境。本文以ResNet50為例,說(shuō)明如何復(fù)用(Reuse)已經(jīng)訓(xùn)練好的ResNet50的智慧(模型和參數(shù)),幫您瞬間探索任何一張圖像的特征(Feature),然后幫您識(shí)別出圖片里的人或物的種類,如水牛、斑馬、貓頭鷹或汽車等。
1認(rèn)識(shí)遷移學(xué)習(xí):以ResNel50為例
AI的智慧是來(lái)自機(jī)器的自我學(xué)習(xí),通稱為機(jī)器學(xué)習(xí)。它經(jīng)常需要借助大量的數(shù)據(jù)來(lái)訓(xùn)練。例如,ResNet50就使用100多萬(wàn)張圖像而訓(xùn)練出來(lái)的。在訓(xùn)練的過(guò)程中,它去探索每張圖像中的特稱,并且學(xué)習(xí)歸納和分類。目前的ResNet50可以準(zhǔn)確地識(shí)別出1000種人或物,如日常生活中常遇到的狗、貓、食物、汽車和各種家居物品等。例如,您可以隨意從百度圖片上截取一張224x224大小的圖片,如圖1。
當(dāng)您把這圖片提交給Re sNet50,它會(huì)瞬間探索并進(jìn)行分類,然后告訴您:我預(yù)測(cè)這是大熊貓(Giantpanda)。
2介紹ResNel50模型的結(jié)構(gòu)
目前最常見的AI圖像識(shí)別模型是:卷積網(wǎng)路(cNN)模型。這ResNet50就是基于CNN的模型,如圖2。
其中,CNN模型包含兩部分:卷積層(convolutionLayers)與全連接層(Full-Connected Layers)。前者我特別稱之為丫鬟部分;而后者則稱之為格格部分,如圖3。
Conv部分比較復(fù)雜,共約有40個(gè)層;而FC部分約有10個(gè)層。所以稱之為ResNet50模型。
3復(fù)用ResNel50智慧的方法
典型的復(fù)用(Reuse)步驟如下。
它告訴您了:我預(yù)測(cè)99%的可能性是大熊貓(Giantpanda)。
5僅復(fù)用丫鬟,訓(xùn)練自己的格格
5.1說(shuō)明
由于ResNet50是典型的CNN模型,包含卷積層與FC層。在上一節(jié)里,使用Excel畫面來(lái)操作ResNet50,并復(fù)用了全部(卷積層與FC層)的權(quán)重,就不必重新訓(xùn)練,而直接用來(lái)辨別圖像里的東西。在本節(jié)里,就來(lái)介紹另一種用法:只復(fù)用它的卷積層(丫鬟)部分,而不復(fù)用FC層(格格)部分的權(quán)重。也就是,要自己來(lái)訓(xùn)練FC層(格格)部分。
在CNN模型(女DResNet50)里,丫鬟部分負(fù)責(zé)探索像的特征,然后把這些特征值交給格格,讓格格(依據(jù)特征值)來(lái)分辨出種類。例如,丫鬟看到一張圖片里的動(dòng)物特征是:身體黑白條紋、4只腳,然后格格就依據(jù)這特征而判斷這很可能是一匹斑馬。
雖然ResNet50里的格格已經(jīng)有智慧來(lái)進(jìn)行圖像分類(classification)了,而且可以辨識(shí)1000種日常生活中的人或物。然而,在一些較狹窄的應(yīng)用場(chǎng)域里,只需要(更準(zhǔn)確)辨識(shí)較少的種類時(shí),就需要訓(xùn)練自己的格格。
剛才提到了,有些場(chǎng)合需要重新訓(xùn)練格格來(lái)分類,但是丫鬟具有的探索像特征的智慧,卻可以復(fù)用之。亦即,能借助于ResNet50的丫鬟(即卷積部分)的智慧,幫忙探索我的圖片,來(lái)協(xié)助訓(xùn)練新的格格。一旦新格格訓(xùn)練好了之后,ResNet50原有的丫鬟就能和新格格協(xié)同合作,來(lái)更精確地區(qū)分特定的數(shù)據(jù)(圖片)集了。由于不必重新訓(xùn)練丫鬟部分,就能節(jié)約許多訓(xùn)練(丫鬟的)時(shí)間。
5.2準(zhǔn)備數(shù)據(jù),來(lái)訓(xùn)練新格格
茲拿一個(gè)較狹小的應(yīng)用場(chǎng)域,只需要格格來(lái)分辨3個(gè)種類:斑馬、貓頭鷹和蘑菇。于是,筆者在/oopc/v data/train/文件夾里,準(zhǔn)備了150張圖片(皆為224x224),包括50張斑馬、50張貓頭鷹、以及50張蘑菇的圖片。將它們分別放在這3個(gè)小文件夾里:
亦即,在/v_data/train/里共有150張圖片,分為3種類(Classes)。接下來(lái),就拿3類的圖像來(lái)訓(xùn)練自己的.格格。于是,繼續(xù)使用jjtl8模板,執(zhí)行jjtl8PY呈現(xiàn)出<工作表2”的畫面,并按下
大約經(jīng)過(guò)5分鐘,就可訓(xùn)練完畢了。接著點(diǎn)選“工作表3”,并按下“Show”按鈕,就顯示出一張圖片,如下圖。
接著,按下“Prediet”,就把這張圖片提交給ResNet50去識(shí)別。此時(shí),就先由(ResNet50原有的)丫鬟先去探索這張圖片的特征,然后把特征值轉(zhuǎn)交給新格格去分類。最后由格格輸出結(jié)果如圖7。
6結(jié)語(yǔ)
本文是以ResNet50為例,說(shuō)明如何借助ResNet50已經(jīng)訓(xùn)練好的智慧去識(shí)別形形色色的圖像。此外,還可以復(fù)用ResNet50里的丫鬟智慧,搭配自己的圖片集,來(lái)訓(xùn)練自己的新格格,更新了ResNet50的智慧。
隨著AI的應(yīng)用領(lǐng)域愈來(lái)愈多,除7ResNet50之外,您還可以通過(guò)本文所介紹的“遷移學(xué)習(xí)”途徑來(lái)共享更多的AI模型和智慧。