이것은 MIT ADE20K 장면 구문 분석 데이터 세트 (http://sceneparsing.csail.mit.edu/)에서 시맨틱 세분화 모델의 Pytorch 구현입니다.
ADE20K는 MIT Computer Vision Team이 출시 한 시맨틱 세분화 및 장면 구문 분석을위한 최대의 오픈 소스 데이터 세트입니다. 아래 링크를 따라 데이터 세트의 저장소 및 Caffe and Torch7 : https://github.com/csailvision/sceneparsing의 구현을 찾으십시오.
단순히 데모를 사용하고 싶다면이 링크를 시도해보십시오 : http://scenesmentation.csail.mit.edu 자신의 사진을 업로드하고 구문 분석 할 수 있습니다!
여기 에서이 Colab 노트북 놀이터를 사용하여 이미지를 분할하기위한 코드를 땜질 할 수 있습니다.
모든 사기꾼 모델은 http://sceneparsing.csail.mit.edu/model/pytorch에서 찾을 수 있습니다


시맨틱 카테고리의 색인 인코딩은 여기에서 찾을 수 있습니다 : https://docs.com/spreadsheets/d/1se8yetb2dets7oupe86fxgyd269pmycawe2mtkuj2w8/edit?usp=sharing
config/defaults.py 에 자세히 설명되어 있습니다.이 모듈은 훈련 중 모든 장치에서 평균 및 표준 퇴직을 계산합니다. 우리는 합리적인 큰 배치 크기가 세분화에 중요하다는 것을 경험적으로 발견했습니다. 그의 친절한 기여에 대해 Jiyuan Mao에게 감사드립니다. 자세한 내용은 Synchronized Batchnorm-Pytorch를 참조하십시오.
구현은 다음과 같이 사용하기 쉽습니다.
시맨틱 세분화 작업의 경우 훈련 중에 이미지의 종횡비를 유지하는 것이 좋습니다. 따라서 DataParallel 모듈을 다시 구현하고 Python Dict에서 여러 GPU에 데이터를 배포하는 지원을 지원하여 각 GPU가 다른 크기의 이미지를 처리 할 수 있도록합니다. 동시에 데이터 로더도 다르게 작동합니다.
이제 데이터 로더의 배치 크기는 항상 GPU 수와 다르고 각 요소는 GPU로 전송됩니다. 또한 다중 처리와 호환됩니다. 다중 처리 데이터 로더의 파일 인덱스는 마스터 프로세스에 저장되며, 각 작업자가 자체 파일 목록을 유지하는 목표와 모순됩니다. 따라서 우리는 마스터 프로세스가 여전히 Dataloader에 __getitem__ 함수에 대한 색인을 제공하지만 그러한 요청을 무시하고 임의의 배치 딕을 보냅니다. 또한 Dataloader에 의해 포장 된 여러 근로자는 모두 동일한 시드를 가지고 있습니다 . 위에서 언급 한 트릭을 직접 사용하면 여러 작업자가 정확히 동일한 데이터를 산출 할 것임을 알게됩니다. 따라서 Dataloader에서 여러 작업자를 활성화하기 전에 numpy.random 의 Defaut Seed를 설정하는 한 줄의 코드를 추가합니다.
우리는 모델을 인코더와 디코더로 나누는데, 여기서 인코더는 일반적으로 분류 네트워크에서 직접 수정되며 디코더는 최종 컨벤션 및 업 샘플링으로 구성됩니다. config 폴더에 사전 구성된 모델을 제공했습니다.
인코더 :
디코더 :
중요 : 저장소의 기본 RESNET은 사용자 정의 된 것입니다 (Torchvision의 것과 다름). 기본 모델은 필요할 때 자동으로 다운로드됩니다.
| 건축학 | 멀티 스케일 테스트 | IOU를 의미합니다 | 픽셀 정확도 (%) | 전체 점수 | 추론 속도 (FPS) |
|---|---|---|---|---|---|
| Mobilenetv2dilated + C1_DeepSup | 아니요 | 34.84 | 75.75 | 54.07 | 17.2 |
| 예 | 33.84 | 76.80 | 55.32 | 10.3 | |
| Mobilenetv2dilated + ppm_deepsup | 아니요 | 35.76 | 77.77 | 56.27 | 14.9 |
| 예 | 36.28 | 78.26 | 57.27 | 6.7 | |
| RESNET18DILATED + C1_DEEPSUP | 아니요 | 33.82 | 76.05 | 54.94 | 13.9 |
| 예 | 35.34 | 77.41 | 56.38 | 5.8 | |
| RESNET18DILATED + PPM_DEEPSUP | 아니요 | 38.00 | 78.64 | 58.32 | 11.7 |
| 예 | 38.81 | 79.29 | 59.05 | 4.2 | |
| resnet50dilated + ppm_deepsup | 아니요 | 41.26 | 79.73 | 60.50 | 8.3 |
| 예 | 42.14 | 80.13 | 61.14 | 2.6 | |
| resnet101dilated + ppm_deepsup | 아니요 | 42.19 | 80.59 | 61.39 | 6.8 |
| 예 | 42.53 | 80.91 | 61.72 | 2.0 | |
| Upernet50 | 아니요 | 40.44 | 79.80 | 60.12 | 8.4 |
| 예 | 41.55 | 80.23 | 60.89 | 2.9 | |
| Upernet101 | 아니요 | 42.00 | 80.79 | 61.40 | 7.8 |
| 예 | 42.66 | 81.01 | 61.84 | 2.3 | |
| HRNETV2 | 아니요 | 42.03 | 80.77 | 61.40 | 5.8 |
| 예 | 43.20 | 81.47 | 62.34 | 1.9 |
교육은 8 NVIDIA PASCAL TITAN XP GPU (12GB GPU 메모리)가있는 서버에서 벤치마킹되어 있으며 추론 속도는 시각화없이 단일 NVIDIA PASCAL TITAN XP GPU를 벤치마킹합니다.
코드는 다음 구성에 따라 개발되었습니다.
[--gpus GPUS] 그에 따라)chmod +x demo_test.sh
./demo_test.sh이 스크립트는 훈련 된 모델 (RESNET50DILATED + PPM_DEEPSUP)과 테스트 이미지를 다운로드하고 테스트 스크립트를 실행하며 예측 된 세분화 (.png)를 작업 디렉토리에 저장합니다.
$PATH_IMG )를 테스트하려면 다음을 수행 할 수 있습니다. python3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG
chmod +x download_ADE20K.sh
./download_ADE20K.sh$GPUS ) 및 구성 파일 ( $CFG )을 선택하여 모델을 훈련하십시오. 교육 중에 체크 포인트는 기본적으로 ckpt 폴더에 저장됩니다. python3 train.py --gpus $GPUS --cfg $CFG --gpus 0-7 또는 --gpus 0,2,4,6 수행 할 수 있습니다.예를 들어 제공된 구성으로 시작할 수 있습니다.
python3 train.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yamlpython3 train.py TRAIN.num_epoch 10 과 같은 CommandLine에서 옵션을 무시할 수도 있습니다. VAL.visualize True 인수하여 시각화를 출력하십시오.예를 들어:
python3 eval_multipro.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yaml 이 라이브러리는 pip 통해 설치하여 다른 코드베이스와 쉽게 통합 할 수 있습니다.
pip install git+https://github.com/CSAILVision/semantic-segmentation-pytorch.git@master이제이 라이브러리는 프로그래밍 방식으로 쉽게 소비 할 수 있습니다. 예를 들어
from mit_semseg . config import cfg
from mit_semseg . dataset import TestDataset
from mit_semseg . models import ModelBuilder , SegmentationModule 코드 또는 미리 훈련 된 모델이 유용하다고 생각되면 다음 논문을 인용하십시오.
ADE20K 데이터 세트를 통한 장면에 대한 의미 론적 이해. B. Zhou, H. Zhao, X. Puig, T. Xiao, S. Fidler, A. Barriuso 및 A. Torralba. 컴퓨터 비전에 대한 국제 저널 (IJCV), 2018. (https://arxiv.org/pdf/1608.05442.pdf)
@article{zhou2018semantic,
title={Semantic understanding of scenes through the ade20k dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
journal={International Journal on Computer Vision},
year={2018}
}
ADE20K 데이터 세트를 통한 장면 구문 분석. B. Zhou, H. Zhao, X. Puig, S. Fidler, A. Barriuso 및 A. Torralba. 컴퓨터 비전 및 패턴 인식 (CVPR), 2017.
@inproceedings{zhou2017scene,
title={Scene Parsing through ADE20K Dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}