이전 게시글에서 소개한 U-Net ConvNet 모델을 사용하여 CT 촬영 이미지에서 혈관 부분을 찾아내는 작업을 수행하고자 한다.
I. CT 촬영 이미지 데이터를 입력으로 사용
II. 입력된 데이터를 U-Net ConvNet 모델의 인코더(encoder) 부분을 통해 다운샘플링하여 이미지의 특징을 추출
III. 추출된 이미지 특징은 디코더(decoder) 부분을 통해 업샘플링되며, 이를 통해 입력 이미지의 크기와 같은 크기의 출력 이미지가 생성
V. 생성된 출력 이미지는 혈관이 존재하는 위치를 나타내는 이진 마스크(binary mask)로 사용
VI. 이진 마스크를 입력 이미지와 곱해주면, 입력 이미지에서 혈관 부분만을 추출
tensorflow와 keras를 사용하여 U-Net 모델 구축 및 학습 과정을 선행
pip install tensorflow
import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Dropout, concatenate, UpSampling2D
from tensorflow.keras.models import Model
3D IRCAD (DICOM fmt)
본 연구에서 사용하고자 하는 데이터셋은 DICOM fmt이다.
https://www.ircad.fr/research/data-sets/liver-segmentation-3d-ircadb-01/
위 링크에 방문하면 다음과 같이 다운로드를 진행할 수 있다.
데이터셋(DICOM) 이미지를 처리하고자 dicom 라이브러리 설치를 진행
pip install dicom
선택한 데이터 세트의 이미지가 DICOM 형식이므로 이 데이터를 추출하는 데 파이썬 라이브러리를 사용하고 편의를 위해 이미지 처리, 크기 조정 및 PIL을 사용하여 이미지를 저장합니다.
Usage
Reading from DICOM files
import dicom def getDicomFile(filename): return dicom.read_file(filename)
obtain the image data from DICOM file
import dicom def getPixelDataFromDicom(filename): return dicom.read_file(filename).pixel_array
① PATIENT_DICOM : 실제 CT 스캔 데이터
② MASKS_DICOM : 분할 파일
(폴더 구조는 환자 마다 상이할 수 있으나 대부분 위와 유사하다고 함)
여기까지 U Net 을 사용하기 위해 DICOM, tensorflow 라이브러리 설치 및 데이터셋 다운로드가 완료되었다. 학습 전 전처리 과정은 다음 글에서 다룬다.
※ 참고
https://89douner.tistory.com/293
https://medium.com/@fabio.sancinetti/u-net-convnet-for-ct-scan-segmentation-6cc0d465eed3