付鵬飛 許斌
摘 ?要: 人們捕獲視圖,從視圖中提取特征并理解含義。同理,駕駛員也通過視覺實(shí)現(xiàn)對(duì)街景的判斷。我們期待, 有一天機(jī)器能夠通過自主計(jì)算完成同樣的工作。得益于計(jì)算機(jī)的強(qiáng)大處理能力,基于CNNs(Convolutional Neural Networks, 卷積神經(jīng)網(wǎng)絡(luò))的深度學(xué)習(xí)算法能夠很好地完成目標(biāo)識(shí)別等計(jì)算機(jī)視覺任務(wù)。但在實(shí)際工業(yè)應(yīng)用中,資源往往受限,較大的網(wǎng)絡(luò)不利于嵌入式移植。通常一個(gè)完備的CNN網(wǎng)絡(luò)包含卷積層、池化層和全連接層[1],本文參考文章[2]中的方法,舍去池化層和全連接層,使用卷積層代替,并對(duì)幾種網(wǎng)絡(luò)進(jìn)行了仿真實(shí)驗(yàn)及結(jié)果分析,尋找在受限平臺(tái)使用CNN網(wǎng)絡(luò)的方法。
關(guān)鍵詞: 人臉識(shí)別;直方圖均衡化;主成分分析;支持向量機(jī)
中圖分類號(hào): TP391. 41 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.042
本文著錄格式:付鵬飛,許斌,等. 全卷積神經(jīng)網(wǎng)絡(luò)仿真與遷移學(xué)習(xí)[J]. 軟件,2019,40(5):216221
【Abstract】: As we know, vision is very important for human to understand the world. Similarly, drivers also use vision to anlysis street scene. What we had being expecting is that one day machine can do the same work by itself through computer vision. Thanks to the powerful processing ability of the computer, the deep learning algorithm based on CNNs (Convolutional Neural Networks) can accomplish computer vision tasks well such as object detection. However, in most industrial environment, resources are limited, and larger networks are not easy to embedded transplantation .Now, the architectures of main CNNs used for machine vision include convolution layers and pooling layers alternately and ended with several fully-connected layers [1]. In fact, we can use convolution layers to replace pooling layers, as described in paper [2]。
【Key words】: CNN; Computer vision; Transfer lEARNING; Driving assistance
0 ?引言
隨著現(xiàn)代社會(huì)的不斷發(fā)展,汽車已成為了人們最主要的交通工具,傳統(tǒng)的駕駛行為在處理很多突發(fā)情況時(shí),完全依賴于駕駛?cè)藛T在面對(duì)突發(fā)情況時(shí)的心理素質(zhì)及駕駛經(jīng)驗(yàn),非常容易出現(xiàn)危險(xiǎn)的情形。而且長(zhǎng)時(shí)間遠(yuǎn)距離的駕駛,會(huì)造成駕駛員疲勞,注意力不集中,從而導(dǎo)致交通事故頻發(fā)。主流的汽車制造商已普遍采取了被動(dòng)安全的策略,來降低事故對(duì)行人的傷害。
但是這種被動(dòng)的保護(hù)措施還遠(yuǎn)遠(yuǎn)不夠,如果能通過技術(shù)手段,主動(dòng)的輔助駕駛員采取措施,減少甚至避免人員的傷亡,這將會(huì)是一項(xiàng)非常具有價(jià)值和意義的工作。汽車要能夠輔助人類駕駛,首先就要求汽車能夠感知到外部的環(huán)境,理解環(huán)境的構(gòu)成類型并準(zhǔn)確定位。目前主要使用雷達(dá)和光學(xué)攝像頭等傳感設(shè)備作為傳感器,通過算法來實(shí)現(xiàn)對(duì)外部環(huán)境的感知。目前的基于CNN的神經(jīng)網(wǎng)絡(luò),具有較大的參數(shù)量,訓(xùn)練過程中要消耗大量的時(shí)間,而且在實(shí)際的移植的過程時(shí)對(duì)移植系統(tǒng)的資源要求高,制約了CNN網(wǎng)絡(luò)向較小的平臺(tái)或或資源受限的平臺(tái)擴(kuò)展。
汽車上很多智能部件以工控機(jī)、嵌入式環(huán)境為主,屬于資源受限平臺(tái)。盡管具有多層和復(fù)雜結(jié)構(gòu)的CNN網(wǎng)絡(luò)具有很好的檢測(cè)精度,但是在這樣龐大的網(wǎng)絡(luò)在有限資源的平臺(tái)上往往效果不佳。論文[2]提出了以全卷積網(wǎng)絡(luò)的模型,簡(jiǎn)化經(jīng)典的CNN網(wǎng)絡(luò)模型,也能夠達(dá)到較高的準(zhǔn)確率。本文使用論文[2]過實(shí)際修改、編寫、仿真分析A、B、C三種網(wǎng)絡(luò)結(jié)構(gòu),研究CNN網(wǎng)絡(luò)簡(jiǎn)化的可能方法,研究大型的神經(jīng)網(wǎng)絡(luò)向受限平臺(tái)遷移的可能性。
1 ?相關(guān)工作
卷積神經(jīng)網(wǎng)絡(luò)可以簡(jiǎn)化認(rèn)為是多個(gè)卷積模塊的不斷循環(huán)運(yùn)算并輸出特征圖[1]的過程,通常來說卷積模塊包含卷積運(yùn)算、整流、池化三個(gè)部分。通過卷積運(yùn)算把結(jié)果傳導(dǎo)至下一層,并且多次重復(fù)這樣的操作,如圖1所示。在整個(gè)計(jì)算過程中,圖片的大小逐步減少,卷積核的個(gè)數(shù)不斷增多,輸出尺寸較小而通道較多(較深)的特征向量圖,最后通過Softmax函數(shù)輸出數(shù)以確定目標(biāo)屬于某一個(gè)物體分類的概率值。目前CNN有四個(gè)主流的模型AlexNet[3]、VGGNet[4]、GoogleNet[5]、ResNet[6]模型。盡管不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),在卷積核大小的選取,卷積核的組合方式,以及向前傳播的連接方法會(huì)有不同。但總體來看其主要的結(jié)構(gòu)還是如圖1所示,通過卷積模塊數(shù)量的堆疊而把網(wǎng)絡(luò)推向更深,通過更深的網(wǎng)絡(luò)學(xué)習(xí)出特征圖。更深網(wǎng)絡(luò)意味著具有更多的參數(shù),需要占用更多的資源,越不利于向受限平臺(tái)的移植。
參考文獻(xiàn)[2]中提出了一種基于全卷積網(wǎng)絡(luò)結(jié)構(gòu)的方法,去掉了池化層、全連接層,相比VGGNet,GoogleNet,ResNet采用了較少的深度,以實(shí)現(xiàn)模型的精簡(jiǎn)。這種思路非常有利于在受限平臺(tái)下的嵌入式移植,有利于在特定工作環(huán)境下的高效運(yùn)行。參考文獻(xiàn)[2]方法包含表1-6中所示的A,B,C,Model Stride-CNN-C,ConvPool-CNN-C network,All-CNN-C一共6種模型。本論文通過python編程實(shí)現(xiàn)了參考論文中所描述的方法,在數(shù)據(jù)集CIFAR-10上訓(xùn)練它們,并在數(shù)據(jù)集CIFAR-10上進(jìn)行測(cè)試,完成圖像分類。隨后嘗試了基于CIFAR-10數(shù)據(jù)集訓(xùn)練的全卷積網(wǎng)絡(luò)模型的遷移學(xué)習(xí),把學(xué)習(xí)到的模型應(yīng)用于CIFAR-100數(shù)據(jù)集的小子集class1和class2,分析結(jié)果,以嘗試在受限平臺(tái)下基于CNN算法的輕量化、專門化研究。
2 ?實(shí)驗(yàn)操作
仿真所使用的系統(tǒng)環(huán)境Intel Xeon E5-2665@ 2.4 GHz x 32 CPU,64 GB內(nèi)存,256 GB SSD,1個(gè)Nvidiz TITAN Xp GPU獨(dú)立顯卡和Ubuntu 16.04 64 bit操作系統(tǒng)。使用pyton3.6.6版本安裝了Anaconda 3-5.2,pip 10.0.1,pytorch 0.4.1.post2,CUDA 9.0.176系統(tǒng)。在上述環(huán)境中完成了以下工作:
1)參考論文中提到的方法,通過python編寫的實(shí)現(xiàn)代碼[7-8],包含A,B,C,Stride-CNN-C,ConvPool-CNN-C network,All-CNN-C一共6種模型
2)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型A
3)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型B
4)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型C
5)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型Strided- CNN-C
6)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模ConvPool- CNN-C
7)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C
8)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C
9)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C
10)在CIFAR-10子數(shù)據(jù)集1上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,固定前面層的參數(shù)只訓(xùn)練全連接層參數(shù)
11)在CIFAR-10子數(shù)據(jù)集2上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,固定前面層的參數(shù)只訓(xùn)練全連接層參數(shù)
12)在CIFAR-10子數(shù)據(jù)集1上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,訓(xùn)練全部層參數(shù)
13)在CIFAR-10子數(shù)據(jù)集2上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,訓(xùn)練全部層參數(shù)
3 ?模型結(jié)構(gòu)
模型A是一個(gè)包含8個(gè)中間層的結(jié)構(gòu)(除去輸入層和輸出層),采用了5*5和3*3的卷積核,采用了3*3的最大值池化操作,采用了邊界填充方法,通道數(shù)由輸入的RGB的3通道,加深至96,192通道,最后減少至10通道輸出,A模型的特點(diǎn)是層數(shù)較少,保留了最大池化層,移除了全連接層用全局池化來代替。模型B和模型A較為類似,比模型A多了兩層1*1卷積運(yùn)算,達(dá)到了10個(gè)中間層,保留了最大池化層,移除了全連接層用全局池化來代替。模型C和模型B較為類似,層數(shù)和結(jié)構(gòu)一致,只是卷積核大小的選擇,以及填充的數(shù)量上有變化。模型Strided-CNN-C在模型C的基礎(chǔ)上移除了最大池化層,微調(diào)了滑動(dòng)步長(zhǎng),保持10個(gè)中間層。 模型ConvPool-CNN-C在模型C的基礎(chǔ)上增加了兩個(gè)3*3的卷積層,整個(gè)模型變得更深達(dá)到了12個(gè)中間層。模型 All-CNN-C是在模型C的基礎(chǔ)上去除了最大池化層,微調(diào)了滑動(dòng)步長(zhǎng),保持有10個(gè)中間層。模型 All-CNN-C形式很簡(jiǎn)潔,沒有池化層和全連接層,整個(gè)模型是一個(gè)全卷積網(wǎng)絡(luò)構(gòu)架。6個(gè)模型全部采用了dropout的正則化方法,減少過擬合。
兩個(gè)遷移學(xué)習(xí)的模型是使用的All-CNN-C的模型(全連接層訓(xùn)練feature extractor和全部參數(shù)訓(xùn)練fine tuning)。所有的模型都是使用的線性整流激活函數(shù)(ReLU),用于文獻(xiàn)[2]中提到的在每一卷積層之后進(jìn)行非線性計(jì)算。Kaiming法向函數(shù)用于初始化每一個(gè)卷積層的參數(shù)。Dropout技術(shù)用于對(duì)模型的正則化,對(duì)輸入圖片用20% dropping 概率,在池化層后面或者被卷積所替代的池化層后面采用50%的dropping概率。2個(gè)1*1卷積層用于代替常用的全連接層,最后一個(gè)卷積層直接用全局平局池化(global average pooling)輸出至每一個(gè)softmax函數(shù)用于分類。
文中的6個(gè)模型相比VGGNet[4]、GoogleNet[5]、ResNet[6]幾個(gè)主流模型,其特點(diǎn)在于層數(shù)較少,卷積核大小相對(duì)固定,也沒有復(fù)雜的跳層連接,舍去了池化層和全連接層。整體結(jié)構(gòu)相對(duì)簡(jiǎn)潔,是一個(gè)由全卷積網(wǎng)絡(luò)構(gòu)成的結(jié)構(gòu)。其中有一個(gè)新穎點(diǎn)是在最開始的輸入層也采用20%dropout正則化方法,減少過擬合。這樣的模型結(jié)構(gòu)利于理解,訓(xùn)練時(shí)間也較端,單個(gè)模型在幾個(gè)小時(shí)之內(nèi)就可以訓(xùn)練完成。
4 ?超參數(shù)設(shè)置及權(quán)重初始化
本文訓(xùn)練模型時(shí)是采用的是隨機(jī)梯度下降(SGD)的方法優(yōu)化模型,設(shè)置了0.9的動(dòng)量,每一個(gè)batch的大小是32個(gè)樣本圖片,損失函數(shù)使用的是Softmax函數(shù)。模型A、B、C、Strided-CNN-C、ConvPool-CNN-C、All-CNN-C的權(quán)重衰減率為0.001,初始學(xué)習(xí)率為0.001,一共迭代350輪,分別在[200, 250, 300]輪時(shí)以0.1的比率減小學(xué)習(xí)率。數(shù)據(jù)集CIFAR-10包含50000張訓(xùn)練樣本圖片,10000張測(cè)試樣本圖片,共計(jì)60000張圖片,10種分類,每種分類包含6000張圖片,圖片為32*32的彩色圖片。本文在使用數(shù)據(jù)集CIFAR-10訓(xùn)練模型時(shí),將50000個(gè)訓(xùn)練樣本拆分成了兩部分,其中49000張樣本圖片用于訓(xùn)練, 余下的1000張樣本圖片用于驗(yàn)證,10000張測(cè)試樣本圖片用于測(cè)試。數(shù)據(jù)集CIFAR-100也包含50000張訓(xùn)練樣本圖片和10000張測(cè)試樣本圖片,但該數(shù)據(jù)集有100種分類,每種分類包含600張圖片,圖片也是32*32的彩色圖片,在本實(shí)驗(yàn)中使用CIFAR-100數(shù)據(jù)集主要是為了進(jìn)行遷移學(xué)習(xí)訓(xùn)練,選用了其中的2個(gè)子數(shù)據(jù)集,分別為class1和class2,每個(gè)子數(shù)據(jù)集中包含5000張訓(xùn)練樣本圖片和1000張測(cè)試樣本圖片,且每個(gè)子數(shù)據(jù)集只包含10種分類。本實(shí)驗(yàn)將5000個(gè)訓(xùn)練樣本分成了兩部分,其中4900個(gè)樣本用于訓(xùn)練, 余下的100個(gè)樣本用于驗(yàn)證,1000個(gè)測(cè)試樣本還是用于測(cè)試。更多的細(xì)節(jié)可以參看表7。
驗(yàn)證是在訓(xùn)練過程中進(jìn)行的,如果在驗(yàn)證時(shí)發(fā)現(xiàn)預(yù)測(cè)準(zhǔn)確率不高,則需要調(diào)整初始學(xué)習(xí)率、權(quán)重衰減率等參數(shù),比如在驗(yàn)證時(shí)發(fā)現(xiàn)準(zhǔn)確率提高得很慢,可以嘗試減小或增大初始學(xué)習(xí)率,學(xué)習(xí)率較大時(shí),會(huì)導(dǎo)致在優(yōu)化權(quán)重及偏重等參數(shù)時(shí),參數(shù)的改變較大,這樣就可能會(huì)出現(xiàn)躍過全局或局部最優(yōu)點(diǎn),從而比較難于收斂;如果學(xué)習(xí)率較小時(shí),會(huì)導(dǎo)致在優(yōu)化權(quán)重及偏重等參數(shù)時(shí),參數(shù)的改變較小,這樣可能會(huì)出現(xiàn)訓(xùn)練得比較慢,需要較長(zhǎng)時(shí)間才會(huì)收斂到較好的全局最優(yōu)點(diǎn)或局部最優(yōu)點(diǎn)。另外在加載數(shù)據(jù)集時(shí),也需要對(duì)數(shù)據(jù)利用訓(xùn)練集數(shù)據(jù)的均值和方差進(jìn)行正則化處理,以使數(shù)據(jù)盡量圍繞中心分布,避免出現(xiàn)狹長(zhǎng)的山谷狀分布,如果出現(xiàn)這種山谷狀分布,以某個(gè)設(shè)定的學(xué)習(xí)率訓(xùn)練模型時(shí),會(huì)導(dǎo)致在窄的方向上很容易躍過全局或局部最優(yōu)點(diǎn),而在狹長(zhǎng)的方向上卻要很久才能達(dá)到全局或局部最優(yōu)點(diǎn),從而使整個(gè)訓(xùn)練過程收斂得很慢,甚至很難達(dá)到預(yù)期效果。測(cè)試是在整個(gè)訓(xùn)練都完成后才進(jìn)行的,用于檢驗(yàn)?zāi)P陀?xùn)練的效果。
在CIFAR-100數(shù)據(jù)集的數(shù)據(jù)集1和數(shù)據(jù)集2子集上實(shí)現(xiàn)和訓(xùn)練了兩種遷移學(xué)習(xí)模型。每個(gè)子集有5000個(gè)訓(xùn)練樣本和1000個(gè)測(cè)試樣本。訓(xùn)練樣本被分成兩部分,一部分是前4900個(gè)樣本用于訓(xùn)練,另一部分是剩下的100個(gè)樣本用于驗(yàn)證。兩種轉(zhuǎn)移學(xué)習(xí)模型都是基于All-CNN-C模型,并且使用訓(xùn)練完成的All-CNN-C模型的參數(shù),來幫助在新的數(shù)據(jù)集上訓(xùn)練。第一個(gè)使用已經(jīng)訓(xùn)練好的All-CNN-C模型作為特征提取器。它凍結(jié)了前8個(gè)卷積層,并在CIFAR-100數(shù)據(jù)集的兩個(gè)子集上重新訓(xùn)練了最后一個(gè)卷積層。第二個(gè)使用已經(jīng)訓(xùn)練好的模型All-CNN- C作為fine tuning。它使用已經(jīng)訓(xùn)練好的參數(shù)作為初始參數(shù),使用CIFAR-100數(shù)據(jù)集子集進(jìn)行新的訓(xùn)練并重新計(jì)算出全部的參數(shù)。由于數(shù)據(jù)集CIFAR-100的子集class1和class2也具有與CIFAR-10相同的10個(gè)類,這意味著兩個(gè)轉(zhuǎn)移學(xué)習(xí)模型可以與全CNN-C共享相同的網(wǎng)絡(luò)結(jié)構(gòu),并且不再需要修改最后的卷積層。
5 ?實(shí)驗(yàn)分析
從表8可以看出,精簡(jiǎn)之后的全卷積網(wǎng)絡(luò)(前面6個(gè)模型),依然達(dá)到了較高的檢測(cè)精度,從CIFAR-100數(shù)據(jù)集的檢測(cè)結(jié)果顯示完全不比一些復(fù)雜的結(jié)構(gòu)差太多。至2014年由VGG開始提出的觀點(diǎn),CNN網(wǎng)絡(luò)越深對(duì)檢測(cè)結(jié)果越有利,在避免梯度消失的情況下,整個(gè)深度學(xué)習(xí)的研究方向是朝著更深網(wǎng)絡(luò)結(jié)構(gòu)前進(jìn)。誠(chéng)然隨著網(wǎng)絡(luò)加深,檢測(cè)的結(jié)果也隨之提升,但是龐大網(wǎng)絡(luò)需要耗費(fèi)大量的計(jì)算資源,訓(xùn)練時(shí)間和檢測(cè)速度回會(huì)變慢,這對(duì)于嵌入式的移植往往是不利的。采用論文[2]的方法,發(fā)現(xiàn)一些精簡(jiǎn)的模型也能帶來不錯(cuò)的效果,為嵌入式移植提供了另外一種思路。雖然筆者實(shí)際仿真后的結(jié)論和論文[2]中的結(jié)論有一些微小的差距,其檢測(cè)精度比參考論文中的結(jié)論稍微低一點(diǎn),但總體很接近,詳情可以參看表8。有可能筆者還需要在超參數(shù)選擇、初始權(quán)重設(shè)置等方面需要多做嘗試和優(yōu)化。 All-CNN-C基于CIFAR-100子數(shù)據(jù)1和子數(shù)據(jù)集2的檢測(cè)結(jié)果優(yōu)于論文[2]中的結(jié)果??紤]到CIFAR-100中子數(shù)據(jù)集1和子數(shù)據(jù)集2相比論文中的全部CIFAR-100數(shù)據(jù)要小得多,所以不太適合直接進(jìn)行比較。
All-CNN-C模型在數(shù)據(jù)集CIFAR-100的子數(shù)據(jù)集1和子數(shù)據(jù)集2上進(jìn)行遷移學(xué)習(xí)訓(xùn)練時(shí),使用了在數(shù)據(jù)集CIFAR-10上訓(xùn)練好的All-CNN-C模型參數(shù)來初始化新的All-CNN-C模型,然后用這個(gè)初始化好的新All-CNN-C模型分別訓(xùn)練了兩個(gè)遷移學(xué)習(xí)模型,第一個(gè)是特征提取器(feature extractor),即固定住除最后一個(gè)分類層外的其它卷積層,只用新數(shù)據(jù)集訓(xùn)練最后的分類層,第二個(gè)是使用新數(shù)據(jù)集調(diào)校(fine tuning)所有層的參數(shù),實(shí)驗(yàn)結(jié)果表面,第二個(gè)調(diào)校模型的準(zhǔn)確率明顯優(yōu)于第一個(gè)特征提取模型??梢妼?duì)于特有應(yīng)用環(huán)境下,使用當(dāng)前環(huán)境特有的數(shù)據(jù)采用fine tuning類型的遷移學(xué)習(xí)的方法進(jìn)行訓(xùn)練,能夠更好的提升當(dāng)前特定環(huán)境下檢測(cè)的準(zhǔn)確性。這十分有利于通用模型向?qū)S泄I(yè)領(lǐng)域應(yīng)用擴(kuò)展,在通用模型基礎(chǔ)上使用 fine tuning遷移學(xué)習(xí),以實(shí)現(xiàn)通用模型向某一領(lǐng)域的更好的擴(kuò)展,提升某一個(gè)特定環(huán)境下檢測(cè)的準(zhǔn)確率。
6 ?結(jié)論
雖然全卷積網(wǎng)絡(luò)結(jié)構(gòu)非常簡(jiǎn)單,但是從實(shí)驗(yàn)結(jié)果來看依然表現(xiàn)得不錯(cuò),在CIFAR-100數(shù)據(jù)集上達(dá)到了很好的精度。池化和全連接也許并不是CNN網(wǎng)絡(luò)中最必須的結(jié)構(gòu)。由此看來CNN未來的發(fā)展的趨勢(shì)有可能在保證精度的情況下模型變得更加簡(jiǎn)單,以便于在不同環(huán)境下的應(yīng)用。通過遷移學(xué)習(xí)的方法能夠避免從零開始訓(xùn)練模型,共享一些權(quán)重參數(shù),也能夠訓(xùn)練特定環(huán)境下的數(shù)據(jù)以提升在這個(gè)環(huán)境下的檢測(cè)的準(zhǔn)確性。在受限平臺(tái)如單片機(jī)、工控機(jī),不通網(wǎng)絡(luò)環(huán)境或者緊急情況需要依賴本地資源計(jì)算的場(chǎng)景,非常適用精簡(jiǎn)模型。更精簡(jiǎn)、更具有針對(duì)性樣本資料訓(xùn)練,也許能夠帶領(lǐng)CNN網(wǎng)絡(luò)進(jìn)入更廣闊的工程應(yīng)用領(lǐng)域。
參考文獻(xiàn)
[1] Murphy J. An Overview of Convolutional Neural Network Architectures for Deep Learning [J]. 2016.
[2] Springenberg J T, Dosovitskiy A, Brox T, et al. Striving for simplicity: The all convolutional net [J]. arXiv preprint arXiv:1412.6806, 2014.
[3] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classi-fication with deep convolutional neural networks[C]//Adv-ances in neural information processing systems. 2012: 1097- 1105.
[4] Simonyan K, Zisserman A. Very deep convolutional net-works for large-scale image recognition [J]. ArXiv preprint arXiv: 1409.1556, 2014.
[5] Szegedy C, Liu W, Jia Y, et al. Going deeper with convo-lutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
[6] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
[7] https://pytorch.org/docs/stable/
[8] https://github.com/pytorch/vision/blob/master/torchvision/datasets/cifar.py