全卷积实例分割实战

全卷积实例分割实战

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 Cython
pip install opencv-python==3.2.0.6
pip install easydict==1.6
pip 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用户,运行cmdinit.bat. 对于Linux用户,运行sh ./init.sh。脚本将自动生成cython模块并创建一些文件夹。             

安装MXNet:             

注意:在此PR之后,MXNet的自定义操作无法使用多个gpu并行执行。强烈建议用户回滚到MXNet@(提交998378a)版本进行训练(请参阅第3.2-3.6节)。快速启动             

3.1安装MXNet和所有依赖项

pip install -r requirements.txt

如果没有错误消息,则应成功安装MXNet。             

从源代码生成(可选方式)             

3.2克隆MXNet并通过以下方式签出到MXNet@(提交998378a)

git clone --recursive https://github.com/dmlc/mxnet.git
git checkout 998378a
git submodule init
git submodule update

3.3将$(FCIS_ROOT)/FCIS/operator_cxx中的通道运算符复制到$(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 python
sudo 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/下。

1.        Make sure it looks like this:

2.    ./model/fcis_coco-0000.params

3.        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
原文地址:https://www.cnblogs.com/wujianming-110117/p/12997120.html