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 模型的开源实现。这是一个计算机视觉系统,能实时接收图像并输出精确的实例掩码(每个物体的精确轮廓)。该方法改进了传统基于掩码的方法,通过可学习的“snake”(主动轮廓)模块迭代细化物体轮廓,在 COCO、Cityscapes、KITTI 和 SBD 等基准测试中取得了最先进的成果。


主要功能(如 README 文件所述)

功能 详细信息
预训练模型 提供链接至 Google‑Drive 文件夹,包含 Cityscapes、KITTI(称为 Kins)和 SBD 数据集的权重。
评估脚本 run.py 可通过简单的命令行标志在 COCO 评估器、官方 Cityscapes 评估器或 KITTI/SBD 验证集上进行评估。
速度测试 同一个 run.py 脚本可通过 --type network 调用,以报告给定配置下的推理速度。
可视化 内置可视化功能 (--type visualize) 可将预测的掩码绘制在原始图像上;README 中展示了示例输出。
演示模式 针对单张图像或图像文件夹的一行演示指令 (--type demo)。
训练流程 Cityscapes 采用两阶段训练(先训练检测器,再联合训练检测器 + snake)。提供 KITTI 和 SBD 的单阶段训练脚本。
TensorBoard 支持 日志写入 data/record/*,可使用 TensorBoard 检查以监控损失曲线和其他指标。
配置文件驱动 所有实验均由 YAML 配置文件驱动(例如 configs/city_rcnn_snake.yaml)。

如何开始

  1. 克隆仓库
    git clone https://github.com/zju3dv/snake.git
    cd snake
    
  2. 安装依赖项 – 请参阅 INSTALL.md 以获取确切的包列表(PyTorch、CUDA、OpenCV 等)。
  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
训练检测器 + snake (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 用于仅 snake 的日志)

谁适合使用?

  • 研究人员:探索基于轮廓的实例分割,或寻找强大的基准进行比较。
  • 从业者:需要为自动驾驶数据集(Cityscapes、KITTI)或一般物体分割(COCO、SBD)提供快速、准确的掩码预测。
  • 学生:想要具体示例了解如何将自定义模块(snake)集成到检测流程中。

引用

如果您在出版物中使用此代码,请引用原始论文:

@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}
}

总结: 该仓库提供了一个即用型的实时实例分割算法实现,利用了可学习的主动轮廓 (snake) 模型。凭借预训练权重、清晰的评估/可视化脚本以及训练流程,它是任何从事现代分割任务的人员的实用资源。

相关

  • 项目
  • 项目
  • 项目
  • 项目