引言
人工智能現(xiàn)在應用最好的一個領域就是基于視頻圖像的應用,尤其是基于深度卷積神經(jīng)網(wǎng)絡在視頻圖像領域的應用最為火熱。安防是人工智能技術最好的實踐領域,安防每天產(chǎn)生的全天候的海量視頻圖像數(shù)據(jù)為人工智能提供了最佳實踐基礎。

圖1 安防人工智能應用三大基礎
除了海量數(shù)據(jù)、深度卷積神經(jīng)網(wǎng)絡算法,還有GPU 或神經(jīng)網(wǎng)絡硬件加速引擎也在快速安防應用領域廣泛應用。海量視頻圖像、深度神經(jīng)網(wǎng)絡算法、GPU 或深度神經(jīng)網(wǎng)絡硬件加速器,這三者共同推動者人工智能在安防領域的實踐,如圖1所示。其中GPU 和深度神經(jīng)網(wǎng)絡加速器的發(fā)展驅動力來自于深度神經(jīng)網(wǎng)絡算法的發(fā)展。所以在這三者中,深度神經(jīng)網(wǎng)絡算法的發(fā)展是核心,它決定著深度神經(jīng)網(wǎng)絡硬件平臺的發(fā)展,同時也關系著視頻圖像進行標注行為。所以本文著重從深度神經(jīng)網(wǎng)絡算法的角度,介紹人工智能在安防領域的實踐應用。
深度卷積神經(jīng)網(wǎng)絡發(fā)展
最早的卷積神經(jīng)網(wǎng)絡模型(比如LeNet和AlexNet)很是簡單,如圖2所示,使用堆棧式(stack)單卷積或者多卷積加單池化(pooling)的結構,卷積層做特征提取,池化層進行空間下采樣。輸入特征映射(inputfeature maps), 即輸入神經(jīng)元(inputneurons)經(jīng)過帶有權值(weights)的卷積核(conv kernel)進行多維卷積,在輸出神經(jīng)元(output neurons)上得到輸出特征映射(outputfeature maps)。

圖2 簡單卷積網(wǎng)絡
之后的卷積神經(jīng)網(wǎng)絡版本,融合了Network In Network 來增加隱層提升非線性表達,它使用1x1卷積映射到隱含空間,再在隱含空間做卷積。同時考慮到多尺度,在單層卷積層中用多個不同大小的卷積核來卷積,最后把結果串聯(lián)起來得到輸出特征映射。這一結構,被稱之為“Incepti on”,由谷歌提出,如圖3所示,代表模式有Inception-v1、Inception-v2、Inception-v3、Inception-v4等版本。

圖3 Inception模塊

圖4 簡化版Inception

圖5 簡化版Inception另一種描述方式
逐層可分離卷積(Depthwise SeparableConvolution)可以認為是Inception 的擴展,它是Inception 結構的極限版本,如圖4所示,一個簡化版本的Inception,我們可以看做一整個輸入做1x1卷積,然后切成三段,分別進行3x3卷積后相連,如圖5所示。圖4和圖5兩個形式是等價的,即Inception 的簡化版本又可以用如下形式表達:
假若不是分成三段,而是分成五段或者更多,那模型的表達能力是不是更強呢?于是我們就切更多段,一直切到不能再切為止,此時正好是輸出通道(output channels)的數(shù)量(極限版本),如圖6所示:

圖6 Inception極限版本
這就是逐層卷積(depthwise convolution),逐層卷積是對輸入的每一個通道(channel)獨立的用對應通道的所有卷積核去卷積,假設卷積核的形狀是filter_height*filter_width*in_channels* channel_multiplier,那么每個輸入通道(in_channel)會輸出channel_multiplier 個通道,最后的特征映射面(feature map)就會有in_channels *channel_multiplier 個通道。反觀普通的卷積,輸出的特征映射面一般就只有channel_multiplier 那么多個通道。
在圖像分割領域,圖像輸入到深度卷積神經(jīng)網(wǎng)絡中,先對圖像做卷積再池化(即下采樣),降低圖像尺寸的同時增大感受野,但是由于圖像分割預測是逐個像素輸出的,所以要將池化后較小尺寸的圖像上采樣到原始圖像尺寸進行預測。上采樣一般采用反卷積(deconv)操作,使得每個像素預測都能看到較大感受野。因此圖像分割卷積神經(jīng)網(wǎng)絡中有兩個關鍵,一個是池化減小圖像尺寸增大感受野,另一個是上采樣擴大圖像尺寸。在先減小再增大尺寸的過程中,就會有信息損失。所以就設計出一種新的操作:空洞卷積(dilated conv)或者卷積核膨脹,即不通過池化也能有較大的感受野,如圖7所示。

