Mask RCNN筆記

mask rcnn簡介

mask rcnn是何凱明基于以往的faster rcnn架構提出的新的卷積網絡,一舉完成了object instance segmentation. 該方法在有效地目標的同時完成了高質量的語義分割。 文章的主要思路就是把原有的Faster-RCNN進行擴展,添加一個分支使用現有的檢測對目標進行并行預測。同時,這個網絡結構比較容易實現和訓練,速度5fps也算比較快點,可以很方便的應用到其他的領域,像目標檢測,分割,和人物關鍵點檢測等。并且比著現有的算法效果都要好,在后面的實驗結果部分有展示出來。

場景理解


這里寫圖片描述

Mask R-CNN: overview


這里寫圖片描述

從上面可以知道,mask rcnn主要的貢獻在于如下:
1. 強化的基礎網絡
通過 ResNeXt-101+FPN 用作特征提取網絡,達到 state-of-the-art 的效果。
2. ROIAlign解決Misalignment 的問題
3. Loss Function

細節描述

1. resnet +FPN

作者替換了在faster rcnn中使用的vgg網絡,轉而使用特征表達能力更強的殘差網絡

另外為了挖掘多尺度信息,作者還使用了FPN網絡。

2. ROIAlign

說到這里,自然要與roi pooling對比。
我們先看看roi pooling的原理,這里我們可以看https://github.com/deepsense-ai/roi-pooling 的動圖,一目了然。

對于roi pooling,經歷了兩個量化的過程:
第一個:從roi proposal到feature map的映射過程。方法是[x/16],這里x是原始roi的坐標值,而方框代表四舍五入。
第二個:從feature map劃分成7*7的bin,每個bin使用max pooling。

這里寫圖片描述
這兩種情況都會導致證輸入和輸出之間像素級別上的一一對應(pixel-to-pixel alignment between network input and output)。

因此作者設計了ROI Align layer。

作者的ROI Align layer想法很簡單,就是去掉ROI Pooling過程中所有的量化過程,包括從原圖proposal到最后一層feature map映射,以及把feature map劃分成m*m的bin過程中的量化。

我們使用何凱明在iccv2017的ppt來說明。可以在百度云盤下載。鏈接: https://pan.baidu.com/s/1jHRubfK 密碼: jh5c

這里寫圖片描述

如上,roi映射到feature map后,不再進行四舍五入。然后將候選區域分割成k x k個單元, 在每個單元中計算固定四個坐標位置,用雙線性內插的方法計算出這四個位置的值,然后進行最大池化操作。

這里對上述步驟的第三點作一些說明:這個固定位置是指在每一個矩形單元(bin)中按照比例確定的相對位置。比如,如果采樣點數是1,那么就是這個單元的中心點。如果采樣點數是4,那么就是把這個單元平均分割成四個小方塊以后它們分別的中心點。顯然這些采樣點的坐標通常是浮點數,所以需要使用插值的方法得到它的像素值。在相關實驗中,作者發現將采樣點設為4會獲得最佳性能,甚至直接設為1在性能上也相差無幾。事實上,ROI Align 在遍歷取樣點的數量上沒有ROIPooling那么多,但卻可以獲得更好的性能,這主要歸功于解決了misalignment的問題。值得一提的是,在做實驗的時候發現,ROI Align在VOC2007數據集上的提升效果并不如在COCO上明顯。經過分析為造成這種區別的原因是COCO上小目標的數量更多,而小目標對misalignment問題的影響更為明顯(比如,同樣是0.5個像素點的偏差,對于較大的目標而言顯得微不足道,但是對于小目標,誤差的影響就要高很多)

下面摘取上面百度云盤里的一個ppt的插圖,更加細致地描述roialign。


這里寫圖片描述
這里寫圖片描述
這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

也可以參考:http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b

上面這篇文章還介紹了ROI Align的反向傳播算法。
roi pooling的求導可以參考:http://ow680yzep.bkt.clouddn.com/iccv15_tutorial_training_rbg.pdf

下圖對比了三種方法的不同,其中roiwarp來自:J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades
這里寫圖片描述

3. loss function

損失函數就是分類,回歸加mask預測的損失之和。
這里寫圖片描述
其中,對于mask分支和其他的分類分支一樣,使用全卷積網絡輸出,輸出了k類的mask。注意這里mask的輸出使用了sigmoid函數。最后可以通過與閾值0.5作比較輸出二值mask。這樣避免了類間的競爭,將分類的任務交給專業的classification分支。

