박장선

Update README.md

Showing 1 changed file with 42 additions and 5 deletions
......@@ -28,16 +28,53 @@ Deep learning network model에 NIH Dataset을 학습시키고 14개의 병증에
## 4. 프로젝트 활동 상세 내용
#### 1) Data augmentation
###### (1) 일반적인 Augmentation
##### (1) 일반적인 Augmentation
Data augmentation 방법에 따른 성능 차이를 살펴보기 위해, X-ray 이미지 정상 2000장, 심장비대증 1000 → 2000장으로 이미지 증대 시킨 이후, DenseNet121 네트워크 모델을 사용하여 학습시킨 이후 Test set에 대한 accuracy 와 클래스에 따른 ROC curve와 AUC 값을 확인하였다. <br/>
![](http://khuhub.khu.ac.kr/2021-1-capstone-design1/LSK_Project1/raw/master/README_IMG/01.PNG)
다음은 가장 성능이 안좋았던 이미지증대 방법인 가우시안 블러, 가장 성능이 좋았던 이미지증대 방법인 ~5% 랜덤 회전에 대한 Feature Map 추출과 그에 따른 Grad-Cam이다. Grad-Cam을 확인해 보면 같은 이미지라도 네트워크가 전혀 다른 곳을 바라보고 있다는 것을 확인할 수 있다. <br/>
###### (2) CAM을 이용한 Augmentation
CAM을 이용해서 네트워크가 병변 영역으로 인식하는 부분을 떼어내 정상인 이미지와 합성해 가상의 병변 이미지를 생성해 데이터를 증강했다. <br/>
![](http://khuhub.khu.ac.kr/2021-1-capstone-design1/LSK_Project1/raw/master/README_IMG/02.PNG)
##### (2) CAM을 이용한 Augmentation
CAM(Class Activation Map)은 딥러닝 모델이 이미지의 어느 부분을 보고 결과를 예측하는지를 해석하는데 사용되는 방법이다. CAM을 이용해서 네트워크가 병변 영역으로 인식하는 부분을 떼어내 정상인 이미지와 합성해 가상의 병변 이미지를 생성해 데이터를 증강했다. <br/>
![](http://khuhub.khu.ac.kr/2021-1-capstone-design1/LSK_Project1/raw/master/README_IMG/03.PNG)
그림6에서와 같이 심장비대증 이미지와 CAM을 이용하여 딥러닝 모델이 병변 부위로 인식하는 부분을 패치로 떼어낸다. 그리고 이 패치와 정상인 이미지를 합성하여 그림7과 같은 심장비대증 이미지를 생성한다. <br/>
#### 2) Making deep learning network model
###### (1) 모델별 최적의 Depth 연구
###### (2) Pretrain이 미치는 영향 연구
##### (1) 모델별 최적의 Depth 연구
각 자료에서 테스트 및 비교한 모델의 종류는 한정적이었지만, 왜 이러한 모델들을 이용하여 연구를 진행 했는지에 대한 근거가 불명확하였다. 또한, 최종적으로 사용하고자 하는 심장비대증을 기준으로 binary classification 되어있는 데이터였는데, 이는 기존 연구 자료에서 연구된 NIH dataset에 대해 학습된 모델의 성능이 그대로 재현되지 않을 가능성이 존재했다. 특히 기존의 연구에서 사용된 pretrained model은 ImageNet dataset을 사용하여 pretrain 되었으나, 이러한 사전학습이 현재 심장 비대증을 판별하기 위해 적합한 사전학습인지가 불분명했다. 또한, 최종적으로 사용될 dataset은 NIH dataset에 비해 절대적인 양이 적었기 때문에 과적합을 최소화시킬수 있는 조건을 찾는것이 필요했다. <br/>
따라서 대표적인 모델들에 대해 가장 학습 효율이 좋은 모델의 깊이가 어느정도인지 찾고, 더불어 pretrain의 효용성을 따져 가장 성능이 좋은 모델을 찾고자 하였다. <br/>
<br/>
|ResNet|18|34|50|101|
|:---------:|:---------:|:---------:|:---------:|:---------:|
|ROC_AUC|0.51|0.52|0.56|0.50|
<br/>
|DenseNet|121|169|
|:---------:|:---------:|:---------:|
|ROC_AUC|0.54|0.53|
ResNet 에서는 ResNet50이 가장 좋은 테스트 결과를 보였으며, 50 계층 이상의 depth를 가질 경우 과적합 현상이 심해져 테스트 결과가 떨어졌다. <br/>
마찬가지로, DenseNet에서는 DenseNet121 모델이 169 모델에 비해 성능이 좋았다. 이는 ResNet과 같이 과적합 현상에 의한 것으로 유추되었다. 따라서 121과 169 모델의 성능을 비교한 뒤, 더 깊은 계층의 DenseNet 모델에 대해서는 학습 및 테스트를 진행하지 않았다.<br/>
이와 같은 결과에 따라 이후에 진행되는 연구에 ResNet50과 DenseNet121 모델을 사용하였다.<br/>
##### (2) Pretrain이 미치는 영향 연구
앞선 모델별 학습에서 선별된 ResNet50대해 각 dataset 별로 pretrain된 모델을 사용했을 경우 나타나는 영향을 연구했다.<br/>
- 모델 A에 NIH dataset을 학습시키고, 이에 대해서 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 1) <br/>
- 모델 B에 NIH dataset을 학습시키고 이에 대해서 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 2) <br/>
- 모델 B에 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 3) <br/>
- 아무것도 학습시키지 않은 모델에 새로운 흉부 X-ray dataset을 학습시켜 테스트한 경우 (모델 4) <br/>
<br/>
|Model|1|2|3|4|
|:---------:|:---------:|:---------:|:---------:|:---------:|
|Auc(%)|69|64|61|44|
<br/>
resnet은 50, densenet은 121의 depth인 경우 모델이 흉부 X-ray 데이터에 최적의 성능을 보였으며, 이 이상의 depth를 가질 경우 과적합 현상에 의해 오히려 테스트 성능이 저하되었다. <br/>
또한 NIH dataset을 최초로 학습시킬 경우 ImageNet에 대해 pretrain 되어있지 않은 모델이 추후에 새로운 흉부 X-ray dataset을 학습 및 테스트 했을때 더 좋은 성능을 나타냈다. 이와 더불어 NIH dataset의 pretrain은 다른 흉부 X-ray dataset의 학습에도 긍정적인 영향을 끼쳤다. 따라서, 유사한 형태의 X-ray dataset이 아니라면, 그 dataset을 pretrain 시키는 것은 오히려 모델의 최종 성능에 악영향을 끼친다는 결론을 지을 수 있었다. <br/>
## 5. 결론
Chest X-ray 이미지에 대해서 다양한 Data augmentation 진행 결과 좌우회전, 상하반전, 가우시안 블러와 같은 Data augmentation 방법은 이미지 Feature 을 감소시키기 때문에 하지 말아야 할 Data augmentation 방법이며, 이미지 Feature를 어느 정도 유지해주기만 한다면, CAM을 이용한 Image Mix와 같은 Data augmentation 방법 또한 데이터 양에 대한 갯수를 맞추어줌으로써 네트워크 성능을 올릴 수 있다는 것을 확인했다. <br/>
Deep learning network model은 모델의 특징, Depth에 따라 과적합 현상으로 오히려 성능이 저하된 것을 알 수 있었다. 이에 따라 resnet은 50, densenet은 121 네트워크 모델이 가장 성능이 좋았다. 공통적으로 두 모델은 imagenet의 weight를 initialization에 사용하지 않았을 때가 더 높은 성능을 보였다. NIH dataset으로 pretrain을 한 뒤 이 weight를 심장비대증에 대한 binary classification에 불러들여 사용하였을 때 가장 좋은 성능을 발휘한 것을 알 수 있었다. <br/>
......