圖7 空洞卷積
圖7中的(a) 圖對應3x3的1-dilatedconv,和普通的卷積操作一樣,(b) 圖對應3x3的2-dilated conv,實際的卷積核尺寸還是3x3,但是空洞為1,也就是對于一個7x7的圖像塊,只有9個紅色的點和3x3的卷積核進行卷積操作,其余的點(綠色點)略過。也可以理解為卷積核的尺寸實際為7x7,但是只有圖(b) 中的9個點的權重不為0,其余都為0。 可以看到雖然卷積核尺寸只有3x3,但是這個卷積的感受野已經(jīng)增大到了7x7。(c) 圖是4-dilated conv 操作,能達到15x15的感受野??斩淳矸e的好處是不做池化帶來損失信息的情況下,加大了感受野,讓每個卷積輸出都包含較大范圍的信息。
還有一種卷積神經(jīng)網(wǎng)絡稱為可形變卷積(Deformable convolutions)神經(jīng)網(wǎng)絡,其思想很巧妙:它認為規(guī)則形狀的卷積核(比如一般用的正方形3x3卷積)可能會限制特征的提取,如果賦予卷積核形變的特性,讓神經(jīng)網(wǎng)絡根據(jù)標注標簽反向傳播回來的誤差自動的調(diào)整卷積核的形狀,適應網(wǎng)絡重點關注的感興趣的區(qū)域,就可以提取更好的特征。如圖8所示,神經(jīng)網(wǎng)絡會根據(jù)原位置(a),學習一個偏移量,得到新的卷積像素點位置(b) 圖,那么一些特殊情況就會成為這個更泛化的模型的特例,例如圖(b) 中圖表示從不同尺度物體的識別,圖(b) 右圖表示旋轉物體的識別。

圖8 變形卷積

圖9 變形卷積
這個思想的實現(xiàn)方法也很常規(guī),上圖9中包含兩處卷積,第一處是獲取偏移(offsets)的卷積,即我們對輸入特征映射面(inputfeature map)做卷積,得到一個輸出(offsetfield),然后再在這個輸出上取對應位置的一組值作為偏移。假設輸入特征映射面的形狀為batch*height*width*channels,我們指定輸出通道變成兩倍,卷積得到的偏移域(offset field) 就是batch*height*width*2×channels。為什么指定通道變成兩倍呢?因為我們需要在這個偏移域里面取一組卷積核的偏移,而一個偏移肯定不能一個值就表示的,最少也要用兩個值(x方向上的偏移和y 方向上的偏移)所以,如果我們的卷積核是3x3,那意味著我們需要3x3個偏移,一共需要2x3x3個值。取完了這些值,就可以順利使卷積核形變了。第二處就是使用變形的卷積核來卷積,這個比較常規(guī)。
還有一種卷積神經(jīng)網(wǎng)絡稱為“特征重標定卷積神經(jīng)網(wǎng)絡”,這個卷積是對特征維度作改進的。一個卷積層中往往有數(shù)以千計的卷積核,而且我們知道卷積核對應了特征,可是那么多特征要怎樣區(qū)分呢?這種網(wǎng)絡就是通過學習的方式來自動獲取到每個特征通道的重要程度,然后依照計算出來的重要程度去提升有用的特征并抑制對當前任務用處不大的特征。如圖10所示,首先做普通的卷積,得到了輸出特征映射面(output feature map),它的形狀為C*H*W,這個特征映射面的特征很混亂。然后為了獲得重要性的評價指標,直接對這個特征映射面進行全局平均池化,就得到了長度為C的向量。然后對這個向量加兩個全連接層,做非線性映射,這兩個全連接層的參數(shù),也就是網(wǎng)絡需要額外學習的參數(shù)。最后輸出的向量,我們可以看做特征的重要性程度,然后與特征映射面對應通道相乘就得到特征有序的特征映射面了。

