摘要
近年來,深度學習在計算機視覺各個領域中的應用成效顯著,新的深度學習方法和深度神經網絡模型不斷湧現,算法性能被不斷刷新。本文着眼於2016年以來的一些典型網絡和模型,對基於深度學習的計算機視覺研究新進展進行綜述。首先總結了針對圖像分類的主流深度神經網絡模型,包括標準模型及輕量化模型等;然後總結了針對不同計算機視覺領域的主流方法和模型,包括目標檢測、圖像分割和圖像超分辨率等;最後總結了深度神經網絡搜索方法。
關鍵詞
深度學習;目標檢測;圖像分割;超分辨率;計算機視覺
引 言
近20年來,隨着深度學習技術的迅猛發展和圖形處理器(Graphics processing unit, GPU)等硬件計算設備的廣泛普及,深度學習技術幾乎已經應用到計算機視覺的各個領域,如目標檢測、圖像分割、超分辨率重建及人臉識別等,並在圖像搜索、自動駕駛、用戶行為分析、文字識別、虛擬現實和激光雷達等產品中具有不可估量的商業價值和廣闊的應用前景[1]。基於深度學習技術的計算機視覺同時可以對其他學科領域產生深遠的影響,如在計算機圖形學中的動畫仿真和實時渲染技術、材料領域的顯微圖像分析技術、醫學圖像分析處理技術、實時評估師生課堂表現和考場行為的智慧教育、分析運動員比賽表現和技術統計的智能系統等。
深度學習早在1986年就被Dechter[2]引入機器學習領域,2000年Aizenberg等[3]又在機器學習領域引入了人工神經網絡(Artificial neural network,ANN)[4]。深度學習方法由多層組成,用於學習多層次抽象的數據特徵[5]。在人工神經網絡領域中,深度學習又被稱為分層學習[6],是一種通過在不同計算階段精確地分配分數來調節網絡激活的技術[4]。深度學習常常用多種抽象結構來學習複雜的映射關係,如2009年蒙特利爾大學的Bengio教授提出的帶隱藏層的ANN[7]等。深度學習技術可以被視作一種表徵學習,是機器學習的一個分支。
2005年多倫多大學的Hinton教授團隊試圖用圖模型模擬人類的大腦[8],在文獻[9]中提出了一種逐層貪婪算法來預訓練深度信念網,克服了深度網絡難以訓練的弊端,並用自編碼器降低數據維度[10],開啟了深度學習的熱潮,使其被廣泛應用在語音識別、計算機視覺和自然語言處理等領域。2011—2012年,深度學習技術在語音識別領域中最先取得重大突破,Dahl團隊[11]和Hinton團隊[12]先後將識別錯誤率降至20%~30%。在2012年的ImageNet大規模視覺識別挑戰競賽(ImageNet large scale visual recognition challenge,ILSVRC)中,Hinton的學生提出的AlexNet[13]以超過第二名準確率10%的巨大優勢奪得冠軍,深度學習正式進入了爆發期。近年來各大互聯網科技公司,如Google、Microsoft、Facebook、百度、阿里巴巴和騰訊等也爭相投入大規模深度學習系統的研發中。
筆者在2016年發表「深度卷積神經網絡在計算機視覺中的應用研究綜述」[1],總結了2016年之前深度卷積神經網絡在計算機視覺中的研究成果。本文在文獻[1]的基礎上,重點綜述2016年以後基於深度學習的計算機視覺研究新進展。但為了表述的完整和邏輯的嚴謹,本文與文獻[1]內容有少量重合。
1 通用深度神經網絡模型
本文將解決圖像分類任務的神經網絡模型稱為通用網絡,這類模型通常是解決其他視覺任務的基礎模型。1989年AT&T貝爾實驗室的研究員LeCun通過反向傳播算法成功地訓練了卷積神經網絡[14],這項工作代表了20世紀80年代神經網絡的研究成果。1998年LeCun等基於前人的工作提出了LeNet[15],由2個卷積層和3個全連接層組成,因此也被稱為LeNet‑5,其結構如圖1所示。但LeNet‑5的複雜度遠遠無法和今天的深度網絡模型相比,性能也相差懸殊,但在當時取得了和支持向量機相媲美的效果,並被廣泛應用於識別手寫數字,受到了廣泛的關注。
圖1LeNet-5結構示意圖[15]
Fig.1Structure of LeNet-5[15]
在LeNet提出後,很長一段時間卷積神經網絡並不是計算機視覺領域的主流方法,因為LeNet只在小數據集上表現良好,在規模更大、更真實的數據集上表現一般。由於當時未普及高性能的神經網絡加速硬件設備,卷積神經網絡訓練的時間成本和空間開銷太大。因此在2012年AlexNet[13]提出之前,大多數研究者都採用SIFT[16]、HOG[17]和SURF[18]等手工方法提取特徵,並花費大量的精力進行數據整理。
2007年,普林斯頓大學李飛飛團隊基於WordNet的層級結構開始搭建ImageNet數據集[19],通過網絡抓取、人力標註和眾包平台等各種方式,最終在2009年公開。如今ImageNet數據集包含超過14 000 000張帶標籤的高清圖像、超過22 000個類別。從2010年開始舉辦的ILSVRC圖像分類比賽成為計算機視覺領域的重要賽事,用於評估圖像分類算法的準確率。ILSVRC比賽數據集是ImageNet的一個子集,包含1 000類、數百萬張圖片。來自NEC實驗室的林元慶帶領NEC‑UIUC團隊以28.2%的top‑5錯誤率贏得了2010年ILSVRC冠軍。2010和2011這兩年的冠軍方案主要採用HOG[17]、LBP[20‑21]等算法手動提取特徵再輸入到特徵向量機進行分類。
2012年的冠軍AlexNet[13]首次將深度學習技術應用到大規模圖像分類領域,證明了深度學習技術學習到的特徵可以超越手工設計的特徵,開啟了計算機視覺領域中的深度學習熱潮。AlexNet和LeNet結構理念相似,採用5層卷積層和3層全連接層,激活函數用ReLU取代了sigmoid,用dropout方法取代了權重衰減緩解過擬合,結構如圖2所示。AlexNet取得了17.0%的top‑5錯誤率。
圖2AlexNet結構示意圖[13]
Fig.2Structure of AlexNet[13]
2014年的冠軍團隊提出的ZFNet[22]通過反卷積可視化CNN學習到的特徵,取得了11.7%的錯誤率。2015年的冠軍團隊Szegedy等提出的GoogLeNet[23]將錯誤率降到了6.7%。GoogLeNet提出了一種Inception模塊,如圖3所示。這種結構基於網絡中的網絡(Network in network,NiN)的思想[24],有4條分支,通過不同尺寸的卷積層和最大池化層並行提取信息,1×11×1卷積層可以顯著減少參數量,降低模型複雜度。GoogLeNet一共使用9個Inception模塊,和全局平均池化層、卷積層及全連接層串聯。Szegedy提出很多改進的Inception版本,陸續使用了Batch Normalization[25]、Label Smoothing[26]和殘差連接[27]等方法。
圖3Inception模塊示意圖[23]
Fig.3Inception block[23]
2015年的ILSVRC亞軍是由牛津大學視覺幾何團隊提出的VGGNet[28]。VGGNet重複使用了3××3的卷積核和2××2的池化層,將深度網絡加深到16~19層,如圖4所示。
圖4VGG模塊和VGG結構示意圖
Fig.4Block and structure of VGG
2016年,微軟亞洲研究院He等提出的ResNet[29]奪得了ILSVRC冠軍,將top‑5錯誤率降至3.6%。ResNet最深可達152層,以絕對優勢獲得了目標檢測、分類和定位3個賽道的冠軍。該研究提出了殘差模塊的跳接結構,網絡學習殘差映射f(x)−xfx-x,每1個殘差模塊里有2個相同輸出通道的3××3卷積層,每個卷積層後接1個BN(Batch normalization)層和ReLU激活函數。跳接結構可以使數據更快地向前傳播,保證網絡沿着正確的方向深化,準確率可以不斷提高。ResNet的思想產生了深遠的影響,是深度學習領域的一個重要進步,奠定了訓練更深的深度網絡的基礎,其結構如圖5所示。
圖5殘差模塊
Fig.5Residual block
2017年提出的DenseNet[30]和ResNeXt[31]都是受ResNet[29]的啟發。DenseNet的目標不僅僅是學習殘差映射,而且是學習類似泰勒展開的更高階的項。因此DenseNet的跳接結構沒有用加法,而是用了聯結,如圖6所示。
圖6ResNet和DenseNet結構比較
Fig.6Structures of ResNet and DenseNet
ResNeXt[31]則是結合了ResNet[29]和Inception v4[27],採用GoogLeNet分組卷積的思想,在簡化的Inception結構中加入殘差連接,並通過一個超參數「基數」調整ResNeXt模塊中分支的數量。這種簡化的Inception結構不需要人工設計每個分支,而是全部採用相同的拓撲結構,結構如圖7所示。ResNeXt在2016年ILSVRC的分類任務上獲得了亞軍。
圖7ResNet殘差模塊和基數為32的ResNeXt模塊[31]
Fig.7ResNet block and ResNeXt block with cardinality of 32[31]
和ResNeXt同年提出的Xception[32]也是一種基於Inception分組卷積思想的模型。分組卷積的核心思想是將通道拆分成不同大小感受野的子通道,不僅可以提取多尺寸的特徵,還可以減少參數量,降低模型複雜度。Xception模塊可以視為一種極端情況的Inception模塊,它的輸入先經過一個1××1的卷積層後進入多個完全相同的3××3卷積層分支,如圖8所示。
圖8經典及簡化的Inception模塊和Xception模塊[32]
Fig.8Classical and simplified Inception blocks and Xception block[32]
ImageNet數據規模大,圖像類別多,因此在ImageNet上訓練的模型泛化能力較好。如今很多模型都是在ImageNet上預訓練後進行微調,有些模型微調後準確率可以超過只在目標訓練集上訓練模型的20%。受ImageNet自由開放思想的影響,很多科技巨頭也陸續開放了自己的大規模數據集:2018年穀歌發布了Open Image數據集[33],包含了被分為6 000多類的900萬張帶有目標位置信息的圖片;JFT‑300M數據集[34]包含300萬張非精確標註的圖像;DeepMind也公開了Kinetics數據集[35‑36],包含650 000張人體動作的視頻截圖。這些大規模數據集增強了深度學習模型的泛化能力,為全世界深度學習工作者和數據科學家提供了數據支持,保障了深度學習領域的蓬勃發展。
生成模型可以學習數據中隱含的特徵並對數據分布進行建模,它的應用非常廣泛,可以對圖像、文本、語音等不同數據建模真實的分布,然後基於這一分布通過採樣生成新的數據。在深度學習之前就已經有許多生成模型被提出,但由於生成模型往往難以建模,因此科研人員遇到了許多挑戰。變分自編碼器(Variational autoencoder, VAE)[37]是一種當前主流的基於深度學習技術的生成模型,它是對標準自編碼器的一種變形。自編碼器將真實樣本的高級特徵通過編碼器映射到低級特徵,被稱為隱向量(或潛向量),然後又通過解碼器生成相同樣本的高級特徵。標準自編碼器和變分自編碼器的區別在於對隱向量的約束不同。標準自編碼器關注重構損失,即
L(X,X')=∥X−X'∥22ℒX,X'=X-X'22
(1)
式中:XX和X'X'分別為輸入圖像和重構圖像。
變分自編碼器則強迫隱變量服從單位高斯分布,優化如下損失函數
L(X)=Ez~q[lgP(X|z)]−KL(q(z|X)||p(z))ℒX=Ez~q[lgP(X|z)]-KL(q(z|X)||p(z))
(2)
式中:EE表示期望;z為隱變量;q(z|X)q(z|X)表示隱變量的建議分布,即編碼器輸出的隱變量的分布;p(z)p(z)表示標準高斯分布;P(X|z)P(X|z)表示解碼器分布;KLKL表示KL散度。式(2)等號右邊第1項表示重構圖片的精確度,用均方誤差度量;第2項表示圖片的潛變量分布和單位高斯分布之間的差異,用KL散度來度量。為了優化KL散度,變分自編碼器生成1個均值向量和1個標準差向量用於參數重構。此時在隱向量分布中採樣就可以生成新的圖片。自編碼器和變分自編碼器示意圖如圖9、10所示。

圖10變分自編碼器示意圖
Fig.10Variational autoencoder
生成對抗網絡(Generative adversarial net, GAN)[38]是另一種十分常見的基於深度學習技術的生成模型,它包括2個同時進行的組件:生成器和判別器,其結構如圖11所示。生成器從隱向量生成圖像,判別器對真偽圖像進行分類,二者相互對抗,互相促進。
圖11生成對抗網絡示意圖
Fig.11Generative adversarial net
變分自編碼器和生成對抗網絡近年來有了顯著的發展[39]。在計算機視覺領域中,變分自編碼器和生成對抗網絡已經被廣泛應用於圖像翻譯、超分辨率、目標檢測、視頻生成和圖像分割等領域,具有廣闊的研究價值和應用前景。
2 輕量化網絡
隨着網絡層數的加深,各種深度網絡模型的性能變得越來越好,隨之而來的問題是模型巨大的參數量和緩慢的推理速度,因此輕量化網絡的需求變得愈加強烈。輕量化網絡的設計核心是在儘可能保證模型精度的前提下,降低模型的計算複雜度和空間複雜度,從而使得深度神經網絡可以被部署在計算性能和存儲空間有限的嵌入式邊緣設備上,實現從學術界到工業界的躍遷。在分布式訓練中,小模型使得服務器之間通信產生的帶寬負擔也相對較小。目前學術界和工業界設計輕量化的深度網絡模型主要有4種方法:人工設計的輕量化神經網絡、基於神經網絡架構搜索(Neural architecture search,NAS)的自動設計神經網絡技術、卷積神經網絡壓縮和基於AutoML的自動模型壓縮。
2016年由伯克利和斯坦福的研究者提出的SqueezeNet[40]是最早進行深度模型輕量化的工作之一,其結構如圖12所示。SqueezeNet提出了一種Fire模塊用來減少參數量,其結構如圖13所示。它分成Squeeze和Expand兩部分:Squeeze層只由數個1××1卷積層構成;Expand層則包含數個1××1和3××3卷積層。Fire模塊和Inception模塊的結構很相近,二者都使用了1××1和3××3組合的拓撲結構,在使用了不同尺寸的卷積層後進行連結。在網絡結構上,SqueezeNet借鑑了VGG堆疊的形式,在2層卷積層和池化層中間堆疊了8個Fire模塊。最終SqueezeNet在ImageNet上實現了AlexNet級別的精確度,參數減少到原來的1/501/50。通過使用Deep Compression模型壓縮技術,SqueezeNet的參數量僅有50萬個,約為AlexNet的1/5001/500。
圖12SqueezeNet網絡結構示意圖[40]
Fig.12Structure of SqueezeNet[40]
圖13SqueezeNet的Fire 模塊[40]
Fig.13Fire block in SqueezeNet[40]
MobileNet[41]是谷歌於2017年提出的輕量化網絡,核心是通過用深度可分離卷積代替標準的卷積。深度可分離卷積將標準卷積拆成1個深度卷積和1個逐點卷積(也就是1××1卷積),可以將計算量降低至原來的1/8~1/91/8~1/9。標準卷積和深度可分離卷積+BN+ReLU結構如圖14所示。
圖14標準卷積+BN+ReLU網絡和深度可分離卷積+BN+ReLU網絡[41]
Fig.14Standard convolution+BN+ReLU network and depthwise separable convolution+BN+ReLU network[41]
深度可分離卷積的結構成為了很多輕量化網絡設計的參照,這種結構的有效性自從被Xception[32]證明後成為輕量化網絡設計的主流思想。比MobileNet晚2個月由Face++團隊提出的ShuffleNet[42]基於這一思想,使用了Channel Shuffle和分組卷積。分組卷積的思想最早由AlexNet[13]提出,初衷是為了降低單張GPU的占用,將輸入通道分成相同的幾條分支然後連結,從而減少訓練參數量。之後的Inception模塊將這一思想發揚光大,ResNeXt[31]的成功也證明了分組卷積的有效性。由於分組卷積會讓信息的流通不當,ShuffleNet設計了Channel Shuffle,將各組通道均分並進行混洗,然後依次重新構成特徵圖,示意圖如圖15所示。
圖15Channel Shuffle示意圖[42]
Fig.15Diagrammatic sketch of Channel Shuffle[42]
圖15中,Channel Shuffle後第2個組卷積GConv2的輸入信息來自各個通道,圖15(c,b)達到了一樣的效果。ShuffleNet模塊的設計借鑑了ResNet bottleneck的結構,如圖16所示。
ShuffleNet模塊摒棄了Pointwise卷積,因為對於輸入維度較高的小型網絡,1××1卷積的開銷巨大。例如在ResNeXt模塊中,1××1卷積占據了93.4%的計算量。在網絡拓撲上,SqueezeNet和MobileNet都採用了VGG(Visual geometry group)的堆疊結構,而ShuffleNet採用了ResNet的跳接結構。
2018年,MobileNet和ShuffleNet又相繼提出了改進版本。MobileNet v2[43]結構如圖17所示,採用了效率更高的殘差結構,提出了一種逆殘差模塊,並將MobileNet v1模塊的最後一個ReLU6層改成線性層。ShuffleNet v2[44]用更直接的運算速度評估模型,摒棄了之前如每秒浮點運算次數(FLOPS)等間接的指標。結構上ShuffleNet v2採用了一種Channel Split操作,將輸入的特徵圖分到2個分支里,最後通過連結和Channel Shuffle合併分支並輸出。ShuffleNet v1和ShuffleNet v2結構如圖18所示。
圖17MobileNet v2模塊[43]
Fig.17MobileNet v2 block[43]
圖18ShuffleNet v1和ShuffleNet v2結構[44]
Fig.18Structures of ShuffleNet v1 and ShuffleNet v2[44]
2020年華為諾亞方舟實驗室的團隊提出了GhostNet[45],如圖19所示,可以用更少的參數量提取更多的特徵圖。首先對輸入特徵圖進行卷積操作,然後進行一系列簡單的線性操作生成特徵圖,從而在實現了傳統卷積層效果的同時降低了參數量和計算量。該團隊認為性能較好的主流卷積神經網絡如ResNet‑50通常存在大量冗餘的特徵圖,正是這些特徵圖保證了網絡對數據深刻的理解。Ghost模塊用更小的代價模擬了傳統卷積層的效果。
圖19卷積層和Ghost模塊[45]
Fig.19Convolutional layer and Ghost module[45]
人工設計的輕量化網絡MobileNet系列[41,43]和ShuffleNet系列[42,44]的基本思想主要是通過分離卷積操作減少運算量,再採用殘差跳接結構和Channel Shuffle等混合通道的操作促進分支間的交流,提高信息利用率。隨着模型規模的擴大,硬件資源變得更加稀缺,在保證精度的前提下壓縮並加速模型將會是經久不衰的熱門研究方向,也是信息化時代發展的必經之路。近年來大量的關於模型壓縮和結構優化的工作不斷湧現,如網絡剪枝[46]、張量分解[47‑48]和知識遷移[49]等。輕量化模型的發展有助於深度學習技術的推廣和應用,推動深度學習技術的產業化發展。
3 面向特定任務的深度網絡模型
計算機視覺任務眾多,深度學習最開始在圖像分類實現突破,當前深度學習幾乎深入到了計算機視覺的各個領域。本節將針對目標檢測、圖像分割、圖像超分辨率和神經架構搜索等其他計算機視覺任務簡要總結深度學習方法。
3.1 目標檢測
目標檢測任務作為計算機視覺的基本任務之一,包含物體的分類、定位和檢測。近年來隨着深度學習技術的發展,目標檢測算法已經從基於手工特徵的HOG[17]、SIFT[16]及LBP[20‑21]等傳統算法轉向了基於深度神經網絡的機器學習技術。自2014年Girshick等提出了R‑CNN[50]模型以來,目標檢測就成為了計算機視覺最受人關注的領域之一。在R‑CNN之後,Girshick團隊相繼提出了Fast R‑CNN[51]、Faster R‑CNN[52]等一系列模型,這些模型均將目標檢測問題歸結為如何提出可能包含目標的候選區域和如何對這些區域分類兩個階段,因此這類模型也被稱作兩階段模型。
受當時性能最好的圖像分類網絡,如AlexNet[13]和VGG[28]等的影響,R‑CNN系列模型的網絡結構由2個子網組成:第1個子網用普通分類網絡的卷積層提取共享特徵;第2個子網的全連接層進行感興趣區域(Region of interest,RoI)的預測和回歸,中間用一個RoI池化層連接。這些網絡的結構在文獻[1]中已做介紹,這裡不再贅述。在ResNet[29]、GoogLeNet[23]等性能更強的分類網絡出現後,這種全卷積網絡結構也被應用到了目標檢測任務上。然而,由於卷積層並不能有針對性地保留位置信息,這種全卷積結構的檢測精度遠低於它的分類精度。R‑FCN[53]提出了一種位置敏感分數圖來增強網絡對於位置信息的表達能力,提高網絡的檢測精度,其結構如圖20所示。R‑FCN[53]在PASCAL VOC 2007數據集上平均精度均值(mean Average precision, mAP)達到了83.6%,單張圖片的推理速度達到170 ms。
圖20R-FCN結構示意圖[53]
Fig.20Structure of R-FCN[53]
如何準確識別不同尺寸的物體是目標檢測任務的難點之一。圖21(a)中的方法通過對不同尺寸的圖片提取不同尺度特徵來增強不同尺度特徵的語義信息,但時間和計算成本太高。圖21(b)中的單一特徵圖方法即為SPPnet[54]、Fast R‑CNN[51]和Faster R‑CNN[52]使用的方法,即在最後一層的特徵圖上進行預測。儘管速度較快,但包含的語義信息很少,不能準確地預測目標的位置。圖21(c)是SSD[55]採用的多尺度融合方法,從網絡的不同層抽取不同尺度的特徵分別進行預測,這種方法不需要額外的計算,但不能很好地提取小目標敏感的淺層高分辨率特徵。
圖21多尺度檢測的常見結構[56]
Fig.21Common structures of multiscale detection[56]
特徵金字塔網絡(Feature Pyramid network, FPN)[56]借鑑了ResNet跳接的思想,結合了層間特徵融合與多分辨率預測,其結構如圖22所示。文獻[56]將FPN用於Faster R‑CNN的區域候選網絡(Region proposal network, RPN),在每層金字塔後面接一個RPN頭。由於輸入了多尺度的特徵,因此不需要生成多尺度的錨框,只需要在每個尺度上設置不同的寬高比,並共享參數。以ResNet‑101為骨幹網絡的Faster R‑CNN+FPN在COCO test‑dev上AP@0.5達到了59.1%,超過不用FPN的Faster R‑CNN 3.4%。實驗證明對於基於區域的目標檢測器,該特徵金字塔結構的特徵提取效果優於單尺度的特徵提取效果。
圖22FPN結構示意圖[56]
Fig.22Structure of FPN[56]
YOLO[57]是單階段模型的代表,它沒有提出候選區域的過程,而是直接將提出候選區域和分類統一為一個邊界框回歸的問題,將整張圖片作為網絡的輸入,在輸出層對邊界框位置信息和類別進行回歸,實現了端到端的學習過程,其示意圖如圖23所示。它首先將圖片縮放並劃分為等分的網格,然後在每張圖片上運行單獨的卷積網絡,最後用非極大值抑制得到最後的預測框。損失函數被分為3部分:坐標誤差、物體誤差和類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函數中添加了權重並將長寬取根號。
圖23YOLO示意圖[57]
Fig.23Pipeline of YOLO[57]
YOLO的網絡結構借鑑了GoogLeNet的結構,用24層卷積層後接2層全連接層,將Inception模塊替換為類似網中網[24]中的1××1卷積層後接3××3卷積層,並在ImageNet上預訓練,其結構如圖24所示。在PASCAL VOC 07+12數據集上,YOLO在達到最高幀率155 幀/s時mAP可以達到52.7%,在mAP最高達到63.4%時幀率可達45幀/s。YOLO在保證了準確率的同時擁有極高的推理速度,遠超當時的兩階段模型。
圖24YOLO網絡結構圖[57]
Fig.24Structure of YOLO[57]
YOLOv1的訓練流程簡單,背景誤檢率低,但由於只選擇交並比最高的邊界框作為輸出,每個格子最多只能預測出一個物體。當每個格子包含多個物體時,YOLOv1隻能檢測出1個目標。YOLOv2[58]在YOLOv1的基礎上,骨幹網絡採用了以VGG16為基礎的Darknet19,使用了批量歸一化緩解了梯度爆炸和消失的問題。YOLOv2借鑑了Faster R‑CNN錨框的設計,將YOLOv1的全連接層替換為錨框預測邊界框的位置,解耦了位置和類別的回歸計算。YOLOv2[58]同時採用了多尺度訓練,提升了模型的健壯性。後續的YOLOv3[59]骨幹網絡採用了Darknet53,使用了ResNet的跳接結構,並引入了FPN,一定程度上解決了YOLOv2小目標檢測精度較差的問題。YOLOv3在分辨率320像素×像素×320 像素的輸入上以22 ms的推理時間使得mAP達到28.2%,和當時最好的單階段檢測器SSD達到相同精度,但擁有3倍的推理速度。YOLOv3以51 ms的推理時間使得AP@0.5達到57.9%,相較於以198 ms的推理時間AP@0.5達到57.5%的RetinaNet[60],精度相近但YOLOv3的速度是RetinaNet[60]的近4倍。
SSD[55]是最早達到兩階段模型精度的單階段模型之一,對後期的單階段工作影響很深,其結構如圖25所示。為解決YOLOv1小目標檢測精度低的問題,基於VGG不同的卷積段採用了多尺度的特徵圖,並在每個網格點生成更多的不同大小和長寬比的預測框。SSD在PASCAL VOC 2007數據集上,對於300 像素××300 像素的輸入mAP達到了74.3%,512 像素××512 像素的輸入mAP達到了76.9%。在COCO trainval35k數據集上預訓練再在PASCAL VOC 07+12上微調後,SSD最終mAP達到了81.6%。
圖25SSD網絡結構圖[55]
Fig.25Structure of SSD[55]
和兩階段模型相比,單階段模型只需要進行一次類別預測和位置回歸,因此卷積運算的共享程度更高,擁有更快的速度和更小的內存占用。最新的單階段模型如FCOS[61]、VFNet[62]等工作已經可以達到接近兩階段模型精度,同時擁有更好的實時性,更適合在移動端部署。
目標檢測技術從傳統的手工特徵算法到如今的深度學習算法,精度越來越高的同時速度也越來越快。在過去幾年中,工業界已經出現了成熟的基於目標檢測技術的應用,如人臉檢測識別、行人檢測、交通信號檢測、文本檢測和遙感目標檢測等。這些應用不僅便利了人們的生活,也為學術界提供了啟發和指導。
在未來的研究工作中,小目標檢測和視頻目標檢測依舊是研究的熱點問題。同時,為了加快推理速度並在移動端嵌入式設備部署模型,目標檢測的輕量化一直備受工業界的關注。在採集到多模態的信息(如文字、圖像、點雲等)後,如何通過更好的信息融合來提高檢測性能也是未來的一個重點研究方向。
3.2 圖像分割
本文的圖像分割指圖像語義分割任務,其要求將整張圖片的所有像素分類為預先定義的多個類別之一。由於是像素級的稠密分類任務,相比圖像分類和目標檢測更加困難,是圖像處理和計算機視覺中的一個重要課題,在場景理解、醫學圖像分析、機器人感知及視頻監控等領域有着廣泛的應用。近年來,由於深度學習技術在計算機視覺領域應用中取得的成功,人們也進行了大量的工作研究基於深度學習模型的圖像分割方法。
U‑Net[63]和全卷積網絡(Fully convolutional network, FCN)[64]都是在2015年提出的網絡,啟發了後來的很多圖像分割和目標檢測的工作。FCN已在文獻[1]中進行介紹,此處不再贅述。U‑Net最初是一個用於醫學圖像分割的卷積神經網絡,分別贏得了ISBI 2015細胞追蹤挑戰賽和齲齒檢測挑戰賽的冠軍。U‑Net可視為一個編碼器‑解碼器結構,編碼器有4個子模塊,每個子模塊通過一個最大池化層下採樣,解碼器再通過上採樣的4個子模塊增大分辨率直到與輸入圖像的分辨率保持一致,其結構如圖26所示。由於卷積採用的是Valid模式,實際輸出圖像的分辨率低於輸入圖像的分辨率。U‑Net網絡同時還採取了跳接結構(即圖26中的灰色箭頭),將上採樣結果與編碼器中具有相同分辨率的子模塊的輸出進行連接,作為解碼器中下一個子模塊的輸入。
圖26U-Net結構示意圖[63]
Fig.26Structure of U-Net[63]
由於人體結構相對固定,分割目標在圖像內的分布很有規律,醫學圖像大多語義明確,需要低分辨率的信息用於目標物體的識別。同時醫學圖像形態複雜,往往要求高精度的分割,需要高分辨率的信息用於精準分割。U‑Net融合了高低分辨率的信息,因此對醫學圖像分割的效果很好。


深度卷積神經網絡中池化層和上採樣層的設計對於圖像分割的設計有致命缺陷。因為參數不可學習,而且池化會導致像素的空間信息和內部的數據結構丟失,上採樣也無法重建小物體信息,因此圖像分割的精度一直處於瓶頸。針對這一問題,2016年的DeepLab[66]又提出了一種空洞卷積,避免了池化層帶來的信息損失,並使用全連接的條件隨機場(Conditional random field, CRF)優化分割精度,其結構如圖29所示。
圖29空洞卷積示意圖(卷積核尺寸為3,輸入步長為2,輸出步長為1)[66]
Fig.29Dilated convolution (kernel size=3, input stride=2, output stride=1)[66]
空洞卷積可以在避免使用池化層損失信息的情況下增大感受野,同時不增加參數數量。作為後處理,DeepLabv1將每個像素點作為節點,像素之間的關係作為節點間的連線,構成一個條件隨機場,再用一個二元勢函數描述像素點之間的關係,將相似像素分配相同的標籤,從而在分割邊界取得良好的效果。DeepLabv1速度很快,幀率達到8 幀/s,在PASCAL VOC 2012數據集上平均交並比(Mean intersection over union,mIoU)達到了71.6%,它的「深度卷積神經網絡+條件隨機場」結構對之後很多工作產生了深遠的影響。
2017年劍橋大學提出的SegNet[67]的主要動機是針對道路和室內場景理解,設計一個像素級別的圖像分割網絡,同時保證內存和計算時間方面上的高效。SegNet採用「編碼器‑解碼器」的全卷積結構,編碼網絡採用VGG16[28]的卷積層,解碼器從相應的編碼器獲取最大池化索引後上採樣,產生稀疏特徵映射。復用池化索引減少了端到端訓練的參數量,並改善了邊界的劃分。SegNet在道路場景分割數據集CamVid 11 Road Class Segmentation[68]上mIoU達到60.1%, 邊界F1得分(Boundary F1 score,BF) 達到46.84%;在室內場景分割數據集SUN RGB‑D Indoor Scenes[69]上幾乎所有當時的深層網絡結構都表現不佳,但SegNet依然在絕大多數的指標上超過了其他網絡。SegNet結構如圖30所示。
圖30SegNet結構示意圖[67]
Fig.30Structure of SegNet[67]
2017年香港中文大學提出了PSPNet[70],該網絡採用金字塔池化模塊,用大小為1××1、2××2、3××3和6××6的4層金字塔分別提取不同尺度的信息,然後通過雙線性插值恢復長寬,把不同層的特徵連結起來得到全局信息,這種結構比全局池化更具有代表性,融合了多尺度的信息。PSPNet在PASCAL VOC 2012數據集上mIoU達到了82.6%,在MS COCO數據集上預訓練後達到85.4%。PSPNet結構如圖31所示。
圖31PSPNet結構示意圖[70]
Fig.31Structure of PSPNet[70]
DeepLabv2[71]在DeepLabv1[66]和PSPNet[70]的基礎上用ResNet101代替VGG16,並提出了一種帶有空洞卷積的空間金字塔池化模塊(Atrous spatial Pyramid pooling, ASPP),用多尺度的方法以不同的速率並行地提取特徵圖信息,極大地增加了感受野,其結構如圖32所示。DeepLabv2使用不同的學習率,相比DeepLabv1, mIoU達到了79.7%,提升了8.1%,但二者都使用了全連接條件隨機場模塊。
圖32空洞空間金字塔池化示意圖[71]
Fig.32Structure of ASPP[71]
DeepLabv3[72]重新審視了空洞卷積的作用,將其級聯模塊應用在ResNet最後一個模塊之後。不使用空洞卷積和使用空洞卷積的級聯模塊示意圖如圖33所示。
圖33不使用和使用空洞卷積的級聯模塊示意圖[72]
Fig.33Structures of cascade modules without and with atrous convolution[72]
DeepLabv3改進了ASPP模塊,應用BN層,並將DeepLabv2中Rate=24的3××3卷積模塊替換為1××1卷積模塊和全局池化模塊,克服了像素點相對距離增大時有效權重減少的問題。DeepLabv3去掉了後處理的DenseCRF模塊,並最終在PASCAL VOC 2012數據集上mIoU達到了86.9%,相較DeepLabv2進一步提升了7.2%。改進的ASPP模塊示意圖如圖34所示。
圖34改進的ASPP模塊示意圖[72]
Fig.34Improved ASPP module[72]
DeepLabv3+[73]相對於DeepLabv3,採用了「編碼器‑解碼器」的結構,編碼器中包含豐富的語義信息,解碼器則輸出圖像的邊緣細節信息。空間金字塔池化模塊,「編碼器‑解碼器」結構和帶有空洞卷積的「編碼器‑解碼器」結構如圖35所示,DeepLabv3+結構如圖36所示。
圖35DeepLabv3+使用了空間金字塔池化模塊,「編碼器-解碼器」結構和空洞卷積[73]
Fig.35DeepLabv3+ employing spatial Pyramid pooling, encoder-decoder and atrous convolution[73]
圖36DeepLabv3+示意圖[73]
Fig.36Structure of DeepLabv3+[73]
DeepLabv3+將之前的骨幹網絡ResNet101替換為Xception,並結合深度可分離卷積的思想提出了空洞深度可分離卷積,在減少參數量的同時進一步增大感受野。和DeepLabv3一樣,DeepLabv3+也沒有使用DenseCRF後處理模塊。最終DeepLabv3+在PASCAL VOC 2012數據集上mIoU達到了89.0%,相較DeepLabv3提升了2.1%。深度卷積、逐點卷積和空洞深度可分離卷積示意圖如圖37所示。
圖37空洞深度可分離卷積示意圖[73]
Fig.37Structure of atrous depthwise separable convolution[73]
2019年曠視科技提出了一種名為DFANet[74]的高效CNN架構,通過子網和子級聯的方式聚合多尺度特徵,極大地減少了參數量,其結構如圖38所示。DFANet採用「編碼器‑解碼器」結構,解碼器的骨幹網絡採用3個改良的輕量級Xception融合結構,編碼器則是一個高效的上採樣模塊,用於融合高層和底層的語義信息。在CityScapes[75]測試數據集上,對於1 024像素××1 024像素的輸入圖片,DFANet在一塊NVIDIA Titan X上mIoU達到71.3%,FLOPS僅為3.4××109,幀率達到100 幀/s;在CamVid[68]測試數據集上,對於960像素××720像素的輸入圖片,DFANet在8 ms的計算時間內mIoU達到64.7%,幀率達到120 幀/s。
圖38DFANet結構示意圖[74]
Fig.38Structure of DFANet[74]
2020年筆者提出一種輕量級網絡LRNNet[76]。其中分解卷積塊FCB(圖39(a))利用1××3和3××1的空間分解卷積處理短距離特徵,並利用空洞深度分離卷積處理遠距離特徵,實現了參數量和計算量更少、深度更快、準確率更高的特徵提取;高效的簡化Non‑Local模塊LRN(圖39(b))利用區域主奇異向量作為Non‑Local模塊的Key和Value,在降低Non‑Local模塊的計算量和內存占用的同時,保持其處理遠距離關聯的效果。在Cityscapes[75]測試集上,LRNNet的mIoU達到了72.2%,而網絡僅有68萬個參數,並在1張GTX 1080Ti卡上達到71 幀/s的推理速度;在CamVid[68]測試集上,對於360像素××480像素的輸入,LRNNet的mIoU達到了69.2%,參數量也為68萬個,在1張GTX 1080Ti卡上幀率達到76.5 幀/s。
圖39LRNNet中的FCB和LRN模塊[76]
Fig.39FCB and LRN modules in LRNNet[76]
圖像分割是像素級的稠密分類任務,在搜集數據集時需要真值標註每個像素,但由於這個要求極其耗時且非常昂貴,許多研究人員開始用弱監督學習和半監督學習的方法訓練網絡。常見的弱標註有圖像類別標籤、邊界框、顯著圖和類激活圖(Class activation map,CAM)等。
2015年穀歌和UCLA團隊的工作[77]是最早開始研究基於弱監督學習技術的圖像分割算法之一。該工作基於DeepLab模型[66],研究了弱標註(類別標籤、邊界框等)與少量強標註(像素級標籤)和大量弱標註混合對DCNN圖像分割模型的影響,並在半監督和弱監督的設定下提出了一種期望最大化方法(Expectation‑maximization,EM)。這項工作證實了僅使用圖像級標籤的弱標註存在性能差距,而在半監督設定下使用少量強標註和大量弱標註混合可以獲得優越的性能,在MS COCO數據集上使用5 000張強標註圖片和118 287張弱標註圖片mIoU超過70%。
儘管類別標籤的獲取成本很低,但這類標註信息僅僅標明某類目標存在,不能表示出目標的位置和形狀,這往往會導致分割效果不夠理想,存在邊界模糊等問題。當出現目標遮擋的情況時,僅使用圖像級標籤獲取完整的目標邊界會更加困難。為了補充監督信息中缺少的位置和形狀信息,使用圖像的顯著性信息是一種常見的手段。文獻[78]提出了一個僅使用類別標籤和顯著圖信息的圖像分割模型,其結構如圖40所示。該模型將圖像的顯著圖定義為一個人最有可能先看到的目標的二進制掩膜,用預訓練的目標檢測網絡提取出顯著性區域,通過種子信息確定目標的類別和位置。該工作同樣基於DeepLab[66]的網絡結構,提出的模型測試精度mIoU達到56.7%,實現了全監督模型80%的性能。
圖40高層信息指導的圖像分割網絡結構圖[78]
Fig.40High-level guided segmentation architecture[78]
定位線索的另一個流行的選擇是使用CAM。主流的弱監督方法通過將CAM作為分割種子,突出局部的顯著部分,然後逐漸生長直到覆蓋整個目標區域,從而補充了缺失的目標形狀信息。2018年提出的AffinityNet[79]結合了類別標籤和CAM信息,首先計算圖像的CAM作為監督源訓練AffinityNet,通過構建圖像的語義相似度矩陣,結合隨機遊走進行擴散,不斷獎勵或懲罰從而修改CAM,最終恢復出目標的形狀。AffinityNet流程如圖41所示。
圖41AffinityNet流程示意圖[79]
Fig.41Pipeline of AffinityNet[79]
深度學習技術在圖像分割領域取得了顯著成就,但仍然面臨不小的挑戰。當前的大規模數據集如MS COCO[80]和PASCAL VOC[81]並不能滿足工業界的需求,而具有多目標和重疊目標的數據集對於圖像分割而言更具有應用價值,這可以使得圖像分割技術更好地處理密集目標場景和現實生活中常見的重疊目標場景。基於小樣本學習技術的圖像分割算法同樣具有廣闊的前景,因為在許多應用領域,例如醫學圖像分析領域,獲取學習樣本的成本較高,難度也較大。圖像分割技術的實時性也是一個難題,目前大多數模型並不能達到實時性的要求,但在很多應用場景下,速度的重要性遠高於精度。
3.3 超分辨率
超分辨率技術是計算機視覺領域提高圖像和視頻分辨率的重要處理技術之一,研究如何將低分辨率的圖像或圖像序列恢復出具有更多細節信息的高分辨率圖像或圖像序列,在高清電視、監控視頻、醫學成像、遙感衛星成像、顯微成像及老舊圖像視頻修復等領域有着重要的應用價值。傳統上超分辨率屬於底層視覺領域,但本文敘述順序從圖像分類、目標檢測、圖像分割到超分辨率,輸出逐級複雜,依次為圖像標籤、目標位置和類別標籤、與輸入同大小的分割圖、比輸入圖像大的高分辨率圖像等。與前幾個任務不同,超分辨率需要生成和恢復輸入中不存在的信息。
超分辨率的概念最早出現在光學領域,1952年Francia第一次提出了用於提高光學分辨率的超分辨率的概念[82]。1964年前後,Harris[83]和Goodman[84]分別提出了後來稱為Harris‑Goodman頻譜外推的方法,這被認為是最早的圖像復原方法,但這種技術只能在一些理想情況下進行仿真,實際效果不太理想,因此並未得到推廣。1984年Tsai等[85]首次利用單幅低分辨率圖像的頻域信息重建出高分辨率圖像後,超分辨率重建技術才得到廣泛的認可和應用,如今它已經成為圖像增強和計算機視覺領域中最重要的研究方向之一。
傳統的超分辨率方法包括基於預測、基於邊緣、基於統計、基於塊和基於稀疏表示等方法。根據輸入輸出的不同,超分辨率問題可以分為基於重建的超分辨率問題、視頻超分辨率問題和單幅圖像超分辨率問題。根據是否依賴訓練樣本,超分辨率問題則又可以分為增強邊緣的超分辨率問題(無訓練樣本) 和基於學習的超分辨率問題 (有訓練樣本)。
最簡單、應用最廣泛的經典單幅圖像超分辨率方法是插值法,包括Lanczos、Bicubic、Bilinear和Nearest等,這種方法操作簡單、實施性好,但並不能恢復出清晰的邊緣和細節信息,因此很多其他用於增強細節的傳統算法相繼被提出。文獻[86]提出了基於塊的方法,也被稱為基於鄰域嵌入的方法。這種方法使用流形學習中的局部線性嵌入,假設高、低維度中圖像塊的線性關係可以保持,用低分辨率圖像的特徵(梯度等)重構高分辨率圖像。文獻[87‑88]提出了基於稀疏表示的方法,也被成為字典學習。這種方法將低分辨率圖像和高分辨率圖像表示為字典DD與原子αα,高分辨率圖像可表示為x=Dhighx=Dhigh,低分辨率圖像為y=Dlowy=Dlow,假設不同分辨率的同一幅圖像的原子αα,在訓練完字典DhighDhigh和DlowDlow後,用低分辨率的圖像得到αα,隨後得到重構的高清圖像。基於學習的超分辨率技術[89]如圖42所示,上、下採樣方法示意圖[90]如圖43所示。
圖42基於學習的超分辨率技術[89]
Fig.42Learning-based super-resolution[89]
圖43超分辨率問題中的上採樣和下採樣方法[90]
Fig.43Upsampling and downsampling in super-resolution[90]
經典的超分辨率方法要求研究者具備深厚的相關領域先驗知識。隨着深度學習技術的興起,用神經網絡方法重建的圖像質量超過了傳統方法,速度也更快,這使得大批學者轉向對深度學習技術在超分辨率領域的應用研究。香港中文大學Dong等於2015年首次將卷積神經網絡用於單幅圖像超分辨率重建,提出了SRCNN[91],該網絡僅僅用了3個卷積層,利用傳統稀疏編碼,依次進行圖像塊提取、非線性映射和圖像重建,實現了從低分辨率圖像到高分辨率圖像的端到端映射,流程圖如圖44所示。SRCNN激活函數採用ReLU,損失函數採用均方誤差。
圖44SRCNN流程圖[91]
Fig.44Pipeline of SRCNN[91]
2016年Dong團隊在之前SRCNN的基礎上提出了更快、實時性更好的FSRCNN[92],在原始網絡的最後加入反卷積層放大尺寸,摒棄了Bicubic插值方法,使用了更多的映射層和更小的卷積核,改變了特徵維度,並共享其中的映射層,FSRCNN改進示意圖如圖45所示。訓練時FSRCNN只需要微調最後的反卷積層,因此訓練速度很快。FSRCNN激活函數採用PReLU,損失函數仍採用均方誤差。
圖45FSRCNN對SRCNN的改進[92]
Fig.45FSRCNN’s improvement on SRCNN[92]
2016年提出的ESPCN[93]在SRCNN基礎上進一步提高了速度,其結構如圖46所示。該工作提出了一種亞像素卷積層,可以直接在低分辨率圖像上提取特徵,從而避免在高分辨率圖像上進行卷積,降低了計算複雜度。ESPCN激活函數採用tanh,損失函數仍然採用均方誤差。
圖46ESPCN示意圖[93]
Fig.46Structure of ESPCN[93]
SRCNN的網絡輸入是經過上採樣的低分辨率圖像,計算複雜度很高,因此FSRCNN和ESPCN都選擇在網絡末端上採樣以降低計算複雜度。但如果在上採樣後沒有足夠深的網絡提取特徵,圖像信息就會損失。為了更好地使用更深的網絡,很多工作引入了殘差網絡。2016年首爾國立大學Kim等提出的VDSR[94]是第一個引入全局殘差的模型,其結構如圖47所示。Kim等指出,高低分辨率圖像攜帶的低頻信息很相近,因此事實上網絡只需要學習高頻信息之間的殘差即可。VSDR思想啟發了很多之後利用殘差結構的工作。
圖47VSDR網絡結構圖[94]
Fig.47Structure of VSDR[94]
CARN[95]是NTIRE2018超分辨率挑戰賽的冠軍方案,該方案使用全局和局部級聯,將ResNet的殘差塊替換成級聯模塊和1×11×1卷積模塊組合,並提出了一種殘差‑E模塊,可以提升CARN的效率。CARN的改進如圖48所示,其局部級聯模塊如圖49所示。
圖48CARN對於ResNet的改進[95]
Fig.48Improvement of CARN based on ResNet[95]
圖49殘差-E模塊與其他常見模塊的對比[95]
Fig.49Comparison between residual-E block and other common blocks[95]
EDVR[96]是商湯科技2019年提出的一種用於視頻修復的通用框架,在NITRE 2019 的4個賽道中均以較大的優勢獲得了冠軍。視頻修復任務包括超分辨率、去噪聲等任務,早期的研究者們簡單地將視頻修復視作圖像修復的延伸,幀間冗餘的時間信息並沒能被充分利用。EDVR通過增強的可變形卷積網絡實現視頻的修復和增強,適用於各種視頻修復任務,如超分辨率、去模糊等任務。EDVR框架示意圖如圖50所示。
圖50EVDR框架示意圖[96]
Fig.50Pipeline of EDVR[96]
EDVR提出了PCD(Pyramid, cascading and deformable)對齊模塊和TSA(Temporal and spatial attention)融合模塊,其結構如圖51所示。PCD模塊受TDAN[97]的啟發,用一種金字塔結構從低尺度到高尺度使用可變形卷積將每個相鄰幀與參考幀對齊。TSA模塊則用於在多個對齊的特徵層之間融合信息,通過計算每個相鄰幀與參考幀特徵之間的元素相關性引入時間注意力機制,相關係數代表每個位置上相鄰幀特徵信息量的大小。在融合時間特徵後進一步應用空間注意力機制,從而更有效地利用跨通道空間信息。
圖51EVDR中的PCD模塊和 TSA模塊[96]
Fig.51PCD and TSA modules in EVDR[96]
三維卷積是一種常見的利用視頻時空間信息的方法,但這種方法往往複雜度較高,限制了模型的深度。2019年提出的FSTRN[98]通過使用一種快速時空間殘差模塊將三維卷積用於視頻超分辨率任務,將每個三維濾波器分解為2個維數更低的3位濾波器乘積,從而降低複雜度,實現更深的網絡和更好的性能。此外,FSTRN還提出了一種跨空間殘差學習方法,直接連接低分辨率空間和高分辨率空間,減輕了特徵融合和上採樣部分的計算負擔。FSTRN結構如圖52所示。
圖52FSTRN結構示意圖[98]
Fig.52Pipeline of FSTRN[98]
隨着深度學習技術的興起,近20年來超分辨率領域發展迅速,出現了很多具有優異性能的模型,但距離實際應用還有一定的距離。圖像配准技術對於多幀圖像超分辨率的重建效果至關重要,目前還沒有成熟的解決方案。另一個難點則是大量未知的密集計算限制了視頻超分辨率重建的計算效率,難以達到實時性的要求。超分辨率算法的魯棒性和可遷移性仍然是下階段的研究熱點,現有的評價標準,如均方誤差、峰值噪聲比、結構相似性等還不能客觀地衡量重建效果,有時甚至會出現和人眼視覺相違背的情況。
4 神經架構搜索
深度學習技術在圖像分類、語音識別及機器翻譯等諸多領域上取得了舉世矚目的成功,可以自動地學習數據信息,讓研究人員擺脫特徵工程,這離不開GoogLeNet、ResNet等經典的深度神經網絡模型。然而一個具有優異性能的網絡結構往往需要花費研究人員大量的時間資金投入,同時需要具備紮實的專業知識和豐富的經驗。因此人們開始研究讓機器代替人類,根據數據集和算法自動設計網絡結構。神經架構搜索技術(Neural architecture search,NAS)設計的模型如今已經在很多任務上取得了超過人工設計深度模型的性能,如圖像分割領域的Auto‑DeepLab[99],目標檢測領域的NAS‑FPN[100]。神經架構搜索技術是機器學習自動化(Automated machine learning,AutoML)的子領域,代表了機器學習未來發展的方向。神經架構搜索技術的流程如圖53所示,首先從一個搜索空間中通過某種策略搜索候選網絡架構,然後對其精度、速度等指標進行評估,通過迭代不斷優化直到找到最優的網絡架構。
圖53神經架構搜索流程圖
Fig.53Pipeline of NAS
搜索空間內定義了優化問題的變量,如網絡架構參數和超參數,這些變量決定了模型的性能。常見的網絡架構有鏈式結構和分支結構等,每一個節點的網絡架構參數包括卷積層、池化層和激活函數等,超參數包括卷積的尺寸、步長、加法或連結等。典型的網絡架構[101]如圖54所示。
圖54網絡架構[101]
Fig.54Network architecture[101]
搜索策略被用於探索神經架構空間,常見的策略包括隨機搜索、貝葉斯優化、遺傳算法、強化學習[102‑103]和梯度算法等,其中強化學習、遺傳算法及梯度算法是目前主流的搜索策略。在性能評估時,由於訓練和驗證的時間成本較高,因此常常需要採用評估策略降低評估成本,如減少迭代次數、在訓練集的子集上訓練、減少卷積核數量等,但這些策略往往會導致一些偏差,可能會對最終的優劣次序產生影響。更高級的策略包括權重共享、通過迭代時的表現推斷最終性能以及通過模塊預測網絡性能等方法。
DARTS[104]是第一個基於連續鬆弛的搜索空間的神經網絡架構技術。早期傳統的NAS方法如NasNet[105]、PNAS[106]和ENAS[107]等大多在離散不可微的搜索空間上應用強化學習、進化算法等搜索策略,由於搜索空間內待搜索的參數不可導,因此一個性能優異的模型往往需要耗費大量的計算資源和時間成本。事實上,當時的研究者們將神經架構搜索技術視為一個在離散空間上的黑箱優化問題,每次架構的迭代優化都需要性能評估,效率十分低下。而DARTS使用了鬆弛連續的結構表示,使用梯度下降優化網絡在驗證集上的性能,實現了端到端的網絡搜索,大大減少了迭代次數,把搜索時間從數千個GPU日降低到數個GPU日。
DARTS流程如圖55所示。其中:圖(a)表示邊上的初始未知操作;圖(b)在每條邊上放置候選操作的組合,連續鬆弛搜索空間,不斷放寬搜索條件;圖(c)通過解決一個雙層規劃問題聯合優化混合概率與網絡權重;圖(d)用學到的混合概率求得最終的網絡架構。DARTS是一種簡單的NAS方法,適用於CNN和RNN,在CIFAR‑10數據集[108]上用4個GPU日達到了2.76%的測試誤差,參數量僅有330萬個;在PTB數據集[109]上用1個GPU日以2 300萬個的參數量達到了55.7%的測試困惑度,達到了當時的最好性能。在CIFAR‑10數據集上搜索出來的模型架構在ImageNet[19]數據集上以470萬個的參數量達到8.7%的top‑5錯誤率,在PTB數據集上搜索出來的模型架構在WikiText‑2數據集[110]上以3 300萬個的參數量達到69.6%的困惑度,優於很多手工設計的輕量化模型。
圖55DARTS流程示意圖[104]
Fig.55Pipeline of DARTS[104]
基於DARTS,一系列改進算法被相繼提出。在DARTS中,搜索在一個有8個單元的網絡上進行,搜索出來的架構通過堆疊在一個具有20個單元的網絡上被評估,但深度網絡和淺層網絡的結構往往不同。例如,在代理數據集(如CIFAR‑10數據集)上搜索出來的網絡架構可能在目標數據集(如ImageNet數據集)上表現不理想。2019年華為諾亞方舟實驗室提出P‑DARTS[111],針對這一問題(被稱為Depth Gap)提出了一種漸進式搜索的方法,如圖56所示。搜索網絡的深度從最初的5個單元增加到中期的11個和後期的17個,而候選操作的數量(用不同的顏色表示)相應地從5個減少到4個和2個。在上一階段得分最低的操作將被丟棄,最後結合分數和可能的附加規則確定最終架構[111]。
圖56P-DARTS流程示意圖[111]
Fig.56Pipeline of P-DARTS[111]
2019年MIT提出ProxylessNAS[112],針對DARTS只能在小型代理數據集上搜索而在大型數據集上則會出現顯存爆炸的問題提出了無代理神經架構搜索技術,在訓練時二值化路徑,用和DARTS雙層規劃類似的思想聯合訓練權重參數和架構參數,從而達到降低顯存的目的,並首次提出針對不同的硬件平台搜索滿足特定時延的神經網絡架構方法。ProxylessNAS不再採用搜索單元然後堆疊達到更深網絡的方法,而是選擇主幹網絡,如MobileNet[41]、ShuffleNet[42]等。ProxylessNAS在CIFAR‑10數據集上以僅570萬個的參數量達到2.08%的測試誤差。ProxylessNAS示意圖如圖57所示。
圖57ProxylessNAS示意圖[112]
Fig.57Pipeline of ProxylessNAS[112]
當迭代次數過大後,DARTS設計出的網絡架構會包含很多跳接結構,使得性能變得很差,稱為DARTS的坍塌。2020年諾亞方舟實驗室提出的DARTS+[113]通過引入早停機制,即當一個正常單元出現2個或2個以上的跳接結構時就停止搜索,縮短了DARTS搜索的時間,極大地提高了DARTS的性能,其示意圖如圖58所示。
圖58DARTS+中的早停機制示意圖[113]
Fig.58Early Stopping in DARTS+[113]
2020年商湯研究院提出的隨機神經架構搜索SNAS[114]也是一種可微的端到端方法,但與DARTS相比,SNAS將NAS重新表述為在一個單元中搜索空間的聯合分布參數優化問題,直接優化損失函數,偏差更小。在同一輪反向傳播中SNAS同時訓練操作參數和架構參數,並提出了一種新的搜索梯度。相比基於強化學習的神經架構搜索技術,SNAS優化相同的目標函數,但更高效地只使用訓練損失作為獎勵。
PC‑DARTS[115]是華為諾亞方舟實驗室2020年提出的NAS技術,在P‑DARTS[111]的基礎上設計了部分通道連接機制,每次只有一部分通道進行操作搜索,這節省了訓練需要的顯存,減少了計算量,並採用邊正則化降低由於操作搜索不全造成的不確定性。PC‑DARTS在CIFAR‑10數據集[108]上用0.1個GPU日達到了2.57%的測試誤差,參數量僅有360萬個;在ImageNet數據集[19]上用3.8個GPU日以530萬個的參數量達到了7.3%的top‑5錯誤率,取得了更快更好的搜索效果。PC‑DARTS結構如圖59所示。
圖59PC-DARTS結構示意圖[115]
Fig.59Structure of PC-DARTS[115]
當前的神經架構搜索技術大多被用於圖像分類任務,這促使許多研究人員試圖設計出更好的人工網絡。但一方面由於搜索空間的定義被局限在現有的網絡結構設計經驗中,使得NAS設計出的網絡很難與人工網絡有本質上的區別。另一方面,NAS技術設計的網絡可解釋性很差,由於研究人員採用的數據增強、搜索空間、訓練方法及正則化策略等方法常常不同,這使得NAS設計出的架構很難被復現,不同網絡架構的性能也難以比較。由此可見,神經架構搜索領域仍然存在很多挑戰,如何解決這些問題將會是下一階段的熱門研究方向之一。
5 結束語
深度學習技術近年來在計算機視覺中的目標檢測、圖像分割、超分辨率和模型壓縮等任務上都取得了卓越的成績,充分證明了它的價值和潛力。然而深度學習領域仍然有不少難題無法解決,如對數據的依賴性強、模型難以在不同領域之間直接遷移、深度學習模型的可解釋性不強等,如何攻克這些難題將是下一階段的發展方向。為了追求極致的性能,很多科技巨頭投入了巨大的人力財力搭建巨型模型,如OpenAI發布的擁有1 750億個參數的GPT‑3,谷歌發布的擁有1.6萬億個參數的Switch Transformer,快手發布的擁有1.9萬億個參數的推薦精排模型,這些模型需要大量的訓練時間和計算資源,如何設計計算硬件、系統和算法來加速訓練是一項新的挑戰。深度學習技術嚴重依賴大規模帶標籤的數據集,因此無監督學習技術、自監督技術,例如表示學習、預訓練模型等,仍然是重要的研究方向。同時深度學習技術帶來的安全隱患也引起了重視,如何在保護用戶隱私的前提下優化分布式訓練是另一個具有潛力的研究方向。
想要了解更多資訊,請掃描下方二維碼,關注機器學習研究會
轉自:專知