의료 영상 AI 배포·평가 인터페이스

흉부 X-ray 진단 모델의 학습·배포 흐름을 오픈소스 개발 프레임워크에 통합하고, 배포본에 동봉되는 평가용 GUI 를 만들었습니다.

연표로 돌아가기
문제
새 흉부 영상 진단 모델은 프레임워크의 자동 학습 흐름에 없었고, 코드 생성 단계는 초기화 때 앞 단계가 만든 파일을 모두 지우는 구조라 평가 도구를 배포본에 함께 실을 수 없었습니다.
담당
자동 신경망 탐색 모듈의 신규 모델 학습 분기, 코드 생성 단계 우회, PyQt5 평가 GUI 개발과 시험 절차서·설치 설명서 작성을 맡았습니다.
설계 판단
평가 도구 코드는 이름을 분리한 폴더로 격리해 배포 단계가 그대로 압축해 내려받게 했고, 정답은 이미지가 든 상위 폴더 이름(NORMAL·PNEUMONIA)으로 정해 이 구성만 맞추면 어떤 데이터셋이든 평가할 수 있게 했습니다.
검증 기준
서비스 시작·중단과 메모리 해제, 우회 뒤 산출물 유지, 배포본 설치·실행, 데이터셋 적재를 항목별로 확인하고, 평가 결과가 앞서 보고된 값과 같은지 대조했습니다.
결과 범위
시험 결과서와 설치·사용 설명서, 오픈소스 라이선스 검증 결과서까지 결과물로 냈습니다. 연구용 평가 도구이며 진단 용도가 아니고, 성능 수치는 싣지 않습니다.

흉부 영상 진단 모델의 학습과 배포 과정을 오픈소스 통합개발 프레임워크의 흐름 안으로 넣는 작업이었습니다.

자동 신경망 탐색 모듈에 신규 모델 학습 분기를 추가하고, 코드 생성 단계를 우회·격리해 배포 결과물에 평가용 GUI 가 함께 담기도록 했습니다.

배포본을 받은 사용자가 이미지 폴더만 열면 진단과 성능 평가를 수행할 수 있게 하고, 전 주기가 끊기지 않는지 항목별로 확인했습니다.

배포본에는 venv 와 conda 두 환경용 설치·실행 PowerShell 스크립트를 넣어, 받은 사람이 스크립트만으로 필요한 패키지를 갖추고 평가 GUI 를 띄우게 했습니다.

추론은 별도 스레드가 이미지를 차례로 처리하며 맡고, 결과를 주 스레드로 넘겨 지표를 계산해 화면에 표시하도록 나눴습니다.

코드 생성 단계 우회는 그 단계의 출력 폴더 이름 상수 한 곳을 바꾸는 최소 변경으로 구현했고, 배포 단계가 압축하는 폴더 이름은 그대로 두어 두 단계가 호환되게 했습니다. 배포본의 평가 모델 가중치는 같은 실행에서 훈련한 결과가 아니라, 미리 학습해 오픈소스 저장소 릴리스에 올려 둔 파일을 배포 때 내려받아 넣는 방식입니다. 평가 모델은 DenseNet201 과 ResNet152 두 정의를 함께 넣어 진단 스레드의 한 곳만 바꾸면 교체되고, 가중치는 안전 로딩 옵션과 엄격한 키 일치 검사로 불러옵니다.

신규 학습 분기는 프로젝트의 과제 유형이 분류이면 모두 흉부 영상 모델 학습으로 연결되는 통합 시험용 사본입니다. 분류 학습의 손실과 정확도를 탐지용으로 설계된 진행 보고 항목(박스·객체·클래스·mAP 등)에 넣어 기존 프런트엔드로 보내고, 5회 반복에 작은 묶음, 데이터 일부만 쓰는 축소 구성으로 돌립니다. 데이터는 공개 소아 폐렴 흉부 X선 데이터셋이고 정상과 폐렴의 이진 분류입니다.

초기 접근은 프레임워크 안에 추론 웹 서비스(이미지 업로드·URL·시험셋 입력, 썸네일 격자 결과)와 별도 React 시연 앱을 두는 안이었고, 9월 말 설계안에서 배포본에 동봉하는 데스크톱 평가 앱으로 정리했습니다. 설계안(2024년 9월 28일)에서 평가 도구 시연 자료(10월 1일)까지 사흘 만에 동작하는 평가 앱을 만들었고, 10월 9일 엑셀 저장을 추가했으며, 배포본 묶음은 11월 9일, 결과보고서는 11월 26일자로 정리했습니다.

결과 요약은 일치·불일치·분석한 이미지 수·일치율 네 가지이고 지표는 정답 일치율 한 가지입니다(민감도와 혼동행렬은 없습니다). 저장은 진단이 끝난 행만 CSV·엑셀로 합니다. 폴더를 열면 이미지 수집을 진단과 별도 스레드로 처리해 하위 폴더까지 모든 이미지 형식을 찾아 진행 막대를 보이고, 목록용 100픽셀 썸네일은 이미지 옆 썸네일 폴더에 한 번 만들어 재사용합니다.

신규 ResNet152 의 모델 정의가 기존 정의와 달라 모델 추적 작업이 먼저 필요했고, 그 때문에 시연 시점에는 ONNX 변환을 수행하지 못했습니다. 배포본은 Windows 10·11 전용 PowerShell 설치·실행 스크립트로 제공되고, CUDA·cuDNN 을 파이썬 패키지로 받아 별도의 CUDA 개발 환경이 필요 없으며, 15GB 이상의 여유 공간과 CUDA 지원 그래픽카드를 안내했습니다.

화면

흉부 영상 격자에 정상·폐렴 판정과 참값이 표시되고 아래에 정확도 지표가 있는 평가 응용 화면흉부 영상 격자에 정상·폐렴 판정과 참값이 표시되고 아래에 정확도 지표가 있는 평가 응용 화면
평가 응용. 이미지 폴더를 열면 진단 결과와 참값을 나란히 보여 주고 지표를 계산합니다.

더미 데이터로 채운 그림입니다. 실제 화면과 배치·문구가 다를 수 있습니다.

구조와 흐름

프레임워크 전 주기

프로젝트 생성자동 신경망 탐색 모듈신규 모델 학습 분기코드 생성 단계우회 · 격리배포 묶음모델 + 평가 GUIKubernetes 배포평가 GUI이미지 폴더 열기진단 · 성능 평가정상 / 폐렴
열 개 항목의 시험으로 전 주기가 끊기지 않는지 확인했습니다.
PythonKubernetes의료 영상PyQt