최근 프로젝트2025.03 — 2025.05

뉴로엔 × 이지브레인

qEEG 분석을
의료 서비스로.

라벨 없는 qEEG 데이터의 모델 실험부터 의료진이 사용하는 웹 애플리케이션, 민감한 의료 데이터를 보호하는 분산 인프라까지 ENIT-AI의 기반을 구축한 프로젝트입니다.

기간2025.03 — 2025.05
분야의료 AI · 풀스택
조직뉴로엔 · 이지브레인
형태초기 서비스 기반 구축

프로젝트를 시작한 이유

왜 이 프로젝트가
필요했을까요?

이지브레인은 증상명만으로 접근하기보다 개인마다 다른 뇌의 데이터와 신경생리학적 검사 정보를 바탕으로 치료 전략을 세우는 eNIT 철학을 갖고 있었습니다.

체인 병원이 늘어나면서 각 지점의 의료진이 qEEG 자료를 더 편리하게 입력하고, 같은 흐름으로 전처리와 분석 결과를 확인할 수 있는 도구가 필요했습니다. 뉴로엔과 이지브레인은 이 진료 경험과 개발 역량을 결합해 ENIT-AI 프로젝트를 시작했습니다.

목표는 의사의 판단을 AI로 대체하는 것이 아니었습니다. 반복적인 데이터 처리와 결과 정리를 시스템이 돕고, 의료진이 환자별 정보를 검토해 진료 판단에 활용할 수 있는 일관된 업무 흐름을 만드는 것이었습니다.

QEEG

qEEG란 무엇인가

qEEG(정량 뇌전도)는 두피에서 기록한 EEG 신호를 컴퓨터로 처리해 주파수별 세기, 연결성 등의 수치나 뇌 지도 형태로 표현하는 분석 방법입니다.

해석할 때 중요하게 본 점

측정 상태, 약물, 잡음과 전처리 방식의 영향을 받을 수 있어 품질 검사 단계를 두고 의료진이 원본 자료와 환자 정보를 함께 검토하도록 설계했습니다.

eNIT

eNIT가 지향하는 진료

eNIT는 Evidence-based Neurotransmitter-specific Integrated Treatment의 약자로, 개인의 뇌 데이터와 신경생리학적 검사 정보를 함께 살펴 맞춤 치료 전략을 세우는 이지브레인의 접근 방식을 의미합니다.

서비스로 옮겨야 했던 이유

원장님의 경험과 분석 방식을 체인 의료진이 동일한 순서로 활용할 수 있도록 입력, 분석, 검토, 리포트의 제품 흐름으로 구조화했습니다.

주파수별 상대 파워를 두피 지도 형태로 표현한 qEEG 샘플

qEEG 샘플 읽기

숫자 신호를 뇌 지도로 바꾸면

각 원은 머리를 위에서 내려다본 두피 지도입니다. 1Hz부터 20Hz까지 각 주파수에서 측정된 상대 파워의 분포를 색으로 나타냅니다.

지도를 보는 방법

지도 하나는 특정 주파수를 나타내며 여러 지도를 비교해 주파수에 따른 두피 영역의 분포 차이를 살펴봅니다.

색상이 의미하는 것

색상은 각 눈금 안의 상대적 값을 구분합니다. 빨간색 자체가 질환을 뜻하지 않으며 의료진이 원시 EEG와 임상 정보를 함께 검토해야 합니다.

※ 이 qEEG 샘플 이미지는 설명을 위해 Google 이미지 검색에서 가져온 참고 자료입니다.

개인별 qEEG·검사 정보
ENIT-AI 분석 흐름
의료진의 종합 판단

프로젝트 개요 / 01

모델 하나가 아닌
전체 제품을 만들었습니다.

뉴로엔과 정신과 전문 병원 이지브레인이 함께 진행한 프로젝트로, 의료진이 qEEG 이미지를 입력하고 전처리·품질 검사·AI 분류·분석 리포트까지 확인할 수 있는 흐름을 구축했습니다.

초기 4명(이지브레인 원장님, 뉴로엔대표님, 이사님, 저) 규모의 팀에서 모델 실험, 웹 서비스, 데이터 보안과 서버 구성을 동시에 진행했습니다.

서비스 흐름 / 02

qEEG 입력부터 리포트까지

01

환자 정보·qEEG 입력

02

주파수 분해·전처리

03

품질 검사

04

AI 패턴 분류

05

LLM 분석 리포트

06

PDF 결과 제공

실제 웹 서비스 화면

ENIT-AI 사용 흐름

환자 정보와 qEEG 이미지 입력
화면 01

환자 정보와 qEEG 이미지 입력

환자 정보와 두 측정 상태의 qEEG 자료를 하나의 분석 작업으로 묶는 화면

화면의 목적
분석 전에 환자 식별 정보와 눈을 감은 상태·뜬 상태의 자료를 정확하게 연결합니다.
사용 흐름
환자 식별번호, 나이와 성별을 확인하고 두 상태의 이미지를 각각 등록합니다.
제가 설계하며 고려한 점
이미지가 서로 바뀌거나 다른 환자와 연결되지 않도록 입력 단계를 분명하게 나눴습니다.
qEEG 분석 진행 과정
화면 02

