Name Last Update
README.md Loading commit data...
main.py Loading commit data...
split_to_test_validation.py Loading commit data...
split_to_train_test.py Loading commit data...

딥러닝(2D-CNN)을 통한 뇌 연령 예측 시스템

과제 개요

과제 선정 배경 및 필요성

현재 3D MRI scan data를 이용해서 뇌 연령을 예측하는 시스템이 활발하게 개발되고 있다. 뇌 연 령 예측을 통해, 실제 나이대의 뇌와의 비교를 통해 뇌의 노화 정도를 파악할 수 있어, 알츠하이머, 조현병, 파킨슨병 등 다양한 신경 질환에 유용한 생체 지표로 활용될 수 있다. 특히, 분명한 치료 방법이 없는 알츠 하이머의 경우 뇌 연령 예측을 통해 경미한 인지장애로부터 알츠하이머로의 전환을 예측할 수 있기 때문에 MRI를 통한 치료에 도움이 될 수 있다. 때문에, 뇌 연령 예측에 쓰이는 시스템의 성능 또한 그만큼 중요하 며 이를 위한 방안 중 하나로 MRI scan data를 이용하여 2D-CNN 딥러닝을 통한 뇌 연령 예측 시스템을 주제로 연구를 진행하게 되었다.

Convolutional Neural Network 즉 CNN이란, 이미지의 공간 정보를 유지한 상태로 학습이 가능한 대표적인 모델이다. CNN은 크게 Convolutional Layer, Pooling Layer, Classification으로 이루어져 있다. Convolutional Layer는 입력(input) 데이터에 많은 종류의 필터를 적용하여 이미지의 특징(attribute)을 추출 하고, 다음으로 Pooling Layer를 통해 추출한 이미지의 특징을 모으고 해당 특징을 강화한다. 마지막 Classification 단계를 통해서는 이미지를 분류하는 과정을 거치기 때문에 MRI scan을 이용하여 뇌 연령을 예측하는 데에 있어 효과적인 모델이라고 판단하였다. 아래는 CNN의 각 Feature extraction과 Classification 구간의 구성을 나타내는 그림이다.

CNN 모델 중에서도 입력 데이터와 맞물릴 수 있는 3D-CNN을 대신하여 2D-CNN을 이용하였다. 그 이유는 model을 training하는 과정에 있어 3D-CNN과 비교하여 다음과 같은 큰 장점이 존재하기 때문이 다. 기존의 3D-CNN 방법은 parameter가 많고 데이터를 training하는 데에 더 많은 시간을 필요로 한다. 또 한, 필요한 데이터 또한 2D-CNN을 이용할 때보다 방대해야 한다는 단점이 있다. 이에 반해 2D-slice-based architecture은 3D-CNN을 이용한 뇌 연령 예측 및 알츠하이머병 분류 작업의 결과와 성능이 비교가 가능할 만큼 상당히 향상된 성능을 보여줌과 동시에, 결과를 얻기 위해 더 적은 parameter 및 data sample을 필요 로 하기 때문에 최근 더 많은 관심을 받고 있다.

과제 주요내용

본 연구 과제는 건강한 사람의 뇌 MRI scan data을 바탕으로 2D-CNN 모델을 통해 뇌 연령을 예 측하는 것에 중점을 둔다. 사용할 2D-CNN의 모델은 크게 encoding, embedding, prediction의 세 가지 구 간으로 나누어진다.

MRI scan data를 input으로 갖고, ouput으로 예측된 나이(Predicted age)를 도출한 다. 먼저 여러 개의 slice로 이루어진 3D MRI scan의 각 slice를 Set network와 Permutation invariant layer 로 이루어진 2D encoding을 통해 encoding한다. 다음으로 encoding된 결과인 slice-encoding을 결합하고 학습(training)하는 과정을 통해 scan data의 단일 embedding을 생성한다. 마지막으로 생성된 결과를 Feed forward layer에 통과시켜 최종적으로 뇌 연령을 예측한다.

