PyTorch深度學(xué)習(xí)項(xiàng)目教程課件:提升貓狗圖像分類的準(zhǔn)確率_第1頁
PyTorch深度學(xué)習(xí)項(xiàng)目教程課件:提升貓狗圖像分類的準(zhǔn)確率_第2頁
PyTorch深度學(xué)習(xí)項(xiàng)目教程課件:提升貓狗圖像分類的準(zhǔn)確率_第3頁
PyTorch深度學(xué)習(xí)項(xiàng)目教程課件:提升貓狗圖像分類的準(zhǔn)確率_第4頁
PyTorch深度學(xué)習(xí)項(xiàng)目教程課件:提升貓狗圖像分類的準(zhǔn)確率_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PyTorch深度學(xué)習(xí)項(xiàng)目教程

提升貓狗圖像分類的準(zhǔn)確率CONVOLUTIONALNEURALNETWORK要點(diǎn):監(jiān)督學(xué)習(xí)、分類任務(wù)、多層感知機(jī)、數(shù)據(jù)增強(qiáng)

項(xiàng)目背景ProjectBackground問題:項(xiàng)目3完成貓狗圖像分類項(xiàng)目框架的搭建,但是其分類的準(zhǔn)確率僅有69%,一般在實(shí)際應(yīng)用場(chǎng)景中,準(zhǔn)確率需要達(dá)到95%以上。解決:為了提高圖像分類的準(zhǔn)確率,一種名為卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)的網(wǎng)絡(luò)結(jié)構(gòu)被提出來,通過在網(wǎng)絡(luò)中使用卷積層(ConvolutionalLayer)、池化層(PoolingLayer)和全連接層(FullyConnectedLayer)來自動(dòng)學(xué)習(xí)圖像中的空間層次特征。由于其準(zhǔn)確性和易用性,迅速成為深度學(xué)習(xí)中應(yīng)用廣泛的架構(gòu)之一。知識(shí)目標(biāo)KnowledgeObjectives深入理解卷積神經(jīng)網(wǎng)絡(luò)(CNN)的基本概念、結(jié)構(gòu)和原理學(xué)習(xí)卷積層、池化層和全連接層的功能,以及它們?cè)趫D像特征提取中的作用學(xué)習(xí)不同經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),如AlexNet、VGGNet、ResNet、MobileNet等,并理解它們的優(yōu)缺點(diǎn)及適用場(chǎng)景掌握卷積層尺寸(如濾波器大小、步長(zhǎng)、填充等)的計(jì)算方法及其對(duì)模型性能的影響能力目標(biāo)AbilityGoals能夠具體分析卷積網(wǎng)絡(luò)各層之間的關(guān)系,并理解整個(gè)網(wǎng)絡(luò)的訓(xùn)練和推理過程熟練運(yùn)用Dropout、MaxPool2d、BatchNormalization等模型優(yōu)化技術(shù)以提高網(wǎng)絡(luò)性能和防止過擬合掌握使用PyTorch等深度學(xué)習(xí)框架構(gòu)建和訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),并應(yīng)用于圖像分類具備調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)和超參數(shù)來優(yōu)化模型性能的能力素養(yǎng)目標(biāo)ProfessionalAttainments培養(yǎng)在模型性能不佳時(shí),能夠發(fā)現(xiàn)并分析問題原因的批判性思維能力培養(yǎng)根據(jù)項(xiàng)目需求和數(shù)據(jù)特點(diǎn),能夠自主選擇合適的網(wǎng)絡(luò)架構(gòu)和技術(shù)的創(chuàng)新能力培養(yǎng)通過實(shí)踐案例,能夠?qū)⒗碚撝R(shí)應(yīng)用到解決實(shí)際問題中的能力培養(yǎng)在團(tuán)隊(duì)中有效溝通和協(xié)作,以及對(duì)深度學(xué)習(xí)領(lǐng)域的持續(xù)學(xué)習(xí)和探索精神目錄任務(wù)1多層感知機(jī)問題分析任務(wù)2卷積神經(jīng)網(wǎng)絡(luò)的引入任務(wù)3卷積網(wǎng)絡(luò)結(jié)構(gòu)編程實(shí)現(xiàn)任務(wù)4網(wǎng)絡(luò)訓(xùn)練及結(jié)果評(píng)估任務(wù)5認(rèn)識(shí)更多網(wǎng)絡(luò)結(jié)構(gòu)01任務(wù)1多層感知機(jī)問題分析1多層感知機(jī)問題分析問題:1.網(wǎng)絡(luò)不夠深對(duì)于一張圖片而言,以分辨率為640×640的彩色圖像為例,其本身的特征維度高達(dá)1,228,800個(gè),由于計(jì)算機(jī)內(nèi)存的顯示,我們只能壓縮特征維度,在此基礎(chǔ)上,采用了5層網(wǎng)絡(luò)結(jié)構(gòu),總參數(shù)已經(jīng)超過400萬個(gè),但是網(wǎng)絡(luò)的學(xué)習(xí)能力一般;2.網(wǎng)絡(luò)結(jié)構(gòu)單一我們僅僅是將圖像展開為一維數(shù)組,然后通過線性矩陣相乘,難以表達(dá)圖像中更多的空間關(guān)系。改進(jìn)方向:增加層數(shù)、增加神經(jīng)元個(gè)數(shù)新的問題:梯度爆炸、梯度消失新的操作直接帶來參數(shù)爆炸問題,深度學(xué)習(xí)參數(shù)的傳播為矩陣運(yùn)算,維度的增加使得一個(gè)神經(jīng)網(wǎng)絡(luò)層次就高達(dá)上萬億參數(shù),還需要對(duì)這些參數(shù)進(jìn)行網(wǎng)絡(luò)層間的正向傳播和方向傳播求導(dǎo),以當(dāng)前的計(jì)算能力來講,無法實(shí)現(xiàn)MLP網(wǎng)絡(luò)向更多參數(shù)和更深層次擴(kuò)展需要新的網(wǎng)絡(luò)結(jié)構(gòu)02任務(wù)2卷積神經(jīng)網(wǎng)絡(luò)的引入2.1卷積

