大家好我們今天來(lái)講一講如何用Matlab做一個(gè)新的遷移學(xué)習(xí)您可能需要的基礎(chǔ)知識(shí)
Matlab編程Deep learning的基礎(chǔ)知識(shí)
一、什么是遷移學(xué)習(xí)?
以圖像識(shí)別為例。如果你想構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),讓它能夠識(shí)別馬匹,但是手上又沒(méi)有任何公開的算法可以完成這項(xiàng)任務(wù)。這時(shí),借助遷移學(xué)習(xí),你可以從一個(gè)原本是用來(lái)識(shí)別其它動(dòng)物的現(xiàn)成的卷積神經(jīng)網(wǎng)絡(luò)(CNN)入手,對(duì)其進(jìn)行調(diào)整并訓(xùn)練它識(shí)別馬匹。深度學(xué)習(xí)應(yīng)用中常常用到遷移學(xué)習(xí)??梢圆捎妙A(yù)訓(xùn)練的網(wǎng)絡(luò),基于它學(xué)習(xí)新任務(wù)。與使用隨機(jī)初始化的權(quán)重從頭訓(xùn)練網(wǎng)絡(luò)相比,通過(guò)遷移學(xué)習(xí)微調(diào)網(wǎng)絡(luò)要更快更簡(jiǎn)單。我們可以使用較少數(shù)量的訓(xùn)練圖像快速地將已學(xué)習(xí)的特征遷移到新任務(wù)。
二、網(wǎng)絡(luò)的創(chuàng)建和數(shù)據(jù)的導(dǎo)入
加載數(shù)據(jù)
解壓縮新圖像并加載這些圖像作為圖像數(shù)據(jù)存儲(chǔ)。imageDatastore 根據(jù)文件夾名稱自動(dòng)標(biāo)注圖像,并將數(shù)據(jù)存儲(chǔ)為 ImageDatastore 對(duì)象。通過(guò)圖像數(shù)據(jù)存儲(chǔ)可以存儲(chǔ)大圖像數(shù)據(jù),包括無(wú)法放入內(nèi)存的數(shù)據(jù),并在卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程中高效分批讀取圖像。
unzip(‘MerchData.zip’);imds = imageDatastore(‘MerchData’, 。.. ‘IncludeSubfolders’,true, 。.. ‘LabelSource’,‘foldernames’);
將數(shù)據(jù)劃分為訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集。將 70% 的圖像用于訓(xùn)練,30% 的圖像用于驗(yàn)證。splitEachLabel 將 images 數(shù)據(jù)存儲(chǔ)拆分為兩個(gè)新的數(shù)據(jù)存儲(chǔ)。
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,‘randomized’);
這個(gè)非常小的數(shù)據(jù)集現(xiàn)在包含 55 個(gè)訓(xùn)練圖像和 20 個(gè)驗(yàn)證圖像。
numTrainImages = numel(imdsTrain.Labels);idx = randperm(numTrainImages,16);figurefor i = 1:16 subplot(4,4,i) I = readimage(imdsTrain,idx(i)); imshow(I)end
加載預(yù)訓(xùn)練網(wǎng)絡(luò)
加載預(yù)訓(xùn)練的 AlexNet 神經(jīng)網(wǎng)絡(luò)。如果未安裝 Deep Learning Toolbox Model for AlexNet Network,則軟件會(huì)提供下載鏈接。AlexNet 已基于超過(guò)一百萬(wàn)個(gè)圖像進(jìn)行訓(xùn)練,可以將圖像分為 1000 個(gè)對(duì)象類別(例如鍵盤、鼠標(biāo)、鉛筆和多種動(dòng)物)。因此,該模型已基于大量圖像學(xué)習(xí)了豐富的特征表示。
net = alexnet;
使用 analyzeNetwork 可以交互可視方式呈現(xiàn)網(wǎng)絡(luò)架構(gòu)以及有關(guān)網(wǎng)絡(luò)層的詳細(xì)信息。
analyzeNetwork(net)
第一層(圖像輸入層)需要大小為 227×227×3 的輸入圖像
其中 3 是顏色通道數(shù)
inputSize = 1×3 227 227 3
三、網(wǎng)絡(luò)的訓(xùn)練
替換最終層
預(yù)訓(xùn)練網(wǎng)絡(luò) net 的最后三層針對(duì) 1000 個(gè)類進(jìn)行配置。必須針對(duì)新分類問(wèn)題微調(diào)這三個(gè)層。從預(yù)訓(xùn)練網(wǎng)絡(luò)中提取除最后三層之外的所有層。
layersTransfer = net.Layers(1:end-3);
通過(guò)將最后三層替換為全連接層、softmax 層和分類輸出層,將層遷移到新分類任務(wù)。根據(jù)新數(shù)據(jù)指定新的全連接層的選項(xiàng)。將全連接層設(shè)置為大小與新數(shù)據(jù)中的類數(shù)相同。要使新層中的學(xué)習(xí)速度快于遷移的層,請(qǐng)?jiān)龃笕B接層的 WeightLearnRateFactor 和 BiasLearnRateFactor 值。
numClasses = numel(categories(imdsTrain.Labels))numClasses = 5
layers = [ layersTransfer fullyConnectedLayer(numClasses,‘WeightLearnRateFactor’,20,‘BiasLearnRateFactor’,20) softmaxLayer classificationLayer];
訓(xùn)練網(wǎng)絡(luò)
網(wǎng)絡(luò)要求輸入圖像的大小為 227×227×3,但圖像數(shù)據(jù)存儲(chǔ)中的圖像具有不同大小。使用增強(qiáng)的圖像數(shù)據(jù)存儲(chǔ)可自動(dòng)調(diào)整訓(xùn)練圖像的大小。指定要對(duì)訓(xùn)練圖像額外執(zhí)行的增強(qiáng)操作:沿垂直軸隨機(jī)翻轉(zhuǎn)訓(xùn)練圖像,以及在水平和垂直方向上隨機(jī)平移訓(xùn)練圖像最多 30 個(gè)像素。數(shù)據(jù)增強(qiáng)有助于防止網(wǎng)絡(luò)過(guò)擬合和記憶訓(xùn)練圖像的具體細(xì)節(jié)。
pixelRange = [-30 30];imageAugmenter = imageDataAugmenter( 。.. ‘RandXReflection’,true, 。.. ‘RandXTranslation’,pixelRange, 。.. ‘RandYTranslation’,pixelRange);augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, 。.. ‘DataAugmentation’,imageAugmenter);
對(duì)驗(yàn)證圖像進(jìn)行分類
使用經(jīng)過(guò)微調(diào)的網(wǎng)絡(luò)對(duì)驗(yàn)證圖像進(jìn)行分類
[YPred,scores] = classify(netTransfer,augimdsValidation);
顯示四個(gè)示例驗(yàn)證圖像及預(yù)測(cè)的標(biāo)簽。
idx = randperm(numel(imdsValidation.Files),4);figurefor i = 1:4 subplot(2,2,i) I = readimage(imdsValidation,idx(i)); imshow(I) label = YPred(idx(i)); title(string(label));end
計(jì)算針對(duì)驗(yàn)證集的分類準(zhǔn)確度。準(zhǔn)確度是網(wǎng)絡(luò)預(yù)測(cè)正確的標(biāo)簽的比例
YValidation = imdsValidation.Labels;accuracy = mean(YPred == YValidation)
accuracy = 1
今天你學(xué)廢了嗎???
編輯:lyn
-
matlab
+關(guān)注
關(guān)注
185文章
2980瀏覽量
230863 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4779瀏覽量
101080 -
圖像識(shí)別
+關(guān)注
關(guān)注
9文章
521瀏覽量
38357 -
遷移學(xué)習(xí)
+關(guān)注
關(guān)注
0文章
74瀏覽量
5578
原文標(biāo)題:【圖像識(shí)別】基于Matlab的遷移學(xué)習(xí)的圖像分類案例
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論