"2분반-Brain Overflow"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(새 문서: <div>__TOC__</div> ==프로젝트 개요== === 기술개발 과제 === ''' 국문 : ''' 00000000.. ''' 영문 : ''' 00000000.. ===과제 팀명=== 00000.. ===지도교수=== 000...)
 
(향후계획)
 
(같은 사용자의 중간 판 22개는 보이지 않습니다)
3번째 줄: 3번째 줄:
 
==프로젝트 개요==
 
==프로젝트 개요==
 
=== 기술개발 과제 ===
 
=== 기술개발 과제 ===
''' 국문 : ''' 00000000..
+
''' 국문 : ''' 종단 3차원 뇌 MRI 생성을 통한 알츠하이머병 진행 예측 
  
''' 영문 : ''' 00000000..
+
''' 영문 : ''' Alzheimer’s Disease Progression Prediction by Generating Longitudinal 3D Brain MRI
  
 
===과제 팀명===
 
===과제 팀명===
00000..
+
Brain Overflow
  
 
===지도교수===
 
===지도교수===
000 교수님
+
김민호 교수님
  
 
===개발기간===
 
===개발기간===
17번째 줄: 17번째 줄:
  
 
===구성원 소개===
 
===구성원 소개===
서울시립대학교 ㅁㅁ공학부·과 20XXXXX0** 김**(팀장)
+
서울시립대학교 컴퓨터과학부 2019920003 권준호 (팀장)
  
서울시립대학교 ㅁㅁ공학부·과 20XXXXX0** 정**
+
서울시립대학교 컴퓨터과학부 2020920002 구효근 
  
서울시립대학교 ㅁㅁ공학부·과 20XXXXX0** 조**
+
서울시립대학교 컴퓨터과학부 2020920032 석우진 
  
서울시립대학교 ㅁㅁ공학부·과 20XXXXX0** 이**
+
서울시립대학교 컴퓨터과학부 2021920020 김혜주 
  
서울시립대학교 ㅁㅁ공학부·과 20XXXXX0** 남**
+
서울시립대학교 컴퓨터과학부 2022920029 박영빈 
 +
 
 +
서울시립대학교 컴퓨터과학부 2022920038 송채희
  
 
==서론==
 
==서론==
 
===개발 과제의 개요===
 
===개발 과제의 개요===
 
====개발 과제 요약====
 
====개발 과제 요약====
내용
+
본 프로젝트는 알츠하이머병의 진행 상태를 예측하는 인공지능 모델을 개발하는 것을 목표로 한다. 구체적으로는 종단 3D s-MRI 데이터를 기반으로 미래 시점의 뇌 영상을 생성하는 image prediction generation 기술을 구현한다.
====개발 과제의 배경====
+
또한, 생성 모델의 성능뿐만 아니라 실제 서비스화까지를 염두에 두고 있으며, 안정적인 시스템 구현을 위해 RAFT 기반의 데이터 동기화, 메시지 큐(MQ)를 활용한 비동기 처리, Java Virtual Thread를 통한 고성능 동시성 제어, React 기반 UI 최적화 등의 기술적 요소들을 도입하고 연구 중이다. 이러한 기술 역량을 바탕으로 본 프로젝트는 AI 모델의 구현을 넘어 의료 및 신경과학 분야에 실질적으로 활용 가능한 웹 기반 서비스로의 확장을 지향한다.
내용
+
====개발 과제의 배경 및 효과====
 +
알츠하이머병의 조기 진단과 진행 경로 예측은 임상 및 치료 전략 수립에 매우 중요한 문제다. 그러나 환자 1인에 대해 다중 시점의 3D MRI 데이터를 확보하는 것은 현실적으로 어렵기 때문에, 기존 모델은 단일 시점 분석에 한정되거나 데이터 불균형으로 성능 저하를 겪는다.
 +
이를 해결하기 위해 본 프로젝트는 longitudinal image synthesis를 통해 종단 데이터의 공백을 메우고, 이를 기반으로 한 예측을 가능하게 한다. 또한, 고해상도 3D 이미지를 효율적으로 처리하기 위해 Latent Diffusion Model(LDM)을 채택하고, 의료적 신뢰성을 평가하기 위한 Human Evaluation, Lesion Consistency, Plausibility 등의 정성적 평가 지표도 도입하였다.
 +
이와 함께, AI 모델을 서비스화하여 다양한 사용자(의사, 연구자, 제약사 등)가 쉽게 접근할 수 있도록 하여 기술의 실질적 활용도를 높이고자 한다.
 
====개발 과제의 목표 및 내용====
 
====개발 과제의 목표 및 내용====
내용
+
본 프로젝트의 구체적 목표는 다음과 같다:
 +
*AI 모델 개발
 +
**Task Definition
 +
***입력: 종단 뇌 MRI 이미지 시퀀스(최소 2 장 이상)
 +
***출력: 미래의 뇌 MRI 이미지 시퀀스를 생성 → 치매 진행 양상 예측
 +
**From Scratch 구현
 +
***cross-attention, ControlNet 기반 Condition Latent Diffusion Model을 PyTorch를 이용해 from scratch 구현
 +
**실험적 가설에 대한 검증
 +
***가설: Pretrained Voxelmorph 모델을 이용해 생성한 deformation field를 ControlNet 구조를 활용해 디퓨전 모델에 조건으로 줄 경우, 모델이 morphological changes를 학습 가능하여 예측 생성 성능이 개선될 것이다.
 +
* 시스템 아키텍처 구축
 +
** RAFT 기반 데이터 일관성 유지
 +
** 메시지 큐(RabbitMQ/Kafka) 기반 비동기 처리
 +
** Java Virtual Thread를 통한 고동시성 처리
 +
* 웹 서비스 배포
 +
** React 기반 UI, WebGPU 3D MRI 시각화
 +
** AI inference 서버 및 pipeline 배포 (Kubernetes 기반)
  
 
===관련 기술의 현황===
 
===관련 기술의 현황===
 
====관련 기술의 현황 및 분석(State of art)====
 
====관련 기술의 현황 및 분석(State of art)====
 
*전 세계적인 기술현황
 
*전 세계적인 기술현황
내용
+
최근의 연구들은 치매 진행 예측을 위한 생성 모델로서 Diffusion 기반의 아키텍처를 점점 더 적극적으로 도입하고 있다. 특히, Litrico et al.의 TADM(Temporally-aware Diffusion Model)은 시간 조건을 정교하게 설정함으로써 단일 시점에서 여러 미래 시점을 예측하는 접근을 제시하며, 기존 DDPM 모델의 mode collapse 문제를 개선하였다.  또한 Puglisi et al.의 BrLP 모델은 ControlNet과 Latent Average Stabilization 기법을 도입하여 생성 이미지의 정확성과 품질을 향상시킨 바 있다.
 +
기존 GAN 기반 모델들이 의료 영상에서 흔히 발생하는 해상도 저하나 불안정한 생성 문제를 겪는 반면, Diffusion 기반 모델은 안정성과 품질 측면에서 우수한 성능을 보여준다.
 +
본 프로젝트는 이러한 연구 흐름에 발맞추어 regional volume의 변화량과 deformation field 를 latent diffusion model에 컨디셔닝하는 구조를 설계하고, 이를 통해 치매 진행의 시계열적 변화를 반영하는 longitudinal 3D MRI 생성을 구현하고자 한다.
 
*특허조사 및 특허 전략 분석
 
*특허조사 및 특허 전략 분석
내용
+
경쟁력분석 과정에서 확인된 결과, 본 프로젝트의 중심 기술인 3D s-MRI 기반의 longitudinal image generation 및 diffusion 모델을 이용한 질병 예측에 대해 직접적으로 충돌하는 등록 특허는 발견되지 않았다.
 +
다만 유사 영역에서 다음과 같은 특허가 간접적으로 존재한다:
 +
#O2023183504A1: 의료 영상 초해상도 처리를 위한 딥러닝 방법
 +
#O2018172540A1: 알츠하이머병 진행 예측을 위한 알고리즘적 접근
 +
이러한 특허들은 주로 해상도 향상, 예측 정확도 향상 등에 초점을 맞추고 있으며, 본 프로젝트가 사용하는 multimodal conditioning, morphological deformation encoding, volumetric generation 등과는 핵심적 차별성이 존재한다.
 +
 
 +
본 프로젝트는 다음의 두 가지 특허 전략 방향을 병행하여 고려하고 있다.
 +
#회피 설계 전략 (Freedom to Operate, FTO): 기존 특허들은 주로 단일 시점 영상의 향상이나 수치 예측에 집중되어 있으므로, 본 프로젝트는 longitudinal data, age-conditioned generation, volumetric diffusion이라는 특화된 요소들을 강조함으로써 회피 설계를 확보한다.
 +
#선점형 특허 전략 (Offensive IP Strategy): 시계열 3D MRI 생성을 포함하는 다중 연령 조건 기반의 이미지 생성 방식과 이를 의료 예측 태스크에 적용하는 방법론을 청구항으로 구성할 수 있다. 다만, 관련 기술이 빠르게 공개되고 있으며 유사 기술도 공지된 바 있으므로, 신규성과 진보성을 확보하기 위해서는 구체적 기술 요소의 결합 및 성능 기준 달성 여부가 중요하다.
 
*기술 로드맵
 
*기술 로드맵
내용
+
기술 로드맵 상에서, 본 프로젝트는 기존의 GAN 계열 방법과 최신의 Diffusion 계열 방법을 모두 검토하고 이를 통합하거나 대체하는 전략을 수립하였다.
 +
 
 +
GAN 계열 기술 흐름:
 +
#2019, Ravi et al. — DaniNet (degenerative progression을 adversarial 방식으로 모델링)
 +
#2022, Ravi et al. — 4D-DaniNet (시계열 4D 모델 확장)
 +
#2023, Pombo et al. — CounterSynth (morphologically constrained 3D GAN)
 +
 
 +
Diffusion 계열 기술 흐름:
 +
#2022, Kim et al. — DDM (Medical image synthesis for aging)
 +
#2022, Kim et al. — DiffuseMorph (unsupervised deformable registration)
 +
#2023, Yoon et al. — SADM (Sequence-aware diffusion)
 +
#2024, Litrico et al. — TADM (temporal-aware conditional diffusion)
 +
#2024, Puglisi et al. — BrLP (latent diffusion + prior control)
 +
 
 +
이러한 흐름 속에서 본 프로젝트는 BrLP 모델에서 volumetric changes를 반영하는 것에서 더 나아가, 모델이 deformation field 조건을 통해 morphological changes를 학습 가능하게 하고자 한다.
 +
이를 통해, 기존 BrLP 모델이 morphological changes 학습에 부족함이 있는 한계를 보완하고자 한다.
  
 
====시장상황에 대한 분석====
 
====시장상황에 대한 분석====
 
*경쟁제품 조사 비교
 
*경쟁제품 조사 비교
내용
+
현재 치매 예측을 위한 생성 모델 분야에서는 시간 조건부 생성(temporally-aware generation)과 고품질 의료 영상 합성에 초점을 맞춘 여러 연구가 제안되고 있다. 특히 MICCAI 2024에 발표된 TADM과 BrLP는 본 프로젝트와 가장 유사한 기술적 배경을 갖고 있다.
 +
TADM (Litrico et al., 2024)은 age gap을 condition으로 입력받아 단일 시점 이미지에서 향후 시점의 MRI를 예측하는 구조이며, classifier 기반의 loss를 사용해 출력의 신뢰도를 보장한다.
 +
반면, BrLP (Puglisi et al., 2024)는 ControlNet을 도입해 미래 MRI의 volumetric changes를 외부 auxiliary model로부터 예측하고 이를 생성 조건으로 사용함으로써 정밀도를 높였다. LAS(Latent Average Stabilization)를 통해 생성 품질을 안정화하는 기법도 함께 도입되었다.
 +
이에 비해 본 프로젝트는 단순 age나 volumetric 변화량을 넘어서, 추정한 deformation field 를 통해 morphological changes 까지 조건으로 사용하는 방식을 채택하고 있다. 이로 인해 기존 모델보다 구조적 일관성과 병리학적 타당성이 높은 결과물을 생성할 수 있는 가능성이 있으며, 조기진단에 특화된 시나리오에서도 경쟁우위를 확보할 수 있다.
 +
또한, 기존 연구가 inference 전용 데모 수준에 머무는 반면, 본 프로젝트는 실시간 렌더링이 가능한 WebGPU 기반 3D 인터페이스, 백엔드 시스템 전체를 포함한 웹 플랫폼까지 구현하여 기술 상용화 가능성을 실질적으로 높였다는 점에서 차별화된다.
 
*마케팅 전략 제시
 
*마케팅 전략 제시
내용
+
본 프로젝트는 의료 영상 기반 AI 서비스로서, 타겟 시장을 명확히 정의하고 진입 전략을 다음의 5단계로 구체화하였다:
 +
#타겟 시장 설정: 초기에는 신경과 병원, 뇌영상 연구소, 신약개발을 수행하는 제약회사 등 전문 사용자를 중심으로 채널을 설정하며, 고부가가치 유저를 확보하는 전략을 택한다.
 +
#기술 신뢰 확보: 학술 논문 발표, 백서(white paper) 배포 등을 통해 모델의 과학적 타당성과 기술력을 입증하고, 향후 임상 적용 가능성을 강조한다.
 +
#서비스 체험 유도: 웹 기반 데모와 클라우드 플랫폼을 통해 비설치형 체험 환경을 제공, 초기 사용자 확보와 피드백 수집을 병행한다. 무료 체험판 및 테스트 계정을 통한 접근성도 강화할 예정이다.
 +
#협력 및 공동 연구: 병원·연구소·디지털 헬스케어 기업과의 공동연구 혹은 MOU 체결을 통해 실사용 데이터 수집 및 기술 검증을 수행한다. 이를 통해 신뢰성과 시장 진입 속도를 동시에 확보할 수 있다.
 +
#규제 및 윤리 대응: AI 기반 의료 서비스의 한계와 윤리적 책임을 명확히 기술하고, 개인정보 보호, 보안 정책 등을 정립하여 향후 인증 획득과 제품화에 필요한 기반을 사전에 구축한다.
 +
이와 같은 전략은 경쟁 기술보다 명확한 유저 타겟, 기술 신뢰 기반의 진입, 클라우드 기반 체험 제공, 그리고 임상 현장과의 연계 전략 측면에서 유리하며, 규제 대응 시나리오까지 포괄하는 계획적 마케팅 접근이라 할 수 있다.
 +
 
  
 
===개발과제의 기대효과===
 
===개발과제의 기대효과===
 
====기술적 기대효과====
 
