zju3dv/snake

Code for "Deep Snake for Real-Time Instance Segmentation" CVPR 2020 oral

Deep Snakeとは?

Deep Snakeは、CVPR 2020の論文 “Deep Snake for Real‑Time Instance Segmentation” で説明されている Deep Snake モデルのオープンソース実装です。これは、画像を入力として受け取り、リアルタイムで正確なインスタンスマスク(各物体の正確な輪郭)を出力するコンピュータビジョンシステムです。この手法は、学習可能な「スネーク」(アクティブ・コンター)モジュールを使用して物体の輪郭を反復的に洗練させることで、従来のマスクベースのアプローチを改善し、COCO、Cityscapes、KITTI、SBDなどのベンチマークで最先端の結果を達成しています。


主な機能(READMEに記載)

機能 詳細
事前学習済みモデル Cityscapes、KITTI(Kinsと表記)、SBDデータセットの重みを含むGoogle‑Driveフォルダへのリンク。
評価スクリプト run.py を使用して、COCO評価器、公式Cityscapes評価器、またはKITTI/SBD検証セットで簡単に評価可能。
速度テスト 同じ run.py スクリプトを --type network で実行し、指定された設定での推論速度を報告可能。
可視化 内蔵の可視化機能 (--type visualize) で、予測されたマスクを元の画像上に描画可能。READMEに例あり。
デモモード 単一画像または画像フォルダに対するワンラインのデモ実行 (--type demo)。
トレーニングパイプライン Cityscapes用の2段階トレーニング(まず検出器を学習し、次に検出器とスネークを共同学習)。KITTIおよびSBD用の1段階トレーニングスクリプトも提供。
TensorBoardサポート ログは data/record/* に書き込まれ、TensorBoardで損失曲線やその他の指標を監視可能。
設定駆動型 すべての実験はYAML設定ファイル(例:configs/city_rcnn_snake.yaml)によって駆動。

始め方

  1. リポジトリのクローン
    git clone https://github.com/zju3dv/snake.git
    cd snake
    
  2. 依存関係のインストール – 正確なパッケージリスト(PyTorch、CUDA、OpenCVなど)については INSTALL.md を参照してください。
  3. 事前学習済みモデルのダウンロード – 試したいデータセット(Cityscapes、KITTI、またはSBD)のモデルをダウンロードし、READMEで指定されたパスに配置します。例:
    $ROOT/data/model/rcnn_snake/long_rcnn/197.pth   # Cityscapes
    
  4. クイックデモの実行 – 画像フォルダに対して実行:
    python run.py --type demo --cfg_file configs/sbd_snake.yaml \
                 demo_path demo_images ct_score 0.3
    
    スクリプトは、予測されたインスタンス輪郭が重ね合わされた元の画像を出力します。

一般的なワークフロー

目的 コマンド(例)
Cityscapesで評価 (COCO評価器) python run.py --type evaluate --cfg_file configs/city_rcnn_snake.yaml
Cityscapesで評価 (公式評価器) python run.py --type evaluate --cfg_file configs/city_rcnn_snake.yaml test.dataset CityscapesVal
推論速度の測定 python run.py --type network --cfg_file configs/city_rcnn_snake.yaml
結果の可視化 python run.py --type visualize --cfg_file configs/city_rcnn_snake.yaml test.dataset CityscapesVal ct_score 0.3
検出器のみの学習 (Cityscapes) python train_net.py --cfg_file configs/city_ct_rcnn.yaml model rcnn_det
検出器 + スネークの学習 (Cityscapes) python train_net.py --cfg_file configs/city_rcnn_snake.yaml model rcnn_snake det_model rcnn_det
TensorBoard tensorboard --logdir data/record/rcnn_snake (またはスネーク専用ログには .../snake)

ターゲットユーザー

  • 研究者:輪郭ベースのインスタンスセグメンテーションを研究している、または比較用の強力なベースラインを探している方。
  • 実務者:自動運転データセット(Cityscapes、KITTI)や一般的な物体セグメンテーション(COCO、SBD)で高速かつ正確なマスク予測が必要な方。
  • 学生:カスタムモジュール(スネーク)を検出パイプラインに統合する方法の具体的な例を探している方。

引用

出版物でこのコードを使用する場合は、元の論文を引用してください:

@inproceedings{peng2020deep,
  title={Deep Snake for Real-Time Instance Segmentation},
  author={Peng, Sida and Jiang, Wen and Pi, Huaijin and Li, Xiuli and Bao, Hujun and Zhou, Xiaowei},
  booktitle={CVPR},
  year={2020}
}

結論: このリポジトリは、学習可能なアクティブ・コンター(スネーク)モデルを活用した、すぐに使えるリアルタイム・インスタンスセグメンテーションアルゴリズムの実装を提供します。事前学習済みの重み、明確な評価/可視化スクリプト、トレーニングパイプラインを備えており、現代のセグメンテーションタスクに取り組むすべての人にとって実用的なリソースです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト