Work4 : 3D CT Detection

개발 로그 ④

3D CT Detection 3D U-Net을 활용한 CT 영상의 신장 및 종양 분할

개요

   최근 다양한 산업 분야에서 딥러닝 모델이 활발하게 활용되고 있습니다. 이를 참고해 3D 의료 영상에 관한 작업을 진행했습니다. KiTS23 데이터셋을 활용하여 신장 및 종양 부위를 분할하는 모델을 구현하였습니다.

   이 작업은 3D U-Net 아키텍처를 적용하여 구현했으며, 489개의 CT 영상을 8 : 1 : 1 비율로 학습, 검증, 테스트 데이터셋으로 분할해 학습 및 성능 평가를 진행했습니다.

사용 기술

데이터셋 KiTS23
활용 모델 3D U-Net
프레임워크 PyTorch, MONAI
시각화 Matplotlib
개발 환경 Google Colab

데이터 수집 및 처리 과정

ㆍ 489개의 CT 영상으로 이뤄진 KiTS23 공개 데이터셋 사용

ㆍ 데이터 증강 → RandFlipd, RandAffined, Rand3DElasticd

ㆍ 데이터 분할 → Train (391개), Validation (49개), Test (49개)

모델 구조

ㆍ Downsampling
          └  4단계 : [Double Conv → 1/2 × Downsample]

ㆍ Upsampling
          └  3단계 : [2 × Upsample → Skip Connection → Double Conv]

ㆍ Last Conv Layer
          └  최종 예측 결과 출력

학습 설정 및 결과

Loss Function   :  DiceCELoss

Optimizer   :  AdamW (learning rate = 0.0001, weight decay = 0.00001)

Scheduler    :  ReduceLROnPlateau

Epochs   :  50회

Dice Score   :  72.96%

Training Curve   :
    

고찰

ㆍ 초기 모델 구성
      - 모델 최초 구현: 다운 샘플링시 최대 채널 수 512차원 까지 구현
      - 결과 : 코랩 A100 환경에서 Out of Memory 발생

ㆍ 개선 과정
      - 다운 샘플링시 최대 채널 수를 256차원까지로 경량화
      - 결과 : 50 에포크 이후에 Val Loss가 음수가 되는 현상 발생

ㆍ 최종 결과
      - 50에포크 시점 모델을 최종 결과로 선정
      - Dice Score : 72.96%

ㆍ 느낀 점
      - Val Loss의 음수값 → 원인 불명
        └ 메모리 부족, 모델의 학습시간, 제한적인 PC 환경 등으로 충분한 실험이 어려움
        └ ① 분할된 검증데이터에 종양 없는 데이터가 다수 포진되어 있을때 문제 발생 가능성
        └ ② Batch size=2일 때, 한 Batch에 종양이 없는 데이터만 존재 시 문제 발생 가능성
        └ ③ 학습이 진행되며 모델이 점점 확신을 가지면서 후반부 수치적 불안정성이 발생 했을 가능성