在數(shù)字圖像處理中,可以通過圖像濾波操作來完成對(duì)圖片主要信息的保留以及噪聲的剔除

卷積:2.1卷積defconvolve(image,kernel):

#獲取圖像和卷積核的尺寸

image_h,image_w=image.shape

kernel_h,kernel_w=kernel.shape

#創(chuàng)建一個(gè)空白矩陣,用于存儲(chǔ)卷積后的結(jié)果

output=np.zeros((image_h-kernel_h+1,image_w-kernel_w+1))

#對(duì)于每一個(gè)滑動(dòng)窗口位置,計(jì)算其與卷積核的內(nèi)積并將結(jié)果存儲(chǔ)于相應(yīng)的位置

forhinrange(0,image_h-kernel_h+1):

forwinrange(0,image_w-kernel_w+1):

output[h,w]=(image[h:h+kernel_h,w:w+kernel_w]*kernel).sum()

returnoutputf=cv2.imread('../data/dogs-vs-cats/val/cat/cat.11250.jpg')

cv2.imshow('img_f',f)

h=np.array([

[0.1,0.1,0.1],

[0.1,0.2,0.1],

[0.1,0.1,0.1]

])

g=convolve(f[:,:,0],h).astype(np.uint8)

cv2.imshow('img_g',g)

cv2.waitKey()

2.2步長(zhǎng)Stride設(shè)步長(zhǎng)為4后,8×8的矩陣經(jīng)過卷積操作后,減少為2×2的大小,圖像信息被壓縮了16倍2.2步長(zhǎng)Stridedefconvolve_with_stride(image,kernel,stride):

#獲取圖像和卷積核的尺寸

image_h,image_w=image.shape

kernel_h,kernel_w=kernel.shape

