목록으로

Lung CT AI

흉부 CT 폐결절 검출 및 분석 AI 웹 어플리케이션 개발 및 운영

진행 기간
2022 ~ 2025
상태
운영 완료

Overview

전처리한 DICOM 영상을 딥러닝 모델에 전달하고, 반환된 폐결절 검출 결과를 판독 뷰어에 시각화하는 웹 어플리케이션입니다.

Tech Stack

ReactTypeScriptCornerstone3DReact QueryZustandWebSocket

주요 작업

  • React·Cornerstone.js 기반 흉부 CT DICOM 판독 뷰어를 개발하여, 전처리한 DICOM 영상을 VUNO Lung CAD 딥러닝 모델에 전달하고 반환된 폐결절 검출 결과(결절 목록·영상 내 위치·Segmentation)를 시각화
  • Cornerstone3D 출시에 맞춰, 2D Cornerstone에서 픽셀 조작으로 3축(axial·coronal·sagittal) 단면을 구현하던 기존 뷰어를 Cornerstone3D 기반으로 마이그레이션
  • 기존 GraphQL(Apollo Client) 기반 프론트–백엔드 통신을 REST API 구조로 전환
  • WebSocket 이벤트별 갱신 정책을 설계. 데이터 변경 이벤트를 페이지·발신 사용자에 따라 전체 refetch / 상태값만 갱신 / 사용자 확인 후 갱신으로 분기해, 불필요한 재조회 없이 화면 일관성 확보
  • 동시 판독 시 발생하는 판독 결과 충돌을 막기 위해 백엔드와 Lock 획득·해제 규약(WebSocket 메시지 및 Release API)을 협의하고, 프론트엔드 측 처리를 구현
  • 장시간·연속 판독 시 뷰어가 무한 로딩되거나 강제 종료되던 문제를 추적해 두 가지 원인을 해소. 영상 렌더링용 볼륨과 세그멘테이션용 볼륨이 각각 수백 MB 규모의 캐시를 이중으로 점유하던 것을 확인해 세그멘테이션을 표시하지 않는 배포 환경에서는 해당 볼륨을 생성하지 않도록 조건화하고, 뷰어 언마운트 시 revokeObjectURL 미호출과 DICOM 상태 미초기화로 메모리가 누적되던 부분은 cleanup 처리로 제거
  • Segmentation Threshold 변경 시 매 조작마다 좌표를 전역 상태에 기록하던 방식을 viewport의 present/reference를 저장한 뒤 camera reset 시점에 복원하는 방식으로 재설계하여, 임계값 변경 후에도 zoom·pan 등 판독 컨텍스트가 유지되도록 개선
  • PSP 파트너 연동을 위한 Longitudinal(추적검사) 신규 API를 설계하여, baseline·follow-up CT 간 결절 매칭과 시계열 변화 추적을 지원