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)。 |
如何开始
- 克隆仓库
git clone https://github.com/zju3dv/snake.git cd snake - 安装依赖项 – 请参阅
INSTALL.md以获取确切的包列表(PyTorch、CUDA、OpenCV 等)。 - 下载预训练模型 – 下载您想尝试的数据集(Cityscapes、KITTI 或 SBD)模型,并放置在 README 指示的路径下,例如:
$ROOT/data/model/rcnn_snake/long_rcnn/197.pth # Cityscapes - 执行快速演示 – 对图像文件夹执行:
脚本将输出叠加了预测实例轮廓的原始图像。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) 模型。凭借预训练权重、清晰的评估/可视化脚本以及训练流程,它是任何从事现代分割任务的人员的实用资源。
相关
- 项目
- 项目
- 项目
- 项目