qEEG 분석 진행 과정

주파수 분해부터 분류까지 현재 실행 단계를 확인하는 화면

화면의 목적
시간이 걸리는 AI 작업의 현재 위치와 완료 여부를 의료진에게 알려줍니다.
사용 흐름
주파수 분해, 회색조 변환, 품질 검사와 패턴 분류가 순서대로 실행됩니다.
제가 설계하며 고려한 점
전체 진행률과 단계별 상태를 함께 보여주어 실패 위치와 재확인 지점을 알 수 있게 했습니다.
전처리 이미지 확인
화면 03

전처리 이미지 확인

원본과 주파수 분해·회색조 결과를 비교하는 화면

화면의 목적
AI가 실제로 어떤 입력을 받았는지 의료진이 직접 확인할 수 있게 합니다.
사용 흐름
눈을 감은 상태와 뜬 상태를 좌우로, 원본부터 변환 결과까지를 세로로 비교합니다.
제가 설계하며 고려한 점
모델의 입력 과정을 숨기지 않아 전처리 오류나 품질 문제를 결과 확인 전에 찾도록 했습니다.
AI 분석 결과
화면 04

AI 분석 결과

품질 검사와 분류 확률을 검토하고 PDF 리포트를 생성하는 화면

화면의 목적
분석 근거를 한곳에 모아 의료진이 리포트 생성 여부를 결정하도록 돕습니다.
사용 흐름
잡음과 심각도를 확인한 뒤 상위 예측, 전체 확률과 유의 여부를 검토합니다.
제가 설계하며 고려한 점
확률이 확정 진단처럼 보이지 않도록 품질 검사와 전체 결과를 함께 제공하고 최종 판단은 의료진에게 남겼습니다.

담당 업무 / 03

01

qEEG 분류 모델 실험

DeepCluster, 패치 기반 특징 추출, 이진화와 BOSS 자기 증류를 단계적으로 실험했습니다.

02

AI 리포트 설계

분류 결과에서 분석 문장, 요약 진단, 권고사항을 생성하는 Llama 3 흐름을 설계했습니다.

03

의료진용 웹 서비스

환자 정보 입력부터 전처리, 품질 검사, 분류와 PDF 리포트까지 하나의 흐름으로 구현했습니다.

04

분산 시스템과 보안

병원 내부 데이터와 외부 GPU 연산을 MinIO, 중계 API와 Cloudflare로 연결했습니다.

모델 개발 과정 / 04

한 번에 완성하지 않고
문제를 따라 개선했습니다.

각 버전은 이전 실험에서 발견한 문제를 해결하기 위한 다음 가설이었습니다.

DeepCluster 기준선 구조
모델 버전 1

DeepCluster 기준선

당시 문제
충분한 정답 라벨이 없어 일반적인 지도 학습부터 시작하기 어려웠습니다.
제가 바꾼 점
ResNet50 특징과 KMeans 의사 라벨을 이용하는 DeepCluster 구조를 적용했습니다.
확인한 결과
전체 흐름은 연결했지만 특징 붕괴와 과적합 경향이 나타났습니다.
다음 버전으로 이어진 이유
축소 과정에서 사라지는 qEEG의 작은 영역별 특징을 보존할 필요가 있었습니다.
패치 기반 특징 추출 구조
모델 버전 2

패치 기반 특징 추출

당시 문제
고해상도 이미지를 한 번에 축소하면 영역별 패턴이 사라질 수 있었습니다.
제가 바꾼 점
200×200 패치의 지역 특징과 전체 이미지의 전역 특징을 함께 학습했습니다.
확인한 결과
특징 표현과 군집 안정성이 일부 개선됐지만 초기 붕괴 가능성은 남았습니다.
다음 버전으로 이어진 이유
입력 잡음과 초기 가중치가 불안정을 키우는지 확인했습니다.
이진화와 초기화 안정화 구조
모델 버전 3

이진화와 초기화 안정화

당시 문제
색상 범위, 잡음과 무작위 초기 가중치가 군집 중심을 흔들 수 있었습니다.
제가 바꾼 점
입력 이진화, 가중치 초기화, L2 정규화와 KMeans 반복 초기화를 적용했습니다.
확인한 결과
초기 붕괴 빈도가 줄고 실루엣 흐름이 안정됐습니다.
다음 버전으로 이어진 이유
복잡한 패턴을 위한 특징 추출기 앞단의 깊이를 보강했습니다.
5단계 전처리 합성곱 블록 구조
모델 버전 4

5단계 전처리 합성곱 블록

당시 문제
기본 ResNet 앞단만으로 세부 구조를 단계적으로 학습하기 어려웠습니다.
제가 바꾼 점
5단계 합성곱 블록과 BatchNorm, ReLU, Dropout을 추가했습니다.
확인한 결과
초기 특징 붕괴가 줄고 의사 라벨의 신뢰도가 개선되는 방향을 확인했습니다.
다음 버전으로 이어진 이유
불확실한 의사 라벨의 오류를 반복하지 않을 안정적인 교사 모델이 필요했습니다.
qEEG 입력
학생 모델
KMeans 군집
신뢰도 상위 70%
교사 모델 갱신
모델 버전 5

