OASIS-3 MR T1W이미지를 이용하여 치매관련 딥러닝 스터디를 시작하려고 한다.

OASIS-3이미지와 ADNI이미지 데이터 중 더욱 최신이고 다운로드가 간편한 OASIS-3이미지를 선택하였다.

 

앞서 연구하기전에 OASIS-3이미지를 다운받으려고한다.

OASIS-3이미지를 다운받으려면 아래 링크에서 권한 요청을 준비해야한다. 

그리고 데이터 엑세스 권한 요청으로 권한 요청을 받으면 몇시간 혹은 하루정도안에 권한을 받을 수 있다.

 

https://www.oasis-brains.org/

 

OASIS Brains - Open Access Series of Imaging Studies

OASIS-3: Longitudinal Neuroimaging, Clinical, and Cognitive Dataset for Normal Aging and Alzheimer’s Disease Subjects: 1098 MR Sessions: 2168 PET Sessions: 1608 Summary: OASIS-3 is a retrospective compilation of data for >1000 participants that were coll

www.oasis-brains.org

데이터 엑세스 권한 요청

권한을 받고나면 아래 사이트에 접속하여 아이디와 패스워드를 설정하고 OASIS-3데이터에 접근한다.

https://central.xnat.org/data/projects/OASIS3

 

CENTRAL

ID: OASIS3    Aka: OASIS  Description: Data Use Agreement at ** www.oasis-brains.org ** ###### Details and Download scripts available at ** www.oasis-brains.org ** Keywords: OASIS, OASIS3, OASIS-3

central.xnat.org

각 subject들은 한번 방문하지 않고 여러번 방문하며, 여러 타입의 MRI이미지를 생성해낸다.

아래 이미지는 subject의 clinical data로, 기존에 이미지를 찍기전에 수행한 설문지의 답변들로 구성한 데이터이다. 

 

OASIS-3 participants clinical data

또한 MRI관련 전체 인구에 대해서 한꺼번에 데이터를 다운받으려면

충분한 용량이 필요하기 때문에 우선 간단하게 'OAS30001'환자의 첫번째 MRI를 받아보려고 한다.

현재 해당페이지에 오른쪽을 보면 image download탭을 클릭하면 OASIS-3의 이미지 데이터 다운로드 창이 아래와같이 열린다.

여기서 우선 NIFTI파일로, T1w만 zip파일로 다운을 받으려고 한다. 환자는 OAS30001_MR_d0129이다. 

MRI image download

이후 이 데이터의 해마와 척수를 레이블링 해주기 위해서 FreeSurfer라는 프로그램을 사용할 것이다. 

FreeSurfer는 맥과 리눅스에서만 사용가능하다. 나는 맥에서 FreeSurfer를 다운받기 위해 아래 링크에 다운로드 데모 영상을 참고하였다. 

이제 친절한 데모영상을 보고 다운로드를 따라가면 된다! 매우 쉽다!

영상이 앞뒤로 움직이지 않을때는 다운로드하여서 오픈하면 영상을 자유롭게 볼 수 있다.

https://surfer.nmr.mgh.harvard.edu/fswiki/rel7downloads

 

rel7downloads - Free Surfer Wiki

FreeSurfer Version 7 Release This page describes the version 7.0.0 release of FreeSurfer. Below are tarballs and RPMs that you can download and install. read_the_release_notes_here FreeSurfer Release 7 System Requirements Summary of Requirements: Operating

surfer.nmr.mgh.harvard.edu

MRI를 다루기 위해 FrreSurfer를 다운받고 몇가지 환경세팅을 해주어야 하는데 이 과정에서 bash스크립트를 간략히 작성할 줄 알아야한다.

===============bash 간단 문법==================

bash는 터미널이 동작하는 방식을 결정하는 쉘 스크립트 언어로

변수를 설정할 수 있습니다.

운영체제 변수는 운영체제에서 사용하는 변수이고, 

쉘변수는 터미널 내에서 변수를 의미합니다. 

