自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

干貨|多重預(yù)訓(xùn)練視覺(jué)模型的遷移學(xué)習(xí)

人工智能 深度學(xué)習(xí)
本文介紹的是基于Keras Tensorflow抽象庫(kù)建立的遷移學(xué)習(xí)算法模型,算法簡(jiǎn)單、易于實(shí)現(xiàn),并且具有很好的效果。

本文介紹的是基于Keras Tensorflow抽象庫(kù)建立的遷移學(xué)習(xí)算法模型,算法簡(jiǎn)單、易于實(shí)現(xiàn),并且具有很好的效果。

許多被稱(chēng)為“深度學(xué)習(xí)”的方法已經(jīng)出現(xiàn)在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域。在所有的這些“深度學(xué)習(xí)”方法中,有一種尤為突出,即對(duì)已學(xué)習(xí)representations的遷移,其有一種方法在遷移已學(xué)習(xí)的representations時(shí),其簡(jiǎn)潔性、魯棒性、有效性尤為突出。尤其是在計(jì)算機(jī)視覺(jué)領(lǐng)域,這個(gè)方法展示出了***的優(yōu)勢(shì),使以前難以克服的任務(wù)變得像keras.applications import *一樣容易。

簡(jiǎn)而言之,這個(gè)方法規(guī)定應(yīng)該使用一個(gè)大型的數(shù)據(jù)集學(xué)習(xí)將所感興趣的對(duì)象(如圖像,時(shí)間序列,客戶(hù),甚至是網(wǎng)絡(luò))表示為一個(gè)特征向量,以適合數(shù)據(jù)科學(xué)研究任務(wù),如分類(lèi)或聚類(lèi)。一旦學(xué)習(xí)完畢,representation機(jī)制就可供其他研究人員或其他數(shù)據(jù)集使用, 而幾乎不需要考慮新數(shù)據(jù)的數(shù)據(jù)量或可用計(jì)算資源的大小。

本文我們展示了基于預(yù)訓(xùn)練計(jì)算機(jī)視覺(jué)模型的遷移學(xué)習(xí)的用途,并使用了keras TensorFlow抽象庫(kù)。預(yù)訓(xùn)練計(jì)算機(jī)視覺(jué)模型已經(jīng)在大型ImageNet數(shù)據(jù)集上進(jìn)行了訓(xùn)練,并學(xué)會(huì)了以特征向量的形式生成圖像的簡(jiǎn)單表示。這里,我們將利用這個(gè)機(jī)制學(xué)習(xí)一個(gè)鳥(niǎo)類(lèi)分類(lèi)器。

能夠使用預(yù)訓(xùn)練模型的方法有很多,其選擇通常取決于數(shù)據(jù)集的大小和可用的計(jì)算資源,這些方法包括:

  1. 微調(diào)(Fine tuning):在這種情況下,用適當(dāng)大小的softmax層替換網(wǎng)絡(luò)的最終分類(lèi)層,以適應(yīng)當(dāng)前的數(shù)據(jù)集,同時(shí)其他所有層的學(xué)習(xí)參數(shù)保持不變,然后在新任務(wù)上進(jìn)行更進(jìn)一步的訓(xùn)練。
  2. 凍結(jié)(Freezing):fine-turning方法需要相對(duì)較強(qiáng)的計(jì)算能力和較大的數(shù)據(jù)量。對(duì)于較小的數(shù)據(jù)集,通常“凍結(jié)”網(wǎng)絡(luò)的一些***層,這就意味著預(yù)訓(xùn)練網(wǎng)絡(luò)的參數(shù)在這些層中是固定的。其他層在新任務(wù)上像以前一樣進(jìn)行訓(xùn)練。
  3. 特征提取(Feature extraction):這種方法是預(yù)訓(xùn)練網(wǎng)絡(luò)最寬松的一種用法。圖像經(jīng)過(guò)網(wǎng)絡(luò)前饋,將一個(gè)特定的層(通常是在最終分類(lèi)器輸出之前的一個(gè)層)作為一個(gè)representation,其對(duì)新任務(wù)絕對(duì)不會(huì)再訓(xùn)練。這種圖像-矢量機(jī)制的輸出,在后續(xù)任何任務(wù)中幾乎都可以使用。