#創(chuàng)建一個(gè)空白矩陣,用于存儲(chǔ)卷積后的結(jié)果,考慮圖像步長(zhǎng)大小

output=np.zeros((int((image_h-kernel_h+stride)/stride),int((image_w-kernel_w+stride)/stride)))

#滑動(dòng)窗口增加了步長(zhǎng)

forhinrange(0,image_h-kernel_h+1,stride):

forwinrange(0,image_w-kernel_w+1,stride):

output[int(h/stride),int(w/stride)]=(image[h:h+kernel_h,w:w+kernel_w]*kernel).sum()

returnoutputf=cv2.imread('../data/dogs-vs-cats/val/cat/cat.11250.jpg')

cv2.imshow('img_f',f)

h=numpy.array([

[0.1,0.1,0.1],

[0.1,0.2,0.1],

[0.1,0.1,0.1]

])

g0=convolve_with_stride_padding(f[:,:,0],h,4,1).astype(np.uint8)

g1=convolve_with_stride_padding(f[:,:,1],h,4,1).astype(np.uint8)

g2=convolve_with_stride_padding(f[:,:,2],h,4,1).astype(np.uint8)

g=cv2.merge([g0,g1,g2])

print(f.shape)

print(g.shape)

cv2.imshow('img_g',g)

cv2.waitKey()通過卷積操作,圖像尺寸從(289,500,3)降低到了(72,125,3),同時(shí)保留了圖像的顯著特征。因此,卷積成了我們進(jìn)行圖像參數(shù)壓縮的一個(gè)工具,經(jīng)過卷積操作后形成的圖,我們稱為特征圖(FeatureMap)2.3填充Padding卷積計(jì)算時(shí),引入步長(zhǎng)后,會(huì)存在邊緣無法參與到卷積運(yùn)算的情況,導(dǎo)致了信息損失。因此我們需要對(duì)輸入圖像在邊界進(jìn)行填充操作,讓更多的元素參與運(yùn)算,這一過程被稱為Padding2.3填充Padding卷積計(jì)算時(shí),引入步長(zhǎng)后,會(huì)存在邊緣無法參與到卷積運(yùn)算的情況,導(dǎo)致了信息損失。因此我們需要對(duì)輸入圖像在邊界進(jìn)行填充操作,讓更多的元素參與運(yùn)算,這一過程被稱為Paddingdefconvolve_with_stride_padding(image,kernel,stride,padding):

#填充

image=cv2.copyMakeBorder(image,padding,padding,padding,padding,0)

#獲取圖像和卷積核的尺寸

image_h,image_w=image.shape

kernel_h,kernel_w=kernel.shape

#創(chuàng)建一個(gè)空白矩陣,用于存儲(chǔ)卷積后的結(jié)果,考慮圖像步長(zhǎng)大小

output=np.zeros((int((image_h-kernel_h+stride)/stride),int((image_w-kernel_w+stride)/stride)))

#滑動(dòng)窗口增加了步長(zhǎng)

forhinrange(0,image_h-kernel_h+1,stride):

forwinrange(0,image_w-kernel_w+1,stride):

output[int(h/stride),int(w/stride)]=(image[h:h+kernel_h,w:w+kernel_w]*kernel).sum()

returnoutput2.4卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò):指定每層特征圖的數(shù)量,例如我們對(duì)于每個(gè)圖像通道,創(chuàng)建10個(gè)卷積核,每個(gè)卷積核都來學(xué)習(xí)圖像的特征參數(shù)計(jì)算:

假設(shè)卷積核大小為3x3,每層卷積核數(shù)量為10,則每層參數(shù)數(shù)量:卷積核x輸入圖像通道數(shù)x每層卷積核數(shù)+偏置=(3×3)×3×10+1=271個(gè)參數(shù)量大大減少,自卷積神經(jīng)網(wǎng)絡(luò)誕生以來,網(wǎng)絡(luò)的層次得到了大幅加深,伴隨一些減緩鏈?zhǔn)匠朔ㄔ斐傻奶荻认Щ蛘咛荻缺C(jī)制,網(wǎng)絡(luò)層次達(dá)到了100多層03任務(wù)3卷積網(wǎng)絡(luò)結(jié)構(gòu)編程實(shí)現(xiàn)3.1LeNet網(wǎng)絡(luò)結(jié)構(gòu)classLeNet(nn.Module):

