README.md 12.1 KB

X-ray 이미지 및 딥러닝을 이용한 병변 인식

- 팀원  소개     :  강태구, 박기범, 박장선, 손주혜

- 산학 멘토님 :  송세헌 멘토님

- 지도 교수님 :  이승규 교수님


1. 배경

최근 인공지능 기술이 급부상하면서 의료 영역 내에서도 적용 범위가 확대되어 가고 있다. 특히나 이미 딥러닝을 이용한 신경망은 의료영상 분석 분야에 적용하여 효율성이 증명되었다. 의료영상을 이해하는 면에서 최근의 기계 학습의 발전은 Deep Learning에서 의료영상의 패턴을 식별 및 분류 연구에 기여하고 있다. 의료영상 분석에 인공신경망을 기반으로 하는 CNN(Convolutional Neural Network) 알고리즘이 본격적으로 사용되기 시작하면서 다양한 질환 분석 연구 사례가 급증하고 있다. 이러한 연구 등으로 인공지능 기술을 영상의학 검사의 영상 분석에 도입하여, 이전의 의료진들이 이미지를 직접 보며 판단하는 아날로그적 방식에서, 인공지능의 도입으로 전문의를 대체 가능할 정도의 수준까지 이르고 있다.
하지만 긴급을 요하는 의료현장에서 Chest X-ray 이미지의 병변을 판단하기 위해 Deep learning network model을 설계 및 구현 하기에는 어려움이 많다. 정상 Chest X-ray 이미지와 비교해 특정 질병은 현저하게 Chest X-ray 이미지가 부족하기도 하고, Medical Image 특성상 병변에 따라 좌우 반전, 상하반전과 같은 Data augmentation을 사용할 수 없어, Deep learning network model에 유용한 Data augmentation 방법을 찾기도 쉽지 않다. 또한 데이터의 불균형으로 Deep learning network model의 Depth, 파라미터 튜닝에 따른 학습 성능 차이가 날 가능성이 높으며, 공개 및 검증된 데이터셋을 활용하여 만든 사전학습모델(Pre-trained model)이 다른 Chest X-ray 이미지에 좋은 결과를 낼 것이라고 예상하기도 어렵다.
위와 같은 문제를 인식하여 검증된 NIH Chest X-ray 데이터를 통해 병변 판단에 유용한 Data augmentation 방법을 찾고, 여러 Deep learning network model을 비교 및 검증하여 가장 유용한 Depth, 파라미터를 모색하여 사전학습모델(Pre-trained model)을 만들고, 만들어진 사전학습모델(Pre-trained model)을 Fine-tuning 하여 로컬 Chest X-ray 이미지의 심장비대증에 대한 병변 판단 binary classification 연구를 수행하고자 한다.

2.목표

Deep learning network model에 NIH Dataset을 학습시키고 14개의 병증에 대한 Multi-classification 을 성공시킨다. Multi-classification에 한계가 발견될 시, 특정 병증에 대해서 Positive labelling을 하고, 이외의 모든 상태에 대해 Negative labelling을 적용함으로써 필터링 할 수 있는 것을 목표로 한다.
위 프로젝트를 바탕으로 X-ray 이미지에 적합한 데이터 증강(Data augmentation) 방법과 딥러닝 네트워크 모델(Deep learning network model)을 알 수 있으며, 사전학습모델(Pre-trained model)의 Imagenet 가중치 사용 여부에 따른 로컬 Chest X-ray 이미지의 병변 판단 성능을 보여줌으로써, 최적의 Data augmentation, Deep learning network model 방법을 제시하는 것을 목적으로 한다. 이로써 긴급을 요하는 의료현장에서 병변판단을 위한 물리적인 시간 문제 해결 뿐 아니라 응급상황을 선별하는데에 적용하거나 1차적 진단 도구로 활용될 수 있으며 향후 흉부 방사선 자동판독기술의 고도화 연구로 연결될 수 있을 것으로 기대된다.