====기술적 기대효과====
내용
+
본 과제는 조기 진단에 특화된 종단 3D MRI 생성 기술을 제안함으로써, 기존 단일 시점 분석 방식의 한계를 극복하고자 한다. 특히 AD 진행 예측을 위한 training data가 충분하지 않은 상황에서, 본 프로젝트는 synthetic data를 생성함으로써 분류기의 일반화 성능을 향상시킬 수 있는 가능성을 제시한다. 또한, Alzheimer’s Disease뿐만 아니라 전두측두엽 치매(FTD), 루이소체 치매(DLB) 등 다양한 아형에 따른 뇌 위축 패턴을 반영한 예측이 가능하며, 이는 진단과 치료 전략의 다양성 확보에 기여할 수 있다.
 +
모델의 이미지 생성 성능은 SSIM, PSNR, NRMSE 등 주요 지표에서 기존 SOTA 수준을 상회하는 결과를 목표로 하며, 이는 의료 영상으로서의 실질적 사용 가능성을 뒷받침한다. 시스템 아키텍처 측면에서도 RAFT 알고리즘 기반의 데이터 일관성 유지, 메시지 큐 기반의 고속 비동기 처리, Java Virtual Thread를 활용한 고동시성 처리를 통해 고신뢰·고가용성 인프라를 실현한다. 더불어, React + WebGPU 기반의 직관적인 3D 시각화 인터페이스를 통해 사용자는 고해상도 뇌 MRI를 실시간으로 탐색할 수 있다.
 
====경제적, 사회적 기대 및 파급효과====
 
====경제적, 사회적 기대 및 파급효과====
내용
+
치매는 고령화 사회에서 가장 심각한 사회적·경제적 부담 중 하나로 부각되고 있으며, 조기 진단 및 예측 기술의 필요성이 날로 증가하고 있다. 본 프로젝트는 의료진의 진단 정확도 향상뿐만 아니라, 신약개발 연구자의 데이터 기반 의사결정을 지원함으로써, 전임상 단계에서의 시간과 비용 절감에도 기여할 수 있다.
 +
또한, 별도의 설치 없이 웹 기반으로 실행 가능한 구조로 설계되어 의료 접근성이 낮은 지역이나 원격 협진 환경에서도 활용이 가능하며, 이는 디지털 헬스케어의 확산에 실질적인 기반이 될 수 있다. 나아가, 다중 환자군의 진행 시나리오를 예측할 수 있는 모델은 정책 수립이나 복지 자원 배분 등의 공공정책 도구로도 확장될 수 있는 잠재력을 지닌다.
  
 
===기술개발 일정 및 추진체계===
 
===기술개발 일정 및 추진체계===
 
====개발 일정====
 
====개발 일정====
내용
+
1. MRI팀
 +
{| class="wikitable" style="text-align: center;"
 +
! rowspan="2" | 단계별 세부개발 내용 !! rowspan="2" | 담당자 !! colspan="4" | 개발기간 (월단위) !! rowspan="2" | 비고
 +
|-
 +
! 3월 || 4월 || 5월 || 6월
 +
|-
 +
| 연구 리서치 || 구효근, 송채희 || ○ || || || ||
 +
|-
 +
| AI 모델 설계 || 송채희 || ○ || ○ || || ||
 +
|-
 +
| 3D 렌더링 || 구효근 || || ○ || ○ || ○ ||
 +
|-
 +
| AI 모델 학습 || 송채희 || || ○ || ○ || ○ ||
 +
|-
 +
| 성능 비교 || 구효근, 송채희 || || || ○ || ○ ||
 +
|}
 +
 
 +
2. 서비스 개발팀
 +
{| class="wikitable" style="text-align: center;"
 +
! rowspan="2" | 단계별 세부개발 내용 !! rowspan="2" | 담당자 !! colspan="4" | 개발기간 (월단위) !! rowspan="2" | 비고
 +
|-
 +
! 3월 || 4월 || 5월 || 6월
 +
|-
 +
| 서비스 요구사항 정의 || 권준호, 김혜주, 박영빈, 석우진 || ○ || || || ||
 +
|-
 +
| UI 디자인 || 권준호, 김혜주, 박영빈, 석우진 || ○ || ○ || || ||
 +
|-
 +
| RAFT 구현 || 권준호 || || ○ || ○ || ||
 +
|-
 +
| React 구현 || 박영빈 || || ○ || ○ || ||
 +
|-
 +
| Message Queue 구현 || 김혜주 || || ○ || ○ || ||
 +
|-
 +
| Virtual Thread 비교 분석 || 석우진 || || ○ || ○ || ||
 +
|-
 +
| UI 구현 || 구효근, 박영빈 || || || ○ || ○ ||
 +
|-
 +
| Server 개발 || 김혜주, 석우진 || || || ○ || ||
 +
|-
 +
| Inference Server 개발 || 권준호 || || || ○ || ○ ||
 +
|-
 +
| MLOps || 권준호 || || ○ || ○ || ○ ||
 +
|-
 +
| 성능 테스트 || 권준호, 김혜주, 박영빈, 석우진 || || || ○ || ○ ||
 +
|-
 +
| QA || 권준호, 김혜주, 박영빈, 석우진 || || || ○ || ○ ||
 +
|}
 +
 
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
내용
+
본 프로젝트는 총 6인의 팀원으로 구성되었으며, 기술 영역에 따라 MRI 팀과 서비스 개발 팀으로 역할을
 +
분담하였다. 각 팀원은 설계, 개발, 실험, 검증 등 프로젝트의 전 단계를 공동으로 수행하였으며, 다음과 같은
 +
기술적 책임을 맡아 프로젝트를 추진하였다.
 +
{| class="wikitable"
 +
! 이름 !! 역할 !! 주요 담당 분야
 +
|-
 +
| 구효근 || MRI 팀 / 렌더링 || 3D MRI Rendering
 +
|-
 +
| 송채희 || MRI 팀 / 생성형 AI 모델 설계 || VCDM 모델 구조 설계 및 학습, 성능 실험 및 비교 검증
 +
|-
 +
| 권준호 || 서비스 개발 / MLOps·RAFT || RAFT 알고리즘 구현, Inference 파이프라인 구성
 +
|-
 +
| 김혜주 || 서비스 개발 / 백엔드 || MQ(Message Queue) 구현 (Broker server, client class)<br/> Spring 라이브러리 배포
 +
|-
 +
| 석우진 || 서비스 개발 / 인프라·서버 성능 최적화 || 서버 구조 설계<br/>Java Virtual Thread 기반 서버 동시성 구조 설계
 +
|-
 +
| 박영빈 || 서비스 개발 / 프론트엔드 || React 기반 UI 개발, WebGPU MRI 시각화 구현
 +
|}
 +
이 구성은 팀원이 단순 분업이 아닌 협업 가능한 역할 기반 구조로 배치되어 있어, 기술간 연계와 동시 병렬
 +
작업이 가능하도록 설계되었다.
  
 
==설계==
 
==설계==
 
===설계사양===
 
===설계사양===
====제품의 요구사항====
+
====사용자 요구사항====
내용
+
*R1: 사용자는 3D s-MRI 데이터를 업로드하고, 조건(연령, 성별, 인지 상태 등)을 설정하여 미래 시점의 MRI를 예측 생성할 수 있어야 한다.
====설계 사양====
+
*R2: 생성 결과는 원본 MRI와 함께 실시간 3D 뷰어에 반영되어야 하며, 사용자는 이를 인터랙티브하게 탐색할 수 있어야 한다. (예: 회전, 슬라이싱, 줌인 등)
내용
+
*R3: 시스템은 사용자가 생성 버튼을 클릭한 후 평균 3초 이내에 결과를 반환해야 하며, 1,000건 이상의 동시 요청도 무중단으로 처리할 수 있어야 한다.
 +
*R4: 데이터 처리 및 전달 과정에서 메시지 유실이 없어야 하며, 장애 발생 시에도 로그 일관성과 복구 능력을 유지해야 한다.
 +
*R5: 웹 애플리케이션은 별도의 설치 없이 브라우저에서 바로 접근 가능해야 하며, 초기 로딩 시간은 1초 이내로 제한되어야 한다.
 +
*R6: 사용자는 생성된 MRI를 채팅 기능을 통해 다른 사용자에게 공유하고, 실시간으로 협업 및 피드백을 받을 수 있어야 한다.
 +
====사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량 목표====
 +
*F1: 사용자가 업로드한 3D s-MRI와 입력 조건(Target Age, Sex, Cognitive Status 등)을 기반으로, 향후 시점의 MRI를 자동 생성하는 기능 → SSIM ≥ 0.977, PSNR ≥ 33.7, NRMSE ≤ 0.087 (실측: 0.978 / 34.2 / 0.085)
 +
*F2: 생성된 MRI는 뷰어에서 기존 MRI와 함께 3D 볼륨 형태로 시각화되며, 슬라이스 탐색과 회전·확대·이동이 가능한 인터랙션 기능 제공 → 렌더링 프레임 속도 ≥ 60FPS (256³ 기준), 반응 지연 ≤ 50ms
 +
*F3: 생성 요청 이후 평균 3초 이내로 결과가 반환되며, 고부하 상황에서도 안정적인 응답 성능을 보장하는 기능 → 평균 응답시간 ≤ 50ms, 1,000 req/s 조건에서 장애 발생률 ≤ 5%
 +
*F4: 메시지 큐 기반 처리 흐름에서 데이터 유실 없이 안정적 전달을 보장하며, 장애 발생 시 RAFT를 통해 빠른 복구가 가능한 기능 → MQ 유실률 0%, RAFT 로그 일치율 ≥ 95%, 리더 재선출 시간 ≤ 1초
 +
*F5: 웹 애플리케이션은 별도의 설치 없이 사용 가능하며, 초기 로딩 시간 및 인터페이스 반응성을 최소화한 경량 구조 → 웹 LCP ≤ 1.0초 (실측: 0.82초), CLS ≤ 0.1
 +
*F6: 채팅 기능을 통해 사용자는 MRI 생성 결과를 공유하고, 다른 사용자와 실시간으로 메시지를 주고받을 수 있는 기능 → 메시지 송수신 지연 ≤ 100ms, 채팅 중 MRI 공유 시 뷰어 자동 연동
  
 
===개념설계안===
 
===개념설계안===
내용
+
====세부기술 선택사항====
 +
본 프로젝트는 알츠하이머병 진행 예측을 위한 3D s-MRI 생성 기능을 중심으로, 정량적 성능 목표와 사용자 요구사항을 충족하기 위해 다음과 같은 기술들을 선택하였다.
 +
 
 +
*인공지능 모델
 +
**Base Model: Latent Diffusion Model
 +
**Conditioning Methods
 +
***Cross-attention: age, sex, dignosis, regional volumes 수치 정보를 concat한 embedding vector를 cross-attention 연산
 +
***ControlNet: 시작 시점의 이미지의 공간적 정보를 학습하도록 조건화 보강
 +
**Novelty: 기존의 BrLP 모델은 regional volumetric changes만을 반영하여 이미지를 생성하는데 반해, 모델이 deformation field 조건을 통해 morphological changes를 학습 가능하다.
 +
**Implementation
 +
***Sampling 시에는 입력 이미지에 대하여 deformation field 변화량을 추정하여 생성한 미래 시점의 deformation field를 ControlNet 구조를 활용해 조건화.
 +
***VoxelMorph-diff 의 모델에 extrapolation 연산을 통해 미래 시점의 deformation field 를 생성하는 기능을 추가 구현한다. (TimeFlow 모델 논문의 방식을 참고)
 +
 
 +
*시스템 설계 및 연산 구조
 +
**메세지 큐: RabbitMQ 및 ZooMQ(현 프로젝트에서 구현한 메세지큐)
 +
***비동기 처리 및 고가용성을 위해 자체 구현한 Zoo Message Queue 및 기존의 RabbitMQ를 적용하였다. 모델 추론 요청은 MQ를 통해 분산 처리되며, 요청 처리량 증가에도 안정적으로 대응할 수 있다. → 비동기 처리, 오류 격리, 재시도 정책이 설계에 포함됨
 +
**Java Virtual Thread (JDK 21)
 +
***서버는 가상 스레드를 사용하여 수천 개의 경량 스레드를 실행하며, 고동시성 처리에 최적화되었다.
 +
**RAFT 기반 분산 로그 저장소
 +
***데이터 일관성을 위해 자체 구현한 RAFT 알고리즘을 적용하였다. 장애 상황에서도 리더 재선출과 로그 복제를 통해 높은 안정성을 보장한다.
 +
 
 +
*사용자 인터페이스
 +
**React 기반 Web UI
 +
***서버와의 실시간 통신을 처리하며, 프론트엔드는 사용자 친화적으로 구성되었다.
 +
**WebGPU 기반 3D MRI 시각화
 +
***사용자는 웹 브라우저 상에서 3D MRI를 실시간으로 탐색할 수 있으며, ray marching 기법을 사용해 256³ 해상도 데이터를 평균 60FPS로 렌더링한다.
 +
 
 +
====시스템 설계====
 +
[[파일:Brainoverflow architecture.png]]
 +
 
 +
소프트웨어 설계는 일반적으로 한 명의 개발자에 의해 완결되기 어려우며, 여러 명이 팀을 이루어 협업을 통해 진행하는 것이 일반적이다. 본 프로젝트 역시 복잡한 기술 요소들을 포함하고 있기 때문에, 모든 팀원이 하나의 기능을 공유하는 방식보다는 기능을 적절히 분할하고 역할을 명확히 나누는 divide-and-conquer 방식으로 접근하는 것이 효율적이라 판단하였다.
 +
본 프로젝트는 인공지능 기술을 활용하여 미래의 뇌 MRI 영상을 예측하는 서비스를 개발하는 것을 목표로 한다. 그러나 본 프로젝트의 독창성은 단순히 인공지능 모델을 구현하는 데 그치지 않고, 인공지능, 백엔드 서버, 분산 저장소, 메시지 큐 시스템, 프론트엔드 렌더링 기술이라는 다섯 개의 분야를 유기적으로 통합하는 종합적 소프트웨어 아키텍처를 구성한 데 있다.
 +
각 영역은 다음과 같이 세분화하여 설계 및 구현을 진행하였다.
 +
 
 +
*프론트엔드 (Frontend)
 +
**기술 스택: React + WebGPU
 +
**역할:
 +
***사용자 로그인 및 추론 요청
 +
***3D MRI 시각화 인터페이스 제공
 +
***WebSocket을 통한 결과 수신 및 알림 표시
 +
*웹 서버 (Web Server)
 +
**기술 스택: Java Spring Boot
 +
**서브모듈:
 +
***API Gateway: 클라이언트 요청 라우팅, 인증/인가 처리
 +
***Authentication Service: JWT 기반 사용자 인증
 +
***Notification Service: WebSocket(STOMP) 기반 실시간 푸시 메시지 전송
 +
***Results API Service: 추론 결과 조회 및 사용자 대시보드 데이터 제공
 +
*AI 추론 서버 (Inference Server)
 +
**기술 스택: PyTorch +  Python Flask
 +
**역할:
 +
***메시지 큐로부터 MRI 추론 요청 수신
 +
