計算機視覺經典論文回顧——SPPNet論文解讀

2021-02-27 計算機視覺前沿速遞

1、總體結構

   對於多個候選區域依次進入特徵提取網絡進行圖像特徵提取,SPPNet採用直接將全圖輸入到卷積神經網絡中提取圖像特徵,然後在圖像特徵圖上找到候選區域的圖像特徵。此外,採用Spatial Pyramid Pooling將不同尺寸的候選區域特徵轉化為固定尺寸的值,避免了RCNN採用的縮放操作。

  總結來說,SPPNet的貢獻可分為共享卷積和Spatial Pyramid Pooling兩方面,下文將從這兩個方面對SPPNet實現方法進行介紹,並逐行閱讀Spatial Pyramid Pooling的Pytorch源碼。

2、共享卷積

    SPPNet依舊採用Selective Search來獲取圖像的候選區域,這一點和RCNN一致。但是RCNN是將獲得的2000個候選區域依次輸入到卷積神經網絡中去提取圖像特徵,而SPPNet是先將整張圖像輸入到卷積神經網絡中獲取特徵圖,隨後在這該特徵圖上獲取候選區域的特徵,相當於前者是過2000次卷積神經網絡來提取特徵,後者只過了一次,所以SPPNet提出的共享卷積可以加快運算速度。

  在具體的實現上,SPPNet直接將原圖輸入到卷積神經網絡中直接圖像特徵,然後利用區域和特徵圖之間的映射關係得到候選區域的特徵,如下圖所示:

3、Spatial Pyramid Pooling

  對於任意大小的特徵圖(如B×C×H×W),Spatial Pyramid Pooling首先分別將特徵圖劃分為若干數量的子塊,然後對這些子塊計算最大池化,將計算結果進行拼接即可得到固定大小的輸出。

  下圖採用了三個分支,分別將特徵圖劃分1×1、2×2、4×4大小的子塊(顯然,在不同的劃分模式下子塊大小是不一致的,輸入特徵圖尺寸不一致時子塊大小也不一樣),然後對每個子塊進行最大池化,即將不同大小的子塊都轉化為一個值,將池化之後的結果進行拼接即可得到一個大小固定為21維的輸出。如此一來,無論輸入特徵圖的尺寸發生如何變化,Spatial Pyramid Pooling均可將其轉化為固定大小的尺寸進行輸出。

4、Spatial Pyramid Pooling源碼解析

