圖1 LeNet-5 結構示意圖

然而,當時的CNN復雜度較低,性能不如現代深度網絡。

直到2012年,AlexNet將深度學習技術應用到大規模圖像分類領域,取得了重大突破。AlexNet的結構與LeNet相似,但使用了ReLU激活函數、dropout方法,并增加了深度,如圖 2 所示。

圖2 AlexNet結構示意圖

之后的幾年中,出現了ZFNet、GoogLeNet和VGGNet等結構。GoogLeNet引入了Inception模塊,通過不同尺寸的卷積層和最大池化層并行提取信息,降低了模型復雜度,如圖3所示。VGGNet重復使用了3×3的卷積核和2×2的池化層,將深度網絡加深到16~19層,如圖4所示。

圖3 Inception 模塊示意圖

圖 4 VGG 模塊和VGG 結構示意圖

2016年,微軟亞洲研究院提出了ResNet模型,該模型最深可達到152層,并贏得了目標檢測、分類和定位三個賽道的冠軍。該研究提出了殘差模塊的跳接結構,網絡學習殘差映射f(x)-x,每個殘差模塊里有兩個相同輸出通道的3×3卷積層,每個卷積層后接一個BN層和ReLU激活函數。跳接結構使數據更快向前傳播,保證網絡沿著正確方向深化,準確率不斷提高。ResNet的思想產生了深遠影響,奠定了訓練更深的深度網絡的基礎,結構如圖5所示。

圖 5 殘差模塊

2017年提出的DenseNet和ResNeXt都受到ResNet的啟發,除了學習殘差映射外,DenseNet還學習更高階的項,采用跳接結構進行連接,如圖6所示。ResNeXt結合了ResNet和Inceptionv4,采用GoogLeNet分組卷積的思想,加入殘差連接,如圖7所示。

圖6 ResNet和DenseNet結構比較

圖7 ResNet殘差模塊和基數為 32 的 ResNeXt模塊

同年提出的Xception是一種基于Inception分組卷積思想的模型,其分組卷積思想將通道拆分成不同大小感受野的子通道,可以提取多尺寸特征并減少參數量,如圖8所示。許多科技巨頭開放大規模數據集,如OpenImage、JFT-300M和Kinetics,這些數據集增強了深度學習模型的泛化能力。

圖8 經典及簡化的 Inception 模塊和 Xception 模塊

生成模型能學習數據中隱含特征并對分布進行建模,應用于圖像、文本、語音等,采樣生成新數據。在深度學習前就有許多生成模型,因建模困難有挑戰。

變分自編碼器(Variationalautoencoder,VAE)是當前主流的基于深度學習技術的生成模型,是標準自編碼器的一種變形,關注重構損失和隱向量的約束。通過強迫隱變量服從單位高斯分布,優化了以下損失函數:

其中,E表示期望,z為隱變量,q(z|X)表示隱變量的建議分布(編碼器輸出的隱變量的分布),p(z)表示標準高斯分布,P(X|z)表示解碼器分布,KL表示KL散度。為了優化KL散度,變分自編碼器生成了1個均值向量和1個標準差向量用于參數重構。在隱向量分布中采樣就可以生成新的圖片。自編碼器和變分自編碼器示意圖如圖9、10所示。

圖9 自編碼器示意圖

圖10 變分自編碼器示意圖

生成對抗網絡(Generative adversarial net,GAN)是另一種常見的基于深度學習技術的生成模型,包括生成器和判別器2個組件,如圖11。二者相互對抗,互相促進。

圖11 生成對抗網絡示意圖

變分自編碼器和GAN在計算機視覺領域中已經廣泛應用于圖像翻譯、超分辨率、目標檢測、視頻生成和圖像分割等領域,具有廣闊的研究價值和應用前景。

2 輕量化網絡

輕量化網絡是在保證模型精度前提下,降低計算和空間復雜度的深度神經網絡,以便在計算和存儲有限的嵌入式設備上部署,實現學術到工業的躍遷。目前,學術和工業界主要采用四種方法設計輕量化深度網絡模型:人工設計的輕量化神經網絡、基于神經網絡架構搜索(Neural architecture search,NAS)的自動設計神經網絡技術、卷積神經網絡壓縮和基于AutoML的自動模型壓縮。這些方法旨在減少計算和存儲需求,使深度學習模型能夠在資源受限設備上運行。本節主要介紹人工設計的輕量化神經網絡。