def__init__(self,classes=2):

#使用super調(diào)用父類中的init函數(shù)對(duì)LeNet進(jìn)行初始化,初始化后LeNet類的8個(gè)nn.Module屬性都是空的

super(LeNet,self).__init__()

#構(gòu)建網(wǎng)絡(luò)子模塊,存儲(chǔ)到LeNet的module屬性中

#這種conv1的卷積層和fc1的全連接層也是一個(gè)Module的子類,其中已經(jīng)預(yù)定好了相關(guān)的Module屬性

#這種子模塊的module屬性一般為空,即其中不再包含更小的子模塊,而parameters中則存儲(chǔ)了相關(guān)的權(quán)值等屬性

#nn.Conv2d(3,6,5)只是實(shí)現(xiàn)了一個(gè)卷積層的實(shí)例化,而賦值給self.conv1才實(shí)現(xiàn)了該卷積層到LeNet的module屬性中的添加

#這里進(jìn)行賦值時(shí)其實(shí)會(huì)被setattr函數(shù)攔截,對(duì)賦值的數(shù)據(jù)類型進(jìn)行判斷,如果是module類或者其子類,則賦值給LeNet的module中

#module這個(gè)屬性其實(shí)是一個(gè)字典,賦值操作就是想該字典中添加鍵值對(duì),鍵就是conv1,值就是nn.Conv2d(3,6,5)這個(gè)卷積層實(shí)例

#賦值時(shí)候如果判斷數(shù)據(jù)類型為Parameter類,則會(huì)存儲(chǔ)到LeNet中的Parameter字典(即Parameter屬性)中

self.conv1=nn.Conv2d(3,6,5)

self.conv2=nn.Conv2d(6,16,5)

self.fc1=nn.Linear(16*13*13,120)

self.fc2=nn.Linear(120,84)

self.fc3=nn.Linear(84,classes)

#按照每層網(wǎng)絡(luò)結(jié)構(gòu)寫處forward函數(shù),即如何進(jìn)行前向傳播

defforward(self,x):

out=F.relu(self.conv1(x))

out=F.max_pool2d(out,2)

out=F.relu(self.conv2(out))

out=F.max_pool2d(out,2)

out=out.view(out.size(0),-1)

out=F.relu(self.fc1(out))

out=F.relu(self.fc2(out))

out=self.fc3(out)

returnoutLeNet由YannLecun提出,是一種經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),是現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)的起源之一。Yann將該網(wǎng)絡(luò)用于郵局的郵政的郵政編碼識(shí)別,有著良好的學(xué)習(xí)和識(shí)別能力。LeNet又稱LeNet-5,具有一個(gè)輸入層,兩個(gè)卷積層,兩個(gè)池化層,3個(gè)全連接層(其中最后一個(gè)全連接層為輸出層)網(wǎng)絡(luò)由項(xiàng)目3的400多萬參數(shù)降低到了30多萬參數(shù)3.2nn.Conv2ddef__init__(

self,

in_channels:int,

out_channels:int,

kernel_size:_size_2_t,

stride:_size_2_t=1,

padding:Union[str,_size_2_t]=0,

dilation:_size_2_t=1,

groups:int=1,

bias:bool=True,

padding_mode:str='zeros',

device=None,

dtype=None

)->None:

3.2nn.

