<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CNN結(jié)構(gòu)設(shè)計(jì)技巧-兼顧速度精度與工程實(shí)現(xiàn)

          共 6203字,需瀏覽 13分鐘

           ·

          2021-12-28 23:54

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨akkaze-鄭安坤
          來源丨https://zhuanlan.zhihu.com/p/100609339
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          本文總結(jié)了CNN在分割、檢測、low-level、metric learning等領(lǐng)域的應(yīng)用方法和設(shè)計(jì)技巧。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          目錄:

          • 總綱

          • 分割篇

          • low-level篇

          • 檢測篇

          • metric learning篇

          • 分類篇

          • landmark篇

          • 視頻理解篇

          • 雙目篇

          • 3D篇

          • 數(shù)據(jù)增強(qiáng)篇


          總綱


          cnn中各個(gè)參數(shù)的辯證矛盾。

          深度決定了網(wǎng)絡(luò)的表達(dá)能力,網(wǎng)絡(luò)越深學(xué)習(xí)能力越強(qiáng)。

          寬度(通道數(shù))決定了網(wǎng)絡(luò)在某一層學(xué)到的信息量,另外因?yàn)榫矸e層能重組通道間的信息,這一操作能讓有效信息量增大(這也是1x1卷積的作用,它能學(xué)習(xí)出重組信息,使得對于任務(wù)更友好,所以這里不能和分離卷積一起比較,傳統(tǒng)卷積的有效卷積數(shù)更多,正比于輸入通道乘以輸出通道,分離卷積的有效卷積正比于輸入通道數(shù),傳統(tǒng)卷積相當(dāng)于分離卷積前升維再做分離卷積)。

          感受野決定了網(wǎng)絡(luò)在某一層看到多大范圍,一般說來最后一層一定至少要能看到最大的有意義的物體,更大的感受野通常是無害的。

          在達(dá)到相同感受野的情況下,多層小卷積核的性能一定比大卷積核更好,因?yàn)槎鄬有【矸e核的非線性更強(qiáng),而且更有利于特征共享。

          多層小卷積核參數(shù)量少,非線性強(qiáng),有利于特征共享

          分辨率很重要,盡量不要損失分辨率,為了保住分辨率,在使用下采樣之前要保證在這一層上有足夠的感受野,這個(gè)感受野是相對感受野,是指這一個(gè)下采樣層相對于上一個(gè)下采樣層的感受野,把兩個(gè)下采樣之間看成一個(gè)子網(wǎng)絡(luò)的話,這個(gè)子網(wǎng)絡(luò)必須得有一定的感受野才能將空間信息編碼到下面的網(wǎng)絡(luò)去,而具體需要多大的相對感受野,只能實(shí)驗(yàn),一般說來,靠近輸入層的層空間信息冗余度最高,所以越靠近輸入層相對感受野應(yīng)該越小。同時(shí)在靠近輸入層的層,這里可以合成一個(gè)大卷積核來降低計(jì)算量。

          這種矛盾決定了下面的做法:

          前面幾層下采樣頻率高一點(diǎn),中間層下采樣頻率降低,并使用不下采樣的方法提高深度。

          網(wǎng)絡(luò)能深則深,在保持比較小寬度的時(shí)候,要想辦法加深網(wǎng)絡(luò),變深的過程中網(wǎng)絡(luò)慢慢變胖。

          使用小卷積核(不包括1x1,因?yàn)樗鼘τ谠黾痈惺芤盁o意義),小卷積核有利于網(wǎng)絡(luò)走向更深,并且有更好的識(shí)別魯棒性,尤其是在分辨率更小的特征圖上,因?yàn)榫矸e核的尺寸是相當(dāng)于特征圖的分辨率來說的,大特征圖上偏大的卷積核其實(shí)也并不大。

          下采樣在網(wǎng)絡(luò)前幾層的密度大一些,(這樣能盡可能用微弱精度損失換取速度提升) 越往后下采樣的密度應(yīng)該更小,最終能夠下采樣的最大深度,以該層的感受野以及數(shù)據(jù)集中最大的有意義物體尺寸決定(自然不可能讓最大有意義的物體在某一層被下采樣到分辨率小于1,但是網(wǎng)絡(luò)依然可以work,只不過最后幾層可能廢棄了(要相信cnn的學(xué)習(xí)能力,因?yàn)樽畲蟛涣怂材軐W(xué)出單位卷積,也就是只有中心元素不為0的卷積核),更準(zhǔn)確的說這是最大感受野的極限,最大感受野應(yīng)該覆蓋數(shù)據(jù)集中最大有意義的物體)。

          第一層下采樣的時(shí)候大卷積核能盡可能保住分辨率(其實(shí)相當(dāng)于合成了兩三層小卷積核,另外,這和插值是類似的,類比于最近鄰插值,雙線性插值,雙三次插值,這其實(shí)和感受野理論一致,更遠(yuǎn)的插值意味著更大的感受野)。

          越靠前分辨率降低越快,中間一定要加深

          shortcut connection里,找不到concat,用add湊合吧,在需要量化的場合,add會(huì)更好,反之亦然。

          先訓(xùn)一個(gè)大模型然后裁剪,也許比直接訓(xùn)一個(gè)小模型性能好。

          能用可分離卷積替代的卷積一定要替代,一般除了第一個(gè)卷積,都能替代,替代完后考慮給替代可分離的通道數(shù)乘以2,因?yàn)榭煞蛛x卷積的參數(shù)和計(jì)算量都是線性增長的,這樣做依然有速度增益。同樣的道理適用于2+1分離卷積。

          計(jì)算量線性增長,可以控制通道數(shù)和depth multiplier,代價(jià)小

          這里稍微提醒一下分離卷積在大型gpu上性能不好原因是gpu利用率,因?yàn)榇笮蚲pu核心數(shù)太多,如果計(jì)算量不夠大核心沒有用完,那么不同卷積層比較不出差異,反而層數(shù)帶來的延遲會(huì)更嚴(yán)重,但是我個(gè)人表示相信分離卷積在未來一定會(huì)被合成一個(gè)層,這只是工程問題。

          inception或者shortcut connection或者dense connection其實(shí)都相當(dāng)于ensemble模型,考慮結(jié)合使用,shortcut connection的使用幾乎是無痛的。

          各種inception結(jié)構(gòu),尤其是后面兩種,使用空間分離卷積,計(jì)算量小且性能好

          使用通道注意力,比如squeeze and excitation attention:

          通道注意力能使通道信息對于任務(wù)更友好,尤其是分類任務(wù),semodule能被在任何原網(wǎng)絡(luò)任何地方插入,計(jì)算量只有小幅上漲

          事實(shí)上,senet是hrnet的一個(gè)特例,hrnet不僅有通道注意力,同時(shí)也有空間注意力

          hrnet的基本單元



          分割篇


          網(wǎng)絡(luò)最后面完全可以使用不采樣的空洞卷積來做,對于分割尤其如此。
          最后面不要再下采樣了,會(huì)損失很多分辨率,考慮使用aspp來融合不同尺度的感受野

          轉(zhuǎn)置卷積完全可以使用上采樣+卷積來替代。

          幾種不同的上采樣:(a)先用upsamling或者unpooling然后接兩個(gè)conv,并使用跳轉(zhuǎn)連接,(b)使用upsampling或者unpooling然后接普通的conv,(c)接轉(zhuǎn)置卷積(d)卷積后使用upsampling或者unpooling

          這四種上采樣方法里面,a的性能最好,但是計(jì)算量最大,b的計(jì)算量也很大,c和d的計(jì)算量相當(dāng),但是c很容易產(chǎn)生棋盤格現(xiàn)象。

          a和b還有更加快速的版本,可見
          更快版本的upconv和upproj,具體來說就是用四個(gè)小卷積核,分別是3x3,2x3,3x2和2x2來代替大卷積核,然后用interleaving來代替unpooling

          interleaving的實(shí)現(xiàn)如下,可以參見tensorflow的depth_tospace或者pytorch的pixel_shuffle,這就是子像素卷積。

          interleaving也就是子像素卷積,它也是一種上采樣方法

          對于分割模型而言,在encoder和decoder之間使用長跳轉(zhuǎn)連接,在encoder和decoder內(nèi)部使用短跳轉(zhuǎn)連接,尤其是encoder比較深的情況下。

          需要短跳轉(zhuǎn)連接,否則中間層無法被有效更新


          low-level篇


          感受野也不是越大越好(大感受野意味著更多的語義信息),對于某些low-level的任務(wù)而言,比如圖像降噪,感受野可能也就局部patch大小,對于low-level而言,下采樣的意義更小,盡可能少使用下采樣。

          對于low-level而言,感受野不用太大,具體指去噪,去馬賽克,圖像增強(qiáng),和關(guān)鍵點(diǎn)等任務(wù)


          檢測篇


          對于檢測,anchor層不一定要有三層,同一層按照需求可以設(shè)定的aspect ratio和size都是可選的,比如blazeface使用兩層anchor,這個(gè)要按照需求設(shè)計(jì),事實(shí)上不同的層其實(shí)代表著不用的scale,三層就是三個(gè)scale,兩層就是兩個(gè)scale,一般說來scale分為大中小三種,但是依具體情況而變,主要取決于數(shù)據(jù)集中的scale分布(這點(diǎn)可能需要修改了,因?yàn)楦鶕?jù)最新的論文,可能不需要鋪更密的anchor,但是需要新的采樣算法)。

          更密集的anchor設(shè)置對于密集檢測更有利
          blazeface使用兩層anchor

          bifpn真的有用,性能有提升且計(jì)算量小。

          檢測中各種融合不同scale的方法,bifpn取得了性能和速度的最好平衡

          batchnorm一定要用,如果你是多機(jī)多卡,也可以考慮同步的batchnorm。

          如果你的一階段檢測模型得不到好的分類結(jié)果,考慮兩階段,先檢測再分類。

          檢測模型里的預(yù)訓(xùn)練模型是有用的,至少能提升前景背景的檢測區(qū)分度。

          anchor free暫不討論,以后再添加,因?yàn)閍nchor based方法效果已經(jīng)不錯(cuò)了,并且工程上非常成熟。另外請記住,密集檢測沒法完全做到anchor free,因?yàn)槭聦?shí)上檢測目標(biāo)的可能的位置和寬度高度的分布范圍太廣 ,所以必須要加上限制,而這個(gè)限制本質(zhì)上就是anchor,另外anchor很容易推廣到3d檢測。

          anchor free方法里面需要預(yù)測bbox,也需要一定限制,這個(gè)限制本質(zhì)上也是一個(gè)anchor



          metric learning篇


          metric learning(圖像比對)一般說來是batchsize更大會(huì)性能更好,因?yàn)檫@樣能采樣到的正負(fù)樣本對的范圍更大。

          實(shí)際使用中,負(fù)樣本的空間是非常大的,比正樣本大很多,所以需要比較大的采樣空間



          分類篇


          如果你的分類精度不夠是因?yàn)橛袃深惢蛘叨囝愄嘟斐傻?,考慮使用其他softmax,比如amsoftmax。

          各種魔改的softmax能更好的增大類間差距,能夠更好的分開softmax分不開的類別

          如果你的分類精度不夠是樣本不均衡造成的,考慮使用focal loss。

          不要只看精度,考慮其他metrics,并始終以上線后的可視化效果為最終評判標(biāo)準(zhǔn)。


          landmark篇


          盡可能使用全卷積網(wǎng)絡(luò)來做landmark,不要直接用fc回歸,回歸真的不太穩(wěn)定。另外,數(shù)學(xué)意義上的cnn是平移不變的,位置信息是通過padding泄露出來,所以fc直接回歸landmark相當(dāng)于用padding去擬合位置信息。

          全卷積回歸landmark如有必要一定要考慮part affinity fields的做法。


          全卷積計(jì)算landmark,中間兩幅圖是heatmap高斯分布,以landmark為中心,下面是part affinity map

          part affinity fields是替代picturiol model最好的選擇,并且它也是全卷積的,它能極大的提高關(guān)節(jié)點(diǎn)檢測的魯棒性

          兩個(gè)全卷積分支,上面預(yù)測heatmap,小面預(yù)測paf,最后過一個(gè)parsing把兩支結(jié)合起來


          以下內(nèi)容涉及3d卷積:

          這就是3d卷積,可以看到和2d卷積沒有本質(zhì)差異,只是輸入輸出都變成了3d



          視頻理解篇


          視頻理解的常用架構(gòu),分為lstm,單流和雙流,其中雙流使用稠密光流作為一支輸入



          雙目篇(立體匹配)


          這里提醒作立體匹配前必須做畸變校正和極線校正

          原始雙目圖像的極線都是傾斜的,立體匹配一定要糾正為圖像基線平行的平行線

          視差和深度的關(guān)系

          視差估計(jì)一般分為兩個(gè)階段,代價(jià)初始值計(jì)算構(gòu)建cost volume(cost-volume也是3d的)和代價(jià)聚合,在最簡單的架構(gòu)里面,直接在feature-map使用L1或者L2構(gòu)建cost volume(也叫做distance-based cost volume)

          在feature map上使用距離度量作為cost

          多級預(yù)測,最深層次預(yù)測一個(gè)粗視差,然后不斷預(yù)測residual,disparity網(wǎng)絡(luò)的主體是3d卷積
          視差估計(jì)網(wǎng)絡(luò)

          3d卷積負(fù)責(zé)代價(jià)匹配的代價(jià)其實(shí)很大,因?yàn)?d卷積的計(jì)算量其實(shí)比較大。

          GANet借鑒sgm(semi-global matching)算法的思想,使用如下公式來進(jìn)行代價(jià)聚合,

          動(dòng)態(tài)規(guī)劃進(jìn)行代價(jià)聚合,這個(gè)公式可以看成可微分的sgm

          GA-Net使用GA來進(jìn)行代價(jià)聚合,代替3d卷積,計(jì)算量小了非常多



          3D篇


          lidar篇

          lidar最為特殊,因?yàn)樗妮斎胧欠植疾痪鶆虻目臻g點(diǎn)集,也就是點(diǎn)云,不像2d圖像或者3d視頻那樣,均勻分布。


          點(diǎn)云存在的問題

          1. 無序性:點(diǎn)云本質(zhì)上是一長串點(diǎn)(nx3矩陣,其中n是點(diǎn)數(shù))。在幾何上,點(diǎn)的順序不影響它在空間中對整體形狀的表示,例如,相同的點(diǎn)云可以由兩個(gè)完全不同的矩陣表示。

          2. 相同的點(diǎn)云在空間中經(jīng)過一定的剛性變化(旋轉(zhuǎn)或平移),坐標(biāo)發(fā)生變化,我們希望不論點(diǎn)云在怎樣的坐標(biāo)系下呈現(xiàn),網(wǎng)絡(luò)都能得到相同的結(jié)果。



          也就是說我們希望點(diǎn)云上的神經(jīng)網(wǎng)絡(luò)同時(shí)具有點(diǎn)集置換不變性和剛性不變性
          pointnet的做法,保證置換不變性,去擬合一個(gè)對稱函數(shù),對稱函數(shù)有置換不變性,比如x1+x2,同理x1-x2沒有置換不變性

          為了保證置換不變性去擬合一個(gè)對稱函數(shù)

          為了保證剛性不變性,類似于spatial transformer network的做法,用一個(gè)旁支去擬合一個(gè)剛性變換,

          擬合一個(gè)剛性變換,作用在原始點(diǎn)集上,注意升維之后,就不止3個(gè)分量了

          所有的擬合都是通過mlp進(jìn)行的,


          所以本質(zhì)上它不是一個(gè)卷積神經(jīng)網(wǎng)絡(luò),pointnet的通用架構(gòu)如下


          pointconv

          pointnet不是卷積神經(jīng)網(wǎng)絡(luò),在19年的cvpr上,有這樣一篇論文,叫pointconv,它實(shí)現(xiàn)了點(diǎn)集上的卷積

          注意到的是輸出的是一個(gè)定義在三維平面上的函數(shù),xyz是它的定義域,原始點(diǎn)集是常函數(shù)

          其中,W 和 F 均為連續(xù)函數(shù),(x,y,z)(x,y,z) 是 3D 參考點(diǎn)的坐標(biāo),(δx,δy,δz)(δx,δy,δz) 表示鄰域 G 中的 3D 點(diǎn)的相對坐標(biāo)。上式可以離散化到一個(gè)離散的 3D 點(diǎn)云上。同時(shí),考慮到 3D 點(diǎn)云可能來自于一個(gè)不均勻采樣函數(shù),為了補(bǔ)償不均勻采樣,使用逆密度對學(xué)到的權(quán)重進(jìn)行加權(quán)。PointConv 可以由下式表示,


          離散化后如下所示


          其中,S 表示逆密度系數(shù)函數(shù)。連續(xù)函數(shù) W 可以用多層感知器(MLP)近似。函數(shù) W 的輸入是以 (x, y, z) 為中心的 3D 鄰域內(nèi)的 3D 點(diǎn)的相對坐標(biāo),輸出是每個(gè)點(diǎn)對應(yīng)的特征 F 的權(quán)重。S 是一個(gè)關(guān)于密度的函數(shù),輸入是每個(gè)點(diǎn)的密度,輸出是每個(gè)點(diǎn)對應(yīng)的逆密度系數(shù)。這個(gè)非線性的函數(shù)同樣可以用一個(gè)多層感知機(jī)近似。


          pointconv是真正的卷積操作,可以期待以后在其上可以做3d分類,分割,檢測,和2d卷積網(wǎng)絡(luò)使用方法幾乎一致。


          數(shù)據(jù)增強(qiáng)篇


          一定要做圖像亮度變換增強(qiáng),亮度魯棒性會(huì)更好,但是要結(jié)合你的數(shù)據(jù)的亮度分布自適應(yīng)的調(diào)整。

          最后,在不改動(dòng)網(wǎng)絡(luò)backbone的基礎(chǔ)上,多嘗試一些新的loss,工程上的代價(jià)并不大。

          如果覺得有用,就請分享到朋友圈吧!
          △點(diǎn)擊卡片關(guān)注極市平臺(tái),獲取最新CV干貨

          公眾號后臺(tái)回復(fù)“畫圖模版”獲取機(jī)器學(xué)習(xí)畫圖模版資源~


          極市干貨
          課程/比賽:珠港澳人工智能算法大賽保姆級零基礎(chǔ)人工智能教程
          算法trick目標(biāo)檢測比賽中的tricks集錦從39個(gè)kaggle競賽中總結(jié)出來的圖像分割的Tips和Tricks
          技術(shù)綜述:一文弄懂各種loss function工業(yè)圖像異常檢測最新研究總結(jié)(2019-2020)


          #?CV技術(shù)社群邀請函?#

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart4)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


          即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~



          覺得有用麻煩給個(gè)在看啦~??
          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费一级a毛片在线播放直播 | 国产精品久久夜色 | 无码一区二区三区四区精 | 成人精品在线观看 | 最大看逼网|