var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?bbed808a7e81aea9265f249f4cb59cdb"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
人工智能現(xiàn)在應(yīng)用最好的一個(gè)領(lǐng)域就是基于視頻圖像的應(yīng)用,尤其是基于深度卷積神經(jīng)網(wǎng)絡(luò)在視頻圖像領(lǐng)域的應(yīng)用最為火熱。安防是人工智能技術(shù)最好的實(shí)踐領(lǐng)域,安防每天產(chǎn)生的全天候的海量視頻圖像數(shù)據(jù)為人工智能提供了最佳實(shí)踐基礎(chǔ)。

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

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



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

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

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


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

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

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