max_pool2d文件頭importtorch.nn.functionalasF本質(zhì)上torch.**也是調(diào)用了torch.nn.functional模塊nn.max_pool2d和F.max_pool2d兩種寫法均可max_pool2d的作用是對(duì)特征圖進(jìn)行最大值過濾,由此進(jìn)一步縮小特征圖的大小而無需引入額外的參數(shù)max_pool2d(out,2)最大池化示意圖04任務(wù)4網(wǎng)絡(luò)訓(xùn)練及結(jié)果評(píng)估4網(wǎng)絡(luò)訓(xùn)練及評(píng)估30個(gè)Epoch,訓(xùn)練結(jié)束后在訓(xùn)練集的準(zhǔn)確率為在90.78%,在驗(yàn)證集的準(zhǔn)確率最佳準(zhǔn)確率為82.12%項(xiàng)目3的訓(xùn)練代碼中,僅需替換網(wǎng)絡(luò)結(jié)構(gòu):net=LeNet(classes=2)05任務(wù)5認(rèn)識(shí)更多網(wǎng)絡(luò)結(jié)構(gòu)5.1AlexNet網(wǎng)絡(luò)模型2012年,AlexKrizhevsky、IlyaSutskever在多倫多大學(xué)GeoffHinton的實(shí)驗(yàn)室設(shè)計(jì)出了一個(gè)深層的卷積神經(jīng)網(wǎng)絡(luò)AlexNet,奪得了2012年ImageNetLSVRC的冠軍,且準(zhǔn)確率遠(yuǎn)超第二名(top5錯(cuò)誤率為15.3%,第二名為26.2%),引起了很大的轟動(dòng)。AlexNet可以說是具有歷史意義的一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),在此之前,深度學(xué)習(xí)已經(jīng)沉寂了很長(zhǎng)時(shí)間,自2012年AlexNet誕生之后,后面的ImageNet冠軍都是用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來做的,并且層次越來越深,使得CNN成為圖像識(shí)別分類的核心算法模型,帶來了深度學(xué)習(xí)的大爆發(fā)5.1AlexNet網(wǎng)絡(luò)模型AlexNet之所以能夠成功,跟這個(gè)模型設(shè)計(jì)的特點(diǎn)有關(guān),主要有:1)使用了非線性激活函數(shù):ReLU,本項(xiàng)目改進(jìn)的LeNet也借鑒了這個(gè)激活函數(shù)。2)數(shù)據(jù)增強(qiáng):隨機(jī)對(duì)數(shù)據(jù)進(jìn)行旋轉(zhuǎn)、水平翻轉(zhuǎn)、平移及對(duì)比度變化等操作,在本項(xiàng)目的預(yù)處理部分,也采用數(shù)據(jù)增強(qiáng)機(jī)制;3)歸一化層:即對(duì)每層運(yùn)算后的結(jié)果,重新歸一化到一定區(qū)間,縮小數(shù)據(jù)取值范圍;4)Dropout引入:引入