BOSS 교사-학생 자기 증류

당시 문제
불확실한 표본과 장시간 학습 중 붕괴가 실험을 불안정하게 만들었습니다.
제가 바꾼 점
신뢰도 상위 70% 표본, 실루엣 기준 교사 갱신과 상태 복구 로직을 적용했습니다.
확인한 결과
70 에포크 이후 붕괴가 줄고 문제가 생겨도 이전 상태에서 실험을 이어갈 수 있었습니다.
다음 버전으로 이어진 이유
qEEG 전용 증강과 의료진이 해석할 수 있는 평가 기준을 후속 과제로 남겼습니다.

시스템 발전 과정 / 05

고민하며 그린
시스템 구성도.

초기 시스템 구성
01

초기 시스템 구성

병원 내부 Mac Mini에서 전체 기능을 운영

당시 고민
빠르게 기능을 검증하는 것이 우선이었습니다.
제가 선택한 방향
저는 한 서버에서 qEEG 입력부터 분석까지 전체 흐름을 먼저 연결했습니다.
다음 구성으로 이어진 이유
연산 자원과 확장성의 한계로 AI 연산과 데이터 저장을 분리해야 했습니다.
버전 2 시스템 구성
02

버전 2 시스템 구성

GPU 서버와 병원 내부 MinIO를 분리

당시 고민
강한 GPU가 필요했지만 의료 원본을 외부 서버에 둘 수 없었습니다.
제가 선택한 방향
웹·AI 연산은 GPU 서버로, 원본 데이터는 내부 MinIO로 분리했습니다.
다음 구성으로 이어진 이유
외부 서비스가 내부 데이터를 읽는 권한과 경로를 제한해야 했습니다.
버전 3 시스템 구성
03

버전 3 시스템 구성

Cloudflare, HTTPS와 중계 API 추가

당시 고민
GPU 서버의 직접 MinIO 접근은 권한 범위가 지나치게 넓었습니다.
제가 선택한 방향
Cloudflare와 HTTPS를 적용하고 조회 범위를 제한하는 중계 API를 두었습니다.
다음 구성으로 이어진 이유
Ubuntu 자원으로 더 큰 LLM을 운영하기 어려워 실행 위치를 재검토했습니다.
버전 4 시스템 구성
04

버전 4 시스템 구성

LLM 분리와 서비스 경로 정리

당시 고민
LLM 메모리와 대량 qEEG 이동에 따른 네트워크 부하를 함께 고려해야 했습니다.
제가 선택한 방향
LLM을 Mac Mini로 분리하고 내부·외부 도메인 경로를 구분했습니다.
다음 구성으로 이어진 이유
각 영역을 독립적으로 확장할 기반을 만들고 대량 데이터 이동 최적화를 후속 과제로 남겼습니다.

설계와 실험의 기록

결과보다 중요한
결정의 이유.

완성된 화면만으로는 어떤 문제를 만났고 왜 방향을 바꿨는지 드러나지 않습니다. 실제 고민했던 선택과 배운 점을 정리했습니다.

01

정답이 없는 데이터에서 무엇부터 학습시킬 것인가

제가 선택한 방향
라벨을 기다리기보다 DeepCluster로 특징과 의사 라벨을 만들고 실루엣 점수를 함께 관찰했습니다.
이 과정에서 배운 점
손실값만 낮아지는 것은 좋은 모델의 증거가 아니며 의료진이 해석할 관찰 지표가 필요했습니다.
02

특징 붕괴를 다음 실험의 조건으로 바꾸기

제가 선택한 방향
패치 학습, 이진화, 초기화와 자기 증류를 한 단계씩 분리해 적용했습니다.
이 과정에서 배운 점
실패한 실험도 다음 가설의 기준선을 만드는 중요한 결과였습니다.
03

성능보다 의료 데이터가 머물 장소를 먼저 정하기

제가 선택한 방향
원본은 병원 내부 MinIO에 두고 외부는 중계 API로 허용된 범위만 조회하게 했습니다.
이 과정에서 배운 점
보안은 마지막 기능이 아니라 서버 배치를 정하는 첫 조건이었습니다.
04

이상적인 구성과 실제 네트워크 조건 사이에서 타협하기

제가 선택한 방향
정제 데이터를 우선 옮겨 사용하면서 장기적으로 조회 전용 중계 경로를 발전시켰습니다.
이 과정에서 배운 점
현재 가능한 방식과 후속 개선 지점을 명확히 분리하는 것이 중요했습니다.
05

LLM을 어디에서 실행해야 지속 가능한가

제가 선택한 방향
더 나은 메모리 환경의 Mac Mini로 LLM을 분리하고 필요한 정보만 전달했습니다.
이 과정에서 배운 점
모델 선택만큼 실행 위치와 독립적으로 교체할 수 있는 경계가 중요했습니다.

다음 프로젝트

다른 작업도 살펴보세요.

프로젝트 목록으로 돌아가기 →