本部分以Pytorch 版本的源碼為例進行分析(地址:https://github.com/mmmmmmiracle/SPPNet/blob/master/sppnet.py)。

def spatial_pyramid_pool(previous_conv, num_sample, previous_conv_size, out_pool_size):
    """
    previous_conv: a tensor vector of previous convolution layer
    num_sample: an int number of image in the batch
    previous_conv_size: an int vector [height, width] of the matrix features size of previous convolution layer
    out_pool_size: a int vector of expected output size of max pooling layer
    returns: a tensor vector with shape [1 x n] is the concentration of multi-level pooling
"""
for i in range(len(out_pool_size)):
    # out_pool_size是一個數組,例如[1,2,4],表示需要將原先的特徵圖分別劃分為1×1、2×2、4×4三種.
        h, w = previous_conv_size
        # h,w表示原先特徵圖的長和寬
        h_wid = math.ceil(h / out_pool_size[i])
        w_wid = math.ceil(w / out_pool_size[i])
        # 計算每一個子塊的長和寬,這裡需要進行取整
        h_str = math.floor(h / out_pool_size[i])
        w_str = math.floor(w / out_pool_size[i])
        # 計算池化的步長
        max_pool = nn.MaxPool2d(kernel_size=(h_wid, w_wid), stride=(h_str, w_str))
        x = max_pool(previous_conv)
        # 對每個子塊進行最大池化
        if i == 0:
            spp = x.view(num_sample, -1)
        else:
            spp = torch.cat((spp, x.view(num_sample, -1)), 1)
        # 拼接各個子塊的輸出結果
    return spp

相關焦點

  • 2020 Top10計算機視覺論文總結:論文,代碼,解讀,還有demo視頻!
    有作者總結了10篇他認為最優秀的論文,大家一起看看吧,不光有論文,還有代碼,解讀,demo視頻哦。作者:louisfb01 編譯:ronghuaiyang 來源:AI公園儘管今年世界上發生了這麼多事情,我們還是有機會看到很多驚人的研究成果。特別是在人工智慧更精確的說是計算機視覺領域。
  • 分享丨2020 Top10計算機視覺論文總結:論文,代碼,解讀,還有demo視頻!
    特別是在人工智慧更精確的說是計算機視覺領域。此外,今年還聚焦了許多重要的方面,比如倫理方面、重要的偏見等等。人工智慧和我們對人類大腦及其與人工智慧的聯繫的理解在不斷發展,在不久的將來顯示出了有前途的應用,這一點我一定會講到。以下是我今年在計算機視覺領域最有趣的10篇研究論文,以免你錯過了其中的任何一篇。
  • CVPR2019最全整理:全部論文下載,Github源碼匯總、直播視頻、論文解讀等
    加入極市專業CV交流群,與6000+來自騰訊,華為,百度,北大,清華,中科院等名企名校視覺開發者互動交流!
  • 計算機視覺領域2019推薦論文列表
    在人體骨架點檢測以及目標檢測、圖像語義分割、人臉 關鍵點檢測等視覺問題上取得了領先的結果,被同行廣泛接受和使用。該論文發表在CVPR 2019。開源地址:https://github.com/HRNethttps://github.com/leoxiaobin/deep-high-resolution-net.pytorch2.
  • 你需要關注的計算機視覺論文在這裡!最新最全state-of-art論文,包含閱讀筆記
    我們不缺少計算機視覺論文,我們缺少的是鑑別哪些應該讀。無論是泛讀還是精度,海量論文總是讓我們迷失雙眼,Github搜索awesome有成百上千個repo,但是缺少比較和註解。我們應該去哪裡找值得讀的論文,我們打開pdf論文的姿勢正確嗎?計算機視覺的論文應該怎麼讀海量論文看不夠,自己萌發了分門別類寫閱讀筆記的習慣。
  • 計算機視覺知識點總結
    掃描文末二維碼立刻申請入群~分享一篇計算機視覺知識點的相關博文匯總,非常系統全面,超多乾貨,也歡迎大家補充好的文章。作者 | JustDoIT來源 | https://zhuanlan.zhihu.com/p/58776542目錄0 計算機視覺四大基本任務1 經典卷積網絡2 卷積、空洞卷積3 正則化4 全卷積網絡5 1*1卷積核6 感受野7 常見損失8 優化算法9 concat 和 add的區別
  • [計算機視覺論文速遞] ECCV 2018 專場9
    點擊上方「CVer」,選擇「置頂公眾號」重磅乾貨,第一時間送達前戲Amusi 將日常整理的論文都會同步發布到link: https://github.com/amusi/daily-paper-computer-visionECCV 2018是計算機視覺領域中的頂級會議,目前已經公開了部分已錄用的paper。
  • ECCV 2020 Spotlight 谷歌論文大盤點
    | https://arxiv.org/abs/1912.03098解讀 | 900萬注釋圖像數據集升級了! | https://arxiv.org/abs/1912.11370代碼 | https://github.com/google-research/big_transfer解讀 | 谷歌發布最先進的計算機視覺遷移模型BigTransfer(BiT)備註 | ECCV 2020 Spotlight使用大型數據集訓練並開放了模型,有助於CV社區模型預訓練的研究
  • 近萬人參與的CVPR2019全紀錄 | 含優秀論文解讀、全部論文下載
    ,是世界頂級的計算機視覺會議(三大頂會之一,另外兩個是ICCV和ECCV)。優秀論文解讀經過CVPR 2019最佳論文獎評選委員會(Best Paper Award Committee該論文在同行評審中獲得了所有三個「Strong Accept」,在投稿文章中審稿得分排名第一。Longuet-Higgins 獎是 IEEE 計算機協會模式分析與機器智能(PAMI)技術委員會在每年的 CVPR 頒發的 「計算機視覺基礎貢獻獎」,表彰十年前對計算機視覺研究產生了重大影響的 CVPR 論文。
  • 影響計算機視覺Top100論文,從ResNet到AlexNet
    【原文】github【編譯】新智元(ID:AI_era)計算機視覺近年來獲得了較大的發展,代表了深度學習最前沿的研究方向
  • 下載 ‖ 2017 CVPR 開放論文合輯大全
    該會議是由IEEE舉辦的計算機視覺和模式識別領域的頂級會議。作為全球最重量級的計算機視覺盛會,當然少不了眾多大咖加入。▼3.CVPR2017論文:使用VTransE網絡進行視覺關係檢測知識表示學習的思想(TransE)已經被成功應用於視覺關係提取(Visual Relation Extraction),提交 CVPR 2017 的新論文《Visual Translation Embedding Network for Visual Relation Detection
  • 【ICCV2017視覺盛宴概況】何愷明博士包攬最佳論文和最佳學生論文獎!Facebook成大贏家!
    Vision(ICCV 2017)正在義大利威尼斯開幕,來自世界各地的計算機視覺專家聚集在威尼斯介紹計算機視覺和相關領域的最新進展。國際計算機視覺會議ICCV和計算機視覺與模式識別會議(CVPR),以及歐洲計算機視覺會議(ECCV)並稱計算機視覺領域的三大頂級會議。本次會議涵蓋三維立體視覺、醫學圖像分析、人臉與姿態學習、底層視覺與圖像、運動與跟蹤、目標檢測與識別、優化方法、圖像的分割與邊緣提取、統計方法與學習、視頻事件檢測與行為識別等領域。
  • 【附論文】白話CNN經典模型:VGGNet
    2014年,牛津大學計算機視覺組(Visual Geometry Group)和Google DeepMind公司的研究員一起研發出了新的深度卷積神經網絡:VGGNet,並取得了ILSVRC2014比賽分類項目的第二名(第一名是
  • 深度 CVPR 2016谷歌論文全收錄:直擊谷歌計算機視覺研究最新動態(附論文)
    此次年度計算機視覺大會包括幾個主要的會議和若干多地同時進行的研討會和短期課程。作為計算機視覺研究的領導者,谷歌帶著 8 篇論文,受邀討論,強勢出現在此次發布會、課程和研討會上。據谷歌 Research Blog 介紹,谷歌的研究員劉策(Ce Liu)和谷歌學院顧問 Abhinav Gupta,雙雙被選為年度在計算機視覺中做出傑出研究貢獻的 PAMI 青年研究者獎。
  • 從十篇頂會論文解讀計算機視覺的未來之路!
    點上方藍字計算機視覺聯盟獲取更多乾貨在右上方
  • ECCV 2020 實例分割+全景分割論文大盤點(14篇論文)
    點擊上方「計算機視覺Daily」,選擇加"星標"重磅乾貨,第一時間送達
  • 腦洞大開的機器視覺多領域學習模型結構 | CVPR 2018論文解讀
    論文亮點這篇論文來自於牛津大學 VGG 組,該研究小組在機器視覺和遷移學習領域發表多篇重磅論文並且都被各類頂會錄用,作者之一的 Andrea Vedaldi 就是輕量級視覺開源框架 VLFeat 的主要作者。 平常工程中或者參加過 Kaggle 比賽的都知道遷移學習對模型效果提升、訓練效率提升的好處。
  • 最適合初學者的18個經典開源計算機視覺項目
    概述開源計算機視覺項目是在深度學習領域中佔據一席之地的絕佳路徑開始學習這18個非常受歡迎的經典開源計算機視覺項目(http://image-net.org/download)ImageNet數據集是一個為計算機視覺研究的巨大圖像數據集, 這個數據集中有多於140萬張圖像被手供標註, 並且這些標註說明了圖像中含有那些物體。並且有多餘1萬張圖像標註了物品的邊界框。ImageNet包含了多餘20000類的物品。
  • 論文分享 | 丟棄卷積,純Transformer構建GAN網絡
    最近,計算機視覺(CV)領域的研究者對 Transformer 產生了極大的興趣並陸續取得了不少突破。
  • 時隔一年,盤點CVPR 2019影響力最大的20篇論文
    這些論文絕大多數有工業界巨頭的身影,英偉達貢獻 2 篇 (第一名來自英偉達),谷歌貢獻 4 篇,Facebook 貢獻 4 篇,亞馬遜1篇, 國內微軟亞研院2篇,商湯 1 篇,京東 1篇。5. 目標檢測是計算機視覺領域非常火的方向,但入選的兩篇全是3D點雲目標檢測。6.