而Lmask對于每一個像素使用二值的sigmoid交叉熵損失。

參考theano的文檔,二值的交叉熵定義如下: 這里的o就是sigmoid輸出。
這里寫圖片描述

4. 整個網絡結構

這里寫圖片描述
這里實際上有兩個網絡結構,一個就是:Mask R-CNN: overview的那副圖(或者如上左邊)。使用resnet-c4作為前面的卷積網絡,將rpn生成的roi映射到C4的輸出,并進行roi pooling,最后進行分叉預測三個目標。

另一個網絡就是這里的faster rcnn with fpn。
這里寫圖片描述

上述圖像同樣來自何凱明的ICCV2017 ppt
如上,使用fpn網絡,每一個階層連接一個三分支網絡。考慮了多尺度信息,因此可以檢測更加小的目標。
至于是否像之前的FPN在各階層共享三分支網絡,不太清楚。

總結

mask rcnn的主要貢獻其實就是roi align以及加了一個mask分支。
目前開源代碼有:

  • https://github.com/TuSimple/mx-maskrcnn

    • https://github.com/CharlesShang/FastMaskRCNN

    • CAFFE :https://github.com/jasjeetIM/Mask-RCNN

期待官方的源碼放出~~

參考文獻

  1. Mask R-CNN論文導讀
  2. 如何評價 Kaiming He 最新的 Mask R-CNN?
  3. Mask-RCNN技術解析 [重點推薦]
  4. ROI Align 原理解析和實現細節 [重點推薦]
  5. 論文閱讀-《Mask R-CNN》
  6. Mask R-CNN - Notes
  7. Notes: From Faster R-CNN to Mask R-CNN
  8. Implementing Mask R-CNN[重點推薦]
  9. Instance segmentation with Mask R-CNN

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258596.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258596.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258596.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IOS開發之----常用函數和常數--秀清

介紹一下Objective-c常用的函數,常數變量 算術函數 【算術函數】函數名說明int rand()隨機數生成。(例)srand(time(nil)); //隨機數初期化int val rand()P; //0~49之間的隨機數int abs(int a)整數的絕對值(例&#…

網頁設計中常用的19個Web安全字體

來自http://www.jb51.net 在Web編碼中,CSS默認應用的Web字體是有限的,雖然在新版本的CSS3,我們可以通過新增的font-face屬性來引入特殊的瀏覽器加載字體。但多數情況下,考慮各個因素的影響我們還是在盡量充分利用這些默認調用的字…

python slice是共享內存嗎_python共享內存實現進程通信

1.概述共享內存可以說是最有用的進程間通信方式.兩個不同的進程共享內存的意思是:同一塊物理內存被映射到兩個進程的各自的進程地址空間.一個進程可以及時看到另一個進程對共享內存的更新,反之亦然.采用共享內存通信的一個顯而易見的好處效率高,因為進程可以直接讀寫內存,而不需…

FCN-數據篇

從本篇開始,我們來記錄一下全卷積網絡用來做語義分割的全過程。 代碼:https://github.com/shelhamer/fcn.berkeleyvision.org 下面我們將描述三方面的內容: 1. 官方提供的公開數據集 2. 自己的數據集如何準備,主要是如何標注…

深圳本地網店代運營公司

◆★◆深圳本地網店代運營,淘寶代運營多少錢,微博運營公司,代運營平臺,天貓京東代運營,網站代運營圖 片, 北京京東代運營,網店代運營協議,京東店鋪代運營,網站代運營服務…

搜索專題題解

題目鏈接: codeforces 277A - Learning Languages 題目描述: 一個團體有n個人,每個人都掌握了一些語言,每個人學一門語言有1個花費,兩個人之間可以通過其他人的翻譯,問最少花費多少使得這個團體的任意兩個人…

Facebook 開源的快速文本分類器 FastTex

FastText是Facebook開發的一款快速文本分類器,提供簡單而高效的文本分類和表征學習的方法,性能比肩深度學習而且速度更快。 fastText 原理fastText 方法包含三部分:模型架構、層次 Softmax 和 N-gram 特征。下面我們一一介紹。 1.1 模型架構 …

FCN-加載訓練與測試數據

當我們生成了數據后,我們來看看FCN是如何加載數據的。 FCN 代碼預覽 其中: - data : 訓練測試數據 - ilsvrc-nets:存放預訓練的模型 - 剩下的框:不同數據集的訓練測試prototxt - voc_layers,siftflow_layers等&am…

怎么撤銷定時說說_已注冊商標遇到撤三申請怎么辦