人工設計的輕量化神經網絡是指通過手動設計網絡結構和參數來減少模型的計算和存儲需求的方法。這種方法通常需要深入理解深度神經網絡的結構和參數,以及對不同任務的特征進行分析和提取。常見的人工設計的輕量化神經網絡包括MobileNet、ShuffleNet、SqueezeNet等。

SqueezeNet是2016年伯克利和斯坦福的研究者提出的深度模型輕量化工作之一,結構如圖12,其結構借鑒了VGG堆疊的形式,使用了Fire模塊(如圖13)來減少參數量。

圖12 SqueezeNet網絡結構示意圖

圖13 SqueezeNet的 Fire 模塊

MobileNet是谷歌于2017年提出的輕量化網絡,核心是使用深度可分離卷積代替標準卷積,可以將計算量降低至原來的1/8~1/9。標準卷積和深度可分離卷積+BN+ReLU 結構如圖 14 所示。

圖14 標準卷積+BN+ReLU 網絡和深度可分離卷積+BN+ReLU 網絡

ShuffleNet晚于MobileNet兩個月由Face++團隊提出,ShuffleNet采用了ResNet的跳接結構,使用了Channel Shuffle(圖15)和分組卷積的思想。ShuffleNet模塊的設計借鑒了 ResNet bottleneck 的結構,如圖 16 所示。

圖15 Channel Shuffle 示意圖

圖16 ShuffleNet模塊

2018年,MobileNet和ShuffleNet又相繼提出了改進版本,MobileNetv2采用了效率更高的殘差結構(圖17),ShuffleNetv2采用了一種ChannelSplit操作。ShuffleNet v1 和 ShuffleNet v2 結構如圖 18 所示。

圖17 MobileNet v2 模塊

圖18 ShuffleNet v1 和 ShuffleNet v2 結構

2020年,華為諾亞方舟實驗室的團隊提出了GhostNet,如圖19所示。該網絡用更少的參數量提取更多的特征圖。Ghost模塊通過一系列簡單的線性操作生成特征圖,模擬傳統卷積層的效果,降低了參數量和計算量。

圖19 卷積層和 Ghost模塊

這些網絡通過使用深度可分離卷積、通道重排、瓶頸結構等技術來減少模型的計算和存儲需求,同時保持較高的精度。人工設計的輕量化神經網絡通常具有較好的可解釋性和可控性,但是需要大量的人力和經驗來設計和優化網絡結構和參數。

3 面向特定任務的深度網絡模型

本節主要介紹特定計算機視覺任務的深度神經網絡模型,包括目標檢測、圖像分割、圖像超分辨率和神經架構搜索等。

3.1 目標檢測

目標檢測任務包括物體的分類、定位和檢測。自2014年R-CNN模型提出后,目標檢測成為計算機視覺熱點。Girshick團隊隨后推出Fast R-CNN、Faster R-CNN等兩階段模型,將問題分為提出可能包含目標的候選區域和對這些區域分類。

R-CNN系列模型由共享特征提取子網和RoI預測回歸子網組成。全卷積網絡結構在性能更強的分類網絡出現后應用于目標檢測任務,但檢測精度低于分類精度。R-FCN提出位置敏感分數圖,增強網絡對位置信息的表達能力,提高檢測精度,結構如圖20所示。

圖20 R-FCN 結構示意圖

如何準確識別不同尺寸的物體是目標檢測任務的難點之一。不同方法包括提取不同尺度特征(圖21(a))、單一特征圖(圖21(b))和多尺度融合(圖21(c))。

圖21 多尺度檢測的常見結構

特征金字塔網絡(FeaturePyramidnetwork,FPN)借鑒ResNet跳接思想,結合了層間特征融合與多分辨率預測,結構如圖22。用于Faster R-CNN的RPN,實現多尺度特征提取,提高檢測性能。實驗證明FPN特征提取效果優于單尺度特征提取。

圖22 FPN 結構示意圖