'데이터분석 > 영상처리' 카테고리의 다른 글

OASIS-3 MRI 영상처리 (1) - 연구 시작  (0) 2020.07.15

Colab! Python을 공부하는 사람이라면 한번쯤 들어봤을 내용이다. 

 

Colab은 Colaboratory를 줄인 말이자, 클라우드 기반 무료 Jupyter 노트북 개발환경이다. 

 jupyter 노트북과 같이 Python을 브라우저에서 실행할 수 있도록 구글이 배포하였다. 

 

그래서 구성이 필요없고 환경설정 및 구동준비가 빨리 끝나며, GPU를 무료로 사용할 수 있고, 간편하게 공유가 되어 여러명에서 수정이 가능하다. 무엇보다도 성능이 일반 개인PC보다 좋다는 강점이 있어 딥러닝 학습을 빠르게 하는데 좋다.

Git과 연동이 좋아 스터디를 진행하기 위해 사용한다면 다들 환경을 맞추는데 시간을 쏟지 않아도 되는 좋은 개발환경이다.

 

하지만, 세션 유지 기간이 12시간이기 때문에 작업하던 자료들이 날아갈 수 있다.

하지만 구글 클라우드와 연동하여 '.ipynd'확장자로 저장이 된다. 

 

 

 

 

우선 OASIS-3 데이터에 대해 살펴보면, 

OASIS-3는 longitudinal neuroimaging, clinical, cognitive, and biomarker dataset for normal aging and Alzheimer’s Disease들로 구성되어 있다. 이는 30년간 여러 프로젝트에서 모아진 100명 이상의 환자의 후향적 데이터이다. 

 

  • 참가자수: 1098명

  • 참가자 구성: 42~95세 사이의 일반인 609명, 인지장애 단계별로 구성된 환자 489명 (모든 인식자는 랜덤하게 재분배되고, 날짜를 반영하는 모든 데이터 삭제혹은 정규화)

  • 이미지 수: 2168

  • 이미지 구성: T1w, T2w, FLAIR, ASL, SWI, time of flight, resting-state BOLD, and DTI sequences (치매와 APOE status이미지 및 clinical data and dimentia outcome)

  • 이미지 처리: 많은 수의 MR이미지는 FreeSurfer로 3D volumetric segmentation이 이루어짐

  • 사용가능 이미지 종류: MRI and PET, post-processed files from PET Unified Pipeline

 

OASIS-3 데이터 (제공: OASIS-brain.org)

간략히 OASIS-3에 대한 설명을 마치고, 실제 데이터 다운로드 방법을 설명할 것이다.

 

우리는 OASIS-3에서 제공하는 database download tutorial을 보고 진행하였다. 

https://www.researchgate.net/publication/327764098_OASIS-brains_download_tutorial

 

(PDF) OASIS-brains download tutorial.

PDF | On Sep 18, 2019, Ana Maldonado published OASIS-brains download tutorial. | Find, read and cite all the research you need on ResearchGate

www.researchgate.net

 

데이터를 다운받고 사용하려면, MobaXterm을 다운로드 받아야한다. 

이것은 SSH와 같은 원격검퓨팅 toolbox이다.

 

==========================================================================

SSH란? Secure Shell Protocol로 컴퓨터끼리 서로 통신하기 위해 사용하는 프로토콜이며, 데이터 전송이나 원격제어가 목적이다.  (FTP혹은 Telnet는 네트워크를 이용해서 넘기기 때문에 보안에 위험이 있다. )

1. 데이터 전송을 위해 원격 저장소인 Github을 많이 접해보았을텐데, 소스코드를 Github에 올릴때 SSH를 이용해 파일을 전송합니다. 

2. 원격제어를 위해 친근한 AWS같은 클라우드 서비스를 사용해 보았을 것인데, 이떄 접속한 머신에 명령을 내리기 위해

SSH를 사용한다. 

 

SSH의 보안은 Private KeyPublic Key를 통해 이루어진다. 