很多企業的商標都遇到過商標撤三的情況,撤三簡單的說就是,注冊商標沒有正當理由連續三年不使用的,任何單位或者個人可以向商標局申請撤銷該注冊商標。所以說,無論您的企業多大,商標持有的再多,也要做好商標…

windows下架設SVN服務器并設置開機啟動

1、安裝SVN服務器,到http://subversion.apache.org/packages.html上下載windows版的SVN,并安裝,在命令行下運行svn命令,如下所以,則svn服務器安裝成功。 C:\Documents and Settings\Administrator>svn 使用“svn …

Spartan-6 FPGA SelectIO Resources User Guide 筆記2 SelectIO Attributes/Constraints

1.Location Constraint 用于分配I/O端口 NET <I/O_NAME> LOC "<EXTERNAL_PORT_IDENTIFIER>"; Example: NET MY_IO LOCR7; 2.IOSTANDARD Attribute 用于選擇IO標準如LVCMOS25&#xff0c;LVDS_25等 NET <I/O_NAME> IOSTANDARD”<IOSTANDARD V…

python合并pdf 加書簽_Python生成pdf目錄書簽的實例方法

有時候我們用的一些pdf資料是沒有目錄的&#xff0c;這樣找尋我們想到的東西比較麻煩。本篇文章就為大家帶來python來生成pdf目錄書簽的方法。首先&#xff0c;我們需要下載一個軟件FreePic2Pdf,利用它我們可以將我們的pdf文件導入書簽工具下載&#xff1a;https://www.jb51.ne…

正則表達式及其在python上的應用

今天學習了一早上正則表達式。如下內容部分轉載自《讀懂正則表達式就這么簡單》 一、什么是正則表達式 正則表達式是一種特殊的字符串模式&#xff0c;用于匹配一組字符串&#xff0c;就好比用模具做產品&#xff0c;而正則就是這個模具&#xff0c;定義一種規則去匹配符合規…

安全專家在硬盤固件中發現NSA的網絡間諜程序

本周安全專家在硬盤固件中發現了美國國家安全局&#xff08;NSA&#xff09;的網絡間諜程序&#xff0c;這些程序非常難以被檢測或者刪除。來自卡巴斯基的研究者公布了該惡意程序用來“Phone Home”的URL地址&#xff0c;NSA利用這些隨機、凌亂的地址來收集硬盤上的敏感數據。 …

SVN 分支/合并/切換

本文無條理性&#xff0c;僅作自我參考。 花費了兩個半下午&#xff0c;走馬觀花的看了一下說明文檔&#xff0c;SVN設計的太復雜&#xff0c;對我這樣的&#xff0c;不在一個集體的的業余開發者&#xff0c;要理解起來真是太難了。。。。 分支 Make branches as often as yo…

使用Firefox或Chrome的雇員表現更好不頻繁跳槽

一家銷售軟件幫助雇主招募雇員和留住雇員的公司Cornerstone OnDemand稱&#xff0c;使用非默認瀏覽器如Firefox或Chrome的雇員表現更好不頻繁跳槽。 這項研究旨在幫助那些跳槽率過高的行業&#xff0c;比如呼叫中心的年跳槽率高達45%。對50000名在線工作評估參與者的數據進行分…

關于FCN的數據集著色說明

前方我們講解了《 FCN-數據篇》。里面包含了如何制作類似pascal voc的label。很大篇幅在談如何著色&#xff0c;如何轉化為索引圖像。 由于一些內容參考網上的資料&#xff0c;所以對里面的一些操作含義也有些糊涂。 其實網上的東西也不都對&#xff0c;很多人云亦云。所以需要…

mongobd python_Python操作MongoDB數據庫PyMongo庫使用方法

引用PyMongo復制代碼 代碼如下:>>> import pymongo創建連接Connection復制代碼 代碼如下:>>> import pymongo>>> conn pymongo.Connection(localhost,27017)或復制代碼 代碼如下:>>> from pymongo import Connection>>> conn C…

Android Property Animation動畫

3.0以前&#xff0c;android支持兩種動畫模式&#xff0c;tween animation,frame animation&#xff0c;在android3.0中又引入了一個新的動畫系統&#xff1a;property animation&#xff0c;這三種動畫模式在SDK中被稱為property animation,view animation,drawable animation…

angular實現select的ng-options

ng實現簡單的select <div ng-controller"ngSelect"><select ng-model"vm.selectVal" ng-options"o.title for o in vm.optionsData"><option value"">請選擇</option></select> </div> var app …