모델을 학습하는 과정에서는 loss를 보고받기 위한 몇 가지 설정(setup)을 통해 해당 loss를 기준으 로 가장 최적화된 모델(optimized model)을 선정한다. 모델의 성능을 적절하게 평가하고 파악하기 위하여 training set, validation set, test set으로 데이터를 적절히 나누어 2D-CNN을 적용하여 주어진 각 dataset에 대한 뇌 연령 예측 성능을 MAE 및 R로 평가 지표를 지정하고 모델의 성능을 평가하고 결론을 도출한다.

최종결과물의 목표

Training set, validation set, test set의 각 dataset에 따라 2D-CNN 모델을 학습 및 적용시켜 평가 지표인 MAE, MSE 및 R(correlation)값을 도출하고, 모델의 성능에 대해 평가한다. Dataset 중 특히 model이 training하는 과정에서 접하지 않았던 test set에 대한 성능에 대해 높은 정확도를 보여주는 것이 최종 결과 물의 목표이다.

과제 수행방법

데이터 수집

크기가 121x145x121인 건강한 사람의 3D MRI IXI(Information Extraction from Images) scan data 를 수집한다. 확장자는 .nii파일이다. IXI MRI data란, 뇌 연령 관련 연구를 위해 대규모로 수집한 건강한 사 람들의 뇌 MRI scan 데이터이다. 아래는 해당 MRI scan 중 하나의 예시 사진이다.

각 MRI 스캔에 해당되는 사람의 실제 나이 및 데이터의 유용성 여부에 대한 정보가 포함되어 있는 데이터를 수집한다. MRI scan data와 더불어 총 580명의 실제 데이터이며, 확장자는 .csv파일로, 엑셀 파일 이다. 이 때, 실제 나이의 연령 범위는 19.98세에서 86.32세로, 성인의 연령대로 골고루 분포되어 있다. Dataset의 age별 샘플(sample) 개수를 나타낸 데이터 히스토그램은 다음과 같다. 가로축은 연령대, 세로축은 샘플 개수를 나타낸다.

데이터 전처리

  • 같은 ID를 가진 사람(ID가 같으면 같은 사람임을 뜻한다.)의 실제 나이 값이 두 개로 중복되는 경 우, 그 평균을 구하는 대신, 데이터의 유용성 여부(data availability)를 기준으로 중복되는 데이터를 제거하는 전처리 과정을 거쳤다.
  • Age가 비어있는 결측치의 경우, 결측치를 제외한 실제 나이의 평균값인 48.65세로 data imputation을 진행하였다.
  • 총 580명의 데이터가 포함되어 있는 전체 dataset을 model을 training 시키고 optimized model을 선정하는 데에 필요한 training set 및 validation set과 학습된 모델을 적용하여 모델의 성능을 평가하기 위한 test set으로 분류하는 전처리 과정을 거쳤다. 총 데이터를 각 training set, validation set, test set으로 7:1:2비율 로 나누어 training set에는 406명, validation set에는 58명, test set에는 116명의 데이터가 포함될 수 있게 전처리 하였으며, 세 개의 데이터는 모두 유사한 분포와 동일한 연령대 범위를 갖도록 하였다. 아래의 각 dataset의 age 별 샘플 개수 histogram을 통해 각 dataset이 유사한 분포 및 범위를 갖고 있음을 확인할 수 있다.

Modeling

모델을 training 시키기 위한 설정(setup)은 다음과 같다. epoch을 100으로 설정하여 model이 training set을 통해 100번 training을 수행하도록 설정하고, learning rate와 weight decay는 모두 0.0001로 설정하였다. 또한, epoch마다 training set과 validation set에 대한 loss값을 보고하도록 설정하여 modeling 이 끝난 후, epoch마다 validation set을 통해 도출된 100개의 MSE loss값을 기준으로 가장 loss값이 가장 모델을 optimized model로 선정한다.

