포스트

머신러닝 기반 말라리아 감지

Read in English

기술 스택

Python, TensorFlow, Keras, Scikit-learn

설명

이 프로젝트는 말라리아 데이터셋의 감염 세포와 비감염 세포를 분류하는 머신러닝 모델을 개발하는 데 초점을 맞췄습니다. 프로젝트는 데이터 선정, 모델 학습, 파인튜닝, 성능 평가의 세 단계로 진행되었습니다. 아래는 본 프로젝트를 위해 작성한 최종 리포트입니다.

들어가며

이 리포트는 응용 머신러닝 팀 프로젝트의 협업 결과를 정리한 문서로, 혈액 도말 이미지로 구성된 말라리아 데이터셋을 중심으로 다룹니다. 데이터셋은 약 27,558장의 이미지로 이뤄져 있으며 감염 세포와 비감염 세포가 균형 있게 포함돼 있어 고도화된 이미지 분류 모델을 개발하기에 이상적인 도전과제를 제공합니다. 본 프로젝트의 목표는 말라리아 데이터셋에 다양한 머신러닝 알고리즘을 적용하고, 데이터 전처리와 하이퍼파라미터 파인튜닝을 통해 모델 성능을 개선하는 것입니다.

프로젝트는 세 단계로 구성되었습니다. Phase 1에서는 데이터셋 선정과 함께 세 개의 초기 모델을 구현해 성능을 평가했습니다. Phase 2에서는 그중 두 모델을 선정해 아키텍처를 수정하고 하이퍼파라미터를 조정해 성능을 끌어올렸습니다. Phase 3에서는 추가 파인튜닝 실험과 결과 종합을 통해 연구 여정과 실용적 시사점을 정리한 최종 발표 자료를 만들었습니다.

데이터 분석과 전처리

1) 데이터셋 개요

말라리아 데이터셋은 이미지 분석을 통한 기생충 감염 자동 감지에 핵심적인 자원입니다. ‘Parasitized(감염)’ 또는 ‘Uninfected(비감염)’로 분류된 얇은 혈액 도말 슬라이드 이미지로 구성되어 있습니다. 공개 저장소에서 가져온 본 데이터셋은 약 27,558장의 이미지로, 의료 진단 분야의 머신러닝 응용 연구에 풍부한 자료를 제공합니다.

malaria Malaria Dataset

2) 통계 분석

데이터셋의 특성을 더 깊이 이해하기 위해 면밀한 통계 분석을 수행했습니다. 픽셀 평균값과 픽셀 값의 표준편차 같은 다양한 지표를 계산해 이미지 내 데이터 분포를 파악했고, 감염 세포와 비감염 세포 간 대비를 비롯한 이미지의 특성을 살펴봤습니다. 이 분석 결과는 이후의 전처리 단계와 모델 선택에 영향을 미쳤습니다.

statistical analysis

데이터셋의 픽셀 평균값 분포는 60~160 범위에 있었고 130 부근에서 정점을 보였습니다. 즉 대부분의 이미지가 비슷한 밝기를 가졌다는 뜻입니다. 픽셀 표준편차 분포는 60~90 범위였고 75 근처에서 정점을 보여 이미지 간 픽셀 변동(대비) 수준이 비슷함을 확인했습니다.

이 결과는 전처리 방향을 잡는 데 여러 시사점을 줬습니다. 평균 픽셀값 범위가 좁다는 점은 Min-Max 스케일링 같은 단순 정규화로 이미지 간 밝기를 표준화할 수 있다는 것을 의미했고, 전처리 파이프라인을 단순화할 수 있게 했습니다. 또한 표준편차가 좁게 분포한다는 사실은 감염/비감염 세포 간 시각적 차이가 미묘할 수 있다는 점을 시사했습니다. 이를 보완하기 위해 회전, 좌우 반전 같은 데이터 증강 기법을 도입해 학습 데이터의 다양성을 높이고 과적합을 방지했습니다.

또한 통계 분석은 모델 선택에도 중요한 단서를 제공했습니다. 이미지 간 밝기·대비가 유사하다는 것은 변별력이 이미지 내부의 국소 패턴과 텍스처에 있을 가능성을 시사했습니다. 이에 따라 컨볼루션 레이어로 미세한 패턴을 효과적으로 포착할 수 있는 합성곱 신경망(CNN) 을 주력 아키텍처로 선정했습니다. 더불어 KNN, CNN+Decision Tree 앙상블 등 본 과정에서 다룬 다른 모델들도 함께 구현·비교 평가했습니다.

3) 전처리 단계