***Latent Diffusion Model 을 통한 3D s-MRI 생성
 +
***결과를 MQ에 publish 또는 Redis에 캐싱 후 notification trigger
 +
*메시지 큐 시스템 (Message Queue)
 +
**기술 스택: RabbitMQ, ZooMQ (본 프로젝트에서 구현한 커스텀 메세지 큐)
 +
**역할:
 +
***AI Inference 요청 및 처리 흐름을 비동기적으로 분리
 +
***백엔드 모듈 간 decoupling을 통한 성능 및 안정성 향상
 +
*분산 저장소 및 일관성 모듈
 +
**기술 스택: RAFT 알고리즘 (직접 구현)
 +
**역할:
 +
***분석 결과, 로그 데이터 등의 다중 노드 간 일관성 유지
 +
***리더 장애 발생 시 1초 이내 재선출 및 로그 복구
 +
*캐싱 및 세션 관리
 +
**기술 스택: Redis
 +
**역할:
 +
***인증 세션 관리 (JWT 블랙리스트)
 +
***분석 중간 결과 캐싱 (cache-aside 패턴)
 +
***서버 간 상태 공유
 +
*MLOps 및 배포
 +
**기술 스택: Kubernetes + Harbor
 +
**역할:
 +
***각 마이크로서비스의 자동 배포 및 버전 관리
 +
***CI/CD 파이프라인 구성 및 무중단 롤백 지원
 +
 
 +
이 시스템 구조는 모듈 간 책임 분리, 성능 확장성, 장애 회복력, 실시간성을 동시에 달성하기 위해 설계되었다.
  
 
===이론적 계산 및 시뮬레이션===
 
===이론적 계산 및 시뮬레이션===
내용
+
====RAFT 알고리즘====
 +
본 프로젝트에서는 분산 환경에서의 데이터 일관성과 고가용성을 보장하기 위한 핵심 기술로서 RAFT(Rapidly Agreeing Fault-Tolerant) 알고리즘을 도입하였다. RAFT는 Paxos 알고리즘에 비해 이해하기 쉬운 구조와 구현 용이성을 제공하며, 실제 산업 및 학술 환경에서 널리 채택되는 합의 알고리즘이다.
 +
RAFT 알고리즘은 리더 선출(Leader Election), 로그 복제(Log Replication), 안전성 보장(Safety)의 세 가지 핵심 메커니즘으로 구성된다. 클러스터 내 모든 노드는 Follower 상태로 시작하며, 일정 시간 동안 리더의 heartbeat를 수신하지 못하면 Candidate 상태로 전이되어 선거를 진행한다. 이 과정에서 과반수 이상의 지지를 받은 노드는 리더로 선출된다.
 +
리더 노드는 클라이언트의 요청을 받아 로그 항목을 생성하며, 이를 다른 노드(Follower)로 전파한다. 로그 항목이 과반수 노드에 복제되고 커밋되면, 리더는 해당 명령을 상태 머신에 적용하고 클라이언트에게 결과를 반환한다. 이 구조는 네트워크 분할 상황에서도 시스템이 안정적으로 작동하도록 보장한다.
 +
본 프로젝트에서는 RAFT 알고리즘을 직접 구현함으로써, 서비스에 특화된 커스터마이징이 가능하도록 하였다. 특히 다음과 같은 기능적 요구사항을 달성하는 것을 목표로 삼았다:
 +
*로그 복제 지연 최소화: 평균 응답 시간 50ms 이하 유지
 +
*장애 복구 시간 단축: 리더 장애 발생 시 1초 이내 리더 재선출
 +
*데이터 일관성 검증: 3회 이상 동기화 후 로그 일치율 95% 이상
 +
이를 위하여 자바 기반으로 각 노드를 구성하고, Virtual Thread 기반의 이벤트 루프 아키텍처를 병행하여 구현하였다. 또한, 다양한 장애 시나리오(예: 네트워크 분할, 리더 장애, 로그 손상 등)에 대한 시뮬레이션을 설계하여, 실제 서비스 환경에서의 신뢰성과 회복력을 검증하였다.
 +
시뮬레이션은 다음과 같은 항목을 중심으로 수행되었다:
 +
*로그 전파 지연 시간 시뮬레이션 (각 요청에 대한 Follower 반영 시간 측정)
 +
*리더 장애 후 선출까지의 평균 시간 측정
 +
*로그 불일치 상황 삽입 후 자동 정합성 회복 여부 검증
 +
시뮬레이션 결과는 '2.7 성능 분석 및 검증' 절에서 수치로 제시하며, 기존 오픈소스 기반 RAFT 구현체들과의 비교 분석을 병행할 예정이다. 본 구현은 고신뢰 분산 환경을 요구하는 의료 데이터 처리 시스템에서의 실용적 적용 가능성을 보여주는 기반이 될 것으로 기대된다.
 +
 
 +
====Message Queue====
 +
이 시스템은 실시간 채팅과 비동기 추론 요청이라는 상이한 요구를 처리하기 위해 설계된 범용 메시지 브로커다. 먼저, 메시지큐의 근간이 되는 메시지 생산 및 소비 속도에 대한 이론적 계산을 통해 처리 가능 범위를 추정했다. 채팅 시스템에서는 사용자가 활발히 메시지를 주고받는 상황을 가정하여, 1초에 10,000명 유저가 평균 5개의 메시지를 보내는 경우, 초당 총 5만 건의 메시지가 생성된다고 본다. 각 메시지가 평균 1KB라고 하면, 초당 약 50MB의 처리량이 필요하다. 단일 서버가 이를 감당하기 어려우므로 수평 확장을 전제로 설계되며, 큐에 저장된 메시지가 여러 consumer에 의해 병렬로 처리되어야 한다.
 +
반면, AI inference 시스템에서는 초당 메시지 수는 적지만, 하나의 요청이 수 분 동안 처리될 수 있으므로 메시지큐는 backlog을 감당할 수 있어야 하며, 동시에 backpressure을 유발하지 않도록 해야 한다. 이를 위해 push 방식에 pull 신호를 덧붙이는 hybrid 모델을 적용하였다. 실제 메시지는 큐에 저장되되, 소비자는 수신 불가 상태를 브로커에 알릴 수 있고, 브로커는 이 큐에 대한 푸시를 일시 중단한다. 소비자가 다시 수신 가능 상태를 선언하면 대기 중이던 메시지를 다시 전달한다.
 +
시뮬레이션은 이론적 처리량을 바탕으로 구성되며, 각 시나리오별로 메시지 생산량, 수신 지연, 서버 부하, 큐 backlog 증가율 등을 측정하게 된다. 실시간 채팅은 연결 수가 많은 상태에서 전송 지연의 평균 및 편차를 측정하고, MRI 시나리오에서는 장기 보관 메시지의 안정성과 소비자 재접속 후 재전송 가능 여부를 중점적으로 분석한다.
 +
 
 +
====리액트====
 +
본 프로젝트에서는 리액트를 순수 자바스크립트로 직접 구현함으로써 서비스에 특화된 경량 라이브러리로 커스터마이징이 가능하도록 했다. 특히 다음과 같은 기능적 요구사항을 달성하는 것을 목표로 삼았다:
 +
*초기 렌더링 지연 최소화: 1,000개 요소 리스트 마운트 시 평균 응답 시간 100ms 이하 유지
 +
*상태 업데이트 반영 시간 단축: 단일 setState 호출 후 화면 갱신 50ms 이내 완료
 +
이를 위해 JavaScript 기반의 Fiber 유사 구조로 작업 단위를 분할 처리하는 렌더러와, 가상 DOM diff·commit 알고리즘, 함수형 컴포넌트 및 useState 훅을 직접 구현했다. 또한 브라우저의 여유 시간(requestIdleCallback)을 활용한 작업 스케줄러를 도입해 메인 스레드 과부하를 방지했고, 이벤트 핸들러와 속성 업데이트 로직을 분리 관리해 불필요한 DOM 조작을 억제했다.
 +
실제 브라우저 환경에서 1,000개 요소 리스트의 초기 마운트 시간과 단일 상태 업데이트 지연 시간을 측정해 커스텀 리액트 구현체가 대용량 처리 시 목표 성능(초기 렌더링 100ms 이하, 상태 업데이트 50ms 이하)을 안정적으로 달성하고 부드러운 UI 반응성을 제공하는지 검증했다.
 +
 
 +
====WebGPU 기반 3D MRI Volume Rendering====
 +
본 프로젝트에서는 웹 환경에서 고성능 3차원 뇌 MRI 데이터를 직관적으로 시각화할 수 있도록 WebGPU 기반의 volume rendering 기술을 도입하였다. 별도의 설치 없이 브라우저만으로 실행 가능한 경량 시각화 도구를 목표로 하며, 다음과 같은 기능적 요구사항 달성을 중점으로 삼았다:
 +
*실시간 렌더링 성능 확보: 256³ 해상도 MRI 데이터에 대해 평균 프레임 속도 60FPS 이상 유지
 +
이를 위해 핵심 알고리즘으로 Ray Marching 기법을 적용하였다. Ray Marching은 각 픽셀에 대해 광선을 따라 3차원 voxel 데이터를 탐색하고, 해당 지점의 밀도(intensity) 값을 누적하여 최종 색상과 투명도를 계산하는 방식이다. 이 방식은 뇌 내부의 복잡한 구조를 부드럽게 표현할 수 있어, 의료 영상 해석에 적합하다.
 +
본 구현의 성능과 실용성을 검증하기 위해 다음과 같은 시뮬레이션을 설계하고 수행하였다:
 +
*프레임 렌더링 속도 측정: 다양한 시점에서의 카메라 회전 및 확대/축소 동작에 대해 평균 FPS를 측정
 +
시뮬레이션 결과는 ‘2.7 성능 분석 및 검증’ 절에 수치로 제시되며, 실제 브라우저 환경에서의 테스트를 통해 평균 60FPS 이상의 렌더링 성능을 안정적으로 달성하고 있음을 확인하였다. 본 구현은 고성능 의료 영상 시각화 도구의 웹 서비스화를 위한 실질적인 기술 기반을 제공한다.
 +
 
 +
===소프트웨어 설계===
 +
본 프로젝트의 소프트웨어 설계는 형상관리, 배포 자동화, 도메인 기반 설계, 계층 간 의존성 분리 등을 포괄하는 현대적인 소프트웨어 아키텍처 원칙을 따르고 있다. 이는 프로젝트의 확장성, 유지보수성, 테스트 용이성을 극대화하기 위한 선택이다.
 +
====형상관리 및 DevOps====
 +
소프트웨어의 효율적인 배포와 관리를 위해, 간소화된 GitFlow 기반의 브랜치 전략을 적용하였다. 기능별 브랜치를 활용하여 독립적인 개발이 가능하도록 하였으며, CI/CD 자동화 스크립트를 구성하였다.
 +
CI/CD 파이프라인은 다음과 같은 절차로 구성되어 있다:
 +
#개발자가 기능 브랜치에 변경 사항을 커밋하고 로컬 환경에서 빌드를 실행한다.
 +
#빌드 결과물은 Harbor 레지스트리에 업로드된다.
 +
#자동화된 스크립트는 Kubernetes manifest 파일을 업데이트한다.
 +
#변경된 manifest는 Kubernetes 클러스터에 적용되어 무중단 배포가 이루어진다.
 +
이러한 방식은 캐시 활용을 극대화하여 빌드 성능을 향상시키며, 모든 배포 기록이 manifest 파일로 형상관리 되므로 배포 버전의 롤백이 간편하다는 장점을 지닌다.
 +
또한, 서비스의 보안성과 일관성을 위해 시크릿(secret) 데이터 또한 형상관리의 범위에 포함하였다. 이를 위해 git-crypt 도구를 활용하여 민감 정보를 암호화한 상태로 Git에 저장하고, CI 파이프라인에서 자동으로 복호화하도록 하였다.
 +
 
 +
====클린 아키텍처 및 도메인 주도 설계====
 +
소프트웨어의 구조적 안정성과 유지보수성을 확보하기 위해 클린 아키텍처(Clean Architecture) 원칙을 기반으로 도메인 주도 설계(Domain-Driven Design, DDD)를 적용하였다.
 +
설계 과정은 다음과 같은 흐름으로 진행되었다:
 +
#사용자 시나리오를 먼저 정의하여 핵심 서비스 흐름을 도출하였다.
 +
#시나리오를 기반으로 유즈케이스(Use Case)를 식별하였다.
 +
#유즈케이스를 분석하여 해당 기능을 수행하기 위한 도메인 객체(domain entity)들을 정의하였다.
 +
이러한 도메인 객체는 엔터프라이즈 비즈니스 로직을 내포하며, 시스템의 핵심 개념 및 규칙을 표현하는 데 초점을 맞추었다. 도메인 객체는 직접적인 상태 변경을 허용하지 않고, 오직 메시지를 통해 상태를 변화시키는 방식으로 구성되었다.
 +
이후, 도메인 계층 위에는 서비스 레이어(Service Layer)를 추가하여 다음과 같은 역할을 수행하게 하였다:
 +
*도메인 객체에 메시지를 전달하여 상태를 변경하거나,
 +
*도메인 객체만으로 표현하기 어려운 복잡한 비즈니스 로직을 구현하였다.
 +
각 레이어는 의존성 역전 원칙(Dependency Inversion Principle)을 적용하여 설계되었다. 즉, 구체적인 구현은 모두 인터페이스를 기준으로 정의되며, 추상화된 계약에 따라 하위 모듈이 구현된다. 이로 인해 구체 구현을 변경하더라도 상위 레이어의 비즈니스 로직은 영향을 받지 않으며, 향후 모듈 교체 및 리팩토링 시 유연한 대응이 가능하다.
 +
이러한 구조는 테스트 코드 작성에도 용이한 환경을 제공한다. 도메인 객체 및 서비스는 외부 의존성을 최소화하고 있으므로, 단위 테스트(Unit Test)에서 격리된 검증이 가능하며, 이를 통해 개발 생산성과 코드 품질을 동시에 확보하였다.
 +
 
 +
====Message Queue 시스템 구성 및 구현 기술====
 +
이 메시지 브로커는 Java를 기반으로 core, server (broker), client, spring-zoomq 서브모듈을 가진 Gradle 멀티 모듈 프로젝트로 구현되었다. 기존의 메세지큐 프로토콜을 지원하는 라이브러리는 브로커 측 구현을 위한 라이브러리가 없을 뿐더라 전체 스펙을 직접 구현해야 하기 때문에, 소켓 연결과 프로토콜을 저수준에서 직접 구현했다.
 +
 
 +