Dropout主要是為了防止過擬合。在神經(jīng)網(wǎng)絡(luò)中Dropout通過修改神經(jīng)網(wǎng)絡(luò)本身結(jié)構(gòu)來實(shí)現(xiàn),對(duì)于某一層的神經(jīng)元,通過定義的概率將神經(jīng)元置為0,這個(gè)神經(jīng)元就不參與前向和后向傳播,就如同在網(wǎng)絡(luò)中被刪除了一樣,同時(shí)保持輸入層與輸出層神經(jīng)元的個(gè)數(shù)不變,然后按照神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法進(jìn)行參數(shù)更新。在下一次迭代中,又重新隨機(jī)刪除一些神經(jīng)元(置為0),直至訓(xùn)練結(jié)束,如圖所示,相當(dāng)于每次訓(xùn)練參數(shù)僅更新部分參數(shù)。Dropout機(jī)制示意圖(每次訓(xùn)練更新部分參數(shù))5.1AlexNet網(wǎng)絡(luò)模型通過30次的訓(xùn)練,貓狗分類項(xiàng)目在驗(yàn)證集得到了92.08%的最高準(zhǔn)確率,相對(duì)于多層感知機(jī)MLP不到70%的準(zhǔn)確率有了巨大提升AlexNet的參數(shù)數(shù)量為6000萬個(gè)5.2VGGNet網(wǎng)絡(luò)模型VGGNet是由牛津大學(xué)視覺幾何小組(VisualGeometryGroup,VGG)提出的一種深層卷積網(wǎng)絡(luò)結(jié)構(gòu),他們以7.32%的錯(cuò)誤率贏得了2014年ILSVRC分類任務(wù)的亞軍(冠軍由GoogLeNe6.65%的錯(cuò)誤率奪得)和25.32%的錯(cuò)誤率奪得定位任務(wù)(Localization)的第一名(GoogLeNet錯(cuò)誤率為26.44%),網(wǎng)絡(luò)名稱VGGNet取自該小組名縮寫。VGGNet是首批把圖像分類的錯(cuò)誤率降低到10%以內(nèi)模型,同時(shí)該網(wǎng)絡(luò)所采用的卷積核的思想是后來許多模型的基礎(chǔ)該模型發(fā)表在2015年國際學(xué)習(xí)表征會(huì)議(InternationalConferenceOnLearningRepresentations,ICLR)后,至今被引用的次數(shù)已經(jīng)超過1萬4千余次。5.2VGGNet網(wǎng)絡(luò)模型VGG遵循了LeNet和AlexNet奠定的CNN經(jīng)典逐層串行堆疊的結(jié)構(gòu),并達(dá)到了傳統(tǒng)結(jié)構(gòu)深度和性能的極致。其最大貢獻(xiàn)是證明了卷積神經(jīng)網(wǎng)絡(luò)中小卷積核的使用和深度的增加對(duì)網(wǎng)絡(luò)的最終分類識(shí)別效果有很大的作用。1.使用3×3小卷積核選擇3×3大小卷積是因?yàn)樗亲钚〉哪軌虮硎旧舷伦笥抑行牡木矸e核,作者認(rèn)為兩個(gè)3×3的卷積堆疊獲得的感受野大小,相當(dāng)一個(gè)5×5的卷積;而3個(gè)3×3卷積的堆疊獲取到的感受野相當(dāng)于一個(gè)7×7的卷積。這樣可以使模型深度變深,增加非線性映射,學(xué)習(xí)和表示能力變強(qiáng),也能很好地減少參數(shù)(例如7×7的參數(shù)為49個(gè),而3個(gè)3×3的參數(shù)為27)。使用3×3卷積時(shí),其padding為1,stride為1,這樣就可以使卷積前后的featuremap的尺度保持不變,只有通過maxpooling層時(shí)featuremap尺度縮小一半(2×2,stride為2)。2.網(wǎng)絡(luò)層數(shù)越深效果越好牛津大學(xué)視覺組將模型B中每個(gè)block中的兩個(gè)3×3卷積替換成了一個(gè)5×5卷積進(jìn)行對(duì)照試驗(yàn),結(jié)果是使用5×5卷積的模型top-1error比模型B高了7%,因?yàn)檫@兩種卷積感受野是一樣的,證明小而深的網(wǎng)絡(luò)性能是要超過大而淺的網(wǎng)絡(luò)。

綜上所述,VGGNet使用了3個(gè)3×3卷積核來代替7×7卷積核,使用了2個(gè)3×3卷積核來代替5×5卷積核,在保證了具有相同感知野的條件下,提升了網(wǎng)絡(luò)的深度,一定程度上提升了神經(jīng)網(wǎng)絡(luò)的效果。VGGNet有多個(gè)版本,常用的是VGG16表示有16層的卷積,除此之外,還有VGG11、VGG13和VGG19等模型不同層級(jí)的VGG網(wǎng)絡(luò)結(jié)構(gòu)5.2VGGNet網(wǎng)絡(luò)模型VGG模型參數(shù)超過1.3億個(gè),僅僅30個(gè)Ephoch訓(xùn)練,很難收斂,準(zhǔn)確率為:85.64%5.2VGGNet網(wǎng)絡(luò)模型defvgg_trans_learning(classes=2):