총 406개의 실제 나이 데이터 및 MRI 데이터가 포함된 Training set으로 model을 training 시킨다. 각 epoch마다 training된 모델을 training과 validation set을 대상으로 뇌 연령 예측(brain age prediction)을 수행한다. 이 때, training set에서는 MSE loss를 보고하고 validation set에서는 MAE 및 MSE loss를 보고한 다. 아래 사진은 각 epoch마다 도출된 model을 training set에 적용했을 때 보고되는 MSE loss값을 그래프로 나타낸 것이다.

성능평가

Training을 통해 만든 모델들을 validation set에 적용하여 얻은 optimized model을 training set, validation set, test set에 각각 적용시켜 각 성능지표를 통해 모델의 성능을 평가한다. 이때의 성능지표는 MSE, MAE, R로, 총 3개이다. 이 때, R은 모델이 예측한 뇌의 연령이 해당 MRI를 찍은 사람의 실제 나이와 비교하였을 때 두 값이 얼마나 유사한지를 비교하며, 유사할수록 R값은 1에 가까워진다. 다음 그래프 사진은 validation set에서의 r값을 확인하기 위해 실제 age별 모델의 prediction 결과값을 표현한 사진이다. 사진에서 볼 수 있는 바와 같이, 기울기가 1에 가까운 것을 확인할 수 있다.

수행결과

과제수행 결과

Training set과 validation set을 통해 최종적으로 선정된 optimized model의 성능을 나타내는 각 dataset에 적용된 최종 성능 지표(R, MAE, MSE) 값은 다음 표와 같다.

최종결과물 주요특징 및 설명

최종적으로 프로젝트의 결과를 설명할 수 있는 결과물은 위 가.과제수행 결과에서도 확인할 수 있는 다 음 결과표이다.

위 표는 epoch을 모두 수행하여 얻은 model을 앞서 전처리로 분류한 각 dataset에 적용하여 얻은 R, MAE, MSE 값의 모습이다. 주요 특징은 MAE로 보다 분명하게 나타낼 수 있기 때문에, MAE 값을 통해 설명을 다음과 같이 진행한다. training set에 적용된 최종 모델은 현저히 낮은 MAE값을 보여줌으로써 training set 자체에서는 modeling 이 성공적으로 이루어져 성능이 좋은 모델로 작용함을 보여준다. 이 때, MAE의 단위는 ‘세’로, 실제 나이와 model이 prediction한 값의 차이의 절댓값을 나타낸다. 예를 들 어, 최종 model을 training set에 적용하였을 때에는 MRI scan 속 사람의 실제 나이가 34세라면, 평균적으 로 model은 32세와 36세 사이의 값으로 prediction을 할 수 있다. 실제 모델의 성능이 나타나는 test set을 바탕으로 결론지을 수 있는 model의 성능으로는, 사람의 실제 나이가 예를 들어 34세라면, 평균적으로 model은 30세와 38세 사이의 값으로 prediction이 가능하다는 결론을 내릴 수 있다. 이와 같이 해당 모델을 validation 및 test set에 각각 넣었을 때에는 실제 값의 위, 아래로 각각 약 6세, 4세를 벗어나지 않는 값으 로 prediction할 수 있다. 또한, validation과 test set에 모델을 적용했을 때의 r값은 각각 0.89와 0.87로, 우월하게 높지는 않지만, 비 교적 일반화 능력이 좋은 적절한 모델의 성능을 보여주고 있음을 확인할 수 있다. 본 과제를 통해 도출한 최종 모델을 통해 얻은 위와 같은 최종 결과물은 참고 문헌의 3D-CNN을 활용한 뇌 연령 예측 결과를 통해 확인한 뇌 연령 예측 모델의 결과와 크게 차이가 나지 않는 것을 확인할 수 있었다.

기대효과 및 활용방안

기대효과 필요 이상의 parameter와 훈