모델이 효과적으로 학습할 수 있도록 데이터셋을 다음과 같이 전처리했습니다:

  • 이미지 정규화: 각 이미지의 픽셀값을 0~1 범위로 스케일링했습니다. 이 과정은 연산 복잡도를 낮추고 학습 수렴 속도를 개선하는 데 핵심적이었습니다. 모든 이미지의 픽셀값을 표준화함으로써 모델이 밝기·스케일 차이가 아니라 본질적 패턴에 집중하도록 했습니다.

  • 데이터 증강: 모델의 일반화 성능을 높이고 과적합을 막기 위해 회전, 반전, 줌, 시프트 등의 증강 기법을 적용했습니다. 추가 원본 이미지 없이도 학습 데이터의 다양성을 인위적으로 늘렸습니다.

  • 데이터 분할: 학습용 70%, 검증용 30%로 데이터셋을 분할했습니다. 이 분할은 보지 못한 데이터에 대한 일반화 성능을 평가하면서 하이퍼파라미터를 튜닝하기에 적합한 비율이었습니다.

모델 구조

데이터 분석과 전처리에서 얻은 통찰을 바탕으로, 말라리아 데이터셋에서 감염/비감염 세포를 효과적으로 분류할 수 있는 머신러닝 모델을 신중하게 선정·정제했습니다. 모델 선정 과정은 세 단계로 나뉘며 각 단계는 모델 개발과 최적화의 서로 다른 측면에 집중했습니다.

1) Phase 1: 초기 모델 선정

1단계에서는 말라리아 데이터셋에 대한 성능을 비교하기 위해 서로 다른 세 개의 머신러닝 모델을 구현했습니다:

합성곱 신경망(CNN): 이미지 인식 분야에서 검증된 성능 덕분에 주력 모델로 선정했습니다. CNN 아키텍처는 공간적 특징 계층을 포착하는 컨볼루션 레이어, 차원 축소를 위한 풀링 레이어, 분류를 위한 완전 연결 레이어로 구성됩니다. 통계 분석에서 시사한 미묘한 시각적 차이를 자동으로 학습·추출할 수 있다는 점이 CNN을 선택한 결정적인 이유였습니다.

K-최근접 이웃(KNN): 단순한 모델과 비교해 CNN의 성능 의미를 더 잘 평가하기 위해 KNN 분류기도 함께 구현했습니다. KNN은 특징 공간에서 k개의 최근접 이웃의 다수결로 이미지를 분류합니다. 단순함과 효율성으로 알려져 있지만, 통계 분석이 시사한 복잡한 패턴을 포착하는 데는 한계가 있을 것으로 예상됐습니다.

앙상블 모델 (CNN + Decision Tree): 서로 다른 아키텍처의 장점을 조합하기 위해 CNN과 Decision Tree 분류기를 결합한 앙상블 모델을 구성했습니다. CNN의 국소 패턴 학습 능력과 Decision Tree의 전역 특징 분석이 상호 보완할 수 있는지 확인하는 것이 목적이었습니다. 두 모델의 예측 확률을 평균 내어 최종 클래스를 결정하는 소프트 보팅(soft voting) 방식으로 구현했습니다.

2) Phase 2: 모델 정제

1단계 결과와 통찰을 바탕으로 CNN과 앙상블 모델을 선정해 2단계에서 추가 정제했습니다. 하이퍼파라미터 파인튜닝, 아키텍처 수정, 고도화된 앙상블 기법 도입을 통해 모델을 최적화하는 것이 목표였습니다:

개선 CNN (VGG): CNN 성능을 끌어올리기 위해 더 복잡한 VGG 아키텍처로 전환했습니다. VGG는 다중 컨볼루션·풀링 레이어를 통해 더욱 미묘한 패턴을 포착할 수 있습니다. 1단계에서 CNN이 보여준 가능성과, 깊은 신경망이 감염/비감염 세포 간 미세한 차이를 더 잘 구분할 수 있다는 통계 분석의 시사점이 결정의 근거였습니다.

앙상블 모델 (CNN + Random Forest + SVM): 기존 Decision Tree를 Random Forest와 Support Vector Machine(SVM)의 조합으로 교체했습니다. Random Forest는 고차원 데이터 처리와 과적합 감소에 강하고, SVM은 분류 견고성에서 강점을 보입니다. 또한 소프트 보팅 대신 베이스 모델들의 예측을 입력으로 하는 메타 러너를 학습시키는 스태킹(stacking) 방식을 채택했습니다. 모델들의 출력 사이의 더 복잡한 관계를 포착해 앙상블 성능을 높이는 것이 목적이었습니다.