本文我們將使用特征提取方法。首先,我們使用單個(gè)預(yù)訓(xùn)練深度學(xué)習(xí)模型,然后使用堆疊技術(shù)將四個(gè)不同的模型組合在一起。然后再對(duì)CUB-200數(shù)據(jù)集進(jìn)行分類(lèi),這個(gè)數(shù)據(jù)集(由vision.caltech提供)包括200種被選中的鳥(niǎo)類(lèi)圖像。

 

首先,下載數(shù)據(jù)集,MAC/Linux系統(tǒng)下載路徑:

或者,只需手動(dòng)下載并解壓文件即可。

接下來(lái)將描述程序中的主要元素。我們省略了導(dǎo)入和部署代碼,以支持可讀性更好的文本,如有需要請(qǐng)查看完整代碼。

讓我們從加載數(shù)據(jù)集開(kāi)始,用一個(gè)效用函數(shù)(here)來(lái)加載具有指定大小的圖像的數(shù)據(jù)集。當(dāng)解壓數(shù)據(jù)集時(shí)創(chuàng)建了“CUB_200_2011”文件夾,常量CUB_DIR指向該文件夾中的“image”目錄。

首先,我們將用Resnet50模型(參見(jiàn)論文和keras文件)進(jìn)行特征提取。注意,我們所使用的是大小為244X244像素的圖像。為了生成整個(gè)數(shù)據(jù)集的向量representations,需要添加以下兩行代碼:

當(dāng)模型被創(chuàng)建時(shí),使用preprocess_input函數(shù)對(duì)初始訓(xùn)練數(shù)據(jù)(ImageNet)進(jìn)行規(guī)范化,即求出平均信道像素值的減法結(jié)果。ResNet50.predict進(jìn)行實(shí)際轉(zhuǎn)換,返回代表每個(gè)圖像大小為2048的向量。當(dāng)***被調(diào)用時(shí),ResNet501d[1]的構(gòu)造器會(huì)下載預(yù)訓(xùn)練的參數(shù)文件,所需時(shí)間長(zhǎng)短取決于您的網(wǎng)速。之后,用這些特征向量和簡(jiǎn)單的線性SVM分類(lèi)器來(lái)進(jìn)行交叉驗(yàn)證過(guò)程。

[ 0.62522158 0.62344583 0.62852745]

Overall accuracy: 62.6

通過(guò)這個(gè)簡(jiǎn)單的方法,我們?cè)?00類(lèi)數(shù)據(jù)集上達(dá)到了62.6%的準(zhǔn)確度。在接下來(lái)的部分中,我們將使用幾個(gè)預(yù)先訓(xùn)練好的模型和一個(gè)疊加方法來(lái)繼續(xù)改進(jìn)這個(gè)結(jié)果。

使用多個(gè)預(yù)訓(xùn)練模型后,感覺(jué)與任何情況下使用一個(gè)特征集的情況相同:它們希望提供一些不重疊的信息,從而使組合時(shí)性能更優(yōu)越。

我們將使用的方法來(lái)自這四個(gè)預(yù)訓(xùn)練模型(VGG19, ResNet, Inception, and Xception)派生出的特性,被統(tǒng)稱(chēng)為“stacking”。Stacking是一個(gè)兩階段的算法,在此算法中,一組模型(基礎(chǔ)分類(lèi)器)的預(yù)測(cè)結(jié)果被聚合并傳送到第二階段的預(yù)測(cè)器中(元分類(lèi)器)。在這個(gè)例子中,每個(gè)基本分類(lèi)器將是一個(gè)簡(jiǎn)單的邏輯回歸模型。然后求出這些輸出概率的平均數(shù),并傳送到一個(gè)線性SVM算法中來(lái)提供最終決策。

