Data Science Project

제 1회 Medical AI MAI 경진대회

ParkS2 2024. 11. 6. 20:02

코드소스

wonderfulawsome/Medical-AI-MAI-Competition

 

GitHub - wonderfulawsome/Medical-AI-MAI-Competition

Contribute to wonderfulawsome/Medical-AI-MAI-Competition development by creating an account on GitHub.

github.com

 

문제정의

  • 목적
    • 주어진 이미지 데이터를 분석하여 각 이미지에 대응되는 유전자 발현 정보를 정확히 예측하는 것.
  • 데이터의 특징
    • 입력 데이터:
      • 유전자 발현과 관련된 이미지를 포함하며, 다양한 크기와 스케일의 이미지를 포함.
    • 출력 데이터:
      • 각 이미지에 대응하는 유전자 발현 값 (다차원 연속형 데이터).
  • 문제의 핵심 도전 과제
    • 이미지 학습과 유전자 발현 정보 학습의 통합:
      • 모델의 레이어 구조에서 이미지 특징 추출 레이어유전자 발현 정보를 학습하는 Fully Connected Layer를 효율적으로 결합해야 함.
      • 이미지에서 추출된 고차원 특징을 유전자 발현 예측에 필요한 정보로 가공.
    • 이미지 데이터의 복잡성:
      • 세포 이미지와 같은 데이터는 다양한 패턴과 복잡한 구조를 포함.
      • 작은 세부 사항과 전체적인 맥락을 동시에 학습해야 함.
    • 고차원 출력:
      • 다수의 유전자 발현 값을 예측해야 하므로, 다차원 출력 학습의 효율성 필요.
    • 데이터 제한:
      • 제한된 훈련 데이터에서 모델을 학습해야 하는 상황.
    • 일반화 성능:
      • 새로운 이미지 데이터(test set)에 대해 예측의 신뢰성을 확보해야 함.
    • 메모리와 계산 리소스 제약:
      • 대량의 이미지 데이터를 처리하면서도 효율적인 모델 학습 및 추론이 필요.
  • 해결하고자 하는 주요 문제
    • 유전자 발현 예측 정확도 향상:
      • 높은 정확도로 유전자 발현 값을 예측할 수 있는 모델 구축.
    • 모델의 일반화 능력 강화:
      • 과적합을 방지하고, 새로운 데이터에서 일관된 성능을 보장.
    • 데이터 전처리와 학습 최적화:
      • 데이터 증강 및 전처리 기법을 통해 데이터 활용 극대화.
    • 효율적인 모델 설계:
      • 경량화된 모델과 효율적인 학습 전략을 활용하여 성능과 리소스 제약 간 균형 달성.

문제해결

1. 데이터 전처리

  1. 이미지 크기 조정
    • 이미지를 (256, 256) 크기로 리사이즈하여 입력 데이터의 일관성을 확보.
    • MobileNetV2와 같은 사전 학습된 모델의 입력 크기 요구 사항에 맞춤.
  2. 색상 채널 변환 (RGB → YCbCr)
    • 이미지를 RGB에서 YCbCr로 변환하여 색상 및 밝기 정보를 분리.
    • 세포 이미지의 시각적 특징(밝기, 색조)의 표현력을 개선.
  3. Z-score 정규화
    • 픽셀 값을 Z-score 방식으로 정규화하여 평균 0, 표준편차 1로 변환.
    • 데이터 분포를 조정하고, 모델이 극단적인 값에 민감하지 않도록 처리.
  4. 데이터 증강
    • 밝기 변화, 회전, 이동, 확대/축소 등 다양한 증강 기법 적용.
    • 증강 후 Z-score 정규화를 재적용하여 증강된 데이터의 안정성 보장.

