VascX: 눈 혈관 바이오마커 자동 추출을 위한 투명·확장 가능한 파이썬 툴킷
📝 Abstract
The automatic extraction of retinal vascular biomarkers from color fundus images (CFI) is essential for large-scale studies of the retinal vasculature. We present VascX, an open-source Python toolbox designed for the automated extraction of biomarkers from artery and vein segmentations. The VascX workflow processes vessel segmentation masks into skeletons to build undirected and directed vessel graphs, which are then used to resolve segments into continuous vessels. This architecture enables the calculation of a comprehensive suite of biomarkers, including vascular density, bifurcation angles, central retinal equivalents (CREs), tortuosity, and temporal angles, alongside image quality metrics. A distinguishing feature of VascX is its region awareness; by utilizing the fovea, optic disc, and CFI boundaries as anatomical landmarks, the tool ensures spatially standardized measurements and identifies when specific biomarkers are not computable. Spatially localized biomarkers are calculated over grids relative to these landmarks, facilitating precise clinical analysis. Released via GitHub and PyPI, VascX provides an explainable and modifiable framework that supports reproducible vascular research through integrated visualizations. By enabling the rapid extraction of established biomarkers and the development of new ones, VascX advances the field of oculomics, offering a robust, computationally efficient solution for scalable deployment in large-scale clinical and epidemiological databases.
💡 Analysis
**
1. 연구 배경 및 필요성
- Oculomics 흐름에 따라 안저 사진에서 추출한 혈관 특성이 고혈압, 신장질환, 뇌졸중, 심혈관 위험 등 전신 질환과 연관됨이 다수 보고되고 있다.
- 기존 자동화 도구(PVBM, AutoMorph)는 전역적인 바이오마커는 제공하지만, 해부학적 기준(특히 fovea 위치) 을 활용한 지역별 정밀 측정과 방향성 그래프 기반 토폴로지 분석이 부족했다.
- 또한 시각화·해석 도구가 제한돼 결과 해석이 어려운 점도 문제점으로 지적된다.
2. VascX의 핵심 기술적 기여
| 단계 | 주요 처리 | 결과물 | 바이오마커 적용 예 |
|---|---|---|---|
| Stage 1 – Skeleton | binary vessel mask → hole‑fill → 스켈레톤화 | 1‑픽셀 폭 중심선 | 혈관 밀도, 직경 샘플링 |
| Stage 2 – Undirected Graph | 스켈레톤 → NetworkX Graph (노드: 끝·분기점) | Edge에 Segment(길이·중심선·곡률) 저장 | 분기각, 노드 기반 토폴로지 |
| Stage 3 – Directed Tree | optic disc를 루트로 방향 지정 | 혈류 흐름 가정 | 혈관 흐름 기반 비틀림도·길이 |
| Stage 4 – Resolved Vessels | 재귀적 vessel‑resolution 알고리즘 → 연속 혈관(길게 연결) | 간소화된 DiGraph | CRE, temporal arcade angle, 장거리 비틀림도 |
| Feature Extraction | 마스크·그래프·해상 혈관 중 최적 레이어 사용 | CSV 파일 (전역·지역 바이오마커) | 전역 밀도, 지역별 CRE, ETDRS 그리드 바이오마커 등 |
- 해부학적 기준 활용: fovea와 optic disc 위치를 자동으로 추출해 OD‑fovea 축을 정의하고, 이를 기준으로 ETDRS·Ellipse·Circle 그리드 를 생성한다. 이는 기존 도구가 제공하지 못한 지역 맞춤형 바이오마커(예: 상·하 반구, 원주 영역) 계산을 가능하게 한다.
- 방향성 그래프: 혈관 흐름을 가정한 방향성 트리를 통해 분기점에서의 각도, 비틀림도, 연속 혈관 길이 등을 보다 정확히 측정한다.
- 시각화·투명성: 각 단계별 그래프와 스켈레톤을 시각화하는 유틸리티가 포함돼, 연구자는 중간 결과를 검증하고 오류 원인을 빠르게 파악할 수 있다.
3. 장점
- 오픈소스·플러그인 구조
- PyPI 배포와 GitHub 공개로 설치·업데이트가 용이하고, 커뮤니티 기반 개선이 기대된다.
- 재현성·표준화
- 동일 이미지에 대한 반복 측정 결과가 논문에 제시된 바와 같이 높은 일관성을 보이며, 전역·지역 바이오마커를 동일 포맷(CSV)으로 제공한다.
- 고성능·대규모 적용 가능
- 멀티프로세싱(
--n-jobs) 지원으로 수천 장 이미지도 몇 분 내에 처리 가능, 대규모 코호트 연구에 적합.
- 멀티프로세싱(
- 모듈형 파이프라인
- 각 단계가 독립적인 API로 제공돼, 새로운 혈관 분할 모델이나 추가적인 바이오마커(예: fractal dimension) 삽입이 쉬움.
4. 한계 및 개선점
| 구분 | 내용 | 제언 |
|---|---|---|
| 분할 의존성 | VascX는 외부 AI 분할 결과에 전적으로 의존한다. 분할 품질이 낮으면 모든 바이오마커가 편향될 위험이 있다. | 자동 품질 평가·보정 모듈(예: vessel‑mask confidence map) 통합 |
| 시야·해상도 제한 | 이미지 경계가 제한적이거나 저해상도인 경우, 특히 외측 원(ETDRS outer ring)에서 측정이 불가능할 수 있다. | 다중 스케일 보정·시야 보정 알고리즘 도입 |
| 임상 검증 부족 | 현재는 기술적 재현성만 제시되고, 실제 임상·역학 코호트와의 연관성 검증이 제한적이다. | 대규모 코호트(UK Biobank, MESA 등)와 연계한 전향적 검증 연구 필요 |
| 비틀림도 측정 다양성 | 거리‑비율, 곡률‑기반, 인플렉션 카운트 등 3가지 지표를 제공하지만, 임상적 의미가 아직 명확히 정의되지 않음. | 각 비틀림도 지표와 질환 위험 간의 메타분석 수행 |
| 사용자 친화성 | CLI 기반이며, GUI가 없어서 비전문가가 접근하기 어려울 수 있다. | 웹 기반 대시보드 또는 Jupyter 위젯 제공 고려 |
5. 기존 도구와의 비교
| 항목 | PVBM | AutoMorph | VascX |
|---|---|---|---|
| 입력 | 전처리된 vessel mask | 이미지 → end‑to‑end DL | 전처리된 artery/vein mask + disc·fovea |
| 그래프 | 무방향 | 무방향 | 무방향 → 방향성 → Resolved |
| 지역 기준 | 없음 | 제한적 | OD‑fovea, ETDRS, 사용자 정의 그리드 |
| 시각화 | 기본 제공 | 제한적 | 단계별 시각화·시각적 디버깅 |
| 오픈소스 | Python, modular | Python, Docker | Python, PyPI, GPL‑3 |
| 배포·재현성 | GitHub | Docker 이미지 | GitHub + PyPI, API 문서 |
VascX는 특히 방향성 그래프와 해부학적 기준을 활용한 지역별 바이오마커 제공에서 차별화된다.
6. 향후 연구 방향
- 통합 분할·바이오마커 파이프라인
- 최신 Vision Transformer 기반 vessel/AV segmentation 모델을 VascX 내부에 통합해 원스톱 솔루션 구축.
- 멀티모달 확장
- OCT‑A, fluorescein angiography 등 다른 안저 영상 모달리티에 적용 가능한 모듈 개발.
- 임상·역학 검증
- 대규모 코호트와 연계해 바이오마커‑질환 연관성을 메타분석하고, 위험 예측 모델에 VascX 바이오마커를 피처로 활용.
- 자동 품질 관리
- 이미지 품질 점수와 분할 신뢰도에 기반한 바이오마커 신뢰 구간 제공.
- 사용자 인터페이스
- 웹 기반 대시보드(예: Streamlit)와 Jupyter 위젯을 제공해 비전문가도 손쉽게 분석 파이프라인을 실행하도록 지원.
**
📄 Content
인공지능(AI)이 안과 연구에 가져온 혁신과 VascX 도구에 대한 소개
인공지능(AI)은 대규모 영상 데이터를 정량적·자동으로 분석할 수 있게 함으로써 안과 연구를 급속히 변화시켰습니다. 컬러 안저 영상(CFI)에 현대적인 딥러닝(DL)을 적용하면 안과 질환을 자동으로 탐지할 수 있다는 것이 입증되었습니다. 최근 몇 년간 ‘오쿨로믹스(oculomics)’ 분야는 눈을 이용해 전신 건강을 이해하는 단계까지 나아갔습니다[1][2][3]. 비침습적인 CFI는 동맥 및 정맥 망막 혈관을 시간·비용 효율적으로 검사할 수 있게 해 주며, 기존 인구 기반 코호트와 임상 데이터베이스에 저장된 혈관 정보를 대규모로 분석할 수 있는 길을 열어 줍니다. 현재 다수의 연구에서 주요 망막 혈관 특징이 고혈압, 신장 질환, 뇌졸중 아형, 전반적인 심혈관 위험과 연관된다는 강력한 증거가 제시되고 있습니다[2].
주요 망막 혈관 바이오마커
- 중심 망막 동맥/정맥 등가지수(CRAE/CRVE)
- 동맥‑정맥 비율(AVR)
- 분기 각도
- 곡률/프랙탈 차원
- 분기 수
이들 특징은 고혈압, 혈역학적 상태, 혈관망 재구성·효율성 등에 따른 혈관 변화를 포착하며, 각각이 표적 장기 손상 및 향후 혈관 사건 발생과 연결되어 있습니다[2,4].
기존 도구들의 한계
자동으로 바이오마커를 추출하는 기술적 과제에 대한 선행 연구는 견고한 기반을 마련했습니다.
- PVBM은 사전 분할된 혈관 지도에서 분기 각도, 말단점, 교차점 등 다양한 혈관 바이오마커를 계산할 수 있는 모듈형 Python 툴박스를 제공합니다[5].
- AutoMorph는 혈관 직경, 곡률, 복잡도 등 표준화된 형태학적 측정을 포함한 종합적인 end‑to‑end DL 파이프라인을 제공하며, 혈관 분석을 보다 접근하기 쉽게 만들었습니다[6].
하지만 중요한 기술적 격차가 남아 있습니다. 가장 큰 문제는 PVBM과 AutoMorph가 시신경유두‑중심와(OD‑fovea) 축을 기준으로 한 지역적 바이오마커를 계산하지 못한다는 점입니다. 이로 인해 특정 영역이나 격자(grid) 기반의 국소화된 바이오마커를 추출할 수 없습니다. 또한 두 도구 모두 무방향 그래프만을 사용하므로, 혈관 트리의 **방향성(directedness)**을 활용한 위상(topological) 특징을 추출할 수 없습니다. 마지막으로, 계산된 특징을 시각화하는 유틸리티가 부족해 해석 가능성이 제한됩니다.
VascX: 그래프 기반 지역화 바이오마커 추출 툴박스
VascX는 위의 요구를 충족시키기 위해 AI 기반 디스크(segmentation)와 중심와 위치를 활용해 지역화된 특징을 추출하는 그래프 기반 툴박스를 제공합니다[7]. 파이프라인은 이미지 수준의 혈관 마스크를 다음 네 단계의 표현으로 순차 변환합니다.
- 스켈레톤(skeleton)
- 무방향 그래프(undirected graph)
- 시신경유두를 루트(root)로 하는 방향성 트리(directed tree)
- 해결된 혈관 트리(resolved vessel tree)
각 단계에서 가장 적합한 표현을 이용해 바이오마커를 계산합니다. 예를 들어, 마스크 기반 밀도, 노드 기반 분기 수·각도, 세그먼트 기반 직경·길이·곡률, 그리고 OD‑fovea 정렬 공간적 특징(CRE, temporal arcade angle) 등을 단계별로 추출합니다. 특히 VascX는 시신경유두‑중심와를 기준으로 정의된 격자·영역을 사용해 지역(local) 특징을 계산함으로써, 임상 번역에 필요한 조화된 보고와 영역별 분석을 가능하게 합니다. VascX 파이프라인은 이미 다중 코호트 연구에서 망막 혈관 파라미터의 표현형·유전적 특성 및 질병 연관성을 조사하는 데 활용되었습니다[4].
논문의 주요 기여
본 논문에서는 투명하고 문서화가 잘 된, 손쉽게 수정 가능한 Python 툴박스를 소개합니다. 이는 방법론적 혁신과 대규모 재현 가능한 오쿨로믹스 연구를 가속화하기 위한 것입니다. 구체적인 기여는 다음과 같습니다.
사용이 간편한 툴박스 제공
- 동맥‑정맥 구분이 된 세그멘테이션으로부터 형태학, 위상학, 직경, 공간적 지역화 바이오마커(OD‑fovea 정렬 및 ETDRS‑스타일 격자)를 포괄적으로 계산합니다.
재현성 검증
- 동일 안구의 여러 이미지에 대해 VascX 바이오마커의 재현성을 평가한 결과를 제시합니다.
모듈형 파이프라인
- 명확히 구분된 그래프 기반 단계와 잘 문서화된 API를 통해 새로운 망막 바이오마커를 빠르게 실험할 수 있습니다.
오픈소스 배포
- PyPI를 통해 손쉽게 설치·사용할 수 있도록 공개했습니다.
구현 환경 및 배포
패키지는 Python 전용이며, 표준 데이터 과학·이미지 처리 라이브러리(NumPy, OpenCV, Pillow, scikit‑learn, scikit‑image)만을 사용합니다. 모든 의존성은 오픈소스이며, 이번 발표에서는 첫 번째 공개 버전을 제공하고 향후 버전은 **시맨틱 버전 관리(semantic versioning)**에 따라 업데이트될 예정입니다.
VascX는 **이미지 세그멘테이션(보통 AI 모델이 생성)**을 입력으로 받아, 해당 세그멘테이션으로부터 CSV 파일 형태의 바이오마커를 출력합니다. 세그멘테이션 단계는 기존 연구[6][7][8]에서 다루어졌으며, VascX는 개별 이미지 혹은 배치(batch) 단위로 동작합니다. Pillow가 읽을 수 있는 모든 이미지 포맷을 지원합니다.
- GitHub: https://github.com/Eyened/retinalysis-vascx (GNU Affero General Public License v3.0)
- PyPI:
retinalysis-vascx
설치 및 실행 흐름
- 가상 환경 생성 후 파이프라인을 Python 패키지로 설치합니다.
- 배치 실행 도우미와 함께 두 단계로 파이프라인을 진행합니다.
1단계 – 세그멘테이션
vascx segment /path/to/images /path/to/segmentations이 명령은 기존에 발표된 혈관·동맥·정맥·디스크·중심와 AI 모델을 이용해 혈관, 동맥·정맥, 디스크 마스크와 중심와 위치, 이미지 품질을 추정합니다. 결과는 preprocessed_rgb/, artery_vein/, vessels/, disc/ 폴더에 입력 이미지와 동일한 파일명으로 저장되며, 각 이미지당 하나의 CSV 행이 생성됩니다.
2단계 – 바이오마커 추출
vascx calc-biomarkers /path/to/segmentations /path/to/features.csv \
--feature_set full --n-jobs 8 --logfile /path/to/logfile.txt추출된 바이오마커는 지정한 CSV 파일에 저장됩니다.
내부 처리 흐름
VascX는 동맥‑정맥 모델 세그멘테이션을 각각 동맥 마스크와 정맥 마스크로 분리한 뒤, 네 개의 주요 계산 단계로 진행합니다.
| 단계 | 입력·출력 | 주요 작업 |
|---|---|---|
| 입력 마스크 | np.ndarray[bool] (각 레이어) + 디스크·중심와 메타데이터 | AI 모델이 제공한 원시 마스크와 좌표 정보를 로드 |
| Stage 1 – Skeleton | 스켈레톤 이미지 | 이진 혈관 마스크를 구멍 채우기(hole‑fill) 후, 디스크 영역이 있으면 제외하고 skimage의 스켈레톤화(skeletonization)로 1픽셀 폭 중심선을 생성 |
| Stage 2 – Undirected Graph | networkx.Graph | 스켈레톤에서 끝점/분기점을 노드로, 중심선 픽셀 연속을 엣지로 변환. 각 엣지는 Segment 객체(중심선 순서, 아크길이, 기하학적 요약)를 보유하고, 필요 시 스플라인을 피팅해 직경·각도 추정에 활용 |
| Stage 3 – Directed Digraph | networkx.DiGraph (루트 = 시신경유두) | 무방향 그래프에 흐름 방향을 부여해 시신경유두 → 말단 방향의 트리를 구성 |
| Stage 4 – Resolved Vessels | Resolved Vessel Tree (단순화된 방향성 그래프) | 기존 스켈레톤/그래프에서는 작은 분기가 있으면 세그먼트가 과도하게 분할됩니다. 여기서는 재귀적 해결 알고리즘을 적용해, 각 분기점에서 가장 큰 집계 직경을 가진 가지를 주 흐름으로 선택하고, 나머지 가지는 종료시켜 해결된 세그먼트로 합칩니다. 이렇게 하면 장거리 혈관(주요 분기 사이)을 하나의 세그먼트로 취급할 수 있어, 길이 기반 토루오시티·OD‑fovea 정렬 측정 등에 적합합니다. |
바이오마커 추출 방식
각 바이오마커는 가장 적합한 데이터 표현에서 계산됩니다.
- Mask‑based (예: 혈관 밀도) → 입력 마스크
B에서 직접 계산 - Node‑based (예: 분기 각도) → Stage 4의 방향성 트리와 노드 정보를 사용
- Segment‑based (예: 직경, 길이, 토루오시티) → Stage 2 혹은 Stage 4의 세그먼트 객체 활용
- Spatially‑aligned (예: CRAE/CRVE, Temporal Arcade Angle) → OD‑fovea 축을 기준으로 정의된 격자·영역에서 계산
아래는 주요 바이오마커와 그 정의·계산식의 요약입니다(수식은 원문과 동일하게 유지).
1. VascularDensity
이 글은 AI가 자동 번역 및 요약한 내용입니다.