본문 바로가기
딥러닝/CV 논문

[Classification]FuCiTNeT

by 혜 림 2021. 9. 16.

COVIDGR Dataset and COVID-SDNet Methodology

for Predicting COVD-19 Based on Chest X-Ray Images

 

초록 Abstract

 COVID-19를 검사하는 방법은 크게 RT-PCR, CT, Chest X-Ray(이하 CXR) 로 나눌 수 있다. 세 가지 방법중 CXR는 time/cost 효율적이며 대부분의 병원에서 이용가능하다는 장점이 있다. 따라서 CXR 이미지를 DNN 구조를 거쳐 classification 하고자 한 것이 본 논문의 목표이다. 그러나 현존하는 데이터셋은 편향되고 상이하다는 문제가 있다. 따라서 본 논문은 (1) 기존의 COVID-19 분류 모델의 high sensitivites 이해, (2) 심각성에 따른 라벨을 포함한 데이터 셋 구축, (3) 마지막으로 COVID Smart Data based Network(이하 COVID-SDNet) 을 통해 COVID-19 분류 세 가지의 task를 수행하였다. 

 

 

1. Introduction


@ COVID-19 diagnosis method

 

* RT-PCR? 보건소 가면 코 쑤시는 거 

Method Characteristic
CT scans-based assessment - 모든 병원에 필요한 장비가 구축돼있지 않음
- 15분의 decontamination 타임이 필요함 
RT-PCR test - 검사를 위한 도구를 마련하기 어려움
- 12 시간이 걸림 
Chest X-Ray(CXR) - 검사를 위해 필요한 장비 is transportable
- 한 환자당 15초 소요됨

 

=> 따라서 CXR 을 이용해서 COVID-19 검사를 하는 것이 가장 time/cost effective

 

@ COVID-19 severity 기준

 

 폐 부종을 평가하는 스코어(RALE)를 접목시킴으로써 쉽게 severity를 측정하고자 했다. 

 

 RALE score 는 consolidation, ground glass opacities 를 기준으로 각 폐에 0-4 사이의 점수를 준다. 

 아래 사진에서 볼 수 있듯이 흉부 사진을 8개의 구역으로 나누고, 한 구역에 위에서 언급했던 특징(consolidation, ground glass opacities)가 나타나면1점씩 주는 방식이다.  

 

Figure 1

Normal      0

Mild         1-2

Moderate  3-5

Severe      6-8

 

@ 왜 기존의 COVID-19 분류 모델은 highly sensitivites 한가? 

 

최근 연구는 95%의 민감도를 보인다. 이는 전문가보다도 높은 수치인데, 이렇게 높은 수치를 얻을 수 있었던 것은 데이터 셋 때문이다. COVID-19 Image Data Collection 에는 15개의 국가에서 수집되었으며, 대부분이 음성이었고 양성인 경우 severe한 상태의 환자였기 때문에 굉장히 "편향되어 있고, hetereogeneous" 하다. 따라서 덜 심각한 환자의 데이터 셋을 구축하는 것이 무엇보다도 필요했다. 

 

=> 좋은 질의 데이터는 좋은 성능의 모델을 보장한다. 본 논문에서 소개하고 있는 COVID-SDNet에서 "Smart Data"는 그 아이디어에서 기인하여, 질적으로 좋은 데이터 셋을 구축하고 이를 이용하였음을 의미한다. 

 

 이렇게 구축한 데이터를 COVIDGR-1.0이라고 한다. Normal-PRC+, Mild, Moderate, and Sever의 네 가지 심각성의 정도를 포함하고 있다.  

 

@ 그 데이터 셋을 이용하여 훈련한 COVID-SDNet

 

다양한 전처리 과정과 더불어 GAN의 기법을 이용하여 classfication을 훈련시켰다고 한다.

 

2. Related Works


A. Datasets

 - 서로 다른 장비로 찍은 사진들이 많기에hetereogeneous

 - 앞에서 찍은 것과 뒤에서 찍은 것은 같은 class로 구분할 수 없음  

 - Covid 관련 Dataset에서는 negative한 케이스를 모으기가 어려워 기타 폐 데이터 셋에서 negative한 클래스를 따온다고 한다. 그러니까 폐렴 데이터 셋에서 negative한 클래스를 가져와서 Covid Dataset으로 이용한다는 뜻이다. 

 

=> 기존의 데이터 셋에는 이러한 문제점들이 있으니 더욱 dataset의 구축이 필요하다. 

Table 1

B. DL Classification Models

 기존의 연구에서는 정확도가 90%에 가깝게 나왔으며 실제 전문가들은 약 70%의 성능을 낸다. 

 기존의 연구에서 이용한 데이터 셋에는 positivie이 압도적으로 많았던 것을 생각하면, DL이 더 쉬운 dataset을 맡았기 때문에 좋은 성능을 낸 건 당연한 결과인 셈이다. 