每個(gè)預(yù)訓(xùn)練的模型(如上述的ResNet)都可以生成特征集(X_vgg, X_resnet, X_incept, X_xcept),我們以此作為開(kāi)始(完整的代碼請(qǐng)參閱git repo)。方便起見(jiàn),將所有的特征集合疊加到一個(gè)單獨(dú)的矩陣中,但是保留邊界索引,以便每個(gè)模型都可以指向正確的集合。

我們將使用功能強(qiáng)大的mlxtend擴(kuò)展庫(kù),使stacking算法變得更加容易。對(duì)于四個(gè)基本分類(lèi)器中的任何一個(gè),我們都構(gòu)建了一個(gè)可以選擇適當(dāng)特性的傳遞方法,并遵循LogisticRegression算法的途徑。

定義并配置堆疊分類(lèi)器,以使用每個(gè)基本分類(lèi)器提供的平均概率作為聚合函數(shù)。

***,我們準(zhǔn)備測(cè)試stacking方法:

[ 0.74221322 0.74194367 0.75115444]

Overall accuracy: 74.5

提供一些基于模型的分類(lèi)器,并利用這些單獨(dú)的被預(yù)先訓(xùn)練過(guò)的分類(lèi)器的stacking方法,我們獲得了74.5%的精確度,與單一的ResNet模型相比有了很大的提升(人們可以用同樣的方法測(cè)試其它模型,來(lái)對(duì)兩種方法進(jìn)行比較)。

綜上所述,本文描述了利用多個(gè)預(yù)訓(xùn)練模型作為特征提取機(jī)制的方法,以及使用stacking算法將它們結(jié)合起來(lái)用于圖像分類(lèi)的方法。這種方法簡(jiǎn)單,易于實(shí)現(xiàn),而且?guī)缀鯐?huì)產(chǎn)生出人意料的好結(jié)果。

 

[1]深度學(xué)習(xí)模型通常是在GPU上訓(xùn)練,如果您使用的是低端筆記本GPU,可能不適合運(yùn)行我們這里使用的一些模型,因?yàn)闀?huì)導(dǎo)致內(nèi)存溢出異常,如果是這樣,那么您應(yīng)該強(qiáng)制TensorFlow運(yùn)行CPU上的所有內(nèi)容,將所有深度學(xué)習(xí)相關(guān)的內(nèi)容放到一個(gè)帶有tf.device("/cpu:0"): 的塊下面。 

責(zé)任編輯:龐桂玉 來(lái)源: 機(jī)器學(xué)習(xí)算法與Python學(xué)習(xí)
相關(guān)推薦

2023-07-22 13:30:02

模型視覺(jué)

2022-03-04 19:07:03

模型視覺(jué)人工智能

2024-11-04 00:24:56

2023-01-09 08:00:00

遷移學(xué)習(xí)機(jī)器學(xué)習(xí)數(shù)據(jù)集

2025-03-17 09:12:00

訓(xùn)練模型AI

2019-05-07 11:18:51

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2017-02-08 17:29:17

遷移大數(shù)據(jù)深度學(xué)習(xí)

2020-10-15 14:33:07

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2022-08-01 10:07:34

訓(xùn)練模型圖片

2023-01-05 09:33:37

視覺(jué)模型訓(xùn)練

2024-02-22 10:25:10

AI視覺(jué)

2023-06-12 07:50:45

2022-06-16 19:53:51

AIAI模型

2017-08-09 10:02:12

NMT神經(jīng)網(wǎng)絡(luò)自然語(yǔ)言處理

2023-02-01 09:46:29

2021-09-26 10:47:12

預(yù)訓(xùn)練模型GPT

2020-11-12 09:55:10

百度

2024-01-29 00:24:07

圖像模型預(yù)訓(xùn)練

2020-03-17 09:42:00

谷歌開(kāi)源機(jī)器學(xué)習(xí)

2023-05-19 07:25:34

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)