위에서 언급했든 STOMP나 AMQP 같은 기존 메시지 프로토콜을 사용하지 않는다. 이에 따라 JSON 기반 메세지 프레임 및 타입을 설계하고, TCP 기반 Socket을 사용한 프로토콜을 core 모듈에 구현하였다. 이 메시지는 메시지 ID, 타입, TTL, 우선순위 등 메타데이터와 실제 payload를 포함하며, 추적과 오류 대응, 만료 처리에 유연하게 대응할 수 있도록 구성되었다. 프로토콜은 메세지 전달 보장 at-least-once를 보장하며, 연결, 재연결, 중지/재시작, ACK/RETRY, publish/subscribe 등 메시지큐 통신에 필요한 기능을 추상화하여 유지보수에 용이하게 만들고, 개발자가 직접 네트워크 로직을 작성하지 않고도 쉽게 통합할 수 있도록 하였다. Producer-Broker, Consumer-Broker간의 연결마다 상세 프로토콜이 다르므로, 공통 추상 클래스를 정의하고 인터페이스에 따라 기능을 제한하는 방식으로 구현하였다.
 +
 
 +
브로커는 독립 실행이 가능한 애플리케이션으로 구성되며, Docker 이미지로 패키징되어 Docker Hub에 배포된다. 실행 시 환경변수를 통해 사용자 인증 정보를 필수로 입력받고, 이후 인증이 완료된 연결에 대해서만 세션을 유지한다. Producer (client)로부터 전송받은 메세지를 topic 기반으로 알맞은 큐에 라우팅하고, 큐에 메세지를 보관 및 해당 큐를 구독중인 Consumer (client)에 메세지를 전송한다. 이때 하나의 큐에는 여러 Consumer가 존재하여 Round-Robin 방식으로 선택되어 전달되며, 메세지는 전송 완료가 확인되면 큐에서 삭제된다.
 +
 
 +
client는 메세지를 발행하는 Producer와 소비하는 Consumer를 구현하였다.  기본적으로 메세지는 push 방식으로 consumer에게 전달되지만, back-pressure를 예방하기 위해 consumer 측에서 메세지 수신을 중지 및 재개할 수 있도록 설계하였다.  또한 사용의 편의성을 위해  Spring용 전용 라이브러리를 제공한다. 해당 라이브러리는 기존 메세지큐 (kafka, rabbitmq)를 벤치마킹하여 @ZooListener 어노테이션을 통해 쉽게 메세지를 수신하고, ZooTemplate.converAndSend 메서드를 사용하여 쉽게 메세지를 송신할 수 있도록 하였다.
 +
 
 +
이처럼 소프트웨어 설계는 기술적 기반의 선택부터 배포 전략, 프로토콜 구성, 개발 편의성 확보까지 전체적인 관점에서 일관된 방향성을 갖고 진행되었으며, 메시지큐 시스템을 실용적이고 범용적으로 활용하기 위한 기반을 마련하고 있다.
 +
 
 +
===성능 분석 및 검증===
 +
====RAFT====
 +
RAFT 알고리즘의 동작을 검증하기 위해 5개의 노드 환경에서 성능 실험을 수행하였다. 초기 로컬 테스트에서는 지연이 거의 없어 실효성 있는 측정이 어려웠고, 이에 따라 노드 간 네트워크에 10ms의 인위적 지연을 삽입하였다.
 +
그 결과, 로그가 모든 노드에 전파되는 데 평균 42ms가 소요되었고, 리더 장애 발생 시 새로운 리더가 선출되기까지 평균 1초가 걸렸다. 이 값은 재선출 타이머를 조절하여 요구사항에 맞춘 결과이며, 필요에 따라 더 줄일 수 있다.
 +
임의의 리더 노드를 종료한 후 재가동하였을 때에도 정상적으로 복구되었고, 시스템이 안정 상태일 때 모든 노드 간 로그는 완전히 일치하였다.
  
===상세설계 내용===
+
====Message Queue====
내용
+
시스템의 성능은 두 가지 주요 시나리오를 통해 평가된다. 채팅 시스템은 고빈도 메시지 생산과 짧은 지연을 필요로 하며, MRI 시스템은 저빈도 메시지와 긴 대기 시간을 견딜 수 있어야 한다. 따라서, 각각의 목적에 따라 다른 성능 기준이 설정된다.
 +
채팅 시나리오에서는 10,000명의 유저가 동시 접속하고, 초당 평균 5개의 메시지를 전송한다고 가정한다. 시뮬레이션에서는 전체 메시지량, 평균 지연 시간, 최대 지연 시간, 메시지 유실률, 연결 유지 성공률 등을 측정한다. 특히 평균 지연 시간이 100ms 이하로 유지되는지를 판단 기준으로 삼고, 서버 CPU와 메모리 사용량이 일정 임계치를 넘지 않는지를 검토한다. 또한, 다수의 consumer가 하나의 큐를 구독하는 구조에서 round-robin 로드밸런싱이 잘 동작하는지를 확인하며, 메시지가 중복되거나 누락되는 문제가 발생하지 않는지도 점검한다.
 +
MRI 시스템의 경우, 메시지 발생량은 적지만 개별 메시지의 처리 지연이 수 분에 이르므로, 큐의 안정성, TTL 초과 시 처리, pull 신호에 의한 메시지 정지 및 재개, 그리고 메시지 재전송 정책이 검증 대상이 된다. 메시지를 수신한 consumer가 ACK을 보내지 않거나, 오류로 인해 세션이 종료된 경우, 해당 메시지가 올바르게 재전송되고, retry count가 정확히 반영되었는지를 확인한다.
 +
 
 +
====리액트====
 +
초기 테스트에서는 단순 클릭으로는 측정이 어려워, 1,000개 항목 리스트 렌더링 벤치마크 스크립트를 동원했다.
 +
그 결과, 초기 리스트 마운트에 평균 52.90 ms가 소요되었고, 리스트가 마운트된 상황에서 단일 setState 호출 후 100회 반복 업데이트 평균은 0.20 ms 이하로 나타났다. 이 수치는 가상 DOM의 diff 및 commit 과정이 의도한 대로 최소한의 DOM 조작만 수행하고 있음을 보여 준다. 필요에 따라 인위적 복잡도(예: 중간 삽입/삭제, 중첩 컴포넌트 구조)를 추가해도, 현재 구조에서는 100 ms 이하의 초기 렌더링 목표와 50 ms 이하의 업데이트 목표를 충분히 달성할 수 있음을 확인하였다.
 +
 
 +
====WebGPU 기반 3D MRI Volume Rendering====
 +
WebGPU 기반의 volume rendering 성능을 검증하기 위해 다양한 시나리오에서 실험을 수행하였다. 테스트 환경은 Chromium 기반 브라우저(Chrome Canary, WebGPU 지원 활성화), RTX 3050 GPU, 해상도 256³의 NIfTI 포맷 3D MRI 데이터를 기준으로 하였다.
 +
초기 실험에서는 단일 볼륨 텍스처 로딩 및 기본 ray marching 셰이더 실행 성능을 측정하였으며, 평균 프레임 속도는 144 FPS로 나타났다. 카메라 회전, 확대/축소, 슬라이싱 등의 상호작용이 포함된 동적 시나리오 또한 평균 144FPS를 유지하였다.
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
====프로토타입 사진 혹은 작동 장면====
+
본 프로젝트의 최종 산출물은 사용자가 직접 MRI 데이터를 업로드하고, 입력 조건에 따라 향후 시점의 3D 뇌 영상을 예측 생성할 수 있는 웹 기반 AI 서비스이다.
내용
+
이 시스템은 Conditional Latent Diffusion Model을 핵심 모델로 사용하며, 프론트엔드에서 NIfTI 형식의 MRI 데이터를 업로드한 후, 성별(Sex), 목표 연령(Target Age), 인지 상태(Target Cognitive Status) 등의 조건을 설정하면 AI가 해당 조건에 맞는 예측 MRI를 생성한다.
====포스터====
+
생성된 MRI는 사용자가 업로드한 원본 MRI와 함께 3D 뷰어 화면에서 동시에 비교할 수 있으며, XY, YZ, ZX 슬라이스 조절과 입체적 볼륨 렌더링 기능을 제공한다. 또한 실시간 채팅 기능을 통해 생성된 결과를 동료 사용자에게 공유하고 의견을 나눌 수 있는 인터페이스도 포함되어 있다.
내용
+
특히 설치 없이 웹 브라우저만으로 사용 가능하며, 클라이언트-서버-추론 시스템 간 연계가 모두 자동화되어 있어, 의료진, 연구자, 제약사 등의 실사용자들이 별도의 기술적 설정 없이도 직관적으로 예측 MRI 생성 및 분석을 수행할 수 있도록 구현되었다.
 +
 
 +
[[파일:Brainoverflow main1.png]]
 +
 
 +
[[파일:Brainoverflow main2.png]]
 +
 
 +
====실행====
 +