Table 2

 

C. DL Classification Models with Explanation Approaches

그래드 캠(grad cam)을 이용해서 CXR 이미지의 어떤 부분으로 인해 모델이 class로 구분한 이유를 파악하고자 한 선행 연구가 있었다. 

 

3. COVIDGR-1.0: Data ACQUSITION, ANNOTATION and ORGANIZATION


 모두 동일한 X-Ray 장비를 이용하고 오직 PA(Posterior Anterior) 만 고려한다. 

 negative, positive 이렇게 두 클래스로 구분한다. 앞에서 severity를 설명했는데, 그 label이 달린 것은 아니고 positive 클래스에 다양한 severity의 흉부 사진이 있다고 한다. 

 데이터 셋의 분포는 아래 그림과 같다. 

Table 3

 

4. COVID-SDNet Methodology


 플로우 차트는 아래와 같다. 크게 3가지의 과정으로 분리할 수 있는데 1과 2는 좋은 성능을 내기 위해서 필요한 전처리 과정이라고 생각하면 된다. 

Figure 2

 

A. Segmentation - Based Cropping

 

 CXR을 찍을 때 장비 브랜드가 다르면 장비가 찍는 신체의 영역도 달라지는 모양이다..! 어떤 거는 어깨까지 찍어버리고 어떤 거는 그것보다 더 넓게 찍어버리고 뭐 이런식.

 그래서 인풋 이미지가 서로 다른 신체의 영역을 잡아버린다면 이 역시 모델 성능에 영향을 줄 수 있기 때문에 이를 사전에 방지하기 위해서 lung 만 segment 하여 input으로 넣어준다. 

 이때 이용한 것은 U-Net segmentation 이며, TuberCulosis Chest X-ray Image Dataset과 RSNA Pneumonia CXR challenge dataset 을 이용해서 사전 학습을 시켰다고 한다. 

 

 segment 된 좌우 폐가 모두 담길 수 있는 가장 작은 rectangle로 이미지를 잘랐다고 한다. 

 그리고 혹시 모르니 segment 한 이미지에서 좌우 상하로 2.5 픽셀씩 더해줘서 필요한 정보의 손실을 막고자 했다고 한다. 

 

Figure 3

B. Class - Inherent Transformations Networks

 

처음에는 Transformation? Transformation? 혹시 트랜스포머인가,, 역시 최신 논문 <- 이라고 생각했는데 그냥 진짜 transformation이었다;;;; 레알 그냥 이미지를 바꾼 것.. agument 인 셈이다. 

 

 

FuCitNet 

  

FuCitNet 

 이 FuCitNet이 먼저 어떤 배경에서 나왔고, 어떤 모델인지 먼저 살펴보자! 

[배경]

 DL에서는 적은 수의 데이터 셋이 야기하는 과적합이 늘 골칫덩어리였다.  regularization, drop out 등등 과적합을 해결하기 위해서 다양한 기법이 고안되었다. 하지만 FuCiTNet 모델은 GAN을 과적합을 해결하기 위한 하나의 파츠로 이용하자는 아이디어를 내게 된다. 

[모델]

 G를 통해서 원래 데이터 셋 전체의 분포를 흉내내는 것이 아니라, 각 특징별 데이터 분포를 흉내내도록 한다. 즉 K개의 class가 있다면 k 개의 생성기와 분류기를 만드는 것이다. 이를 통해서 전체 데이터 셋이 아니라, 클래스별로 가지고 있는 특징을 반영한 데이터 셋을 생성하게 된다. 

FuCitNet figure 1

 한 이미지가 들어오면 k 개의 G를 이용해서 총 k개의 transformation을 만든다. 
 이후에는 k개의 이미지를 D를 통해서 분류하게 된다. 이때 어떤 class 로 transformation을 했느냐에 따라서 어떤 class가 ground truth label이 되는가가 달라진다. 

[loss function]

그렇다면 어떤 loss function으로 훈련하는가?

GAN에서는 G와 D 동일한 lss function 을 minimize 하는가 maximize 하는 가의 차이만 있었다면 이 FuCiTNeT에서는 다른 Loss function을 이용한다. 

 먼저 D의 경우 simple 하다. 

Eq.2

 다음으로 G의 경우 뭐가 좀 많다. 
 $L_{MSE}$는 이제 입력 이미지와 생성된 이미지 사이의 pixel wise 차이라고 보면 된다. 
 $L_{perteptual}$ 은 perceptual loss로, 이미지 생성 쪽에서 도입된 loss 인 것 같다. 앞에서 언급한 $L_{MSE}$ 처럼 픽셀 하나하나 비교해서 loss 를 계산하는 것 대신, 사전 훈련한 VGG16을 이용해서 feature map 사이의 차이를 계산한다.
$L_{CE}$ 는 위의 D에서 본 그대로  