3) Phase 3: 모델 정제

3단계에서는 2단계 결과를 바탕으로 모델을 추가 파인튜닝하는 데 집중했습니다. VGG와 앙상블 모델 성능을 높이기 위한 다양한 기법을 탐색했습니다.

VGG 모델에서는 학습률, 배치 크기, 에폭 수 등 다양한 하이퍼파라미터를 조정해 봤습니다. 그러나 노력에 비해 2단계 대비 성능 향상은 미미했습니다.

앙상블 모델에서도 Gradient Boosting 같은 추가 알고리즘 통합과 다양한 스태킹 구성·메타 러너 알고리즘 실험을 진행했습니다. 그러나 이 또한 2단계와 비슷한 수준의 성능을 보였습니다.

결과 및 모델 비교

세 단계에 걸쳐 모델을 개발·정제한 결과를 바탕으로 성능을 종합 분석하고 비교하겠습니다. 본 절에서는 각 모델의 평가 지표를 정리하고, 정제 과정에서의 개선 사항을 논의하며, 말라리아 데이터셋에서 감염/비감염 세포를 분류하는 데 있어 모델들의 효과성을 최종 평가합니다.

1) Phase 1 결과 및 비교

1단계에서는 CNN, KNN, CNN+Decision Tree 앙상블 세 가지 모델을 구현하고 정확도, 정밀도, 재현율, F1-스코어 등의 지표로 성능을 평가했습니다.

모델 #1 (CNN): CNN은 1단계에서 정확도 95.46%, 정밀도 94.73%, 재현율 96.27%, F1-스코어 95.49%로 강력한 성능을 보였습니다. 이미지 분류 작업에서 CNN을 선택한 결정의 타당성을 입증하고, 말라리아 데이터셋의 특징을 효과적으로 학습·추출할 수 있음을 확인했습니다.

모델 #2 (KNN): 통계 분석이 예측한 대로 KNN 분류기는 데이터셋의 복잡한 패턴을 포착하는 데 어려움을 겪어 CNN 대비 낮은 성능을 보였습니다. 정확도, 정밀도, 재현율, F1-스코어 모두 약 62%였습니다. 연산 효율성은 좋았지만 이 문제에서는 단순함이 한계로 작용했습니다.

모델 #3 (CNN + Decision Tree 앙상블): 앙상블 모델은 정확도 84.52%, 정밀도 94.50%, 재현율 73.28%, F1-스코어 82.55%를 기록했습니다. 가능성을 보였지만 낮은 재현율은 양성 사례 탐지에서 개선의 여지를 남겼습니다.

Phase1_Model_Comparison

2) Phase 2 결과 및 비교

1단계 통찰을 바탕으로 2단계에서는 CNN 아키텍처를 강화하고 더 고도화된 앙상블 기법을 탐색했습니다.

모델 #1 (VGG): 기본 CNN에서 VGG로의 전환은 큰 성능 향상으로 이어졌습니다. VGG 모델은 정확도 97.39%, 정밀도 95.52%, 재현율 97.52%, F1-스코어 95.48%를 달성했습니다. 통계 분석이 시사했던 더 미세한 패턴을 더 깊은 신경망이 효과적으로 포착함을 보여 주는 결과였습니다.

모델 #2 (CNN + RF + SVM 앙상블): Random Forest와 SVM을 통합하고 스태킹 방식을 채택한 결과, 앙상블 모델 성능이 크게 향상됐습니다. 정확도 92.86%, 정밀도 91.70%, 재현율 94.23%, F1-스코어 92.95%로 정제된 앙상블이 다양한 모델을 결합하고 정교한 기법을 적용했을 때 정확한 예측을 만들어 낼 수 있음을 보여 줬습니다.

기존 모델(MobileNet) 대비 비교: 효율적이고 잘 정립된 모델인 MobileNet과도 성능을 비교했습니다. MobileNet은 정확도 91.35%, 정밀도 88.46%, 재현율 95.08%를 기록했지만, 우리의 VGG와 정제 앙상블 모델은 정확도와 정밀도에서 이를 능가하며 모델 선정·정제 과정의 효과성을 검증했습니다.

Phase2_Model_Comparison

학습·추론 시간: VGG 모델은 깊은 신경망 구조의 연산 부담으로 학습에 약 1246초, 추론에 759초가 걸렸습니다. 앙상블 모델은 학습 633초, 추론 41초로 세 모델 중 추론 시간이 가장 짧았습니다. 정확도는 다소 낮지만 학습·추론 시간 면에서는 앙상블 모델의 효율성이 두드러졌습니다.

Phase2_Time_Comparison

