目標識別技術是指基于計算機圖像技術對感興趣的目標的屬性類別進行判斷,即分類問題,是計算機視覺領域的基礎課題之一,同時也是一個熱點問題,具有非常廣闊的應用市場,從國家視角來看,其可以應用于智能交通、公眾安全監(jiān)控等領域,而民用視角來看則可以應用于自動駕駛、智能家居、身份認證等場景。目標識別技術一直受到學術屆的關注,早期的目標識別技術,通?;谑终{(diào)特征與經(jīng)典分類算法進行設計,如通過方向梯度直方圖特征(Histogram of Oriented Gridients,HOG)結(jié)合 支持向量機(Support Vector Machine,SVM)實現(xiàn)行人識別,基于哈爾(HaarLike)特征結(jié)合提升算法(Boosting)實現(xiàn)人臉識別。目標識別領域的傳統(tǒng)算法具有實現(xiàn)方便、計算速度快等優(yōu)點,但往往精度不高,對于方向、尺度變化、噪聲、遮擋等干擾魯棒性不強,同時對于數(shù)據(jù)集比較敏感。而深度學習算法在近年來發(fā)展迅速,在目標識別算法領域占據(jù)了主導地位。深度學習算法通?;诤A坑柧殬颖荆揽烤矸e神經(jīng)網(wǎng)絡強大的特征提取能力,實現(xiàn)分類。相比于傳統(tǒng)算法雖然訓練速度較慢,占用的計算資源較多,但能夠?qū)崿F(xiàn)高精度的識別效果。
深度學習目標識別算法通?;诰矸e神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)進行設計。從發(fā)展歷程來看,深度學習類目標識別算法的發(fā)展主要經(jīng)歷了以下幾個重要的時間節(jié)點。1998年,Lecun等人提出的LeNet結(jié)構(gòu),是最早的CNN模型,LeNet應用在MNIST手寫體字符識別數(shù)據(jù)上取得了非常好的分類效果。但由于數(shù)據(jù)、算力等原因,沒有得到廣泛的推廣。2006年,Hinton利用單層受限玻爾茲曼機自編碼預訓練,使得深層神經(jīng)網(wǎng)絡的訓練變得可能,深度學習重新引起了學術界的重視。并行計算工具GPU的發(fā)展,使深度學習算法訓練速度慢的問題得到了改善。2012年,AlexNet獲得ImageNet大尺度視覺識別任務挑戰(zhàn)賽(ImageNetLargeScaleVisualRecognitionCompetition,ILSVRC)的冠軍,使得深度學習算法發(fā)展步入新的階段,在AlexNet之后呈現(xiàn)出爆發(fā)式的增長趨勢,相繼誕生出VGG、殘差網(wǎng)絡(Deep Residual Network,ResNet)等著名方法。這些深度學習目標識別算法多數(shù)基于卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)進行設計,同時輻射向目標檢測、目標分割等其他領域,推動了整個計算機視覺技術領域的進步。圖1展示了近年深度學習算法不斷刷新ImageNet等數(shù)據(jù)集的榜單的狀態(tài)。圖2展示了近年來較為著名的深度學習算法圖譜。
總體來看,基于深度學習技術的目標識別算法多數(shù)基于CNN設計不同的結(jié)構(gòu),進而達到識別效果。這些算法在AlexNet的基礎上,主要沿著以下幾個趨勢發(fā)展(見圖3)。
(1)深度加深
深度是CNN結(jié)構(gòu)的核心要素之一,AlexNet是一個8層的CNN結(jié)構(gòu),包括5個卷積層和3個全連接層。VGG以AlexNet為基礎,提出了“卷積?!钡母拍?,VGG使用3×3的卷積核取代了AlexNet中的大核,通過“卷積棧”的堆疊實現(xiàn)了多個模型,其中最為著名的是16層的VGG-16和19層的VGG-19。深度的加深使得網(wǎng)絡的性能得到改善。理論上來講,深層的CNN結(jié)構(gòu)應該具有更強的表示能力,然而深度的加深產(chǎn)生了梯度消失的現(xiàn)象,阻礙了網(wǎng)絡的收斂。ResNet通過引入殘差單元使這一問題得到了解決。殘差單元的提出使CNN結(jié)構(gòu)能夠變得非常之深,目前最深的ResNet能夠達到1000多層,深度的增加賦予了ResNet更強的分類能力。
(2)卷積模塊功能增強
通過增強卷積模塊的功能,能夠賦予CNN更強的感知能力。
圖2 卷積神經(jīng)網(wǎng)絡發(fā)展圖譜
部分算法通過對改變卷積層的連接方式,組合搭建模塊,進而增強卷積層功能,以GoogleNet、ResNet和DenseNet為主要代表。GoogleNet提出的Inception模塊,在每個卷積層使用不同尺寸的卷積核進行卷積,然后再把各通道的輸出進行串聯(lián)。殘差網(wǎng)絡ResNet提出的殘差單元模塊,通過恒等映射、空間填充或1×1卷積層連接卷積層的輸入和輸出,形成“Shortcut”,“Shortcut”為梯度的前向傳遞提供了直接路徑,從而能夠解決隨著網(wǎng)絡加深而產(chǎn)生的梯度消失現(xiàn)象。ResNet使CNN網(wǎng)絡結(jié)構(gòu)層數(shù)加深,且易于收斂,進一步提升了深度學習算法的分類精度,同時也為CNN結(jié)構(gòu)設計提供了新的思路,在ResNet的基礎上形成了若干變種,其中較為著名的包括寬殘差網(wǎng)(Wide Residual Networks,WRN),WRN 在ResNet的基礎上調(diào)整了網(wǎng)絡寬度,以淺而寬型的網(wǎng)絡結(jié)構(gòu)實現(xiàn)了更高的分類精度。DenseNet則認為解決深度學習梯度消失的現(xiàn)象需要增添層與層之間的連接,由此提出了緊致模塊,在緊致單元內(nèi)的層與層之間實現(xiàn)緊致連接,各層輸出采用串聯(lián)形式。整個網(wǎng)絡通過若干緊致模塊連接而成,各模塊之間添加池化層、歸一化層。DenseNet的出現(xiàn)使得算法精度得到進一步提升。
圖3 基于卷積神經(jīng)網(wǎng)絡的深度學習算法發(fā)展趨勢
也有部分算法面向方向旋轉(zhuǎn)、尺度變化等干擾,通過改變卷積方式增強卷積功能,以方向卷積網(wǎng)絡(Oriented Response Networks,ORN)、Gabor卷積網(wǎng)絡(Gabor Convolutional Networks,GCN)、可變形卷積神經(jīng)網(wǎng)絡(Deformable Convolutional Networks,Deformable ConvNets)等為代表。其中,ORN主要面向方向魯棒問題,通過對卷積核進行空域旋轉(zhuǎn)產(chǎn)生自適應旋轉(zhuǎn)卷積核(Active Rotating Filter,ARF),從而賦予了CNN感知方向變化的能力。GCN將Gabor小波變換的思想引入到CNN結(jié)構(gòu),通過傳統(tǒng)卷積核與Gabor核的調(diào)制形成Gabor方向卷積核(Gabor Orientation Filters,GOFs),GOFs繼承了 Gabor變換提取不同方向、不同尺度特征的思想,通過調(diào)制的方式將Gabor濾波器與CNN進行有機結(jié)合,實現(xiàn)了特征增強。DeformableConvNets打破了傳統(tǒng)CNN對于卷積核形狀的限制,使卷積核能夠進行平移、縮放、旋轉(zhuǎn)等仿射變換,產(chǎn)生靈活、非固定的卷積核形狀,從而提升了卷積核的感知能力。
(3)設計新的功能單元、損失函數(shù)等
通過設計新的功能單元或損失函數(shù)能夠改善網(wǎng)絡性能。
空域變換網(wǎng)絡(Spatial Transformer Networks,STN)在卷積層之間增添空域仿射變換層,提升網(wǎng)絡對于仿射變換的學習能力。另一方面,經(jīng)典的CNN結(jié)構(gòu)常使用的損失函數(shù)主要包括交叉熵損失函數(shù)(Cross Entropy)、Softmax損失函數(shù)等,通過比較網(wǎng)絡輸出和真實標簽的差異,進而計算誤差傳遞梯度。通過此類損失函數(shù)能夠較好地反應網(wǎng)絡誤差,但卻無法評估樣本分類后類內(nèi)、類間的離散度。一個好的分類算法不僅要求高精度,且應該使得樣本經(jīng)過分類器后,類內(nèi)差異小,而類間差異大,這樣的分類器具有強的魯棒性。而在參考文獻[9]中,筆者提出了一種新的損失函數(shù)——中心損失(Center Loss),除了考慮Softmax損失,還將類內(nèi)的離散度也作為計算損失的指標,加入Center Loss后對CNN網(wǎng)絡提取的特征進行可視化降維,能夠發(fā)現(xiàn)類內(nèi)距離變小,模型判別力的提升。采取類似思路的還有FisherLoss,將類間間距加入損失函數(shù)考量,進而提升網(wǎng)絡分類性能。
(4)輻射向檢測任務
正確分類是進行目標檢測的基礎,深度學習在目標識別方面取得的發(fā)展同樣推動了目標檢測的進步,催生出了一系列新的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu),以區(qū)域卷積神經(jīng)網(wǎng)絡(Regions with CNN Features,RCNN)、單次多框檢測器(Single Shot MultiBox Detector,SSD)等算法為代表。RCNN采用“選擇性搜索+遷移學習”的策略,通過區(qū)域提名算法生成大量候選區(qū)域,然后將這些候選區(qū)域尺寸歸一化后,通過AlexNet在ImageNet上的預訓練模型提取特征,以微調(diào)的方式對預訓練網(wǎng)絡參數(shù)進行調(diào)整。同時,將提取的特征用于訓練SVM分類器。當待檢測圖像進行測試時,SVM分類器給出物體的類別屬性。RCNN再從SVM選出的正樣本中經(jīng)過非最大抑制、包圍框回歸等對物體的位置進行精修,進而完成檢測過程。RCNN使得目標檢測算法的精度大幅提升,檢測速度成為技術瓶頸。為進一步提升精度、改善速度,F(xiàn)astRCNN和FasterRCNN相繼提出。相比于RCNN,他們所做的優(yōu)化主要包括引入ROI-Pooling層解決了RCNN中冗余的特征提取、使用Softmax輸出判斷目標類別信息取代了SVM分類器、通過區(qū)域生成網(wǎng)絡取代了區(qū)域提名算法,這些改善使得目標檢測算法速度得到大幅提升。在RCNN系列網(wǎng)絡的基礎上,又相繼誕生了YoLo(You Only Look Once)、單次多框檢測器。目前,SSD已經(jīng)能夠?qū)崿F(xiàn)58FPS的檢測速度,基本能夠滿足實時性。
本文回顧了近年來深度學習在目標識別領域的經(jīng)典算法,并對它們的發(fā)展趨勢進行了分析和歸類。從技術層面來看,以卷積神經(jīng)網(wǎng)絡為主的深度學習目標識別算法主要沿著以下4個方向發(fā)展:深度加深、增強卷積功能、設計新的功能單元或損失函數(shù)、輻射向檢測、分割等其他任務,進而推動目標識別技術朝著更精準、更快速、應用更廣泛的方向不斷進步。