Eq.3

 초고속 논문 리뷰 이것도 장장 20장인데..

 

 FuCiTNet은 각 클래스 별로 G가 있어서 이미지를 생성하다 보니, 본 논문에서는 이거를 Class의 특성을 반영한다는 점에 주목해서 Class-Inherent Transformation이라고 하는 것 같다. 

 

 

 이 논문에서 이용한 FuCiTNet의 G의 구조는 5개의 동일한 residual block로 이루어졌다고 한다. 

 D의 경우 ResNet-18을 이용했다고 한다. 

 구체적인 구조가 알고 싶은 경우 아래 본문 내용 참조 

 

 

결과는 아래와 같다. 우리 눈에 보기에는 달라보이지 않지만 컴퓨터는 다르게 분류한다고 한다. 

Figure 4 

 

 

 그런데 여기서 응용한 것은 앞에서 언급한 FuCiTNet 구조에서 조금 더 나아간다. 아무래도 목표가 달라서 그런듯하다. 

 본 논문에서 이용하는 데이터 셋은 class가 negative, positive 두 개밖에 없기 때문에 G도 두 개이다. 각각을 $G_{p}, G_{n}$이라고 하겠다. 

 

 이미지 $x_{i}$가 있으면 두 개의 G에 의해 ($x_{i}^{+}, x_{i}^{-}$) 페어를 얻을 수 있다. 

 눈치챘겠지만 전자가 $G_{p}$에 의해서 생성된 것, 후자가 $G_{n}$에서 생성된 것이다. 

 

 모든 데이터 셋이 이 과정을 거쳤다면 이제 우리는 총 4개의 클래스가 있다: (P+, P-, N+, N-) 

 기존에 positive이었는데 $G_{p}$를 거쳤다면 P+ 이런 식으로 notate한다. 

 

 이러고 다음 섹션으로넘어간다. 

 

C. Learning and Inference Based on the Funsion of CNN Twins

 

 위를 통해서 생성한 이미지를 가지고 우리는 분류를 학습하게 된다.  그 말인 즉슨, input은 기존 이미지 $x_{i}$만 들어가는 것이 아니고, 2)를 거쳐서 생성한 $x_{i}^{+}, x_{i}^{-}$ 모두 들어가게 되므로 전체 데이터 셋의 두배가 된 셈이다. 

 ResNet을 이용했고, 구체적은 구조는 아래 본문 내용을 참고하길 바란다. 

 

 이 ResNet은 (P+, P-, N+, N-) 4가지 클래스를 구분하기 위해 확률벡터를 output으로 내게 된다. $\theta$ = ($\theta_{P+}, \theta_{P-}, \theta_{N+}, \theta_{N-}$). 

 

 그러면 이제 ($x_{i}^{+}, x_{i}^{-}$) 를 각각 예측하게 되므로 우리가 원하는 original image $x_{i}$는 어떻게 예측하게 되느냐? 

 

 

 요롷고롬 된다. 

 (a)와 (b)는 이해하기 쉽다. 만약 이해가 어렵다면 내가 글쓰는 재주 or 말하는 재주가 없는 것..ㅠㅠ

 (c)의 경우 찬찬히 보면 쉽다. theta 대신에 다른 기호가 확률벡터를 나타내기 위해서 사용되었을 뿐이다. 

 

5. Experiments and Results


1) 선행연구인 COVD-CAPS를 이용해서 본 연구에서 소개한 모델과 비교하고 있다. (동일한 데이터 셋 이용)

Table 4

2) 본 논문에서 소개한 COVID-SDNet의 어떤 section이 필요없었는지, essential했는지 비교하고 있다. 

Table 5

3) grad cam 을 통해서 심각성 정도에 따라 분류에 영향을 주었던 파트를 이해하고자 한다. 

 

 갈수록 why positive가 커지고 있다! negative는 작아지는 듯 커진다..

 실은 문외한인 나는 original image를 봐도 아무것도 모르겠다. 

 

 신기한 그래드 캠~~ 그래드 캠에 관한 논문을 읽을 시간도 있었으면 좋았겠지만 일주일에 하기엔 역부족이었다. 그리고 나는 개강한 사람..ㅜㅜ

6. Conclusion


 논문 요약 + 앞으로의 연구를 기대하겠다.

 

 

 

[사족]

 

 오늘이 꿀팁: medical image 논문을 읽을 때 꼭 컬러로 프린트하자. 흑백으로 프린트하면 아무것도 알아볼 수가 없다. CV 논문은 안 이랬는뒈..

 오랜만의 논문 리뷰! 논문 다시 읽으니까 재밌었다. 또 읽고 싶은데 뭐가 좋은 논문인지 난 잘 모르겠다. 

 

 

[논문]

https://arxiv.org/pdf/2006.01409.pdf

https://arxiv.org/pdf/2005.08235.pdf

댓글