YOLO是單階段模型的代表,它將候選區域和分類統一為邊界框回歸問題,實現了端到端的學習,示意圖如圖23。它采用等分網格對圖片進行劃分,并運行單獨的卷積網絡進行預測,最后使用非極大值抑制得到最終的預測框。其損失函數包括坐標誤差、物體誤差和類別誤差,并添加權重平衡類別不均衡和大小物體影響。YOLO網絡結構圖如圖24。

圖23 YOLO 示意圖

圖24 YOLO網絡結構圖

YOLOv1的訓練流程簡單,背景誤檢率低,但由于每個格子只能預測出一個物體,限制了其檢測能力。YOLOv2在YOLOv1的基礎上采用了以VGG16為基礎的Darknet19,借鑒了FasterR-CNN錨框的設計,并采用多尺度訓練,提高了模型的健壯性。YOLOv3則采用了Darknet53作為骨干網絡,引入了FPN結構,解決了小目標檢測精度較差的問題,使得YOLO系列模型在單階段檢測方面更加強大和健壯。

SSD是最早達到兩階段模型精度的單階段模型之一,結構如圖25所示。為提高小目標檢測精度,SSD采用多尺度特征圖和更多預測框。

圖25 SSD 網絡結構圖

單階段模型相比兩階段模型擁有更快的速度和更小的內存占用,最新的單階段模型如FCOS、VFNet等工作已接近兩階段模型精度,更適合在移動端部署。目標檢測技術從傳統的手工特征算法發展到深度學習算法,精度和速度不斷提升。工業界已經實現了多種基于目標檢測技術的應用,如人臉檢測識別、行人檢測、交通信號檢測、文本檢測和遙感目標檢測等。小目標檢測和視頻目標檢測是未來的研究熱點問題,目標檢測的輕量化和多模態信息融合也是未來的研究方向。

3.2 圖像分割

圖像語義分割任務,要求將圖像像素分類為多個預定義類別。由于是像素級稠密分類,比圖像分類和目標檢測更困難。深度學習在計算機視覺領域取得成功,因此大量研究基于深度學習的圖像分割方法。

2015年提出的U-Net和全卷積網絡(Fully convolutional network,FCN)啟發了圖像分割和目標檢測工作。U-Net是醫學圖像分割的卷積神經網絡,贏得兩項挑戰賽冠軍。U-Net為編碼器-解碼器結構,通過最大池化和上采樣調整分辨率,結構如圖26。卷積采用Valid模式,輸出分辨率低于輸入。U-Net采用跳接結構,連接上采樣結果和編碼器輸出,作為解碼器輸入,融合高低分辨率信息,適用于醫學圖像分割。

圖26 U-Net結構示意圖

MaskR-CNN在FasterR-CNN基礎上改進,實現像素級分類,拓展至圖像分割。通過RoIAlign提高定位精度,添加二進制Mask表征目標范圍。網絡結構圖和分支結構圖如圖27、28所示。

圖27 Mask R-CNN網絡示意圖

圖28 Mask R-CNN 分支示意圖

深度卷積神經網絡中池化層和上采樣層設計存在缺陷,導致圖像分割精度受限。2016年DeepLab提出空洞卷積,避免信息損失,并使用全連接的條件隨機場(Condi-tionalrandomfield,CRF)優化分割精度,結構如圖29。空洞卷積增大感受野,不增加參數。DeepLabv1作為后處理,用條件隨機場描述像素點關系,在分割邊界取得良好效果。DeepLabv1速度快,平均交并比達71.6%,對后續工作產生深遠影響。

圖 29 空洞卷積示意圖(卷積核尺寸為 3,輸入步長為2,輸出步長為1)

2017年劍橋大學提出的SegNet,針對道路和室內場景理解,設計像素級圖像分割網絡,高效且內存、計算時間要求低。采用全卷積“編碼器-解碼器”結構,復用池化索引減少參數量,改善邊界劃分。在CamVid11RoadClassSegmentation和SUNRGB-DIndoorScenes數據集上表現優異。結構如圖30所示。

圖30 SegNet結構示意圖

