gorogoroyasu

福岡の開発会社で働いている。

SipMask を動かす

SipMask: Spatial Information Preservation for Fast Image and Video Instance Segmentation (ECCV2020) という論文の実装が

github.com

で公開されています。

SipMask-mmdetection を実行してみるにあたって、いくつかハマリポイントがあったので、メモ代わりに記事を書いておきます。

環境

  • p2.xlarge
  • AWS DeepLearning AMI

(うまくいった)動かし方

手順だけ書いておきます。

source activate pytorch_p36

cd ~/
git clone https://github.com/JialeCao001/SipMask.git
pip install --upgrade pip
pip install mmcv-full==latest+torch1.4.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html
pip install mmcv==0.4.3
pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI"
pip install jupyter jupyterlab
wget https://github.com/open-mmlab/mmdetection/archive/v1.2.0.zip
unzip v1.2.0.zip
cd mmdetection-1.2.0/
pip install --no-cache-dir -e .
cd ../SipMask/SipMask-mmdetection/
python setup.py develop
wget https://open-mmlab.oss-cn-beijing.aliyuncs.com/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth
jupyter notebook --ip 0.0.0.0 --port 8888

準備されているDockerfile をビルドしても実行できない。

Github にDockerfile が準備されていますが、それをビルドしてもうまく動きませんでした。 おそらく、SipMask のライブラリは、 mmdetection v1 に依存していますが、mmdetection の v2 がインストールされるためだと思います。 mmdetection は、リリースヒストリーから持ってくることにしました。

mmcv というライブラリのインストール

github.com

mmcvは、cuda とPytorch のバージョンによって、インストールすべきものが変わるので、よしなに調整しなくてはなりません。 最初、docker hub からダウンロードしてきた pytorch/pytorch のイメージを使って実行していましたが、CUDA のバージョンが合わなかったりしたので、 docker を使わずに環境を作成する方針に切り替えました。

また、このIssue のコメントにあるように、

github.com

mmcv-full をインストールした後に、mmcv==0.4.3 をインストールしました。 最終的に、この動作が必要だったかどうか、検証できていません。

SipMask のインストールが必要

README.md に書いていなかった(はず) のですが、python setup.py develop を実行しないといけません。 これに気づくまで、結構時間がかかりました。。。

以上のことをやると、SipMask-mmdetection/demo/inference_demo.ipynb が動くようになります!

config_file = '../configs/faster_rcnn_r50_fpn_1x.py'
# download the checkpoint from model zoo and put it in `checkpoints/`
checkpoint_file = '../checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth'

を、

config_file = '../configs/sipmask/sipmask_r50_caffe_fpn_gn_1x.py'
# README に書いてあるモデルをダウンロードして設置
checkpoint_file = '../checkpoints/sipmask_r50_caffe_1x.pth'

に変えてあげると、無事、SipMask を実行することができます。

以上。