3. 프로젝트 역할 분담 및 활동 내용

       (NIH Chest X-Ray Dataset 용량이 너무 커 프로젝트 활동에 대해서 github 주소로 대체하였습니다)

1) Data augmentation

      강태구 : https://github.com/TaegooKang/Capstone-Design
      박장선 : https://github.com/DANBEE-MASTER/2021-1-capstone-design1

2) Making deep learning network model

      박기범 : https://github.com/kbpark9898/CapstoneDesign1_model
      손주혜 : https://github.com/KeyboarderSon/X-Ray-ConvNet


4. 프로젝트 활동 상세 내용

1) Data augmentation

(1) 일반적인 Augmentation

Data augmentation 방법에 따른 성능 차이를 살펴보기 위해, X-ray 이미지 정상 2000장, 심장비대증 1000 → 2000장으로 이미지 증대 시킨 이후, DenseNet121 네트워크 모델을 사용하여 학습시킨 이후 Test set에 대한 accuracy 와 클래스에 따른 ROC curve와 AUC 값을 확인하였다.

다음은 가장 성능이 안좋았던 이미지증대 방법인 가우시안 블러, 가장 성능이 좋았던 이미지증대 방법인 ~5% 랜덤 회전에 대한 Feature Map 추출과 그에 따른 Grad-Cam이다. Grad-Cam을 확인해 보면 같은 이미지라도 네트워크가 전혀 다른 곳을 바라보고 있다는 것을 확인할 수 있다.
(2) CAM을 이용한 Augmentation

CAM(Class Activation Map)은 딥러닝 모델이 이미지의 어느 부분을 보고 결과를 예측하는지를 해석하는데 사용되는 방법이다. CAM을 이용해서 네트워크가 병변 영역으로 인식하는 부분을 떼어내 정상인 이미지와 합성해 가상의 병변 이미지를 생성해 데이터를 증강했다.

그림6에서와 같이 심장비대증 이미지와 CAM을 이용하여 딥러닝 모델이 병변 부위로 인식하는 부분을 패치로 떼어낸다. 그리고 이 패치와 정상인 이미지를 합성하여 그림7과 같은 심장비대증 이미지를 생성한다.

2) Making deep learning network model

(1) 모델별 최적의 Depth 연구

각 자료에서 테스트 및 비교한 모델의 종류는 한정적이었지만, 왜 이러한 모델들을 이용하여 연구를 진행 했는지에 대한 근거가 불명확하였다. 또한, 최종적으로 사용하고자 하는 심장비대증을 기준으로 binary classification 되어있는 데이터였는데, 이는 기존 연구 자료에서 연구된 NIH dataset에 대해 학습된 모델의 성능이 그대로 재현되지 않을 가능성이 존재했다. 특히 기존의 연구에서 사용된 pretrained model은 ImageNet dataset을 사용하여 pretrain 되었으나, 이러한 사전학습이 현재 심장 비대증을 판별하기 위해 적합한 사전학습인지가 불분명했다. 또한, 최종적으로 사용될 dataset은 NIH dataset에 비해 절대적인 양이 적었기 때문에 과적합을 최소화시킬수 있는 조건을 찾는것이 필요했다.
따라서 대표적인 모델들에 대해 가장 학습 효율이 좋은 모델의 깊이가 어느정도인지 찾고, 더불어 pretrain의 효용성을 따져 가장 성능이 좋은 모델을 찾고자 하였다.

ResNet 18 34 50 101
ROC_AUC 0.51 0.52 0.56 0.50


DenseNet 121 169
ROC_AUC 0.54 0.53

ResNet 에서는 ResNet50이 가장 좋은 테스트 결과를 보였으며, 50 계층 이상의 depth를 가질 경우 과적합 현상이 심해져 테스트 결과가 떨어졌다.
마찬가지로, DenseNet에서는 DenseNet121 모델이 169 모델에 비해 성능이 좋았다. 이는 ResNet과 같이 과적합 현상에 의한 것으로 유추되었다. 따라서 121과 169 모델의 성능을 비교한 뒤, 더 깊은 계층의 DenseNet 모델에 대해서는 학습 및 테스트를 진행하지 않았다.
이와 같은 결과에 따라 이후에 진행되는 연구에 ResNet50과 DenseNet121 모델을 사용하였다.

