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. 데이터 전처리
- 이미지 크기 조정
- 이미지를 (256, 256) 크기로 리사이즈하여 입력 데이터의 일관성을 확보.
- MobileNetV2와 같은 사전 학습된 모델의 입력 크기 요구 사항에 맞춤.
- 색상 채널 변환 (RGB → YCbCr)
- 이미지를 RGB에서 YCbCr로 변환하여 색상 및 밝기 정보를 분리.
- 세포 이미지의 시각적 특징(밝기, 색조)의 표현력을 개선.
- Z-score 정규화
- 픽셀 값을 Z-score 방식으로 정규화하여 평균 0, 표준편차 1로 변환.
- 데이터 분포를 조정하고, 모델이 극단적인 값에 민감하지 않도록 처리.
- 데이터 증강
- 밝기 변화, 회전, 이동, 확대/축소 등 다양한 증강 기법 적용.
- 증강 후 Z-score 정규화를 재적용하여 증강된 데이터의 안정성 보장.
2. 모델링
- MobileNetV2 활용
- 경량화된 MobileNetV2를 사전 학습된 가중치로 초기화하여 학습 속도와 정확도 개선.
- CNN 레이어에서 이미지 데이터를 효율적으로 특징 추출.
- 유전자 발현 정보 학습 레이어
- MobileNetV2의 마지막 레이어를 Dense Layer로 수정하여 유전자 발현 값을 출력.
- 모델의 출력 뉴런 수를 예측해야 할 유전자 발현 값의 개수에 맞춤.
- Fine-Tuning 전략
- MobileNetV2의 모든 레이어를 동결하고, Dense Layer만 학습하여 효율성 확보.
- 추가 학습 단계에서 필요한 경우 일부 CNN 레이어를 동결 해제하여 Fine-Tuning.
3. 학습 전략
- Mixed Precision Training
- PyTorch의 Mixed Precision Training을 활용하여 학습 속도를 높이고, 메모리 사용량 감소.
- 더 큰 배치 크기를 사용할 수 있어 모델 학습의 안정성 증가.
- EarlyStopping과 ReduceLROnPlateau
- 검증 손실이 개선되지 않을 경우 EarlyStopping으로 학습 조기 종료.
- ReduceLROnPlateau를 통해 학습 정체 시 학습률을 감소시켜 더 나은 최적점 탐색.
- DataLoader 활용
- PyTorch DataLoader를 사용해 데이터 배치를 효율적으로 처리.
- 병렬 데이터 로딩으로 학습 속도 최적화.
- 손실 함수와 최적화
- 손실 함수로 MSE (Mean Squared Error)를 사용하여 다차원 회귀 문제 해결.
- Dense Layer만 학습하기 위해 Adam 옵티마이저를 활용, 학습률은 1e-4로 설정.
4. 평가 및 추론
- 평가 메트릭
- MSE와 R2 점수를 활용해 모델의 예측 성능 평가.
- 실제값과 예측값의 산포도를 시각화하여 모델의 편향 및 분산 확인.
- 추론 데이터 전처리
- 테스트 데이터에도 동일한 전처리 적용 (리사이즈, 색상 변환, 정규화).
- 훈련 데이터와 동일한 전처리 흐름으로 일관성 유지.
- 테스트 데이터 예측
- 테스트 데이터의 이미지를 모델에 입력해 유전자 발현 값을 예측.
- 예측 결과를 제출 파일 형식에 맞게 변환하여 저장.
결과
1. 학습 및 검증 결과
- 훈련 손실 (Training Loss)
- 초기에는 손실이 급격히 감소하면서 학습이 빠르게 진행.
- 이후 안정적으로 수렴하며, 과적합 없이 낮은 손실 값을 유지.
- 검증 손실 (Validation Loss)
- 훈련 손실과 유사한 경향을 보이며, 에포크가 진행됨에 따라 지속적으로 감소.
- 최종적으로 훈련 손실과 검증 손실 간의 큰 차이가 없어 과적합이 효과적으로 방지된 상태.
- 손실 값
- 최종 훈련 손실 (Training Loss): 약 0.0476.
- 최종 검증 손실 (Validation Loss): 약 0.0490.
- 검증 손실이 훈련 손실과 유사한 수준으로 유지되면서 안정적으로 수렴.
- 평균 제곱 오차 (Mean Squared Error, MSE)
- 검증 데이터에서 MSE가 0.0492로 측정.
- 이는 모델이 실제 유전자 발현 값과 예측 값 간의 평균 오차 제곱을 낮게 유지했음을 의미.
2. 테스트 데이터 추론 결과
- 유전자 발현 예측
- 테스트 데이터에서 각 이미지에 대해 모든 유전자 발현 값을 예측.
- 예측값은 대부분의 유전자에서 실제값의 평균 범위 근처에 분포.
- 출력 데이터
- 2277개의 테스트 이미지를 처리하며, 3468개의 유전자 발현 값을 예측.
CNN model improved CNN model

