Minseong Code Lab
← Projects
Bootcamp MissionComputer Vision

흉부 X-Ray 폐렴 분류

흉부 X-Ray 이미지를 CNN으로 분류하는 컴퓨터 비전 실습

게시 2026-07-10
PythonPyTorchtorchvisionJupyter
Contents · 목차
  1. 무엇을 하는 미션인가
  2. 모델과 불균형 처리
  3. 결과 — 검증과 테스트가 벌어진 지점
  4. 한계

무엇을 하는 미션인가

흉부 X-Ray 이미지를 정상 / 폐렴으로 분류하는 교육용 실습입니다. 의료 판독에 쓸 수 있는 수준을 목표로 한 것이 아니라, 불균형 데이터에서 전이학습과 지표 해석을 익히는 과제입니다.

모델과 불균형 처리

직접 쌓은 CNN과 사전학습 ResNet18(ResNet18_Weights.DEFAULT)을 함께 학습했습니다. 클래스 수가 불균형해 CrossEntropyLoss(weight=class_weights)로 손실에 가중치를 줬습니다. 옵티마이저는 Adam(lr=0.001, weight_decay=1e-4)입니다.

결과 — 검증과 테스트가 벌어진 지점

구간AccuracyPrecisionRecallF1
Train (10 에폭)0.99040.99590.99120.9935
Val (best)———0.9923
Test0.85100.81130.99230.8927

검증 F1 0.9923과 테스트 F1 0.8927의 차이가 이 실습의 핵심입니다. 테스트에서 Recall은 0.9923으로 유지되는데 Precision이 0.8113으로 떨어집니다 — 테스트셋에서 폐렴을 놓치는 비율은 낮았지만, 정상 이미지를 폐렴으로 분류하는 경우가 늘었다는 뜻입니다. 검증셋 성능만 보고 멈췄다면 이 격차를 보지 못했을 구간입니다.

한계

  • 교육 과정의 분류 실습입니다. 위 수치는 이 데이터셋 안에서의 값이며 진단 성능이 아닙니다
  • 임계값은 0.50 고정이고 조정 실험은 없습니다
  • 테스트 624장 단일 실행 결과이며 반복 측정은 없습니다