圖10 特征重標定卷積神經(jīng)網(wǎng)絡Squeeze-and-Excitation模塊
2017年6月,宇視科技(uniview)與英特爾(intel)聯(lián)合發(fā)布VDC12500系列視圖數(shù)據(jù)中心一體機『昆侖二代』,采用融合業(yè)務架構,支持CPU 通用計算板卡、GPU 計算板卡混插,實現(xiàn)通用計算業(yè)務、智能分析業(yè)務、大數(shù)據(jù)業(yè)務,廣泛應用于人工智能城市的建設:一臺可并發(fā)處理2.4億大庫智能搜索、或200億人車物的結構化數(shù)據(jù)分析、或8億數(shù)據(jù)秒級“以圖搜索”應用,具備強勁的高并發(fā)處理能力和集群化管理能力。
昆侖二代高性能專用計算平臺,插CPU 板卡可進行海量數(shù)據(jù)的處理,能夠快速存儲和索引,多種數(shù)據(jù)進行時空碰撞;插GPU 板卡則繼承全部昆侖一代的智能分析功能。昆侖二代=CPU 通用計算+ 大數(shù)據(jù)內(nèi)存計算+GPU 智能計算,實現(xiàn)視頻調(diào)度、大數(shù)據(jù)、智能等全部安防算力的融合。

圖11 英特爾助力昆侖二次進化,成為高性能專用計算平臺,采用彈性可擴展硬件架構,未來可以持續(xù)升級
總結
現(xiàn)在越來越多的卷積神經(jīng)網(wǎng)絡模型從巨型網(wǎng)絡到輕量化網(wǎng)絡一步步演變,模型準確率也越來越高。當前人工智能實踐中追求的重點已經(jīng)不只是準確率的提升,更都聚焦于速度與準確率的平衡,都希望模型又快又準。因此從原來AlexNet、VGGNet,到體積小一點的Inception、ResNet 系列,到目前能移植到移動端的MobileNet、ShuffleNet,我們可以看到這樣一些趨勢:
卷積核方面:
◆ 大卷積核用多個小卷積核代替;
◆ 單一尺寸卷積核用多尺寸卷積核代替;
◆ 固定形狀卷積核趨于使用可變形卷積核;
◆ 使用1×1 卷積核。
卷積層通道方面:
◆ 標準卷積用逐層卷積代替;
◆ 使用分組卷積;
◆ 分組卷積前使用通道重組(channel
shuffle);
◆ 通道加權計算。
卷積層連接方面:
◆ 使用忽略連接(skip connection),讓模型更深;
◆ 稠密連接(densely connection),使每一層都融合上其它層的特征輸出(DenseNet)
由此可見,應用于安防領域的人工智能中的深度卷積神經(jīng)網(wǎng)絡模型結構,研究領域為了更快、更準的檢測識別目標,一直在持續(xù)更新模型結構,由此也帶來了安防應用的不斷推陳出新。
杰夫? 辛頓(Geoffrey Hinton,1947-),以“深度學習之父”和“神經(jīng)網(wǎng)絡先驅”聞名于世,其對深度學習及神經(jīng)網(wǎng)絡的諸多核心算法和結構(包括“深度學習”這個名稱本身,反向傳播算法,受限玻爾茲曼機,深度置信網(wǎng)絡,對比散度算法,ReLU 激活單元,Dropout 防止過擬合,以及深度學習早期在語音方面突破)做出了基礎性的貢獻。他近幾年以“卷積神經(jīng)網(wǎng)絡有什么問題?”為主題做了多場報道,提出了膠囊(Capsule)計劃。Hinton 似乎毫不掩飾要推翻自己盼了30多年時間才建立起來的深度學習帝國的想法,他根據(jù)神經(jīng)解剖學、認知神經(jīng)科學、計算機圖形學的啟發(fā),對卷積神經(jīng)網(wǎng)絡產(chǎn)生了動搖。他的這種精神也獲得了同行李飛飛(ImageNet 創(chuàng)始者)等人肯定。
這標志著人工智能算法并沒有完全成熟起來,雖然現(xiàn)在在安防領域得到大量應用,但每種應用并不是很完美。這種不完美既有工程實踐問題,更有理論模型問題。在未來的人工智能應用道路上,卷積神經(jīng)網(wǎng)絡或者只是一個暫時的表現(xiàn)很優(yōu)秀的算法,將來必將會出現(xiàn)更加優(yōu)秀的算法。
參考文獻
[1]https://zhuanlan.zhihu.com/p/29367273
[2]http://prlab.tudelft.nl/sites/default/files/Deformable_CNN.pdf
[3]https://arxiv.org/pdf/1610.02357.pdf
[4]https://zhuanlan.zhihu.com/p/28749411
[4]https://zhuanlan.zhihu.com/p/29435406