top of page

[딥러닝] 딥러닝을 이용한 유방암 판별 사례




이번 글에서는 유방 조직 이미지를 분석해 유방암을 판별할 수 있는 Keras 딥 러닝 모델을 구현해 보도록 하겠습니다. 유방 조직 이미지의 세포 구조를 분석하기 위해 컴퓨터 이미지 처리 알고리즘을 활용하고 새로운 구성해 보았습니다. 유방암 진단의 정확성을 높이기 위해 딥러닝 알고리즘을 이용한 것입니다. 지금부터 유방암 예측을 위한 Keras 딥 러닝 모델 구현 방법을 설명해 보도록 하겠습니다.



먼저 유방암 조직 이미지 데이터 세트를 살펴보겠습니다. 이미지 데이터 세트를 세 세트로 분할합니다. 1. 훈련 세트 2. 검증 세트 3. 테스트 세트 그리고 유방암 조직 이미지를 Convolutional Neural Network으로 훈련하겠습니다. 유방암 조직 이미지 데이터 세트는 캐슬 Kaggle 웹사이트에서 다운로드 가능합니다.



이미지 세트는 40x로 스캔 한 162개의 이미지로 구성되어 있습니다. 이미지는 상당히 큰 사이즈여서 50*50 픽셀 277,524개 패치를 추출하였습니다. 198,738개의 유방암이 아닌 패치와 78,786의 유방암 패치로 레이블링 하였습니다. 각 클래스 수의 불균형을 발견하였습니다. 파일 이름은 다음과 같이 정의됩니다. 예를 들어, 10253_idx5_x1351_y1101_class0.png는 환자 ID : 10253_idx5 이미지를 크롭 한 x 좌표 : 1,351 이미지를 크롭 한 y 좌표 : 1,101 클래스 레이블 : 0 (0은 유방암이 아닌 경우, 1은 유방암인 경우를 나타냅니다.) 이미지를 분석하여 클래스의 차이를 식별하도록 딥러닝 모델을 훈련해 보도록 하겠습니다. | 딥러닝 모델 구축 환경 준비 캐글 사이트에서 이미지 데이터를 다운로드한 다음 파일 압축을 해제하고 각각의 디렉터리로 이미지 파일을 이동합니다. 각각의 프로그램 프로세스에 관해 설명해 보겠습니다. - 데이터 세트에 대한 설정과 모델 훈련에 관한 설정을 합니다. - 데이터 세트를 훈련, 검증, 테스트 세트로 나눠줍니다. - 유방암 여부 분류를 위한 CNN 알고리즘입니다. - 유방암 여부 분류를 위한 훈련, 검증을 위한 분류 모델입니다. 데이터 세트를 훈련:테스트를 8:2로 나눠서 사용합니다. 유방암 이미지 데이터 세트는 198,783개이며 50*50픽셀입니다. 이 데이터 세트를 메모리에 한 번에 로드하려고 하면 5.8GB가 필요합니다. 이미지를 무작위로 섞기 위해 random, 이미지를 복사하기 위해 shutil, 디렉터리 생성을 위해 os를 사용합니다. 이미지를 훈련, 검증, 테스트와 레이블에 따라 각각의 디렉터리에 분류합니다. | 유방암 예측 CNN 지금부터 CNN 아키텍처를 구현해 보도록 하겠습니다. 아키텍처를 구현하기 위해 Keras 딥 러닝 라이브러리를 사용하였습니다. 1. 3 × 3 CONV 필터 사용, VGGNet과 유사 2. 맥스 풀링 전에 여러 개의 3x3 CONV 필터 사용, VGGNet과 유사 3. depthwise separable convolution 사용, VGGNet과 다른 점 이 아이디어는 Francois Chollet이 Xception 아키텍처를 구현할 때 사용하여 유명해졌습니다. Depthwise separable convolution 특징은 다음과 같습니다. - 보다 효율적입니다. - 메모리 사용량이 적습니다. - 계산량이 적습니다. - 특정 상황에서 standard convolution 보다 성능이 우수합니다. 이미지의 너비, 높이, 컬러 정보 값을 입력하고 CONV, RELU, POOL 레이어를 추가합니다. 3 개의 DEPTHWISE_CONV, RELU, POOL 레이어도 정의합니다. BatchNormalization과 Dropout도 정의해 주었습니다. Activation 함수로는 softmax를 설정하였습니다. | 모델링 훈련 7가지 기능을 사용합니다. 1. matplotlib : matplotlib의 Agg 백 앤드를 사용하여 트레이닝 플롯을 디스크에 저장합니다. 2. tensorflow.keras : ImageDataGenerator , LearningRateScheduler , Adagrad 옵티마이저, utils을 사용합니다. 3. sklearn : classification_report, confusion_matrix를 사용합니다. 4. imutils : 이미지의 경로를 가져오기 위해 이용합니다. 5. numpy : 파이썬을 이용한 계산에 필요합니다. 6. Python : os와 argparse을 사용합니다. 딥러닝 모델 일반화 과정에서 이미지 증강 작업은 필수입니다. 이미지들을 약간씩 변형하여 학습에 투입합니다. 랜덤으로 이미지를 약간 회전, 이동 등을 하여 이미지를 생성합니다. 픽셀의 강도는 (0,1) 범위로 조정합니다. 이미지 생성기를 설정해 줍니다. 그런 다음, 이제 모델링을 해 보겠습니다. 옵티마이저를 설정하고 손실 함수를 설정합니다. 모델 훈련을 하고 테스트 데이터로 모델을 평가해 보겠습니다. 모델에 테스트 이미지를 입력하여 분류 값을 예측한 다음 결과 값을 출력합니다. 그런 다음 정확도, 감도와 특이성을 계산해 낸 다음 그 값을 출력합니다. | 유방암 이미지 예측 결과 앞에서 진행한 프로세스를 정리하면 다음과 같습니다. - 파이썬 라이브러리와 그 외 패키지를 이용하여 딥러닝 환경을 구성했습니다. - Kaggle에서 유방암 이미지를 다운로드했습니다. - 데이터 셋을 훈련/검증/테스트로 나누었습니다. 예측 결과를 살펴보면, 모델의 정확도는 83%입니다. 민감도는 83.17%이고 특이도는 85.29%입니다. 실제로는 암인데 '암이 아니다'라고 판별하는 에러와 실제로는 암이 아닌데 '암이다'라고 판별하는 에러도 주의해야 합니다. 특히 의학 관련 데이터 분석에서는 이러한 에러 관리가 매우 중요합니다.



| 요약 Keras 딥 러닝 라이브러리를 사용하여 유방암 분류를 위한 Convolutional Neural Network을 해 보았습니다. 모델링을 위해 Janowczyk and Madabhushi and Roa et al.의 유방암 이미지를 사용하였습니다. 이 이미지 세트는 무척 방대했기 때문에 Kaggle의 Paul Mooney가 이미지를 50 × 50 픽셀 이미지 패치로 변환한 이미지를 학습에 이용하였습니다. 이 데이터세트는 총 277,524개의 이미지가 있습니다. 양성(+): 78,786, 음성(-): 198,738 음성 샘플이 2배 이상 많습니다. 모델의 정확도는 83%, 감도 83%, 특이도 85%를 얻었습니다.





Comments


bottom of page