2017年香港中文大學提出PSPNet,采用金字塔池化模塊,用不同尺度的金字塔提取信息,通過雙線性插值恢復長寬,融合多尺度信息。PSPNet在PASCALVOC2012和MSCOCO數據集上分別達到82.6%和85.4%的mIoU。結構如圖31。

圖31 PSPNet結構示意圖

DeepLabv2在DeepLabv1和PSPNet的基礎上,使用ResNet101和ASPP模塊提取特征圖信息,增加了感受野,其結構如圖32所示,mIoU達79.7%。DeepLabv3重新審視了空洞卷積的作用,將其應用在ResNet最后一個模塊之后,并改進了ASPP模塊(圖33),去掉了后處理的DenseCRF模塊,mIoU達86.9%。圖34展示了不使用空洞卷積和使用空洞卷積的級聯模塊示意圖。DeepLabv3+,結構如圖35,相對于DeepLabv3采用了“編碼器-解碼器”的結構(圖36),并將骨干網絡替換為Xception,結合空洞深度可分離卷積,mIoU達89.0%。深度卷積、逐點卷積和空洞深度可分離卷積示意圖如圖 37所示。

圖32 空洞空間金字塔池化示意圖

圖33 改進的 ASPP 模塊示意圖

圖34 不使用和使用空洞卷積的級聯模塊示意圖

圖35 DeepLabv3+示意圖

圖36 DeepLabv3+使用了空間金字塔池化模塊,“編碼器-解碼器”結構和空洞卷積

圖37 空洞深度可分離卷積示意圖

2019年,曠視科技提出DFANet高效CNN架構,通過子網和子級聯聚合多尺度特征,減少參數量,結構如圖38所示。采用“編碼器-解碼器”結構,解碼器為3個改良輕量級Xception融合結構,編碼器為高效上采樣模塊。

圖38 DFANet結構示意圖

2020年提出的輕量級網絡LRNNet,包含分解卷積塊FCB(圖39(a))和高效的簡化Non-Local模塊LRN(圖39(b))。FCB通過1×3和3×1的空間分解卷積處理短距離特征,并使用空洞深度分離卷積處理遠距離特征。LRN利用區域主奇異向量作為Non-Local模塊的Key和Value,降低了計算量和內存占用,同時保持處理遠距離關聯的效果。

圖39 LRNNet中的 FCB 和 LRN 模塊

圖像分割需要像素級稠密分類,真值標注耗時且昂貴。研究人員采用弱監督和半監督學習方法,使用圖像類別標簽、邊界框、顯著圖和類激活圖等弱標注訓練網絡。

2015年谷歌和UCLA團隊最早研究基于弱監督學習技術的圖像分割算法,基于DeepLab模型,研究了弱標注與少量強標注和大量弱標注混合對DCNN圖像分割模型的影響,提出了一種期望最大化方法,證實了僅使用圖像級標簽的弱標注存在性能差距,在半監督設定下使用少量強標注和大量弱標注混合可以獲得優越的性能。另一篇文獻提出一個僅使用類別標簽和顯著圖信息的圖像分割模型,結構如圖40所示。通過種子信息確定目標的類別和位置,測試精度mIoU達到56.7%。AffinityNet結合類別標簽和CAM信息,通過構建圖像的語義相似度矩陣,結合隨機游走進行擴散,最終恢復出目標的形狀。AffinityNet流程如圖 41 所示。

圖40 高層信息指導的圖像分割網絡結構圖

圖41 AffinityNet流程示意圖

深度學習在圖像分割領域取得了顯著成就,但仍面臨挑戰。當前的大規模數據集無法滿足工業界需求,而具有多目標和重疊目標的數據集更具應用價值。基于小樣本學習技術的圖像分割算法前景廣闊,醫學圖像分析等領域獲取學習樣本成本高、難度大。圖像分割技術的實時性是一個難題,大多數模型無法達到實時性要求,但在很多應用場景下速度比精度更重要。

深度學習在圖像分割領域取得顯著成果,但仍面臨挑戰。現有大規模數據集不能滿足工業需求,多目標和重疊目標數據集更具應用價值。小樣本學習技術有前景,適用于醫學圖像分析等高成本領域。實時性是難題,速度在某些場景下比精度更重要。

3. 3 超分辨率

