<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è)計技巧:兼顧速度精度與工程實現(xiàn)

          共 3872字,需瀏覽 8分鐘

           ·

          2022-07-22 10:32

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達


          作者:akkaze-鄭安坤
          https://zhuanlan.zhihu.com/p/100609339
          本文已由作者授權(quán),未經(jīng)允許,不得二次轉(zhuǎn)載


          一、總綱

          cnn中各個參數(shù)的辯證矛盾。
          深度決定了網(wǎng)絡(luò)的表達能力,網(wǎng)絡(luò)越深學習能力越強。
          寬度決定了網(wǎng)絡(luò)在某一層學到的信息量。
          感受野決定了網(wǎng)絡(luò)在某一層看到多大范圍,一般說來最后一層一定至少要能看到最大的有意義的物體,更大的感受野通常是無害的。
          在達到相同感受野的情況下,多層小卷積核的性能一定比大卷積核更好。
          分辨率很重要,盡量不要損失分辨率,為了保住分辨率,在使用下采樣之前要保證在這一層上有足夠的感受野,這個感受野是相對感受野,是指這一個下采樣層相對于上一個下采樣層的感受野,把兩個下采樣之間看成一個子網(wǎng)絡(luò)的話,這個子網(wǎng)絡(luò)必須得有一定的感受野才能將空間信息編碼到下面的網(wǎng)絡(luò)去,而具體需要多大的相對感受野,只能實驗,一般說來,靠近輸入層的層空間信息冗余度最高,所以越靠近輸入層相對感受野應(yīng)該越小。同時在靠近輸入層的層,這里可以合成一個大卷積核來降低計算量。
          這種矛盾決定了下面的做法:
          前面幾層下采樣頻率高一點,中間層下采樣頻率降低,并使用不下采樣的方法提高深度。
          網(wǎng)絡(luò)能深則深,在保持比較小寬度的時候,要想辦法加深網(wǎng)絡(luò),變深的過程中網(wǎng)絡(luò)慢慢變胖。
          使用小卷積核,小卷積核有利于網(wǎng)絡(luò)走向更深,并且有更好的識別魯棒性,尤其是在分辨率更小的特征圖上,因為卷積核的尺寸是相當于特征圖的分辨率來說的,大特征圖上偏大的卷積核其實也并不大。
          下采樣在網(wǎng)絡(luò)前幾層的密度大一些,(這樣能盡可能用微弱精度損失換取速度提升) 越往后下采樣的密度應(yīng)該更小,最終能夠下采樣的最大深度,以該層的感受野以及數(shù)據(jù)集中最大的有意義物體尺寸決定(自然不可能讓最大有意義的物體在某一層被下采樣到分辨率小于1,但是網(wǎng)絡(luò)依然可以work,只不過最后幾層可能廢棄了(要相信cnn的學習能力,因為最大不了它也能學出單位卷積,也就是只有中心元素不為0的卷積核),更準確的說這是最大感受野的極限,最大感受野應(yīng)該覆蓋數(shù)據(jù)集中最大有意義的物體)。
          第一層下采樣的時候大卷積核能盡可能保住分辨率(其實相當于合成了兩三層小卷積核,另外,這和插值是類似的,類比于最近鄰插值,雙線性插值,雙三次插值,這其實和感受野理論一致,更遠的插值意味著更大的感受野)。
          越靠前分辨率降低越快,中間一定要加深
          shortcut connection里,找不到concat,用add湊合吧,在需要量化的場合,add會更好,反之亦然。
          先訓一個大模型然后裁剪,也許比直接訓一個小模型性能好。
          能用可分離卷積替代的卷積一定要替代,一般除了第一個卷積,都能替代,替代完后考慮給替代可分離的通道數(shù)乘以2,因為可分離卷積的參數(shù)和計算量都是線性增長的,這樣做依然有速度增益。同樣的道理適用于2+1分離卷積。
          計算量線性增長,可以控制通道數(shù)和depth multiplier,代價小
          inception或者shortcut connection或者dense connection其實都相當于ensemble模型,考慮結(jié)合使用,shortcut connection的使用幾乎是無痛的。
          各種inception結(jié)構(gòu),尤其是后面兩種,使用空間分離卷積,計算量小且性能好

          二、分割篇(上采樣篇,深度估計,光流估計結(jié)構(gòu)設(shè)計是類似的)

          網(wǎng)絡(luò)最后面完全可以使用不采樣的空洞卷積來做,對于分割尤其如此。
          最后面不要再下采樣了,會損失很多分辨率,考慮使用aspp來融合不同尺度的感受野
          轉(zhuǎn)置卷積完全可以使用上采樣+卷積來替代。
          幾種不同的上采樣:(a)先用upsamling或者unpooling然后接兩個conv,并使用跳轉(zhuǎn)連接,(b)使用upsampling或者unpooling然后接普通的conv,(c)接轉(zhuǎn)置卷積(d)卷積后使用upsampling或者unpooling
          這四種上采樣方法里面,a的性能最好,但是計算量最大,b的計算量也很大,c和d的計算量相當,但是c很容易產(chǎn)生棋盤格現(xiàn)象。
          a和b還有更加快速的版本,可見
          更快版本的upconv和upproj,具體來說就是用四個小卷積核,分別是3x3,2x3,3x2和2x2來代替大卷積核,然后用interleaving來代替unpooling
          interleaving的實現(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而言,感受野不用太大,具體指去噪,去馬賽克,圖像增強,和關(guān)鍵點等任務(wù)

          四、檢測篇

          對于檢測,anchor層不一定要有三層,同一層按照需求可以設(shè)定的aspect ratio和size都是可選的,比如blazeface使用兩層anchor,這個要按照需求設(shè)計,事實上不同的層其實代表著不用的scale,三層就是三個scale,兩層就是兩個scale,一般說來scale分為大中小三種,但是依具體情況而變,主要取決于數(shù)據(jù)集中的scale分布。
          更密集的anchor設(shè)置對于密集檢測更有利
          blazeface使用兩層anchor
          bifpn真的有用,性能有提升且計算量小。
          檢測中各種融合不同scale的方法,bifpn取得了性能和速度的最好平衡
          batchnorm一定要用,如果你是多機多卡,也可以考慮同步的batchnorm。
          如果你的一階段檢測模型得不到好的分類結(jié)果,考慮兩階段,先檢測再分類。
          檢測模型里的預訓練模型是有用的,至少能提升前景背景的檢測區(qū)分度。

          五、metric learning篇

          metric learning(圖像比對)一般說來是batchsize更大會性能更好,因為這樣能采樣到的正負樣本對的范圍更大。
          實際使用中,負樣本的空間是非常大的,比正樣本大很多,所以需要比較大的采樣空間

          六、分類篇

          如果你的分類精度不夠是因為有兩類或者多類太相近造成的,考慮使用其他softmax,比如amsoftmax。
          各種魔改的softmax能更好的增大類間差距,能夠更好的分開softmax分不開的類別
          如果你的分類精度不夠是樣本不均衡造成的,考慮使用focal loss。
          不要只看精度,考慮其他metrics,并始終以上線后的可視化效果為最終評判標準。
          盡可能使用全卷積網(wǎng)絡(luò)來做landmark,不要直接用fc回歸,回歸真的不太穩(wěn)定。另外,數(shù)學意義上的cnn是平移不變的,位置信息是通過padding泄露出來,所以fc直接回歸landmark相當于用padding去擬合位置信息。

          七、landmark篇

          全卷積回歸landmark如有必要一定要考慮part affinity fields的做法。
          全卷積計算landmark,中間兩幅圖是heatmap高斯分布,以landmark為中心,下面是part affinity map
          part affinity fields是替代picturiol model最好的選擇,并且它也是全卷積的,它能極大的提高關(guān)節(jié)點檢測的魯棒性
          兩個全卷積分支,上面預測heatmap,小面預測paf,最后過一個parsing把兩支結(jié)合起來
          一定要做圖像亮度變換增強,亮度魯棒性會更好,但是要結(jié)合你的數(shù)據(jù)的亮度分布自適應(yīng)的調(diào)整。
          最后,在不改動網(wǎng)絡(luò)backbone的基礎(chǔ)上,多嘗試一些新的loss,工程上的代價并不大。

          好消息!

          小白學視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  乱伦小说五月天 | 国产亚洲精品久久久久动 | 大香蕉大香蕉欧美 | 午夜插逼| 青草视频在线观看视频 |