시스템 사용자는 웹 브라우저를 통해 [https://brain-overflow.unknownpgr.com brain-overflow]에 접속하여 서비스를 실행할 수 있다.
 +
 
 +
[[파일:Brainoverflow run1.png]]
 +
 
 +
로그인 후, 사용자는 MRI Generator 화면으로 이동하게 되며, 이곳에서 NIfTI(.nii) 형식의 3D MRI 파일을 드래그 앤 드롭하거나 클릭으로 업로드할 수 있다. 추가로, 성별(Sex), 목표 연령(Target Age), 인지 상태(Target Cognitive Status) 등 예측에 필요한 입력 값을 설정한 뒤 Generate 버튼을 클릭하면 AI 기반 생성이 시작된다.
 +
 
 +
[[파일:Brainoverflow run2.png]]
 +
 
 +
예측 결과가 준비되면, 사용자에게 실시간 알림 팝업으로 “MRI 생성 완료” 메시지가 전송되며, 생성된 MRI는 기존 MRI와 함께 WebGPU 기반 뷰어에서 시각화된다. 사용자는 이 뷰어에서 XY/YZ/ZX 슬라이스를 자유롭게 조정하거나, 여러 렌더링 모드를 통해 입체적으로 뇌 내부 구조를 탐색할 수 있다.
 +
 
 +
[[파일:Brainoverflow run3.png]]
 +
 
 +
또한, 좌측의 채팅 영역에서는 등록된 사용자와의 그룹 채팅 기능을 지원하며, 탭을 통해 다른 사용자를 초대하거나 대화 중에 MRI 결과 파일을 직접 공유하는 것도 가능하다. 공유된 MRI는 바로 클릭하여 뷰어에서 확인할 수 있도록 연동되어 있다.
 +
 
 +
[[파일:Brainoverflow run4.png]]
 +
 
 +
뷰어에서는 ray volume marching, marching cube 기반 surface rendering 등 여러 렌더링 관점에서 MRI 이미지를 시각화할 수 있다.
 +
 
 +
[[파일:Brainoverflow render1.png]]
 +
[[파일:Brainoverflow render2.png]]
 +
[[파일:Brainoverflow render3.png]]
 +
[[파일:Brainoverflow render4.png]]
 +
 
 +
이 모든 기능은 웹 기반 환경에서 구현되어 있으며, 별도의 프로그램 설치 없이 바로 실행 가능하다는 점에서 접근성과 편의성이 높다.
  
 
===관련사업비 내역서===
 
===관련사업비 내역서===
내용
+
{| class="wikitable" style="text-align: center;"
 +
! rowspan="2" | 항목 (품명, 규격)
 +
! rowspan="2" | 수량
 +
! rowspan="2" | 단가
 +
! colspan="3" | 금액
 +
! rowspan="2" | 비고
 +
|-
 +
! 계 !! 현금
 +
|-
 +
| rowspan="14" | 직접개발비
 +
| ChatGPT 구독 || 1 || 29,000 || 29,000 ||  || 구독기간:25.03.17 ~ 25.04.16
 +
|-
 +
| ChatGPT 구독 || 1 || 32,988 || 32,988 ||  || 구독기간:25.03.21 ~ 25.04.20
 +
|-
 +
| ChatGPT 구독 || 1 || 33,508 || 33,508 ||  || 구독기간:25.04.05 ~ 25.05.04
 +
|-
 +
| cursor 구독 || 1 || 27,996 || 27,996 ||  || 구독기간: 25.04.10 ~ 25.05.09
 +
|-
 +
| ChatGPT 구독 || 1 || 29,000 || 29,000 ||  || 구독기간: 25.04.17 ~ 25.05.16
 +
|-
 +
| ChatGPT 구독 || 1 || 31,928 || 31,928 ||  || 구독기간: 25.04.21 ~ 25.05.20
 +
|-
 +
| ChatGPT Team 구독 || 1 || 92,180 || 92,180 ||  || 구독기간: 25.05.06 ~ 25.06.05
 +
|-
 +
| ChatGPT 구독 || 1 || 32,205 || 32,205 ||  || 구독기간: 25.05.09 ~ 25.06.08
 +
|-
 +
| cursor 구독 || 1 || 29,158 || 29,158 ||  || 구독기간: 25.05.10 ~ 25.06.10
 +
|-
 +
| ChatGPT 구독 || 1 || 29,000 || 29,000 ||  || 구독기간: 25.05.17 ~ 25.06.16
 +
|-
 +
| ChatGPT 구독 || 1 || 30,874 || 30,874 ||  || 구독기간: 25.05.21 ~ 25.06.20
 +
|-
 +
| ChatGPT Team 구독 || 1 || 90,027 || 90,027 ||  || 구독기간: 25.06.10 ~ 25.07.09
 +
|-
 +
| cursor 구독 || 1 || 27,398 || 27,398 ||  || 구독기간: 25.06.11 ~ 25.07.10
 +
|-
 +
| ChatGPT 구독 || 1 || 31,322 || 31,322 ||  || 구독기간: 25.06.11 ~ 25.07.10
 +
|-
 +
| '''합계''' || || || '''546,584''' || '''546,584''' ||
 +
|}
 +
 
 +
 
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
{| class="wikitable"
 +
! 평가 항목 || 평가방법 || 적용기준 || 개발목표치 || 비중(%) || 평가결과
 +
|-
 +
| SSIM || 정량평가 (MRI 품질) || Diffusion 기반 baseline 이상 || ≥ 0.977 || 12.5 || 0.978
 +
|-
 +
| PSNR || 정량평가 (MRI 품질) || Diffusion 기반 baseline 이상 || ≥ 33.733 || 12.5 || 34.2
 +
|-
 +
| NRMSE || 정량평가 (MRI 품질) || Diffusion 기반 baseline 이상 || ≤ 0.087 || 12.5 || 0.085
 +
|-
 +
| RAFT 리더 재선출 시간 || 장애 시뮬레이션 || 리더 장애 발생 시 재선출까지 시간 || ≤ 1초 || 5.0 || 1.0초
 +
|-
 +
| RAFT 로그 일치율 || 다중 노드 로그 비교 || 3회 이상 동기화 후 로그 일치율 || ≥ 95% || 5.0 || 96.2%
 +
|-
 +
| 메시지큐 처리 지연 || 부하 시뮬레이션 || End-to-end 평균 처리 지연 || 기존 메세지큐 기준 (100 TPS) 유사한 성능 || ≥ 80 || 157
 +
|-
 +
| 메시지큐 처리량 || 부하 시뮬레이션 || End-to-end TPS || ≤ 50ms || 5.0 || 6.35ms
 +
|-
 +
| 메시지큐 메세지 유실률 || 부하 시뮬레이션 || 5천건 실험 기준 End-to-end 메세지 유실율 || ≤ 5% || 5.0 || 0%
 +
|-
 +
| Virtual Thread 처리량 증가 || 비교 실험 || 기존 ThreadPool 대비 동시 처리량 증가율 || ≥ 20% || 5.0 || +31%
 +
|-
 +
| 웹 UI 로딩 속도 || 웹 성능 지표 (LCP) || 최초 로딩 시간 || ≤ 1.0초 || 5.0 || 0.82초
 +
|}
  
 
===향후계획===
 
===향후계획===
내용
+
본 프로젝트는 핵심 기능 구현과 실시간 서비스화 측면에서 높은 완성도를 보였으나, 다음과 같은 기술적·시스템적 한계와 어려움이 있었다. 이에 따라 후속 개선이 필요한 영역을 중심으로 향후 평가를 제시한다.
 
+
#MRI 생성 품질 및 예측 정확도 개선 필요: 실험 과정에서 확인된 바와 같이, 통합된 프로젝트 환경에서 Inference 결과로 생성된 3D MRI는 노이즈 이미지에 가까운 수준으로 시각화되었으며, 이는 학습된 모델의 성능 저하보다는 inference 결과물 전달 및 통합 시점의 문제로 추정된다. 개별 프로젝트에서는 양호한 2D 슬라이스 시각화 결과를 보였기 때문에, inference pipeline의 통합 구조 점검과 모델 출력에 대한 후처리 안정화가 필요하다.
===특허 출원 내용===
+
#React 직접 구현 시도 실패 및 라이브러리 전환: 프로젝트 초기에는 React의 렌더링 구조(useState, useEffect 등)를 직접 구현하여 커스터마이징된 UI 라이브러리를 적용하고자 했으나, TypeScript 기반의 실제 프로젝트에 통합하는 과정에서 타입 호환성과 빌드 오류가 반복되었고, 공식 React의 방대한 타입 시스템과 맞지 않아 최종적으로는 공식 React 라이브러리로 전환하였다. 향후에는 자체 구현 방식의 한계를 고려하여, 성숙한 프레임워크를 기반으로 하는 UI 최적화 전략을 우선시할 필요가 있다.
내용
+
#프로젝트 통합 시 기능 간 의존성 및 충돌 문제: AI 모델, Inference 서버, WebGPU 뷰어, 채팅 시스템 등 개별 모듈은 독립적으로 완성도가 높았으나, 단일 레포지토리 통합(monorepo) 및 서브디렉토리 기반 모듈 구성 과정에서 연동 오류가 발생하였다. 특히 AI 모델의 inference 결과가 뷰어에 정상적으로 반영되지 않는 문제가 대표적이었다. 이러한 문제를 해결하기 위해서는 프로젝트 초기부터 모듈 간 통신 구조와 데이터 포맷 정의를 표준화하고, 통합 전 테스트용 샌드박스 환경을 구축하는 방식이 필요하다.
 +
#Message Queue의 분산 환경에서의 기능 구현:본 프로젝트는 메시지 큐의 핵심 기능과 실시간 처리 측면에서 높은 완성도를 보였으나, 분산 환경을 고려한 클러스터링과 레플리케이션 기능은 아직 미흡하였다. 단일 브로커 구조로 인해 장애 시 서비스 전체가 중단될 위험이 있으며, 메시지 복제와 동기화 메커니즘이 없어 데이터 유실 가능성도 존재한다. 향후에는 브로커 이중화, 로그 복제, 노드 간 상태 동기화 등을 통해 고가용성과 메시지 내구성을 확보할 수 있는 구조로 개선이 필요하다.
 +
이러한 점들을 기반으로, 추후에는 모델 성능 고도화 외에도 시스템 통합 테스트, MLOps 기반 자동화 구조, 실사용자 피드백 반영 등을 통해 기술적 완성도뿐만 아니라 서비스 품질 전반의 향상이 가능할 것으로 기대된다.

2025년 6월 19일 (목) 00:57 기준 최신판

프로젝트 개요

기술개발 과제

국문 : 종단 3차원 뇌 MRI 생성을 통한 알츠하이머병 진행 예측

영문 : Alzheimer’s Disease Progression Prediction by Generating Longitudinal 3D Brain MRI

과제 팀명

Brain Overflow

지도교수

김민호 교수님

개발기간

2025년 3월 ~ 2025년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2019920003 권준호 (팀장)

서울시립대학교 컴퓨터과학부 2020920002 구효근

서울시립대학교 컴퓨터과학부 2020920032 석우진

서울시립대학교 컴퓨터과학부 2021920020 김혜주

서울시립대학교 컴퓨터과학부 2022920029 박영빈

서울시립대학교 컴퓨터과학부 2022920038 송채희

서론

개발 과제의 개요

개발 과제 요약

본 프로젝트는 알츠하이머병의 진행 상태를 예측하는 인공지능 모델을 개발하는 것을 목표로 한다. 구체적으로는 종단 3D s-MRI 데이터를 기반으로 미래 시점의 뇌 영상을 생성하는 image prediction generation 기술을 구현한다. 또한, 생성 모델의 성능뿐만 아니라 실제 서비스화까지를 염두에 두고 있으며, 안정적인 시스템 구현을 위해 RAFT 기반의 데이터 동기화, 메시지 큐(MQ)를 활용한 비동기 처리, Java Virtual Thread를 통한 고성능 동시성 제어, React 기반 UI 최적화 등의 기술적 요소들을 도입하고 연구 중이다. 이러한 기술 역량을 바탕으로 본 프로젝트는 AI 모델의 구현을 넘어 의료 및 신경과학 분야에 실질적으로 활용 가능한 웹 기반 서비스로의 확장을 지향한다.

개발 과제의 배경 및 효과

알츠하이머병의 조기 진단과 진행 경로 예측은 임상 및 치료 전략 수립에 매우 중요한 문제다. 그러나 환자 1인에 대해 다중 시점의 3D MRI 데이터를 확보하는 것은 현실적으로 어렵기 때문에, 기존 모델은 단일 시점 분석에 한정되거나 데이터 불균형으로 성능 저하를 겪는다. 이를 해결하기 위해 본 프로젝트는 longitudinal image synthesis를 통해 종단 데이터의 공백을 메우고, 이를 기반으로 한 예측을 가능하게 한다. 또한, 고해상도 3D 이미지를 효율적으로 처리하기 위해 Latent Diffusion Model(LDM)을 채택하고, 의료적 신뢰성을 평가하기 위한 Human Evaluation, Lesion Consistency, Plausibility 등의 정성적 평가 지표도 도입하였다. 이와 함께, AI 모델을 서비스화하여 다양한 사용자(의사, 연구자, 제약사 등)가 쉽게 접근할 수 있도록 하여 기술의 실질적 활용도를 높이고자 한다.

개발 과제의 목표 및 내용

본 프로젝트의 구체적 목표는 다음과 같다:

  • AI 모델 개발
    • Task Definition
      • 입력: 종단 뇌 MRI 이미지 시퀀스(최소 2 장 이상)
      • 출력: 미래의 뇌 MRI 이미지 시퀀스를 생성 → 치매 진행 양상 예측
    • From Scratch 구현
      • cross-attention, ControlNet 기반 Condition Latent Diffusion Model을 PyTorch를 이용해 from scratch 구현
    • 실험적 가설에 대한 검증
      • 가설: Pretrained Voxelmorph 모델을 이용해 생성한 deformation field를 ControlNet 구조를 활용해 디퓨전 모델에 조건으로 줄 경우, 모델이 morphological changes를 학습 가능하여 예측 생성 성능이 개선될 것이다.
  • 시스템 아키텍처 구축
    • RAFT 기반 데이터 일관성 유지
    • 메시지 큐(RabbitMQ/Kafka) 기반 비동기 처리
    • Java Virtual Thread를 통한 고동시성 처리
  • 웹 서비스 배포
    • React 기반 UI, WebGPU 3D MRI 시각화
    • AI inference 서버 및 pipeline 배포 (Kubernetes 기반)

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

최근의 연구들은 치매 진행 예측을 위한 생성 모델로서 Diffusion 기반의 아키텍처를 점점 더 적극적으로 도입하고 있다. 특히, Litrico et al.의 TADM(Temporally-aware Diffusion Model)은 시간 조건을 정교하게 설정함으로써 단일 시점에서 여러 미래 시점을 예측하는 접근을 제시하며, 기존 DDPM 모델의 mode collapse 문제를 개선하였다. 또한 Puglisi et al.의 BrLP 모델은 ControlNet과 Latent Average Stabilization 기법을 도입하여 생성 이미지의 정확성과 품질을 향상시킨 바 있다. 기존 GAN 기반 모델들이 의료 영상에서 흔히 발생하는 해상도 저하나 불안정한 생성 문제를 겪는 반면, Diffusion 기반 모델은 안정성과 품질 측면에서 우수한 성능을 보여준다. 본 프로젝트는 이러한 연구 흐름에 발맞추어 regional volume의 변화량과 deformation field 를 latent diffusion model에 컨디셔닝하는 구조를 설계하고, 이를 통해 치매 진행의 시계열적 변화를 반영하는 longitudinal 3D MRI 생성을 구현하고자 한다.

  • 특허조사 및 특허 전략 분석

경쟁력분석 과정에서 확인된 결과, 본 프로젝트의 중심 기술인 3D s-MRI 기반의 longitudinal image generation 및 diffusion 모델을 이용한 질병 예측에 대해 직접적으로 충돌하는 등록 특허는 발견되지 않았다. 다만 유사 영역에서 다음과 같은 특허가 간접적으로 존재한다:

  1. O2023183504A1: 의료 영상 초해상도 처리를 위한 딥러닝 방법
  2. O2018172540A1: 알츠하이머병 진행 예측을 위한 알고리즘적 접근

이러한 특허들은 주로 해상도 향상, 예측 정확도 향상 등에 초점을 맞추고 있으며, 본 프로젝트가 사용하는 multimodal conditioning, morphological deformation encoding, volumetric generation 등과는 핵심적 차별성이 존재한다.

본 프로젝트는 다음의 두 가지 특허 전략 방향을 병행하여 고려하고 있다.

  1. 회피 설계 전략 (Freedom to Operate, FTO): 기존 특허들은 주로 단일 시점 영상의 향상이나 수치 예측에 집중되어 있으므로, 본 프로젝트는 longitudinal data, age-conditioned generation, volumetric diffusion이라는 특화된 요소들을 강조함으로써 회피 설계를 확보한다.
  2. 선점형 특허 전략 (Offensive IP Strategy): 시계열 3D MRI 생성을 포함하는 다중 연령 조건 기반의 이미지 생성 방식과 이를 의료 예측 태스크에 적용하는 방법론을 청구항으로 구성할 수 있다. 다만, 관련 기술이 빠르게 공개되고 있으며 유사 기술도 공지된 바 있으므로, 신규성과 진보성을 확보하기 위해서는 구체적 기술 요소의 결합 및 성능 기준 달성 여부가 중요하다.
  • 기술 로드맵

기술 로드맵 상에서, 본 프로젝트는 기존의 GAN 계열 방법과 최신의 Diffusion 계열 방법을 모두 검토하고 이를 통합하거나 대체하는 전략을 수립하였다.

GAN 계열 기술 흐름:

  1. 2019, Ravi et al. — DaniNet (degenerative progression을 adversarial 방식으로 모델링)
  2. 2022, Ravi et al. — 4D-DaniNet (시계열 4D 모델 확장)
  3. 2023, Pombo et al. — CounterSynth (morphologically constrained 3D GAN)

Diffusion 계열 기술 흐름:

  1. 2022, Kim et al. — DDM (Medical image synthesis for aging)
  2. 2022, Kim et al. — DiffuseMorph (unsupervised deformable registration)
  3. 2023, Yoon et al. — SADM (Sequence-aware diffusion)
  4. 2024, Litrico et al. — TADM (temporal-aware conditional diffusion)
  5. 2024, Puglisi et al. — BrLP (latent diffusion + prior control)

이러한 흐름 속에서 본 프로젝트는 BrLP 모델에서 volumetric changes를 반영하는 것에서 더 나아가, 모델이 deformation field 조건을 통해 morphological changes를 학습 가능하게 하고자 한다. 이를 통해, 기존 BrLP 모델이 morphological changes 학습에 부족함이 있는 한계를 보완하고자 한다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교

현재 치매 예측을 위한 생성 모델 분야에서는 시간 조건부 생성(temporally-aware generation)과 고품질 의료 영상 합성에 초점을 맞춘 여러 연구가 제안되고 있다. 특히 MICCAI 2024에 발표된 TADM과 BrLP는 본 프로젝트와 가장 유사한 기술적 배경을 갖고 있다. TADM (Litrico et al., 2024)은 age gap을 condition으로 입력받아 단일 시점 이미지에서 향후 시점의 MRI를 예측하는 구조이며, classifier 기반의 loss를 사용해 출력의 신뢰도를 보장한다. 반면, BrLP (Puglisi et al., 2024)는 ControlNet을 도입해 미래 MRI의 volumetric changes를 외부 auxiliary model로부터 예측하고 이를 생성 조건으로 사용함으로써 정밀도를 높였다. LAS(Latent Average Stabilization)를 통해 생성 품질을 안정화하는 기법도 함께 도입되었다. 이에 비해 본 프로젝트는 단순 age나 volumetric 변화량을 넘어서, 추정한 deformation field 를 통해 morphological changes 까지 조건으로 사용하는 방식을 채택하고 있다. 이로 인해 기존 모델보다 구조적 일관성과 병리학적 타당성이 높은 결과물을 생성할 수 있는 가능성이 있으며, 조기진단에 특화된 시나리오에서도 경쟁우위를 확보할 수 있다. 또한, 기존 연구가 inference 전용 데모 수준에 머무는 반면, 본 프로젝트는 실시간 렌더링이 가능한 WebGPU 기반 3D 인터페이스, 백엔드 시스템 전체를 포함한 웹 플랫폼까지 구현하여 기술 상용화 가능성을 실질적으로 높였다는 점에서 차별화된다.

  • 마케팅 전략 제시

본 프로젝트는 의료 영상 기반 AI 서비스로서, 타겟 시장을 명확히 정의하고 진입 전략을 다음의 5단계로 구체화하였다:

  1. 타겟 시장 설정: 초기에는 신경과 병원, 뇌영상 연구소, 신약개발을 수행하는 제약회사 등 전문 사용자를 중심으로 채널을 설정하며, 고부가가치 유저를 확보하는 전략을 택한다.
  2. 기술 신뢰 확보: 학술 논문 발표, 백서(white paper) 배포 등을 통해 모델의 과학적 타당성과 기술력을 입증하고, 향후 임상 적용 가능성을 강조한다.
  3. 서비스 체험 유도: 웹 기반 데모와 클라우드 플랫폼을 통해 비설치형 체험 환경을 제공, 초기 사용자 확보와 피드백 수집을 병행한다. 무료 체험판 및 테스트 계정을 통한 접근성도 강화할 예정이다.
  4. 협력 및 공동 연구: 병원·연구소·디지털 헬스케어 기업과의 공동연구 혹은 MOU 체결을 통해 실사용 데이터 수집 및 기술 검증을 수행한다. 이를 통해 신뢰성과 시장 진입 속도를 동시에 확보할 수 있다.
  5. 규제 및 윤리 대응: AI 기반 의료 서비스의 한계와 윤리적 책임을 명확히 기술하고, 개인정보 보호, 보안 정책 등을 정립하여 향후 인증 획득과 제품화에 필요한 기반을 사전에 구축한다.

이와 같은 전략은 경쟁 기술보다 명확한 유저 타겟, 기술 신뢰 기반의 진입, 클라우드 기반 체험 제공, 그리고 임상 현장과의 연계 전략 측면에서 유리하며, 규제 대응 시나리오까지 포괄하는 계획적 마케팅 접근이라 할 수 있다.


개발과제의 기대효과

기술적 기대효과

본 과제는 조기 진단에 특화된 종단 3D MRI 생성 기술을 제안함으로써, 기존 단일 시점 분석 방식의 한계를 극복하고자 한다. 특히 AD 진행 예측을 위한 training data가 충분하지 않은 상황에서, 본 프로젝트는 synthetic data를 생성함으로써 분류기의 일반화 성능을 향상시킬 수 있는 가능성을 제시한다. 또한, Alzheimer’s Disease뿐만 아니라 전두측두엽 치매(FTD), 루이소체 치매(DLB) 등 다양한 아형에 따른 뇌 위축 패턴을 반영한 예측이 가능하며, 이는 진단과 치료 전략의 다양성 확보에 기여할 수 있다. 모델의 이미지 생성 성능은 SSIM, PSNR, NRMSE 등 주요 지표에서 기존 SOTA 수준을 상회하는 결과를 목표로 하며, 이는 의료 영상으로서의 실질적 사용 가능성을 뒷받침한다. 시스템 아키텍처 측면에서도 RAFT 알고리즘 기반의 데이터 일관성 유지, 메시지 큐 기반의 고속 비동기 처리, Java Virtual Thread를 활용한 고동시성 처리를 통해 고신뢰·고가용성 인프라를 실현한다. 더불어, React + WebGPU 기반의 직관적인 3D 시각화 인터페이스를 통해 사용자는 고해상도 뇌 MRI를 실시간으로 탐색할 수 있다.

경제적, 사회적 기대 및 파급효과

치매는 고령화 사회에서 가장 심각한 사회적·경제적 부담 중 하나로 부각되고 있으며, 조기 진단 및 예측 기술의 필요성이 날로 증가하고 있다. 본 프로젝트는 의료진의 진단 정확도 향상뿐만 아니라, 신약개발 연구자의 데이터 기반 의사결정을 지원함으로써, 전임상 단계에서의 시간과 비용 절감에도 기여할 수 있다. 또한, 별도의 설치 없이 웹 기반으로 실행 가능한 구조로 설계되어 의료 접근성이 낮은 지역이나 원격 협진 환경에서도 활용이 가능하며, 이는 디지털 헬스케어의 확산에 실질적인 기반이 될 수 있다. 나아가, 다중 환자군의 진행 시나리오를 예측할 수 있는 모델은 정책 수립이나 복지 자원 배분 등의 공공정책 도구로도 확장될 수 있는 잠재력을 지닌다.

기술개발 일정 및 추진체계

개발 일정

1. MRI팀

단계별 세부개발 내용 담당자 개발기간 (월단위) 비고
3월 4월 5월 6월
연구 리서치 구효근, 송채희
AI 모델 설계 송채희
3D 렌더링 구효근
AI 모델 학습 송채희
성능 비교 구효근, 송채희

2. 서비스 개발팀

단계별 세부개발 내용 담당자 개발기간 (월단위) 비고
3월 4월 5월 6월
서비스 요구사항 정의 권준호, 김혜주, 박영빈, 석우진
UI 디자인 권준호, 김혜주, 박영빈, 석우진
RAFT 구현 권준호
React 구현 박영빈
Message Queue 구현 김혜주
Virtual Thread 비교 분석 석우진
UI 구현 구효근, 박영빈
Server 개발 김혜주, 석우진
Inference Server 개발 권준호
MLOps 권준호
성능 테스트 권준호, 김혜주, 박영빈, 석우진
QA 권준호, 김혜주, 박영빈, 석우진

구성원 및 추진체계

본 프로젝트는 총 6인의 팀원으로 구성되었으며, 기술 영역에 따라 MRI 팀과 서비스 개발 팀으로 역할을 분담하였다. 각 팀원은 설계, 개발, 실험, 검증 등 프로젝트의 전 단계를 공동으로 수행하였으며, 다음과 같은 기술적 책임을 맡아 프로젝트를 추진하였다.

이름 역할 주요 담당 분야
구효근 MRI 팀 / 렌더링 3D MRI Rendering
송채희 MRI 팀 / 생성형 AI 모델 설계 VCDM 모델 구조 설계 및 학습, 성능 실험 및 비교 검증
권준호 서비스 개발 / MLOps·RAFT RAFT 알고리즘 구현, Inference 파이프라인 구성
김혜주 서비스 개발 / 백엔드 MQ(Message Queue) 구현 (Broker server, client class)
Spring 라이브러리 배포
석우진 서비스 개발 / 인프라·서버 성능 최적화 서버 구조 설계
Java Virtual Thread 기반 서버 동시성 구조 설계
박영빈 서비스 개발 / 프론트엔드 React 기반 UI 개발, WebGPU MRI 시각화 구현

이 구성은 팀원이 단순 분업이 아닌 협업 가능한 역할 기반 구조로 배치되어 있어, 기술간 연계와 동시 병렬 작업이 가능하도록 설계되었다.

설계

설계사양

사용자 요구사항

  • R1: 사용자는 3D s-MRI 데이터를 업로드하고, 조건(연령, 성별, 인지 상태 등)을 설정하여 미래 시점의 MRI를 예측 생성할 수 있어야 한다.
  • R2: 생성 결과는 원본 MRI와 함께 실시간 3D 뷰어에 반영되어야 하며, 사용자는 이를 인터랙티브하게 탐색할 수 있어야 한다. (예: 회전, 슬라이싱, 줌인 등)
  • R3: 시스템은 사용자가 생성 버튼을 클릭한 후 평균 3초 이내에 결과를 반환해야 하며, 1,000건 이상의 동시 요청도 무중단으로 처리할 수 있어야 한다.
  • R4: 데이터 처리 및 전달 과정에서 메시지 유실이 없어야 하며, 장애 발생 시에도 로그 일관성과 복구 능력을 유지해야 한다.
  • R5: 웹 애플리케이션은 별도의 설치 없이 브라우저에서 바로 접근 가능해야 하며, 초기 로딩 시간은 1초 이내로 제한되어야 한다.
  • R6: 사용자는 생성된 MRI를 채팅 기능을 통해 다른 사용자에게 공유하고, 실시간으로 협업 및 피드백을 받을 수 있어야 한다.

사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량 목표

  • F1: 사용자가 업로드한 3D s-MRI와 입력 조건(Target Age, Sex, Cognitive Status 등)을 기반으로, 향후 시점의 MRI를 자동 생성하는 기능 → SSIM ≥ 0.977, PSNR ≥ 33.7, NRMSE ≤ 0.087 (실측: 0.978 / 34.2 / 0.085)
  • F2: 생성된 MRI는 뷰어에서 기존 MRI와 함께 3D 볼륨 형태로 시각화되며, 슬라이스 탐색과 회전·확대·이동이 가능한 인터랙션 기능 제공 → 렌더링 프레임 속도 ≥ 60FPS (256³ 기준), 반응 지연 ≤ 50ms
  • F3: 생성 요청 이후 평균 3초 이내로 결과가 반환되며, 고부하 상황에서도 안정적인 응답 성능을 보장하는 기능 → 평균 응답시간 ≤ 50ms, 1,000 req/s 조건에서 장애 발생률 ≤ 5%
  • F4: 메시지 큐 기반 처리 흐름에서 데이터 유실 없이 안정적 전달을 보장하며, 장애 발생 시 RAFT를 통해 빠른 복구가 가능한 기능 → MQ 유실률 0%, RAFT 로그 일치율 ≥ 95%, 리더 재선출 시간 ≤ 1초
  • F5: 웹 애플리케이션은 별도의 설치 없이 사용 가능하며, 초기 로딩 시간 및 인터페이스 반응성을 최소화한 경량 구조 → 웹 LCP ≤ 1.0초 (실측: 0.82초), CLS ≤ 0.1
  • F6: 채팅 기능을 통해 사용자는 MRI 생성 결과를 공유하고, 다른 사용자와 실시간으로 메시지를 주고받을 수 있는 기능 → 메시지 송수신 지연 ≤ 100ms, 채팅 중 MRI 공유 시 뷰어 자동 연동

개념설계안

세부기술 선택사항

본 프로젝트는 알츠하이머병 진행 예측을 위한 3D s-MRI 생성 기능을 중심으로, 정량적 성능 목표와 사용자 요구사항을 충족하기 위해 다음과 같은 기술들을 선택하였다.

  • 인공지능 모델
    • Base Model: Latent Diffusion Model
    • Conditioning Methods
      • Cross-attention: age, sex, dignosis, regional volumes 수치 정보를 concat한 embedding vector를 cross-attention 연산
      • ControlNet: 시작 시점의 이미지의 공간적 정보를 학습하도록 조건화 보강
    • Novelty: 기존의 BrLP 모델은 regional volumetric changes만을 반영하여 이미지를 생성하는데 반해, 모델이 deformation field 조건을 통해 morphological changes를 학습 가능하다.
    • Implementation
      • Sampling 시에는 입력 이미지에 대하여 deformation field 변화량을 추정하여 생성한 미래 시점의 deformation field를 ControlNet 구조를 활용해 조건화.
      • VoxelMorph-diff 의 모델에 extrapolation 연산을 통해 미래 시점의 deformation field 를 생성하는 기능을 추가 구현한다. (TimeFlow 모델 논문의 방식을 참고)
  • 시스템 설계 및 연산 구조
    • 메세지 큐: RabbitMQ 및 ZooMQ(현 프로젝트에서 구현한 메세지큐)
      • 비동기 처리 및 고가용성을 위해 자체 구현한 Zoo Message Queue 및 기존의 RabbitMQ를 적용하였다. 모델 추론 요청은 MQ를 통해 분산 처리되며, 요청 처리량 증가에도 안정적으로 대응할 수 있다. → 비동기 처리, 오류 격리, 재시도 정책이 설계에 포함됨
    • Java Virtual Thread (JDK 21)
      • 서버는 가상 스레드를 사용하여 수천 개의 경량 스레드를 실행하며, 고동시성 처리에 최적화되었다.
    • RAFT 기반 분산 로그 저장소
      • 데이터 일관성을 위해 자체 구현한 RAFT 알고리즘을 적용하였다. 장애 상황에서도 리더 재선출과 로그 복제를 통해 높은 안정성을 보장한다.
  • 사용자 인터페이스
    • React 기반 Web UI
      • 서버와의 실시간 통신을 처리하며, 프론트엔드는 사용자 친화적으로 구성되었다.
    • WebGPU 기반 3D MRI 시각화
      • 사용자는 웹 브라우저 상에서 3D MRI를 실시간으로 탐색할 수 있으며, ray marching 기법을 사용해 256³ 해상도 데이터를 평균 60FPS로 렌더링한다.

시스템 설계

Brainoverflow architecture.png

소프트웨어 설계는 일반적으로 한 명의 개발자에 의해 완결되기 어려우며, 여러 명이 팀을 이루어 협업을 통해 진행하는 것이 일반적이다. 본 프로젝트 역시 복잡한 기술 요소들을 포함하고 있기 때문에, 모든 팀원이 하나의 기능을 공유하는 방식보다는 기능을 적절히 분할하고 역할을 명확히 나누는 divide-and-conquer 방식으로 접근하는 것이 효율적이라 판단하였다. 본 프로젝트는 인공지능 기술을 활용하여 미래의 뇌 MRI 영상을 예측하는 서비스를 개발하는 것을 목표로 한다. 그러나 본 프로젝트의 독창성은 단순히 인공지능 모델을 구현하는 데 그치지 않고, 인공지능, 백엔드 서버, 분산 저장소, 메시지 큐 시스템, 프론트엔드 렌더링 기술이라는 다섯 개의 분야를 유기적으로 통합하는 종합적 소프트웨어 아키텍처를 구성한 데 있다. 각 영역은 다음과 같이 세분화하여 설계 및 구현을 진행하였다.

  • 프론트엔드 (Frontend)
    • 기술 스택: React + WebGPU
    • 역할:
      • 사용자 로그인 및 추론 요청
      • 3D MRI 시각화 인터페이스 제공
      • WebSocket을 통한 결과 수신 및 알림 표시
  • 웹 서버 (Web Server)
    • 기술 스택: Java Spring Boot
    • 서브모듈:
      • API Gateway: 클라이언트 요청 라우팅, 인증/인가 처리
      • Authentication Service: JWT 기반 사용자 인증
      • Notification Service: WebSocket(STOMP) 기반 실시간 푸시 메시지 전송
      • Results API Service: 추론 결과 조회 및 사용자 대시보드 데이터 제공
  • AI 추론 서버 (Inference Server)
    • 기술 스택: PyTorch + Python Flask
    • 역할:
      • 메시지 큐로부터 MRI 추론 요청 수신
      • Latent Diffusion Model 을 통한 3D s-MRI 생성
      • 결과를 MQ에 publish 또는 Redis에 캐싱 후 notification trigger
  • 메시지 큐 시스템 (Message Queue)
    • 기술 스택: RabbitMQ, ZooMQ (본 프로젝트에서 구현한 커스텀 메세지 큐)
    • 역할:
      • AI Inference 요청 및 처리 흐름을 비동기적으로 분리
      • 백엔드 모듈 간 decoupling을 통한 성능 및 안정성 향상
  • 분산 저장소 및 일관성 모듈
    • 기술 스택: RAFT 알고리즘 (직접 구현)
    • 역할:
      • 분석 결과, 로그 데이터 등의 다중 노드 간 일관성 유지
      • 리더 장애 발생 시 1초 이내 재선출 및 로그 복구
  • 캐싱 및 세션 관리
    • 기술 스택: Redis
    • 역할:
      • 인증 세션 관리 (JWT 블랙리스트)
      • 분석 중간 결과 캐싱 (cache-aside 패턴)
      • 서버 간 상태 공유
  • MLOps 및 배포
    • 기술 스택: Kubernetes + Harbor
    • 역할:
      • 각 마이크로서비스의 자동 배포 및 버전 관리
      • CI/CD 파이프라인 구성 및 무중단 롤백 지원

이 시스템 구조는 모듈 간 책임 분리, 성능 확장성, 장애 회복력, 실시간성을 동시에 달성하기 위해 설계되었다.

이론적 계산 및 시뮬레이션

RAFT 알고리즘

본 프로젝트에서는 분산 환경에서의 데이터 일관성과 고가용성을 보장하기 위한 핵심 기술로서 RAFT(Rapidly Agreeing Fault-Tolerant) 알고리즘을 도입하였다. RAFT는 Paxos 알고리즘에 비해 이해하기 쉬운 구조와 구현 용이성을 제공하며, 실제 산업 및 학술 환경에서 널리 채택되는 합의 알고리즘이다. RAFT 알고리즘은 리더 선출(Leader Election), 로그 복제(Log Replication), 안전성 보장(Safety)의 세 가지 핵심 메커니즘으로 구성된다. 클러스터 내 모든 노드는 Follower 상태로 시작하며, 일정 시간 동안 리더의 heartbeat를 수신하지 못하면 Candidate 상태로 전이되어 선거를 진행한다. 이 과정에서 과반수 이상의 지지를 받은 노드는 리더로 선출된다. 리더 노드는 클라이언트의 요청을 받아 로그 항목을 생성하며, 이를 다른 노드(Follower)로 전파한다. 로그 항목이 과반수 노드에 복제되고 커밋되면, 리더는 해당 명령을 상태 머신에 적용하고 클라이언트에게 결과를 반환한다. 이 구조는 네트워크 분할 상황에서도 시스템이 안정적으로 작동하도록 보장한다. 본 프로젝트에서는 RAFT 알고리즘을 직접 구현함으로써, 서비스에 특화된 커스터마이징이 가능하도록 하였다. 특히 다음과 같은 기능적 요구사항을 달성하는 것을 목표로 삼았다:

  • 로그 복제 지연 최소화: 평균 응답 시간 50ms 이하 유지
  • 장애 복구 시간 단축: 리더 장애 발생 시 1초 이내 리더 재선출
  • 데이터 일관성 검증: 3회 이상 동기화 후 로그 일치율 95% 이상

이를 위하여 자바 기반으로 각 노드를 구성하고, Virtual Thread 기반의 이벤트 루프 아키텍처를 병행하여 구현하였다. 또한, 다양한 장애 시나리오(예: 네트워크 분할, 리더 장애, 로그 손상 등)에 대한 시뮬레이션을 설계하여, 실제 서비스 환경에서의 신뢰성과 회복력을 검증하였다. 시뮬레이션은 다음과 같은 항목을 중심으로 수행되었다:

  • 로그 전파 지연 시간 시뮬레이션 (각 요청에 대한 Follower 반영 시간 측정)
  • 리더 장애 후 선출까지의 평균 시간 측정
  • 로그 불일치 상황 삽입 후 자동 정합성 회복 여부 검증

시뮬레이션 결과는 '2.7 성능 분석 및 검증' 절에서 수치로 제시하며, 기존 오픈소스 기반 RAFT 구현체들과의 비교 분석을 병행할 예정이다. 본 구현은 고신뢰 분산 환경을 요구하는 의료 데이터 처리 시스템에서의 실용적 적용 가능성을 보여주는 기반이 될 것으로 기대된다.

Message Queue

이 시스템은 실시간 채팅과 비동기 추론 요청이라는 상이한 요구를 처리하기 위해 설계된 범용 메시지 브로커다. 먼저, 메시지큐의 근간이 되는 메시지 생산 및 소비 속도에 대한 이론적 계산을 통해 처리 가능 범위를 추정했다. 채팅 시스템에서는 사용자가 활발히 메시지를 주고받는 상황을 가정하여, 1초에 10,000명 유저가 평균 5개의 메시지를 보내는 경우, 초당 총 5만 건의 메시지가 생성된다고 본다. 각 메시지가 평균 1KB라고 하면, 초당 약 50MB의 처리량이 필요하다. 단일 서버가 이를 감당하기 어려우므로 수평 확장을 전제로 설계되며, 큐에 저장된 메시지가 여러 consumer에 의해 병렬로 처리되어야 한다. 반면, AI inference 시스템에서는 초당 메시지 수는 적지만, 하나의 요청이 수 분 동안 처리될 수 있으므로 메시지큐는 backlog을 감당할 수 있어야 하며, 동시에 backpressure을 유발하지 않도록 해야 한다. 이를 위해 push 방식에 pull 신호를 덧붙이는 hybrid 모델을 적용하였다. 실제 메시지는 큐에 저장되되, 소비자는 수신 불가 상태를 브로커에 알릴 수 있고, 브로커는 이 큐에 대한 푸시를 일시 중단한다. 소비자가 다시 수신 가능 상태를 선언하면 대기 중이던 메시지를 다시 전달한다. 시뮬레이션은 이론적 처리량을 바탕으로 구성되며, 각 시나리오별로 메시지 생산량, 수신 지연, 서버 부하, 큐 backlog 증가율 등을 측정하게 된다. 실시간 채팅은 연결 수가 많은 상태에서 전송 지연의 평균 및 편차를 측정하고, MRI 시나리오에서는 장기 보관 메시지의 안정성과 소비자 재접속 후 재전송 가능 여부를 중점적으로 분석한다.

리액트

본 프로젝트에서는 리액트를 순수 자바스크립트로 직접 구현함으로써 서비스에 특화된 경량 라이브러리로 커스터마이징이 가능하도록 했다. 특히 다음과 같은 기능적 요구사항을 달성하는 것을 목표로 삼았다:

  • 초기 렌더링 지연 최소화: 1,000개 요소 리스트 마운트 시 평균 응답 시간 100ms 이하 유지
  • 상태 업데이트 반영 시간 단축: 단일 setState 호출 후 화면 갱신 50ms 이내 완료

이를 위해 JavaScript 기반의 Fiber 유사 구조로 작업 단위를 분할 처리하는 렌더러와, 가상 DOM diff·commit 알고리즘, 함수형 컴포넌트 및 useState 훅을 직접 구현했다. 또한 브라우저의 여유 시간(requestIdleCallback)을 활용한 작업 스케줄러를 도입해 메인 스레드 과부하를 방지했고, 이벤트 핸들러와 속성 업데이트 로직을 분리 관리해 불필요한 DOM 조작을 억제했다. 실제 브라우저 환경에서 1,000개 요소 리스트의 초기 마운트 시간과 단일 상태 업데이트 지연 시간을 측정해 커스텀 리액트 구현체가 대용량 처리 시 목표 성능(초기 렌더링 100ms 이하, 상태 업데이트 50ms 이하)을 안정적으로 달성하고 부드러운 UI 반응성을 제공하는지 검증했다.

WebGPU 기반 3D MRI Volume Rendering

본 프로젝트에서는 웹 환경에서 고성능 3차원 뇌 MRI 데이터를 직관적으로 시각화할 수 있도록 WebGPU 기반의 volume rendering 기술을 도입하였다. 별도의 설치 없이 브라우저만으로 실행 가능한 경량 시각화 도구를 목표로 하며, 다음과 같은 기능적 요구사항 달성을 중점으로 삼았다:

  • 실시간 렌더링 성능 확보: 256³ 해상도 MRI 데이터에 대해 평균 프레임 속도 60FPS 이상 유지

이를 위해 핵심 알고리즘으로 Ray Marching 기법을 적용하였다. Ray Marching은 각 픽셀에 대해 광선을 따라 3차원 voxel 데이터를 탐색하고, 해당 지점의 밀도(intensity) 값을 누적하여 최종 색상과 투명도를 계산하는 방식이다. 이 방식은 뇌 내부의 복잡한 구조를 부드럽게 표현할 수 있어, 의료 영상 해석에 적합하다. 본 구현의 성능과 실용성을 검증하기 위해 다음과 같은 시뮬레이션을 설계하고 수행하였다:

  • 프레임 렌더링 속도 측정: 다양한 시점에서의 카메라 회전 및 확대/축소 동작에 대해 평균 FPS를 측정

시뮬레이션 결과는 ‘2.7 성능 분석 및 검증’ 절에 수치로 제시되며, 실제 브라우저 환경에서의 테스트를 통해 평균 60FPS 이상의 렌더링 성능을 안정적으로 달성하고 있음을 확인하였다. 본 구현은 고성능 의료 영상 시각화 도구의 웹 서비스화를 위한 실질적인 기술 기반을 제공한다.

소프트웨어 설계

본 프로젝트의 소프트웨어 설계는 형상관리, 배포 자동화, 도메인 기반 설계, 계층 간 의존성 분리 등을 포괄하는 현대적인 소프트웨어 아키텍처 원칙을 따르고 있다. 이는 프로젝트의 확장성, 유지보수성, 테스트 용이성을 극대화하기 위한 선택이다.

형상관리 및 DevOps

소프트웨어의 효율적인 배포와 관리를 위해, 간소화된 GitFlow 기반의 브랜치 전략을 적용하였다. 기능별 브랜치를 활용하여 독립적인 개발이 가능하도록 하였으며, CI/CD 자동화 스크립트를 구성하였다. CI/CD 파이프라인은 다음과 같은 절차로 구성되어 있다:

  1. 개발자가 기능 브랜치에 변경 사항을 커밋하고 로컬 환경에서 빌드를 실행한다.
  2. 빌드 결과물은 Harbor 레지스트리에 업로드된다.
  3. 자동화된 스크립트는 Kubernetes manifest 파일을 업데이트한다.
  4. 변경된 manifest는 Kubernetes 클러스터에 적용되어 무중단 배포가 이루어진다.

이러한 방식은 캐시 활용을 극대화하여 빌드 성능을 향상시키며, 모든 배포 기록이 manifest 파일로 형상관리 되므로 배포 버전의 롤백이 간편하다는 장점을 지닌다. 또한, 서비스의 보안성과 일관성을 위해 시크릿(secret) 데이터 또한 형상관리의 범위에 포함하였다. 이를 위해 git-crypt 도구를 활용하여 민감 정보를 암호화한 상태로 Git에 저장하고, CI 파이프라인에서 자동으로 복호화하도록 하였다.

클린 아키텍처 및 도메인 주도 설계

소프트웨어의 구조적 안정성과 유지보수성을 확보하기 위해 클린 아키텍처(Clean Architecture) 원칙을 기반으로 도메인 주도 설계(Domain-Driven Design, DDD)를 적용하였다. 설계 과정은 다음과 같은 흐름으로 진행되었다:

  1. 사용자 시나리오를 먼저 정의하여 핵심 서비스 흐름을 도출하였다.
  2. 시나리오를 기반으로 유즈케이스(Use Case)를 식별하였다.
  3. 유즈케이스를 분석하여 해당 기능을 수행하기 위한 도메인 객체(domain entity)들을 정의하였다.

이러한 도메인 객체는 엔터프라이즈 비즈니스 로직을 내포하며, 시스템의 핵심 개념 및 규칙을 표현하는 데 초점을 맞추었다. 도메인 객체는 직접적인 상태 변경을 허용하지 않고, 오직 메시지를 통해 상태를 변화시키는 방식으로 구성되었다. 이후, 도메인 계층 위에는 서비스 레이어(Service Layer)를 추가하여 다음과 같은 역할을 수행하게 하였다:

  • 도메인 객체에 메시지를 전달하여 상태를 변경하거나,
  • 도메인 객체만으로 표현하기 어려운 복잡한 비즈니스 로직을 구현하였다.

각 레이어는 의존성 역전 원칙(Dependency Inversion Principle)을 적용하여 설계되었다. 즉, 구체적인 구현은 모두 인터페이스를 기준으로 정의되며, 추상화된 계약에 따라 하위 모듈이 구현된다. 이로 인해 구체 구현을 변경하더라도 상위 레이어의 비즈니스 로직은 영향을 받지 않으며, 향후 모듈 교체 및 리팩토링 시 유연한 대응이 가능하다. 이러한 구조는 테스트 코드 작성에도 용이한 환경을 제공한다. 도메인 객체 및 서비스는 외부 의존성을 최소화하고 있으므로, 단위 테스트(Unit Test)에서 격리된 검증이 가능하며, 이를 통해 개발 생산성과 코드 품질을 동시에 확보하였다.

Message Queue 시스템 구성 및 구현 기술

이 메시지 브로커는 Java를 기반으로 core, server (broker), client, spring-zoomq 서브모듈을 가진 Gradle 멀티 모듈 프로젝트로 구현되었다. 기존의 메세지큐 프로토콜을 지원하는 라이브러리는 브로커 측 구현을 위한 라이브러리가 없을 뿐더라 전체 스펙을 직접 구현해야 하기 때문에, 소켓 연결과 프로토콜을 저수준에서 직접 구현했다.

위에서 언급했든 STOMP나 AMQP 같은 기존 메시지 프로토콜을 사용하지 않는다. 이에 따라 JSON 기반 메세지 프레임 및 타입을 설계하고, TCP 기반 Socket을 사용한 프로토콜을 core 모듈에 구현하였다. 이 메시지는 메시지 ID, 타입, TTL, 우선순위 등 메타데이터와 실제 payload를 포함하며, 추적과 오류 대응, 만료 처리에 유연하게 대응할 수 있도록 구성되었다. 프로토콜은 메세지 전달 보장 at-least-once를 보장하며, 연결, 재연결, 중지/재시작, ACK/RETRY, publish/subscribe 등 메시지큐 통신에 필요한 기능을 추상화하여 유지보수에 용이하게 만들고, 개발자가 직접 네트워크 로직을 작성하지 않고도 쉽게 통합할 수 있도록 하였다. Producer-Broker, Consumer-Broker간의 연결마다 상세 프로토콜이 다르므로, 공통 추상 클래스를 정의하고 인터페이스에 따라 기능을 제한하는 방식으로 구현하였다.

브로커는 독립 실행이 가능한 애플리케이션으로 구성되며, Docker 이미지로 패키징되어 Docker Hub에 배포된다. 실행 시 환경변수를 통해 사용자 인증 정보를 필수로 입력받고, 이후 인증이 완료된 연결에 대해서만 세션을 유지한다. Producer (client)로부터 전송받은 메세지를 topic 기반으로 알맞은 큐에 라우팅하고, 큐에 메세지를 보관 및 해당 큐를 구독중인 Consumer (client)에 메세지를 전송한다. 이때 하나의 큐에는 여러 Consumer가 존재하여 Round-Robin 방식으로 선택되어 전달되며, 메세지는 전송 완료가 확인되면 큐에서 삭제된다.

client는 메세지를 발행하는 Producer와 소비하는 Consumer를 구현하였다. 기본적으로 메세지는 push 방식으로 consumer에게 전달되지만, back-pressure를 예방하기 위해 consumer 측에서 메세지 수신을 중지 및 재개할 수 있도록 설계하였다. 또한 사용의 편의성을 위해 Spring용 전용 라이브러리를 제공한다. 해당 라이브러리는 기존 메세지큐 (kafka, rabbitmq)를 벤치마킹하여 @ZooListener 어노테이션을 통해 쉽게 메세지를 수신하고, ZooTemplate.converAndSend 메서드를 사용하여 쉽게 메세지를 송신할 수 있도록 하였다.

이처럼 소프트웨어 설계는 기술적 기반의 선택부터 배포 전략, 프로토콜 구성, 개발 편의성 확보까지 전체적인 관점에서 일관된 방향성을 갖고 진행되었으며, 메시지큐 시스템을 실용적이고 범용적으로 활용하기 위한 기반을 마련하고 있다.

성능 분석 및 검증

RAFT

RAFT 알고리즘의 동작을 검증하기 위해 5개의 노드 환경에서 성능 실험을 수행하였다. 초기 로컬 테스트에서는 지연이 거의 없어 실효성 있는 측정이 어려웠고, 이에 따라 노드 간 네트워크에 10ms의 인위적 지연을 삽입하였다. 그 결과, 로그가 모든 노드에 전파되는 데 평균 42ms가 소요되었고, 리더 장애 발생 시 새로운 리더가 선출되기까지 평균 1초가 걸렸다. 이 값은 재선출 타이머를 조절하여 요구사항에 맞춘 결과이며, 필요에 따라 더 줄일 수 있다. 임의의 리더 노드를 종료한 후 재가동하였을 때에도 정상적으로 복구되었고, 시스템이 안정 상태일 때 모든 노드 간 로그는 완전히 일치하였다.

Message Queue

시스템의 성능은 두 가지 주요 시나리오를 통해 평가된다. 채팅 시스템은 고빈도 메시지 생산과 짧은 지연을 필요로 하며, MRI 시스템은 저빈도 메시지와 긴 대기 시간을 견딜 수 있어야 한다. 따라서, 각각의 목적에 따라 다른 성능 기준이 설정된다. 채팅 시나리오에서는 10,000명의 유저가 동시 접속하고, 초당 평균 5개의 메시지를 전송한다고 가정한다. 시뮬레이션에서는 전체 메시지량, 평균 지연 시간, 최대 지연 시간, 메시지 유실률, 연결 유지 성공률 등을 측정한다. 특히 평균 지연 시간이 100ms 이하로 유지되는지를 판단 기준으로 삼고, 서버 CPU와 메모리 사용량이 일정 임계치를 넘지 않는지를 검토한다. 또한, 다수의 consumer가 하나의 큐를 구독하는 구조에서 round-robin 로드밸런싱이 잘 동작하는지를 확인하며, 메시지가 중복되거나 누락되는 문제가 발생하지 않는지도 점검한다. MRI 시스템의 경우, 메시지 발생량은 적지만 개별 메시지의 처리 지연이 수 분에 이르므로, 큐의 안정성, TTL 초과 시 처리, pull 신호에 의한 메시지 정지 및 재개, 그리고 메시지 재전송 정책이 검증 대상이 된다. 메시지를 수신한 consumer가 ACK을 보내지 않거나, 오류로 인해 세션이 종료된 경우, 해당 메시지가 올바르게 재전송되고, retry count가 정확히 반영되었는지를 확인한다.

리액트

초기 테스트에서는 단순 클릭으로는 측정이 어려워, 1,000개 항목 리스트 렌더링 벤치마크 스크립트를 동원했다. 그 결과, 초기 리스트 마운트에 평균 52.90 ms가 소요되었고, 리스트가 마운트된 상황에서 단일 setState 호출 후 100회 반복 업데이트 평균은 0.20 ms 이하로 나타났다. 이 수치는 가상 DOM의 diff 및 commit 과정이 의도한 대로 최소한의 DOM 조작만 수행하고 있음을 보여 준다. 필요에 따라 인위적 복잡도(예: 중간 삽입/삭제, 중첩 컴포넌트 구조)를 추가해도, 현재 구조에서는 100 ms 이하의 초기 렌더링 목표와 50 ms 이하의 업데이트 목표를 충분히 달성할 수 있음을 확인하였다.

WebGPU 기반 3D MRI Volume Rendering

WebGPU 기반의 volume rendering 성능을 검증하기 위해 다양한 시나리오에서 실험을 수행하였다. 테스트 환경은 Chromium 기반 브라우저(Chrome Canary, WebGPU 지원 활성화), RTX 3050 GPU, 해상도 256³의 NIfTI 포맷 3D MRI 데이터를 기준으로 하였다. 초기 실험에서는 단일 볼륨 텍스처 로딩 및 기본 ray marching 셰이더 실행 성능을 측정하였으며, 평균 프레임 속도는 144 FPS로 나타났다. 카메라 회전, 확대/축소, 슬라이싱 등의 상호작용이 포함된 동적 시나리오 또한 평균 144FPS를 유지하였다.

결과 및 평가

완료 작품의 소개

본 프로젝트의 최종 산출물은 사용자가 직접 MRI 데이터를 업로드하고, 입력 조건에 따라 향후 시점의 3D 뇌 영상을 예측 생성할 수 있는 웹 기반 AI 서비스이다. 이 시스템은 Conditional Latent Diffusion Model을 핵심 모델로 사용하며, 프론트엔드에서 NIfTI 형식의 MRI 데이터를 업로드한 후, 성별(Sex), 목표 연령(Target Age), 인지 상태(Target Cognitive Status) 등의 조건을 설정하면 AI가 해당 조건에 맞는 예측 MRI를 생성한다. 생성된 MRI는 사용자가 업로드한 원본 MRI와 함께 3D 뷰어 화면에서 동시에 비교할 수 있으며, XY, YZ, ZX 슬라이스 조절과 입체적 볼륨 렌더링 기능을 제공한다. 또한 실시간 채팅 기능을 통해 생성된 결과를 동료 사용자에게 공유하고 의견을 나눌 수 있는 인터페이스도 포함되어 있다. 특히 설치 없이 웹 브라우저만으로 사용 가능하며, 클라이언트-서버-추론 시스템 간 연계가 모두 자동화되어 있어, 의료진, 연구자, 제약사 등의 실사용자들이 별도의 기술적 설정 없이도 직관적으로 예측 MRI 생성 및 분석을 수행할 수 있도록 구현되었다.

Brainoverflow main1.png

Brainoverflow main2.png

실행

시스템 사용자는 웹 브라우저를 통해 brain-overflow에 접속하여 서비스를 실행할 수 있다.

Brainoverflow run1.png

로그인 후, 사용자는 MRI Generator 화면으로 이동하게 되며, 이곳에서 NIfTI(.nii) 형식의 3D MRI 파일을 드래그 앤 드롭하거나 클릭으로 업로드할 수 있다. 추가로, 성별(Sex), 목표 연령(Target Age), 인지 상태(Target Cognitive Status) 등 예측에 필요한 입력 값을 설정한 뒤 Generate 버튼을 클릭하면 AI 기반 생성이 시작된다.

Brainoverflow run2.png

예측 결과가 준비되면, 사용자에게 실시간 알림 팝업으로 “MRI 생성 완료” 메시지가 전송되며, 생성된 MRI는 기존 MRI와 함께 WebGPU 기반 뷰어에서 시각화된다. 사용자는 이 뷰어에서 XY/YZ/ZX 슬라이스를 자유롭게 조정하거나, 여러 렌더링 모드를 통해 입체적으로 뇌 내부 구조를 탐색할 수 있다.

Brainoverflow run3.png

또한, 좌측의 채팅 영역에서는 등록된 사용자와의 그룹 채팅 기능을 지원하며, 탭을 통해 다른 사용자를 초대하거나 대화 중에 MRI 결과 파일을 직접 공유하는 것도 가능하다. 공유된 MRI는 바로 클릭하여 뷰어에서 확인할 수 있도록 연동되어 있다.

Brainoverflow run4.png

뷰어에서는 ray volume marching, marching cube 기반 surface rendering 등 여러 렌더링 관점에서 MRI 이미지를 시각화할 수 있다.

Brainoverflow render1.png Brainoverflow render2.png Brainoverflow render3.png Brainoverflow render4.png

이 모든 기능은 웹 기반 환경에서 구현되어 있으며, 별도의 프로그램 설치 없이 바로 실행 가능하다는 점에서 접근성과 편의성이 높다.

관련사업비 내역서

항목 (품명, 규격) 수량 단가 금액 비고
현금
직접개발비 ChatGPT 구독 1 29,000 29,000 구독기간:25.03.17 ~ 25.04.16
ChatGPT 구독 1 32,988 32,988 구독기간:25.03.21 ~ 25.04.20
ChatGPT 구독 1 33,508 33,508 구독기간:25.04.05 ~ 25.05.04
cursor 구독 1 27,996 27,996 구독기간: 25.04.10 ~ 25.05.09
ChatGPT 구독 1 29,000 29,000 구독기간: 25.04.17 ~ 25.05.16
ChatGPT 구독 1 31,928 31,928 구독기간: 25.04.21 ~ 25.05.20
ChatGPT Team 구독 1 92,180 92,180 구독기간: 25.05.06 ~ 25.06.05
ChatGPT 구독 1 32,205 32,205 구독기간: 25.05.09 ~ 25.06.08
cursor 구독 1 29,158 29,158 구독기간: 25.05.10 ~ 25.06.10
ChatGPT 구독 1 29,000 29,000 구독기간: 25.05.17 ~ 25.06.16
ChatGPT 구독 1 30,874 30,874 구독기간: 25.05.21 ~ 25.06.20
ChatGPT Team 구독 1 90,027 90,027 구독기간: 25.06.10 ~ 25.07.09
cursor 구독 1 27,398 27,398 구독기간: 25.06.11 ~ 25.07.10
ChatGPT 구독 1 31,322 31,322 구독기간: 25.06.11 ~ 25.07.10
합계 546,584 546,584


완료작품의 평가

평가 항목 평가방법 적용기준 개발목표치 비중(%) 평가결과
SSIM 정량평가 (MRI 품질) Diffusion 기반 baseline 이상 ≥ 0.977 12.5 0.978
PSNR 정량평가 (MRI 품질) Diffusion 기반 baseline 이상 ≥ 33.733 12.5 34.2
NRMSE 정량평가 (MRI 품질) Diffusion 기반 baseline 이상 ≤ 0.087 12.5 0.085
RAFT 리더 재선출 시간 장애 시뮬레이션 리더 장애 발생 시 재선출까지 시간 ≤ 1초 5.0 1.0초
RAFT 로그 일치율 다중 노드 로그 비교 3회 이상 동기화 후 로그 일치율 ≥ 95% 5.0 96.2%
메시지큐 처리 지연 부하 시뮬레이션 End-to-end 평균 처리 지연 기존 메세지큐 기준 (100 TPS) 유사한 성능 ≥ 80 157
메시지큐 처리량 부하 시뮬레이션 End-to-end TPS ≤ 50ms 5.0 6.35ms
메시지큐 메세지 유실률 부하 시뮬레이션 5천건 실험 기준 End-to-end 메세지 유실율 ≤ 5% 5.0 0%
Virtual Thread 처리량 증가 비교 실험 기존 ThreadPool 대비 동시 처리량 증가율 ≥ 20% 5.0 +31%
웹 UI 로딩 속도 웹 성능 지표 (LCP) 최초 로딩 시간 ≤ 1.0초 5.0 0.82초

향후계획

본 프로젝트는 핵심 기능 구현과 실시간 서비스화 측면에서 높은 완성도를 보였으나, 다음과 같은 기술적·시스템적 한계와 어려움이 있었다. 이에 따라 후속 개선이 필요한 영역을 중심으로 향후 평가를 제시한다.

  1. MRI 생성 품질 및 예측 정확도 개선 필요: 실험 과정에서 확인된 바와 같이, 통합된 프로젝트 환경에서 Inference 결과로 생성된 3D MRI는 노이즈 이미지에 가까운 수준으로 시각화되었으며, 이는 학습된 모델의 성능 저하보다는 inference 결과물 전달 및 통합 시점의 문제로 추정된다. 개별 프로젝트에서는 양호한 2D 슬라이스 시각화 결과를 보였기 때문에, inference pipeline의 통합 구조 점검과 모델 출력에 대한 후처리 안정화가 필요하다.
  2. React 직접 구현 시도 실패 및 라이브러리 전환: 프로젝트 초기에는 React의 렌더링 구조(useState, useEffect 등)를 직접 구현하여 커스터마이징된 UI 라이브러리를 적용하고자 했으나, TypeScript 기반의 실제 프로젝트에 통합하는 과정에서 타입 호환성과 빌드 오류가 반복되었고, 공식 React의 방대한 타입 시스템과 맞지 않아 최종적으로는 공식 React 라이브러리로 전환하였다. 향후에는 자체 구현 방식의 한계를 고려하여, 성숙한 프레임워크를 기반으로 하는 UI 최적화 전략을 우선시할 필요가 있다.
  3. 프로젝트 통합 시 기능 간 의존성 및 충돌 문제: AI 모델, Inference 서버, WebGPU 뷰어, 채팅 시스템 등 개별 모듈은 독립적으로 완성도가 높았으나, 단일 레포지토리 통합(monorepo) 및 서브디렉토리 기반 모듈 구성 과정에서 연동 오류가 발생하였다. 특히 AI 모델의 inference 결과가 뷰어에 정상적으로 반영되지 않는 문제가 대표적이었다. 이러한 문제를 해결하기 위해서는 프로젝트 초기부터 모듈 간 통신 구조와 데이터 포맷 정의를 표준화하고, 통합 전 테스트용 샌드박스 환경을 구축하는 방식이 필요하다.
  4. Message Queue의 분산 환경에서의 기능 구현:본 프로젝트는 메시지 큐의 핵심 기능과 실시간 처리 측면에서 높은 완성도를 보였으나, 분산 환경을 고려한 클러스터링과 레플리케이션 기능은 아직 미흡하였다. 단일 브로커 구조로 인해 장애 시 서비스 전체가 중단될 위험이 있으며, 메시지 복제와 동기화 메커니즘이 없어 데이터 유실 가능성도 존재한다. 향후에는 브로커 이중화, 로그 복제, 노드 간 상태 동기화 등을 통해 고가용성과 메시지 내구성을 확보할 수 있는 구조로 개선이 필요하다.

이러한 점들을 기반으로, 추후에는 모델 성능 고도화 외에도 시스템 통합 테스트, MLOps 기반 자동화 구조, 실사용자 피드백 반영 등을 통해 기술적 완성도뿐만 아니라 서비스 품질 전반의 향상이 가능할 것으로 기대된다.