超分辨率技術是計算機視覺領域提高圖像和視頻分辨率的關鍵處理技術,廣泛應用于高清電視、監控視頻、醫學成像等領域。本文從圖像分類、目標檢測、圖像分割到超分辨率,輸出逐級復雜,最后生成比輸入圖像大的高分辨率圖像,需要生成輸入中不存在的信息。

超分辨率概念始于光學領域,1952年Francia提出,1964年Harris和Goodman提出Harris?Goodman頻譜外推方法,但實際效果不佳。1984年Tsai首次利用單幅低分辨率圖像的頻域信息重建高分辨率圖像,超分辨率重建技術得到廣泛認可和應用,成為圖像增強和計算機視覺領域的重要研究方向。

傳統的超分辨率方法包括基于預測、基于邊緣、基于統計、基于塊和基于稀疏表示等方法。根據輸入輸出的不同,超分辨率問題可以分為基于重建的超分辨率問題、視頻超分辨率問題和單幅圖像超分辨率問題。根據是否依賴訓練樣本,超分辨率問題則又可以分為增強邊緣的超分辨率問題(無訓練樣本)和基于學習的超分辨率問題(有訓練樣本)。

插值法是最簡單的單幅圖像超分辨率方法,包括Lanczos、Bicubic、Bilinear和Nearest等,操作簡單、實施性好,但難以恢復清晰邊緣和細節。因此,許多傳統算法被提出,以增強細節。其中,基于塊的方法,利用局部線性嵌入重構高分辨率圖像。基于稀疏表示的方法,將圖像表示為字典D與原子α,用低分辨率圖像得到α,重構高清圖像。基于學習的超分辨率技術如圖42所示,上、下采樣方法示意圖如圖43所示。

圖42 基于學習的超分辨率技術

圖43 超分辨率問題中的上采樣和下采樣方法

深度學習技術在超分辨率領域的應用研究

香港中文大學Dong等于 2015年首次將卷積神經網絡用于單幅圖像超分辨率重建,提出了SRCNN。SRCNN激活函數采用 ReLU,損失函數采用均方誤差,流程圖如圖44所示。

圖44 SRCNN 流程圖

2016年Dong團隊提出了FSRCNN,這是一種更快、更實時的超分辨率卷積神經網絡。FSRCNN在原始SRCNN的基礎上,加入反卷積層放大尺寸,摒棄 Bicubic插值法,使用更多映射層和更小卷積核,改變特征維度并共享映射層,FSRCNN改進示意圖如圖45所示。

圖45 FSRCNN 對 SRCNN 的改進

同年提出的ESPCN是一種基于SRCNN的超分辨率網絡,結構如圖46所示。主要特點是提高了速度,其引入了一種亞像素卷積層,直接在低分辨率圖像上提取特征,降低計算復雜度。

圖46 ESPCN示意圖

由于 SRCNN的計算復雜度高,FSRCNN和 ESPCN選擇在網絡末端上采樣以降低復雜度。但上采樣后沒有足夠深的網絡提取特征,圖像信息就會損失。為了解決這個問題,很多工作引入了殘差網絡。Kim等人在 2016年提出的 VDSR是第一個引入全局殘差的模型,結構如圖47。高低分辨率圖像攜帶的低頻信息很相近,因此網絡只需要學習高頻信息之間的殘差即可。

圖47 VSDR 網絡結構圖

CARN是NTIRE2018超分辨率挑戰賽冠軍方案,采用全局和局部級聯,用級聯模塊和1×1卷積模塊替換ResNet殘差塊,并提出殘差?E模塊提升效率。如圖48和圖49所示。

圖48 CARN 對于 ResNet的改進

圖49 殘差-E 模塊與其他常見模塊的對比

EDVR是商湯科技2019年提出的一種視頻修復通用框架,在NITRE2019的4個賽道中均獲得冠軍。它通過增強的可變形卷積網絡實現視頻修復和增強,適用于各種視頻修復任務。EDVR框架示意圖如圖50所示。EDVR提出了PCD對齊模塊和TSA兩個模塊,結構如圖51所示。PCD模塊用可變形卷積將每個相鄰幀與參考幀對齊,TSA模塊用于在多個對齊的特征層之間融合信息。

