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 문서 기준)

기능 세부 정보
사전 학습된 모델 Cityscapes, KITTI(Kins로 지칭), SBD 데이터셋의 가중치가 포함된 Google‑Drive 폴더 링크 제공.
평가 스크립트 run.py를 사용하여 COCO 평가기, 공식 Cityscapes 평가기 또는 KITTI/SBD 검증 세트에서 간단한 명령줄 플래그로 평가 가능.
속도 테스트 동일한 run.py 스크립트를 --type network와 함께 실행하여 특정 설정에서의 추론 속도 보고 가능.
시각화 내장된 시각화 기능(--type visualize)으로 예측된 마스크를 원본 이미지 위에 그릴 수 있음(README에 예시 포함).
데모 모드 단일 이미지 또는 이미지 폴더에 대한 한 줄 데모 실행(--type demo).
학습 파이프라인 Cityscapes용 2단계 학습(먼저 탐지기 학습 후 탐지기 + snake 공동 학습). 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
탐지기 + 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) 모델을 활용한 실시간 인스턴스 세그멘테이션 알고리즘의 즉시 실행 가능한 구현체를 제공합니다. 사전 학습된 가중치, 명확한 평가/시각화 스크립트, 학습 파이프라인을 갖추고 있어 현대적인 세그멘테이션 작업을 수행하는 모든 이에게 실용적인 리소스입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트