필요 이상의 parameter와 훈련 시간을 거쳐야 하는 3D-CNN모델과 비교하였을 때 보다 적은 parameter와 적은 수렴 시간을 가지므로, 2D-CNN을 통해 더 나은 성능을 발휘하는 뇌 연령 예측 모델을 발전시킬 수 있을 것으로 판단된다. Validation set에 적용하기 위한 parameter을 계속해서 최적화하거나 더 많은 dataset 및 epoch을 적용할 수 있는 환경이 주어진다면, 보다 높은 성능을 가진 model이 될 것으로 기대한 다.

활용방안

이와 같이 뇌 MRI에 아무 이상이 없는 건강한 사람, 즉 자신의 실제 나이에 알맞은 뇌의 상태를 유지하고 있는 사람의 MRI scan data로부터 model을 학습하여 model은 뇌 MRI data를 보고 해당 뇌 MRI data는 어느 나이대의 사람이 가지는 MRI data인지 prediction할 수 있는 능력을 가질 수 있다. 이는 추후, training 을 더 하거나 parameter, data sample 수 등 model이 보다 나은 성능을 가질 수 있도록 하여 더 정확한 뇌 연령을 예측할 수 있는 model이 만들어졌을 때 알츠하이머, 조현병, 파킨슨병 등 정신 및 신경 질환이 있는 사람의 뇌 MRI data를 보고 만약 ouput으로 나온 뇌 연령이 해당 환자의 실제 나이보다 훨씬 높은 연령대를 가리키고 있다면, 정신 질환이 진행 중이거나 심각한 상태라는 것을 확인 및 보고할 수 있는 활용 성이 높은 model이 될 것이다. 또한, 특히 높은 연령대의 환자가 정기적으로 뇌 연령을 확인하는 검사를 받 으러 온다고 가정할 때, 짧은 검사 기간 안에 뇌 연령 예측 model로부터 급격한 연령대 증가가 일어나는 경우 가벼운 인지장애에서 알츠하이머로의 전환을 예측하는 데에 도움이 될 것으로 결론지을 수 있다.

결론 및 제언

이번 연구 과제에서는 총 580개의 data를 가지고 2D-CNN을 진행하여 직접 model을 training 하고 각 dataset별로 성능을 확인하는 작업을 거쳤다면, 다음은 이러한 성능을 다른 방법으로 뇌 연령 예측을 진행 했을 때의 결과와 비교할 수 있는 방안이 필요하다고 생각한다. 그리하여, 추후 연구 방향으로 3D-CNN을 또한 직접 modeling하여 2D-CNN과의 성능을 직접 평가하고, 필요한 data sample 및 modeling할 때의 parameter 개수, 그리고 training하는 데에 걸리는 시간 등과 최종 optimized model의 전반적인 성능을 2D-CNN과 비교하여 modeling을 통한 성능을 직접 평가하고 비교해볼 계획이다. 이 때, 2D-CNN과 3D-CNN에 이용되는 data의 수를 늘려서 보다 많은 데이터로 model이 올릴 수 있는 최대의 성능까지 올려 epoch 또한 늘려 modeling하는 방법을 제안할 예정이다. 또한, 2D-CNN 뿐만 아니라 현재 많이 이용되고 있는 2D-slice 기반의 딥러닝 중 하나인 2D-slice-RNN과 2D-slice-attention을 이용하여 뇌 연령 예측을 추가적으로 실행하고, 마찬가지로 2D-CNN 및 3D-CNN과 성 능을 비교해보고자 한다. 추가적으로, 딥러닝 뿐만 아니라 Machine learning을 이용한 뇌 연령 예측 시스템의 방법론에 대한 스터디 를 진행하여 직접 modeling하는 과정을 통해 또한 결과물을 도출해냄으로써 이전까지 수행했던 2D 및 3D CNN을 이용하여 얻은 model과의 성능을 비교하고 추가적으로 분석해볼 예정이다.