DCE-MRI를 이용한 유방암 AI 모델, 전처리와 SSL기반의 강건한 모델 개발기 (feat. Ontol3D)
안녕하세요. 테서의 연구개발팀에서 의료 영상 모델을 개발하고 있는 이창석입니다.
지금은 Ontol3D에서 서비스하는 인체기관 중 하나인 유방암에 관해서 연구를 진행하고 있습니다. 테서는 암이 발견된 MRI, CT 영상을 3D 모델로 변환하여, 현재 종양의 상태와 과거 검사 결과를 환자 입장에서 쉽고 빠르게 직관적으로 확인 할 수 있도록 Ontol3D 개발을 시작했습니다. Ontol3D에 대한 내용은 원활한 학습과 배포를 위한 ML pipeline을 참고해 주세요.
의료 영상 분야에 종사하는 AI 연구원은 다른 산업보다 더 전문적인 도메인 지식을 필요로 합니다. 데이터와 모델을 가지고 단순하게 학습 시키는 것이 아닌, 해당 도메인에 대한 지식을 이용하여 제한되는 점들을 파악, 분석을 통해 성능을 올리는 것이 AI 연구원의 목표이기 때문입니다.
본 글은 저희가 유방암 AI 모델링를 하기 전에 조사한 유방암의 의료 정보와 유방암의 탐지 성능을 높이고자 사용한 방법을 공유하려고 합니다.
연구 배경
유방암은 세계에서 가장 흔한 여성 암으로 전체 여성 암의 24.2% 를 차지합니다. 국내 유방암 환자 수는 보건복지부의 국가암등록사업 보고에 따르면 2018년 기준 23,547명으로 지난 10년간 무려 2배 이상 증가했습니다. 우리나라는 암 발생률이 높은 국가 중 하나이며, 서구와 달리 폐경 전 발병률이 높은 편입니다. 또한 유방암은 조기 발현하면 완치될 확률이 높지만, 병기가 증가할수록 생존율은 떨어집니다. 다행스럽게 요즘은 유방암 의심부위 검출, 진단을 도와주는 AI 모델이 고도화 됨에 따라 조기에 유방암 환자를 검진하는 비율이 높아졌습니다. 이 덕분에 종양 환자분들의 성공적인 치료와 회복 가능성을 높일 수 있습니다.
연구 목적
의료 영상 분할이 무엇인가요?
의료 영상 분할은 자기공명영상 (MRI) 또는 컴퓨터단층촬영 (CT)과 같은 3D 영상 데이터에서 필요한 영역 (ROI)를 추출하는 작업을 의미합니다.
의료 영상 분할로부터 얻을 수 있는 이점이 무엇인가요?
의료 영상 분할의 주요 이점 중 하나는 필요한 영역만 탐지 및 분리하여 해부학적 데이터를 보다 정밀하게 분석할 수 있습니다.
유방암의 경우 섬유 유선조직의 양이 많을수록 전문의 선생님들이 암을 평가하고 해석하는데 어려움이 있습니다. AI 모델을 이용하여 영상 분할을 진행하면 섬유 유선조직과 암 조직을 기존에 수동적으로 분리하는 것보다 빠르게 작업할 수 있도록 도와주는 이점을 제공합니다.
저희는 아래의 과정을 중심으로 유방암 영상 분할 연구를 진행했습니다.
1. 유방 질환 조사
2. 영상 모달리티 설정
3. 영상 전처리
4. 유방암 성능 개선
유방 질환 조사
유방암에 관한 의료 지식을 얻고자 양성/악성에 대한 차이를 조사했습니다.
유방에 생긴 모든 덩어리를 유방 종양이라 합니다. 종양은 일반적으로 임상 경과에 따라 크게 양성과 악성으로 구분합니다. 악성 종양은 유방암이라 불리며, 관*이나 소엽*에서 시작될 수 있습니다.
관*: 모유 수유 중에 소엽에서 유두로 젖을 운반하는 관
소엽*: 젖을 생산하는 주머니
유방암은 흔히 하나의 질병으로 불리지만 종류가 다양하게 있습니다. 모든 유방암은 유방에서 시작되지만 다음과 같이 나눌 수 있습니다.
- 위치(관 또는 소엽)에 따라 다릅니다.
- 암이 침습성이거나 비침습성으로 구분됩니다.
비침습성 유방암은 암이 유방을 넘어 퍼지지 않은 것을 의미합니다. 요즘은 유방검진의 활성화로 유관상피내암*(DCIS, 초기 암)의 비율이 과거에 비해 높아졌는데 이는 조기 발견을 통한 완치가 가능합니다.
침습성 유방암은 암이 관 또는 소엽에서 인근 유방 조직으로 퍼진 경우입니다. 유방암의 가장 흔한 유형이며 그 중 침습성 유관암은 80% 이상의 큰 비중을 차지하고 침습성 소엽암은 전체 유방암의 5~10% 비중입니다.
유관상피내암*: 관에 비정상 세포가 들어있으며, 암 세포들이 가까운 유방조직이나 그 너머로 퍼지지 않은 상태
영상 모달리티 설정
의료 영상 연구를 진행할 때는 영상획득장비에 따른 영상 모달리티를 파악해야합니다. 유방암을 진단할 때는 아래와 같이 3가지 촬영 방식이 있습니다.
유방 촬영술 (Mammography)
유방 초음파검사 (Ultrasonography)
유방 조영증강 자기공명영상 (Dynamic Contrast Enhanced MRI, DCE-MRI)
유방 촬영술은 유방암 검진에 있어 가장 기본이 되는 검사로 방사선을 조사하여, 양쪽 유방을 다른 방향으로 각각 2장씩 촬영합니다.
유방 초음파검사는 유방 촬영술과 더불어 많이 이용되는 검사 방법이며 유방촬영술에서 발견된 병변의 정밀검사로 이용됩니다.
유방 조영증강 자기공명영상은 유방암의 진단뿐만 아니라 유방암의 병기나 전이 여부를 진단하는데 도움이 됩니다. 유방암의 진단에 가장 예민한 검사법으로서, 조영제를 사용하여 기존의 단순유방촬영술이나 초음파검사가 가지고 있던 한계점을 극복할 수 있는 유용한 방법입니다.
저희는 유방암(악성)을 목표로 하였기에, DCE-MRI의 영상 모달리티를 사용했습니다. DCE-MRI의 영상 획득 시퀀스는 영상스캐너 종류 및 프로토콜 세팅에 따라 다르지만 기본적으로 Pre 영상(조영제 투입 전), Post 영상(조영제 투입 후) 기준으로 구분됩니다. Post 영상은 총 4~6개의 시퀀스로 Post 영상 간의 1~2분 간격으로 촬영됩니다.
위의 사진은 유방암 환자의 DCE-MRI 예시입니다. 좌에서 우로 진행될수록 조영제가 투입된 시간이 증가했으며 유방암의 영역이 조영증강되는 것을 확인할 수 있습니다.
영상 전처리
의료 영상을 이용하여 모델 학습을 하기 위해선 전처리 과정은 필수입니다. 의료 영상 전처리 모듈은 여러 가지가 있지만 본 글은 ANTsPy 를 이용하여 진행했습니다. ANTsPy는 의료 영상처리 라이브러리 대표 명사인 ANTs를 Python 라이브러리로 래핑한 모듈입니다. 이를 이용하면 손쉽게 의료 영상처리를 할 수 있도록 진입 장벽을 낮춰줍니다.
저희는 다음과 같이 3가지 과정을 이용하여 영상 전처리를 진행했습니다.
1. Rigid Registration
2. N4 Bias Field Correction
3. Intensity Normalization
Rigid Registration
DCE-MRI는 환자에게 조영제를 투입함으로 써, 시간의 흐름에 따른 촬영 방식입니다. 시간이 지날수록 환자의 호흡 및 움직임으로 인해 DCE-MRI의 Pre 영상과 Post 영상이 서로 정확한 위치에 있지 않습니다. Registration 기법을 이용하여 여러 장의 MRI를 하나의 공간 좌표로 통일해야 합니다. 저희는 여러 Registration 기법 중 Rigid Registration을 이용하여 진행했습니다. 본 글에서는 Registration의 자세한 내용은 생략하겠습니다.
저희는 Pre 영상을 Fixed 영상으로 사용하고, Post 영상을 Moving으로 지정했습니다. 여기서 Fixed 영상은 고정된 이미지를 말하고, Moving 영상은 변환될 영상 즉, Fixed 좌표계로 변환할 영상을 의미합니다.
import ants
pre_img = ants.image_read("{Pre 영상 경로}")
post_img = ants.image_read("{Post 영상 경로}")
# Moving -> fixed의 transform matrix 획득
reg_matrix = ants.registration(fixed=pre_img,
moving=post_img,
type_of_transform='Rigid' )
# Registration 적용
reg_post = ants.apply_transforms(fixed=pre_img,
moving=moving_img,
transformlist=reg_matrix['fwdtransforms'])
# 파일 저장
reg_post.to_file(reg_post1_path)
N4 Bias Field Correction
의료 영상의 Bias Field는 주로 부적절한 영상 획득 과정 또는 촬영 대상의 특수한 영향으로 인해 발생하는 바람직하지 않은 방해물입니다. 이 방해물은 영상 전반에 걸쳐 강도(Intensity)의 영향을 변형시키며, 의료 이미지 처리 기술을 크게 저하시키게 됩니다. N4 Bias Field Correction은 방해물의 영향을 줄이는 전처리 기법입니다.
import ants
import nibabel as nib
img = ants.image_read("{영상 경로}")
n4_correction_img = ants.n4_bias_field_correction(img).numpy()
nib.Nifti1Image(n4_correction_img, ...)
Intensity Normalization
아무리 좋은 데이터셋을 갖고 있어도 모델에 학습시키기 위해선 스케일링이 필수입니다. 모델은 데이터가 가진 특징점을 뽑아서 학습하는데, 이때 모델이 받아들이는 데이터의 범위가 들쑥날쑥하다면 모델이 데이터를 잘못 해석할 우려가 있기 때문입니다. MRI의 특성 상 같은 환자라도 같은 스캐너에서 서로 다른 강도를 가질 수 있습니다.
저희는 Z-Score Normalization 기법을 이용하여 학습 데이터셋의 범위를 가공했습니다. Z = (X — 평균) / (표준편차) 공식을 이용하여 학습 데이터의 강도가 표준 정규 분포에 해당하도록 처리를 진행했습니다.
import numpy as np
import SimpleITK as sitk
def Z_Score(img):
img = (img - np.mean(img)) / np.std(img)
return img
def Img_Norm(N_I, index1=0.001, index2=0.001):
N_I = N_I.astype(np.float32)
I_sort = np.sort(N_I.flatten())
I_min = I_sort[int(index1*len(I_sort))]
I_max = I_sort[-int(index2*len(I_sort))]
N_I =1.0*(N_I-I_min)/(I_max-I_min)
N_I[N_I>1.0]=1.0
N_I[N_I<0.0]=0.0
return N_I
normalization_img = Z_Score(Img_Norm({"영상 경로"}))
유방암 성능을 높이고자, 저희는 유방 영역을 영상분할하는 모델을 먼저 개발했습니다.
DCE-MRI은 유방 영역만 존재하는 것이 아닌 복부와 폐, 심장 등 유방암에 필요 없는 정보가 들어있습니다. 모델이 학습할 때 불필요한 정보가 포함된 입력 데이터를 넣으면 유방암을 학습하는데 방해 요소가 많아 좋은 성능을 기대하기 어렵습니다. 저희는 유방 바이너리 마스크를 생성하는 모델을 개발하여 기존 DCE-MRI에 곱하는 방식으로 불필요한 정보를 제거했습니다.
아래의 세 과정은 유방 영역을 분할하는 모델을 개발할때 사용한 기법입니다.
유방암 성능 개선
Remove confounding information
유방암을 영상분할 하기 전, Pre 영상을 유방 영역 영상분할 모델에 입력으로 하여 유방 영역 바이너리 마스크를 생성합니다. 그 후, Pre 영상과 유방 영역 마스크를 곱하여 불필요한 정보를 제거합니다. 마지막으로 필요한 정보만 들어 있는 영상을 입력으로 하여 유방암 영상분할을 진행합니다.
Semi Supervised Learning (SSL)
유방 바이너리 마스크를 생성하는 모델을 학습하기 위해 DCE-MRI에서 유방 영역을 분할하는 모델을 학습했습니다. 하지만 의료 영상 데이터셋은 다른 데이터셋과 달리 많은 수의 데이터셋을 확보하는 것은 어려운 일입니다. 저희 테서 연구개발팀은 적은 양의 데이터로 모델을 효과적으로 학습하기 위해 SSL 기법 중 하나인 Proxy-label method를 이용했습니다.
머신러닝의 학습 방법은 크게 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning)으로 나누어집니다. 이 둘을 나누는 기준은 학습 데이터의 라벨 유/무입니다. 지도학습은 정답이 있는 데이터(Labeled data)를 사용하여 입력 데이터가 무엇인지 예측하는 것을 목표로 하고, 비지도학습은 정답지가 없는 입력 데이터(Unlabeled data) 간의 패턴을 찾아 비슷한 데이터끼리 클러스터링(Clustering)을 목표로합니다.
이 외에 지도학습과 비지도학습의 조합으로 이루어진 준지도학습(Semi Supervised Learning)이 있습니다. 저희는 소량의 Labeled data가 있는 데이터셋을 활용하여 상대적으로 적은 비용과 노력으로 수집 가능한 Unlabeled data를 활용하여 모델의 성능을 높이고자 했습니다. SSL은 워낙 거대한 주제이기 때문에 이번 포스트에서는 저희가 사용한 방법론에 대해서 소개하려고 합니다.
Proxy-label method
Proxy-label 기법은 Labeled data가 있는 데이터셋으로 학습된 모델을 이용해 Unlabeled data에 정답을 달아주는 SSL 기법 중 하나입니다. 이 기법을 이용하여 100명의 유방 바이너리 마스크가 있는 데이터셋을 이용하여 1차 모델을 학습하고, Unlabeled data에 라벨링을 진행하여 Labeled data가 있는 데이터셋과 Unlabeled data에 라벨링된 데이터셋을 합쳐서 모델을 고도화했습니다.
본 기법을 사용하여 다량의 학습 데이터셋을 학습한 결과, 아래와 같이 정확도가 점점 상승하는 것을 확인 할 수 있습니다.
학습된 모델을 이용하여 추론한 결과, 좋은 성능을 보여주는 것을 확인할 수 있습니다.
마치며
지금까지 저희가 유방암 AI 모델링을 진행하기 전 연구했던 과정을 정리했습니다. 의료 영상 AI 연구원이 의료 지식을 이용하여 연구를 진행하면 모델의 성능 향상과 문제점들에 대한 분석도 수월해지기 때문에 의료 도메인에 대한 리서치를 진행하는 것은 꼭 필요합니다.
의료 영상 모델을 개발할 때는 다양한 난관에 봉착하게 됩니다. 이를 해결하고 앞으로 나아갈수록 테서의 팀원들과 함께 성장하는 것을 느낍니다. 점점 성장하는 사람이 테서에 모여 다 같이 발전하여 무한한 가능성을 보여주었으면 좋겠습니다!