=> Public Key는 암호화는하지만 복호화는 안되며, 이런 Public Key로 우선적으로 통신하고 컴퓨터에 복사하여 저장한다. 그리고 Public Key와 두 컴퓨터 사이에 쌍을 이루는지 확인하여 Private Key를 비교하여 서로 한쌍인지 의심한다.

 

이렇게 증명이 되면, 암호화된 채널이 형성되어 key를 이용해 메세지를 암호화 및 복호화하여 데이터를 주고받는다.

==========================================================================

뇌 이미지 영상을 이용하여 치매를 진단하는 머신러닝을 수행할 예정이다.

이번 연구를 진행하게 된 계기는 아래 두 논문을 읽으면서, 실제로 영상처리에 사용하는 영상전처리와 

모델경험을 위해 진행하게 되었다. 

 

1. CNN Model Performance Analysis on MRI Images of an OASIS Dataset for Distinction Between Healthy and Alzheimers Patients

 

2. Alzheimer Disease Detection in MRI Using Curvelet Transform with K-NN

 

간단히 초록을 제안하자면 아래와 같다.

1번 논문 초록
2번 초록

 

cohort 모집조건은 index date를 설정하는 것과, 환자를 걸러낼 필터역할을 하는 inclusion/exclusion criteria로 나누어져 있다. 

 

연구 목적에 맞는 집단의 정의를 내려 index date를 설정하고 나면, index date는 다른 inclusion이나 exclusion조건에 영향을받아서는 안된다. 또한, 그런 조건들이 index date에 영향을 주는 것들이라면 처음부터 index date에 함께 넣는 것을 고민해봐야한다.

 

 

 

이 에러는 연산이  되지 않는 특성이 입력값에 있는 경우입니다.

 

주로 str()를 이용해 데이터 타입을 확인하고 안에 factor가 있다면, 이는 연산이 되지 않습니다.

이런경우 as.character로 바꿔서 사용하고 다시 factor처리를 해주는 방법이 있습니다.

https://reader.elsevier.com/reader/sd/pii/S1323893019300619?token=05AE0904F68B2C3A91C26739C91444E7FC67DB5A0B4C658C72C1BA3A635609E9DFD385D012E57989A57BB94341D9CEFC

 

Deep learning facilitates the diagnosis of adult asthma

We explored whether the use of deep learning to model combinations of symptom-physical signs and objective tests, such as lung function tests and the …

www.sciencedirect.com

 

Summary

Background: symptom-physical signs과 objective tests의 조화에 딥러닝을 적용하였을 때, 어른 천식환자들의 초기 진단을 예측하는데 머신러닝보다 더 나은 성능을 보였다. 

Methods: Kindai 대학병원에 non-specific respiratory symptoms을 가지고 처음 방문한 566명의 환자의 후향적 데이터를 이용. logistic, SVM, DNN사용.

Results: symptom-physical sign만으로 모델을 돌리면 대략 DNN,SVM,logistic이 0.65정도의 acc를 갖는데, biochemical findings, lung function test, bronchial challenge test를 추가하여 모델을돌리면 DNN은 0.98의 높은 정확도를 보이고 SVM: 0.82, logistic은 0.94wjdeh.

Conclusions: classical machine learning에 비해 adult asthma를 진단하는데 매우 용이하다.

 

1. Introduction

외적인 기침, 숨쉬기 어려움, 쎅쎅거림 등으로 판단하면 30프로정도는 misdiagnosis

복합적 질환으로서 gold standard가 존재하지 않는다.

이전에 symptom sign score를 만듦

그렇지만 약한 증상을 가진 사람들은 추가 진단에 의해 diagnosis해야함.

 

linear regression model을 사용해서 accuracy를 보니 symptom sign score만놓고 보면 70정도.

 

*equivocal: 모호한

*non-specific: 불특정의, 일반적인

*peripheral: 말초의, 중요하지 않은 부분의

 

2. Methods

 

classifier: logistic analysis, SVM and DNN

 