2. 모델링

  1. MobileNetV2 활용
    • 경량화된 MobileNetV2를 사전 학습된 가중치로 초기화하여 학습 속도와 정확도 개선.
    • CNN 레이어에서 이미지 데이터를 효율적으로 특징 추출.
  2. 유전자 발현 정보 학습 레이어
    • MobileNetV2의 마지막 레이어를 Dense Layer로 수정하여 유전자 발현 값을 출력.
    • 모델의 출력 뉴런 수를 예측해야 할 유전자 발현 값의 개수에 맞춤.
  3. Fine-Tuning 전략
    • MobileNetV2의 모든 레이어를 동결하고, Dense Layer만 학습하여 효율성 확보.
    • 추가 학습 단계에서 필요한 경우 일부 CNN 레이어를 동결 해제하여 Fine-Tuning.

3. 학습 전략

  1. Mixed Precision Training
    • PyTorch의 Mixed Precision Training을 활용하여 학습 속도를 높이고, 메모리 사용량 감소.
    • 더 큰 배치 크기를 사용할 수 있어 모델 학습의 안정성 증가.
  2. EarlyStopping과 ReduceLROnPlateau
    • 검증 손실이 개선되지 않을 경우 EarlyStopping으로 학습 조기 종료.
    • ReduceLROnPlateau를 통해 학습 정체 시 학습률을 감소시켜 더 나은 최적점 탐색.
  3. DataLoader 활용
    • PyTorch DataLoader를 사용해 데이터 배치를 효율적으로 처리.
    • 병렬 데이터 로딩으로 학습 속도 최적화.
  4. 손실 함수와 최적화
    • 손실 함수로 MSE (Mean Squared Error)를 사용하여 다차원 회귀 문제 해결.
    • Dense Layer만 학습하기 위해 Adam 옵티마이저를 활용, 학습률은 1e-4로 설정.

4. 평가 및 추론

  1. 평가 메트릭
    • MSE와 R2 점수를 활용해 모델의 예측 성능 평가.
    • 실제값과 예측값의 산포도를 시각화하여 모델의 편향 및 분산 확인.
  2. 추론 데이터 전처리
    • 테스트 데이터에도 동일한 전처리 적용 (리사이즈, 색상 변환, 정규화).
    • 훈련 데이터와 동일한 전처리 흐름으로 일관성 유지.
  3. 테스트 데이터 예측
    • 테스트 데이터의 이미지를 모델에 입력해 유전자 발현 값을 예측.
    • 예측 결과를 제출 파일 형식에 맞게 변환하여 저장.

결과

1. 학습 및 검증 결과

  1. 훈련 손실 (Training Loss)
    • 초기에는 손실이 급격히 감소하면서 학습이 빠르게 진행.
    • 이후 안정적으로 수렴하며, 과적합 없이 낮은 손실 값을 유지.
  2. 검증 손실 (Validation Loss)
    • 훈련 손실과 유사한 경향을 보이며, 에포크가 진행됨에 따라 지속적으로 감소.
    • 최종적으로 훈련 손실과 검증 손실 간의 큰 차이가 없어 과적합이 효과적으로 방지된 상태.
  3. 손실 값
    • 최종 훈련 손실 (Training Loss): 약 0.0476.
    • 최종 검증 손실 (Validation Loss): 약 0.0490.
    • 검증 손실이 훈련 손실과 유사한 수준으로 유지되면서 안정적으로 수렴.
  4. 평균 제곱 오차 (Mean Squared Error, MSE)
    • 검증 데이터에서 MSE가 0.0492로 측정.
    • 이는 모델이 실제 유전자 발현 값과 예측 값 간의 평균 오차 제곱을 낮게 유지했음을 의미.

 


2. 테스트 데이터 추론 결과

  1. 유전자 발현 예측
    • 테스트 데이터에서 각 이미지에 대해 모든 유전자 발현 값을 예측.
    • 예측값은 대부분의 유전자에서 실제값의 평균 범위 근처에 분포.
  2. 출력 데이터
    • 2277개의 테스트 이미지를 처리하며, 3468개의 유전자 발현 값을 예측.

 

                           CNN model                                             improved CNN model 

CNN model   vs improved CNN model