圖50 EVDR 框架示意圖

圖51 EVDR中的 PCD 模塊和 TSA 模塊

FSTRN(2019)將三維卷積用于視頻超分辨率,通過分解三維濾波器降低復雜度,實現更深網絡和更好性能。此外,提出跨空間殘差學習方法,連接低分辨率空間和高分辨率空間,減輕計算負擔。FSTRN結構如圖52所示。

圖52 FSTRN 結構示意圖

深度學習技術的發展推動了超分辨率領域的快速進步,出現了許多性能優異的模型,但距離實際應用仍有差距。圖像配準技術對多幀圖像超分辨率重建效果至關重要,但目前還沒有成熟的解決方案。另一難點是密集計算限制了視頻超分辨率重建的計算效率,難以達到實時性要求。魯棒性和可遷移性是未來的研究熱點,現有的評價標準還不夠客觀,有時與人眼視覺相違背。

4 神經架構搜索

深度學習在圖像分類、語音識別等領域取得顯著成功。神經架構搜索技術(Neuralarchitecturesearch,NAS)可自動設計網絡結構,如圖像分割的Auto-DeepLab和目標檢測的NAS-FPN。NAS是機器學習自動化的子領域,代表未來發展方向。流程包括搜索空間、搜索策略和性能評估,如圖53所示。搜索空間包括網絡架構參數和超參數,如卷積層、池化層等,典型的網絡架構如圖54所示。搜索策略有隨機搜索、貝葉斯優化、遺傳算法、強化學習等。性能評估需降低成本,可能導致偏差。更高級策略包括權重共享、通過迭代表現推斷最終性能等。

DARTS是第一個基于連續松弛的搜索空間的神經網絡架構技術,通過梯度下降優化網絡在驗證集上的性能,實現了端到端的網絡搜索,大大減少了迭代次數,降低了搜索時間。DARTS流程包括:初始未知操作、候選操作的組合、雙層規劃問題聯合優化混合概率與網絡權重、用學到的混合概率求得最終的網絡架構,如圖55。DARTS適用于CNN和RNN,在CIFAR-10和PTB數據集上取得了優異性能,優于很多手工設計的輕量化模型。

圖55 DARTS流程示意圖

基于DARTS,一系列改進算法相繼提出,包括P-DARTS、ProxylessNAS、DARTS+和SNAS。P-DARTS采用漸進式搜索,逐步增加網絡深度和減少候選操作數量,如圖56所示。ProxylessNAS提出無代理神經架構搜索技術,降低顯存需求,并首次提出針對特定時延的神經網絡架構方法,如圖57所示。DARTS+通過引入早停機制,縮短搜索時間并提高性能,如圖58所示。SNAS將NAS重新表述為聯合分布參數優化問題,直接優化損失函數,偏差更小。PC-DARTS在P-DARTS基礎上設計了部分通道連接機制,節省訓練資源,降低不確定性,取得更快更好的搜索效果,如圖59所示。

圖56 P-DARTS 流程示意圖

圖57 ProxylessNAS 示意圖

圖58 DARTS+中的早停機制示意圖

圖59 PC -DARTS 結構示意圖

神經架構搜索技術主要應用于圖像分類任務,但搜索空間的定義限制了其設計出與人工網絡有本質區別的網絡。此外,NAS技術設計的網絡可解釋性差,不同研究者的方法不同,使得NAS設計出的架構難以復現和比較性能。因此,神經架構搜索領域仍面臨挑戰,如何解決這些問題將是未來的研究方向之一。

5 總結

深度學習在計算機視覺中的目標檢測、圖像分割、超分辨率和模型壓縮等任務上取得卓越成績,但仍存在難題,如對數據依賴強、模型遷移困難、可解釋性不強。科技巨頭投入巨型模型建設,如GPT的訓練需要大量時間和計算資源。且深度學習依賴大規模帶標簽數據集,無監督學習和自監督技術是重要研究方向。同時,深度學習技術帶來的安全隱患也引起重視,優化分布式訓練是具有潛力的研究方向。

文章轉自微信公眾號@算法進階

上一篇:

實現個神經網絡的3D可視化,美爆了!

下一篇:

一文講透神經網絡的激活函數
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費