全卷积实例分割实战
全卷積實例分割實戰
Fully Convolutional Instance-aware Semantic
Segmentation
介紹
FCIS是一個完全卷積的端到端解決方案,例如分割,它贏得了2016年COCO分割挑戰賽的第一名。FCIS最初在CVPR 2017聚光燈文件中進行了描述。值得注意的是: FCIS提供了一個簡單、快速、準確的實例分割框架。與MNC不同,FCIS同時聯合進行實例掩碼估計和分類,并估計類特定的掩碼。沒有利用掩模RCNN系統中的各種技術和技巧,例如增加RPN錨定數(從12到15)、在圖像邊界外訓練錨定、放大圖像(較短的一面從600到800像素)、利用FPN特征和對齊的ROI池。這些技術和技巧應該與的簡單基線正交。
資源
COCO 2016挑戰賽參賽作品:OneDrive中COCO測試集的前5k圖像的視覺效果。 ImageNet ILSVRC和COCO 2016研討會幻燈片:OneDrive。
免責聲明
這是基于MXNet的完全卷積實例感知語義分割(FCIS)的官方實現。值得注意的是: 最初的實現基于在Windows上的內部Caffe版本。由于站臺道岔細節豐富,最終精度和運行時間略有不同。
該代碼在官方MXNet@(commit 62ecb60)上進行測試,并帶有FCIS的額外運算符。使用模型轉換器基于ImageNet預先訓練的ResNet-v1-101訓練模型。轉換后的模型產生的精度稍低(ImageNet val的最大誤差:24.0%v.s.23.6%)。此存儲庫使用來自MXNet rcnn示例和mx rfcn的代碼。
許可證
版權所有Microsoft,2017年。有麻省理工學院的執照。
引用FCIS
如果發現FCIS對的研究有用,可考慮引用:
@inproceedings{li2016fully,
Author = {Yi Li, Haozhi Qi, Jifeng Dai, Xiangyang Ji and Yichen Wei}
Title = {Fully Convolutional Instance-aware Semantic Segmentation},
Conference = {CVPR},
year = {2017}
}
Main Results
運行時間計算在單個Maxwell Titan X GPU上(推斷最小批量大小為1)。
要求:軟件
來自官方存儲庫的MXNet。在MXNet@(commit62ecb60)上測試了代碼。由于MXNet的快速發展,如果遇到任何問題,建議簽出此版本。如果MXNet在將來的版本中添加了重要功能,可以定期維護這個存儲庫。
Python包可能丟失:cython,opencv Python>=3.2.0,easydict。如果在系統上設置了pip,那么應該可以通過運行。
pip install Cythonpip install opencv-python3.2.0.6pip install easydict1.6pip install hickle
對于Windows用戶,需要Visual Studio 2015來編譯cython模塊。
Requirements: Hardware
任何具有至少5GB內存的NVIDIA GPU都應該可以
安裝
克隆FCIS存儲庫,將克隆的FCIS的目錄稱為${FCIS_ROOT}。
git clone https://github.com/msracver/FCIS.git
對于Windows用戶,運行cmd\init.bat. 對于Linux用戶,運行sh ./init.sh。腳本將自動生成cython模塊并創建一些文件夾。
安裝MXNet:
注意:在此PR之后,MXNet的自定義操作無法使用多個gpu并行執行。強烈建議用戶回滾到MXNet@(提交998378a)版本進行訓練(請參閱第3.2-3.6節)??焖賳?/p>
3.1安裝MXNet和所有依賴項
pip install -r requirements.txt
如果沒有錯誤消息,則應成功安裝MXNet。
從源代碼生成(可選方式)
3.2克隆MXNet并通過以下方式簽出到MXNet@(提交998378a)
git clone --recursive https://github.com/dmlc/mxnet.gitgit checkout 998378agit submodule initgit submodule update
3.3將(FCISROOT)/FCIS/operatorcxx中的通道運算符復制到(FCIS_ROOT)/FCIS/operator_cxx中的通道運算符復制到(FCISR?OOT)/FCIS/operatorc?xx中的通道運算符復制到(YOUR_MXNET_ _FOLDER)/src/operator/contrib
cp -r $(FCIS_ROOT)/fcis/operator_cxx/channel_operator* $(MXNET_ROOT)/src/operator/contrib/
3.4 Compile MXNet
cd ${MXNET_ROOT}make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1
3.5安裝MXNet Python綁定
注意:如果您將在不同版本的MXNet之間主動切換,請遵循3.5而不是3.4
cd pythonsudo python setup.py install
3.6
For advanced users, you may put your Python packge into ./external/mxnet/$(YOUR_MXNET_PACKAGE), and modify MXNET_VERSION in ./experiments/fcis/cfgs/*.yaml to $(YOUR_MXNET_PACKAGE). Thus you can switch among different versions of MXNet quickly.
Demo
使用訓練模型(在COCO trainval35k上)運行演示,從OneDrive手動下載該模型(中國用戶也可以從白都云獲得,代碼為tmd4),并將其放在文件夾model/下。
Make sure it looks like
this:
-
./model/fcis_coco-0000.params
Run
python ./fcis/demo.py
訓練和測試準備
從SBD下載帶有附加注釋的VOC 2012數據集。將inst、cls、img文件夾移動到VOCdevit,并確保它看起來像這樣:
請在本回購協議中使用train&val拆分,遵循SDS協議。
.data/VOCdevkit/VOCSDS/img/.data/VOCdevkit/VOCSDS/inst/.data/VOCdevkit/VOCSDS/cls/
請下載5k圖像minival子集和val2014減去minival(val35k)的COCO數據集和注釋。確保它看起來像這樣:
.data/coco/.data/coco/annotations/instances_valminusminival2014.json.data/coco/annotations/instances_minival2014.json
請從OneDrive手動下載ImageNet pretrained ResNet-v1-101模型,并將其置于folder ./model. 。確保它看起來像這樣:
./model/pretrained_model/resnet_v1_101-0000.params
用法
所有實驗設置(GPU#,數據集等)都保存在文件夾./experiments/fcis/cfgs中的yaml配置文件中。
到目前為止提供了兩個配置文件:FCIS@COCO公司與OHEM和FCIS@VOC沒有OHEM。
分別使用8和4個gpu來訓練COCO和VOC模型。
要執行實驗,請運行python腳本,并將相應的配置文件作為輸入。例如,要使用ResNet-v1-101在COCO上訓練和測試FCIS,請使用以下命令
python experiments/fcis/fcis_end2end_train_test.py --cfg experiments/fcis/cfgs/resnet_v1_101_coco_fcis_end2end_ohem.yaml
將自動創建一個緩存文件夾,將模型和日志保存在output/fcis/coco/或output/fcis/voc/下。
在配置文件和代碼中找到更多詳細信息。
Misc.
Code has been tested under:
Ubuntu
14.04 with a Maxwell Titan X GPU and Intel Xeon CPU E5-2620 v2 @ 2.10GHz
Windows
Server 2012 R2 with 8 K40 GPUs and Intel Xeon CPU E5-2650 v2 @ 2.60GHz
Windows
Server 2012 R2 with 4 Pascal Titan X GPUs and Intel Xeon CPU E5-2650 v4 @
2.30GHz
總結
- 上一篇: 人体姿态估计
- 下一篇: YOLOv4没交棒,但YOLOv5来了!