(2) Pretrain이 미치는 영향 연구

앞선 모델별 학습에서 선별된 ResNet50대해 각 dataset 별로 pretrain된 모델을 사용했을 경우 나타나는 영향을 연구했다.

본 과정에서 사용된 사전학습 모델은 다음과 같다.

  • 최초 학습시 ImageNet에 대해 pretrain되지 않은 상태에서 학습을 진행한 모델 (모델 A)
  • ImageNet에 대해 pretrain된 상태에서 학습을 진행한 모델 (모델 B)


본 과정에서 학습시킨 모델은 다음과 같다.

  • 모델 A에 NIH dataset을 학습시키고, 이에 대해서 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 1)
  • 모델 B에 NIH dataset을 학습시키고 이에 대해서 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 2)
  • 모델 B에 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 3)
  • 아무것도 학습시키지 않은 모델에 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 4)

Model 1 2 3 4
Auc(%) 69 64 61 44


resnet은 50, densenet은 121의 depth인 경우 모델이 흉부 X-ray 데이터에 최적의 성능을 보였으며, 이 이상의 depth를 가질 경우 과적합 현상에 의해 오히려 테스트 성능이 저하되었다.
또한 NIH dataset을 최초로 학습시킬 경우 ImageNet에 대해 pretrain 되어있지 않은 모델이 추후에 새로운 흉부 X-ray dataset을 학습 및 테스트 했을때 더 좋은 성능을 나타냈다. 이와 더불어 NIH dataset의 pretrain은 다른 흉부 X-ray dataset의 학습에도 긍정적인 영향을 끼쳤다. 따라서, 유사한 형태의 X-ray dataset이 아니라면, 그 dataset을 pretrain 시키는 것은 오히려 모델의 최종 성능에 악영향을 끼친다는 결론을 지을 수 있었다.

5. 결론

Chest X-ray 이미지에 대해서 다양한 Data augmentation 진행 결과 좌우회전, 상하반전, 가우시안 블러와 같은 Data augmentation 방법은 이미지 Feature 을 감소시키기 때문에 하지 말아야 할 Data augmentation 방법이며, 이미지 Feature를 어느 정도 유지해주기만 한다면, CAM을 이용한 Image Mix와 같은 Data augmentation 방법 또한 데이터 양에 대한 갯수를 맞추어줌으로써 네트워크 성능을 올릴 수 있다는 것을 확인했다.
Deep learning network model은 모델의 특징, Depth에 따라 과적합 현상으로 오히려 성능이 저하된 것을 알 수 있었다. 이에 따라 resnet은 50, densenet은 121 네트워크 모델이 가장 성능이 좋았다. 공통적으로 두 모델은 imagenet의 weight를 initialization에 사용하지 않았을 때가 더 높은 성능을 보였다. NIH dataset으로 pretrain을 한 뒤 이 weight를 심장비대증에 대한 binary classification에 불러들여 사용하였을 때 가장 좋은 성능을 발휘한 것을 알 수 있었다.
본 연구를 통해 Chest X-ray 이미지의 병변을 판단하기 위한 유용한 방법을 제시함으로써 긴급을 요하는 의료현장에서 병변판단을 위한 물리적인 시간 문제 해결 뿐 아니라 응급상황을 선별하는데에 적용하거나 1차적 진단 도구로 활용될 수 있으며 향후 흉부 방사선 자동판독기술의 고도화 연구로 연결될 수 있을 것으로 기대된다.

6. 문서 및 보고서

- 팀원별 프로젝트활동 주간보고서
- 면담 및 멘토보고서
- 보고서모음 (기초조사서, 중간보고서, 최종보고서)