Try in Colab
- Weights & Biases run을 초기화하고 재현성을 위해 run과 관련된 모든 구성을 동기화합니다.
- MONAI transform API:
- 사전 형식 데이터에 대한 MONAI Transforms.
- MONAI
transformsAPI에 따라 새로운 transform을 정의하는 방법. - 데이터 증강을 위해 강도를 임의로 조정하는 방법.
- 데이터 로딩 및 시각화:
- 메타데이터와 함께
Nifti이미지를 로드하고, 이미지 목록을 로드하고 스택합니다. - 트레이닝 및 유효성 검사를 가속화하기 위해 IO 및 transforms를 캐시합니다.
wandb.Table및 Weights & Biases의 대화형 분할 오버레이를 사용하여 데이터를 시각화합니다.
- 메타데이터와 함께
- 3D
SegResNet모델 트레이닝- MONAI의
networks,losses및metricsAPI를 사용합니다. - PyTorch 트레이닝 루프를 사용하여 3D
SegResNet모델을 트레이닝합니다. - Weights & Biases를 사용하여 트레이닝 실험을 추적합니다.
- Weights & Biases에서 모델 체크포인트를 모델 Artifacts로 로그하고 버전을 관리합니다.
- MONAI의
wandb.Table및 Weights & Biases의 대화형 분할 오버레이를 사용하여 유효성 검사 데이터셋에서 예측을 시각화하고 비교합니다.
설정 및 설치
먼저 MONAI와 Weights & Biases의 최신 버전을 설치합니다.W&B Run 초기화
새로운 W&B run을 시작하여 실험 추적을 시작합니다.데이터 로딩 및 변환
여기서는monai.transforms API를 사용하여 다중 클래스 레이블을 원-핫 형식의 다중 레이블 분할 작업으로 변환하는 사용자 정의 transform을 만듭니다.
데이터셋
이 실험에 사용된 데이터셋은 http://medicaldecathlon.com/ 에서 가져온 것입니다. 다중 모드 다중 사이트 MRI 데이터(FLAIR, T1w, T1gd, T2w)를 사용하여 신경교종, 괴사성/활성 종양 및 부종을 분할합니다. 데이터셋은 750개의 4D 볼륨(484 트레이닝 + 266 테스트)으로 구성됩니다.DecathlonDataset을 사용하여 데이터셋을 자동으로 다운로드하고 추출합니다. MONAI CacheDataset을 상속하여 cache_num=N을 설정하여 트레이닝을 위해 N개의 항목을 캐시하고 메모리 크기에 따라 유효성 검사를 위해 모든 항목을 캐시하는 기본 인수를 사용할 수 있습니다.
참고:
train_dataset에 train_transform을 적용하는 대신 트레이닝 및 유효성 검사 데이터셋 모두에 val_transform을 적용합니다. 이는 트레이닝 전에 데이터셋 분할의 샘플을 시각화하기 때문입니다.데이터셋 시각화
Weights & Biases는 이미지, 비디오, 오디오 등을 지원합니다. 다양한 미디어를 기록하여 결과를 탐색하고 run, 모델 및 데이터셋을 시각적으로 비교할 수 있습니다. 분할 마스크 오버레이 시스템을 사용하여 데이터 볼륨을 시각화합니다. 테이블에서 분할 마스크를 기록하려면 테이블의 각 행에 대해wandb.Image 오브젝트를 제공해야 합니다.
아래 의사 코드에 예제가 제공되어 있습니다.
wandb.Table 오브젝트 및 일부 관련 메타데이터를 가져와서 Weights & Biases 대시보드에 기록될 테이블의 행을 채우는 간단한 유틸리티 함수를 작성합니다.
wandb.Table 오브젝트와 데이터 시각화로 채울 수 있도록 구성되는 열을 정의합니다.
train_dataset 및 val_dataset을 반복하여 데이터 샘플에 대한 시각화를 생성하고 대시보드에 기록할 테이블의 행을 채웁니다.


참고: 데이터셋의 레이블은 클래스 간에 겹치지 않는 마스크로 구성됩니다. 오버레이는 레이블을 오버레이에 별도의 마스크로 기록합니다.
데이터 로딩
데이터셋에서 데이터를 로드하기 위한 PyTorch DataLoaders를 만듭니다. DataLoaders를 만들기 전에 트레이닝을 위해 데이터를 사전 처리하고 변환하기 위해train_dataset에 대한 transform을 train_transform으로 설정합니다.
모델, 손실 및 옵티마이저 생성
이 튜토리얼에서는 자동 인코더 정규화를 사용한 3D MRI 뇌종양 분할 논문을 기반으로SegResNet 모델을 만듭니다. SegResNet 모델은 monai.networks API의 일부로 PyTorch 모듈로 구현되었으며 옵티마이저 및 학습률 스케줄러도 함께 제공됩니다.
monai.losses API를 사용하여 손실을 다중 레이블 DiceLoss로 정의하고 monai.metrics API를 사용하여 해당 주사위 메트릭을 정의합니다.
트레이닝 및 유효성 검사
트레이닝 전에 트레이닝 및 유효성 검사 실험을 추적하기 위해 나중에wandb.log()로 기록될 메트릭 속성을 정의합니다.
표준 PyTorch 트레이닝 루프 실행
wandb.log로 코드를 계측하면 트레이닝 및 유효성 검사 프로세스와 관련된 모든 메트릭뿐만 아니라 W&B 대시보드의 모든 시스템 메트릭(이 경우 CPU 및 GPU)을 추적할 수 있습니다.


추론
Artifacts 인터페이스를 사용하여 평균 에포크별 트레이닝 손실인 Artifact의 어떤 버전이 가장 적합한 모델 체크포인트인지 선택할 수 있습니다. Artifact의 전체 계보를 탐색하고 필요한 버전을 사용할 수도 있습니다.
예측 시각화 및 그라운드 트루스 레이블과 비교
대화형 분할 마스크 오버레이를 사용하여 사전 트레이닝된 모델의 예측을 시각화하고 해당 그라운드 트루스 분할 마스크와 비교하는 또 다른 유틸리티 함수를 만듭니다.