초기에 tensorflow로 변수 초기화하고, 뭐 딥러닝해서 해주는 파라미터 튜닝등을 거쳤다. 블라블라

 

(1) logistic regression analysis

(2) SVM

(3) DNN

 

10 fold-stratified cross validation

 

딥러닝 연산중에 단순연산들을 병렬처리하여 연산하면 우리가 가진 CPU보다 훨씬 빠른 

성능을 보일 것이다. 그래서 GPU가 있다면 GPU를 사용하는 환경을 구축해보고 이를 사용해보는 것이 좋다.

 

우선 윈도우에서 CUDA 환경을 설정할 것이다.

 

CUDA환경이 적용되는 엔비디아 제품을 확인하기 위해 아래의 링크를 통해 확인하도록 한다.

 

https://developer.nvidia.com/cuda-gpus

 

CUDA GPUs

Recommended GPU for Developers NVIDIA TITAN RTX NVIDIA TITAN RTX is built for data science, AI research, content creation and general GPU development. Built on the Turing architecture, it features 4608, 576 full-speed mixed precision Tensor Cores for accel

developer.nvidia.com

---------CUDA란 무엇인가?---------------------------------------------------------------------------------------------------

GPU의 병렬 프로그래밍 언어로 GPU의 컴파일러 역할을 해주는 도구이다. NVIDiA가 2006년에 CUDA 솔루션을 출시하고 

병렬 처리 알고리즘을 산업 표준언어를 이용해 작성할 수 있도록 했다.

CUDA로 그래픽 API를 알지 못했던 개발자들도 사용 가능하게 만들었다.

 

그래서 CUDA 툴킷은 GPU 가속화 어플리케이션 개발에 필요한 모든 것을 제공한다. 

예를 들면, 가속화 라이브러리, 컴파일러, 디버깅과 최적화 툴, 런타임 등

 

이에 딥러닝개발자들은 CUDA를 적용시켜 라이브러리를 만들기 시작하였고 이런 이유로 개발자들이 NVIDIA GPU를 선호하게 되었다. 

참고: https://blogs.nvidia.co.kr/2018/01/16/cuda-toolkit/

-----------------------------------------------------------------------------------------------------------------------------------

*만일 GPU를 갖고 있지 않으면 아마존 AWS, 마이크로소프트 Azure 및 IBM SoftLayer를 비롯한 클라우드 서비스 제공업체에서 GPU하나를 사용하는 방법도 있다. 

 

 

1. 사용하려는 GPU의 driver를 다운받는다. 차례대로 NVIDIA® GPU drivers, CUDA® Toolkit, CUPTI, cuDNN을 깔아줍니다. 나의 컴퓨터에는 GTX 1080 Ti가 들어가 있어서 이에 맞춰 GTX 1080 Ti drivers, CUDA 8.0 Toolkit과 cuDNN을 CUDA 8.0에 맞추어 다운로드 받아주었다. 

 

 

2. tensorflow의 딥러닝을 위해 GPU를 사용하는 것으로 tensorflow-gpu를 다운받는다. 간혹 다운을 받는데 

-----------------------------------------------------------------------------------------------------------------------------------

ERROR: tensorflow 1.14.0 has requirement tensorboard<1.15.0,>=1.14.0, but you'll have tensorboard 2.1.0 which is incompatible.

-----------------------------------------------------------------------------------------------------------------------------------

이와같은 에러가 난다면 anaconda에서 pip-install tensorflow-tensorboard를 실행 후 다시 다운받아보길 권장한다.

 

 

3. 이제 다운받은 driver와 zip파일의 Path설정을 하려고 한다.

설치파일의 위치는 어디어도 상관 없지만 zip파일로 다운받아진 애들은 이름을 바꿔줍니다. 

CUPTI는 CUPTI로 바꿔주고 cuDNN은 tools로 바꿔서 CUPTI의 경로는 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras'아래에, tools는 C드라이브 아래에 붙여준다.

 

 

 

+ Recent posts