model=torchvision.models.vgg16(pretrained=True)

#凍結(jié)特征提取,修改全連接層,并嘗試凍結(jié)一些層次

num_fc=model.classifier[6].in_features#獲取最后一層的輸入維度

model.classifier[6]=torch.nn.Linear(num_fc,classes)#修改最后一層的輸出維度,即分類數(shù)

#對(duì)于模型的每個(gè)權(quán)重,使其不進(jìn)行反向傳播,即固定參數(shù)

forparaminmodel.parameters():

param.requires_grad=False

#將分類器的最后層輸出維度換成了num_cls,這一層需要重新學(xué)習(xí)

forparaminmodel.classifier[6].parameters():

param.requires_grad=True

returnmodel對(duì)于網(wǎng)絡(luò)收斂慢的問題,我們可以采用一種稱為遷移學(xué)習(xí)的方法,及利用其他人訓(xùn)練好的模型,在我們的任務(wù)上進(jìn)行訓(xùn)練??紤]到大部分?jǐn)?shù)據(jù)或任務(wù)都是存在相關(guān)性的,所以通過遷移學(xué)習(xí)我們可以將已經(jīng)學(xué)到的模型參數(shù)(也可理解為模型學(xué)到的知識(shí))通過某種方式來分享給新模型,從而加快并優(yōu)化模型的學(xué)習(xí)效率,而不用讓網(wǎng)絡(luò)從零開始訓(xùn)練。[INFO]Training:Epoch[001/030]Iteration[170/176]Loss:0.0435Acc:97.78%[INFO]Newbestaccinvalid:99.16%這充分說明我們網(wǎng)絡(luò)具有強(qiáng)大的記憶能力,基于ImageNet海量圖片的千錘百煉后,一個(gè)充分訓(xùn)練的網(wǎng)絡(luò)模型可以迅速適應(yīng)新的任務(wù)要求,和我們?nèi)祟愄幚韱栴}的能力何其相似,遷移學(xué)習(xí)能力是深度學(xué)習(xí)技術(shù)得以流行的原因之一5.3ResNet網(wǎng)絡(luò)模型對(duì)于卷積神經(jīng)網(wǎng)絡(luò),我們已經(jīng)接觸了LeNet,AlexNet和VGGNet,以上幾個(gè)模型的共同結(jié)構(gòu)為:1)卷積層(Convolution):提取圖像的底層特征,將原圖中符合卷積核特征的特征提取出來(卷積核特征是由網(wǎng)絡(luò)自己學(xué)習(xí)出來的);2)池化層/降采樣層/下采樣層(Pooling/Subsampling):降低Featuremap的維度,防止過擬合;3)全連接層/密集連接層(FullyConnected/DenseLayer):將池化層的結(jié)果拉平(flatten)成一個(gè)長(zhǎng)向量,匯總之前卷積層和池化層得到的底層的信息和特征;4)輸出層(Output):全連接+激活(二分類用Sigmoid;多分類用Softmax歸一化)。5.3ResNet網(wǎng)絡(luò)模型

5.3ResNet網(wǎng)絡(luò)模型

5.3ResNet網(wǎng)絡(luò)模型

5.3ResNet網(wǎng)絡(luò)模型ResNet推出后,迅速得到了業(yè)內(nèi)的廣泛關(guān)注,網(wǎng)絡(luò)最高層次突破了1000層,使之成為絕大多數(shù)深度神經(jīng)網(wǎng)絡(luò)任務(wù)的骨干網(wǎng)絡(luò)(BackBone)。BackBone是計(jì)算機(jī)視覺任務(wù)的根基,在通過BackBone生成的特征圖FeatureMap的基礎(chǔ)上再進(jìn)行如分類、目標(biāo)檢測(cè)和圖像分割等任務(wù),BackBone一般也稱為特征編碼(Encoder),后面接上不同的任務(wù)頭(Head)執(zhí)行所需任務(wù)5.3ResNet網(wǎng)絡(luò)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論