3) 최종 결과

1단계에서 2단계로의 진화는 모델 성능에 의미 있는 개선을 가져와 우리의 정제 전략이 효과적이었음을 입증했습니다. 특히 VGG 모델은 모든 평가 지표에서 두드러진 개선을 보여 정확도가 95.46% → 97.39%, 정밀도 94.73% → 95.52%, 재현율 96.27% → 97.52%, F1-스코어 95.49% → 95.48%로 변화했습니다. 말라리아 데이터셋의 복잡한 이미지 특징을 분석·분류하는 능력에서 VGG의 우수함을 확인할 수 있는 결과입니다.

마찬가지로 정제된 앙상블 모델(CNN, RF, SVM)도 큰 개선을 보였습니다. 정확도 84.52% → 92.86%, 정밀도 94.50% → 91.70%, 재현율 73.28% → 94.23%, F1-스코어 82.55% → 92.95%로 변화했습니다. RF와 SVM의 도입이 모델 견고성을 높이고 위음성을 줄여 의료 진단 응용에서 결정적인 개선을 만들어 냈습니다.

improvements

결론

1) 핵심 발견과 학습 정리

이 프로젝트를 통해 말라리아 데이터셋의 감염/비감염 세포를 분류하는 응용 머신러닝 기법을 탐구했습니다. 그 과정에서 얻은 핵심 발견과 학습은 다음과 같습니다:

첫째, 데이터셋 통계 분석은 이미지 특성에 대한 결정적인 통찰을 제공했고 이는 전처리 단계와 모델 선택 과정의 방향을 잡아 줬습니다. 평균 픽셀값과 표준편차의 좁은 분포는 단순한 정규화의 필요성을 시사했고, 감염/비감염 세포 구분의 어려움도 함께 드러냈습니다.

둘째, 반복적인 모델 선정·정제 과정은 문제에 맞는 모델 복잡도를 선택하는 일의 중요성을 보여 줬습니다. 깊은 아키텍처를 가진 VGG의 우수한 성능은 미묘한 시각적 차이를 포착하는 데 CNN이 효과적임을 다시 확인시켜 줬으며, 이미지 기반 분류 작업에서 CNN의 뛰어난 잠재력을 부각시켰습니다.

셋째, 앙상블 모델의 개발·정제는 다양한 분류기를 결합해 예측 신뢰도를 높일 수 있다는 가능성을 보여 줬습니다. Random Forest와 SVM의 통합과 스태킹 방식의 도입은 앙상블의 견고성을 높이고 위음성을 줄이는 결과를 가져왔습니다.

2) 개선 가능성과 향후 연구 방향

프로젝트는 여러 의미 있는 성과를 거두었지만 추가로 탐색할 가치가 있는 방향이 남아 있습니다. 한 가지 유망한 방향은 데이터 증강 기법의 범위를 확장하고 더 높은 품질의 이미지를 학습 파이프라인에 통합하는 것입니다. 탄성 변형(elastic transformation), 무작위 자르기, 색상 지터링 같은 고도화된 증강을 적용하면 데이터의 변동성을 더 폭넓게 시뮬레이션할 수 있어 모델의 일반화 성능과 실제 환경에서의 견고성을 높일 수 있습니다.

또 다른 흥미로운 방향은 비전 트랜스포머(ViT) 같은 고도화된 아키텍처의 탐구입니다. ViT는 self-attention 메커니즘을 통해 이미지의 서로 다른 영역 사이의 장거리 의존성과 전역 맥락을 효과적으로 모델링할 수 있어, 전통적인 합성곱 아키텍처가 놓칠 수 있는 미묘한 변별 특징을 발견할 잠재력이 있습니다.

ViT를 모델 선택 프로세스에 통합하면 말라리아 데이터셋 분석에 새로운 관점을 제공하고, 감염/비감염 세포 분류 정확도를 더 끌어올릴 수 있을 것입니다. 또한 부스팅이나 더 정교한 스태킹 기법 같은 고도화된 앙상블 기법을 탐색하면 개별 분류기의 강점을 더 잘 활용해 더 정확한 예측을 만들 수 있습니다.

참고문헌

  • TensorFlow. (2023). TensorFlow Documentation: Image Classification. https://www.tensorflow.org/tutorials/images/classification
  • Keras. (2023). Keras Applications. https://keras.io/api/applications/
  • Malaria Dataset (TFDS): https://www.tensorflow.org/datasets/catalog/malaria
  • MobileNet (tf.keras.applications.MobileNet): https://www.tensorflow.org/api_docs/python/tf/keras/applications/MobileNet
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.