[논문리뷰] CovidCTNet리뷰

Minguinho_zeze·2021년 8월 25일
1

논문 리뷰 + 구현

목록 보기
5/21
post-thumbnail

안녕하세요, 밍기뉴와제제입니다.

오늘 리뷰할 논문은 "CovidCTNet: An Open-Source Deep Learning Approach to Identify Covid-19 Using CT Image"입니다.

CT로 폐를 촬영 후 얻은 이미지를 가지고 코로나 양성, 음성을 판단하는 CovidCTNet에 관한 논문인데요, 학술적으로 깊게 파고든 논문은 아니고 "기존 기술을 이렇게 응용할 수 있다"고 말해주는 논문입니다.

유명한 논문은 아니지만 그래도 흥미를 가지고 한 번은 읽어볼만한 논문이라 생각됩니다.

그러면 지금부터 논문 리뷰를 시작하겠습니다.

저자


제가 따로 저자에 대해 말하는 이유는 저자가 아주 많기 때문입니다.

Tahereh Javaheri, Morteza Homayounfar, Zohreh Amoozgar, Reza Reiazi, Fatemeh Homayounieh, Engy Abbas, Azadeh Laali, Amir Reza Radmard, Mohammad Hadi Gharib, Seyed Ali Javad Mousavi, Omid Ghaemi, Rosa Babaei, Hadi Karimi Mobin, Mehdi Hosseinzadeh, Rana Jahanban-Esfahlan, Khaled Seidi, Mannudeep K. Kalra, Guanglan Zhang, L.T. Chitkushev, Benjamin Haibe-Kains, Reza Malekzadeh, Reza Rawassizadeh

많은 딥러닝 논문을 읽어봤지만 이렇게 많은 저자 리스트는 처음 봤습니다.

물론 저자가 많을 수는 있습니다. 그런데 이들의 소속기관 구성이

Health Informatics Lab, Metropolitan College, Boston University, Boston, US
Department of Biomedical Engineering, Amirkabir University of Technology, Tehran, Iran
Department of Radiation Oncology, Massachusetts General Hospital, Harvard Medical School, Boston, US
Princess Margaret Cancer Centre, University of Toronto, Toronto, Canada
Department of Medical Biophysics, University of Toronto, Toronto, Canada
Department of Medical Physics, School of Medicine, Iran university of Medical Sciences
Department of Radiology, Massachusetts General Hospital, Harvard Medical School, Boston, US
Joint Department of Medical Imaging, University of Toronto, Toronto, Canada
Department of Infectious Diseases, Firoozgar Hospital, Iran University of Medical Sciences, Tehran, Iran
Department of Radiology, Shariati Hospital, Tehran University of Medical Sciences, Tehran, Iran
Department of Radiology and Gloestan Rheumatology Research Center, Golestan University of Medical Sciences, Gorgan, Iran
Department of Internal Medicine, Iran University of Medical Sciences, Tehran, Iran
Department of Radiology, Iran University of Medical Sciences, Tehran, Iran
Institute of Research and Development, Duy Tan University, Da Nang 550000, Vietnam
Health Management and Economics Research Center, Iran University of Medical Sciences, Tehran, Iran
Department of Medical Biotechnology, School of Advanced Medical Sciences, Tabriz University of Medical Sciences,
Tabriz, Iran
Department of Computer Science, Metropolitan College, Boston University, Boston, US
Department of Computer Science, University of Toronto, Toronto, Ontario, Canada
Ontario Institute for Cancer Research, Toronto, Ontario, Canada
Vector Institute for Artificial Intelligence, Toronto, Ontario, Canada
Digestive Disease Research Center, Tehran University of Medical Sciences, Tehran, Iran

입니다. 이란, 케나다, 미국, 베트남에 계시는 의료, 공학인들이 공동으로 만든 논문인 것이죠.

코로나 바이러스에 대항하기 위해 여러 나라가 함께 연구하는 모습이 참 인상깊었습니다.

그런데 의료인이 집필에 관여해서 그런걸까요, 논문 양식이 여태까지 봐왔던 딥러닝 논문과는 다릅니다. Abstract, Online content, Acknowledgement, References만으로 분류되어 있습니다.

그래서 제가 따로 분류를 하여 리뷰를 하고자 합니다.

Introduction


여기서는 코로나 바이러스의 등장과 이를 판단하는 방식들을 먼저 소개해줍니다.
코로나 바이러스의 양성을 판단하는 방식은

  1. 환자의 의료 기록
  2. RT-PCR
  3. CT imaging

으로 나뉘는데요, 여기서 RT-PCR, CT imaging에 대해 말해보도록 합시다.

RT-PCR은 우리가 익히 아는 PCR검사를 말합니다. 현재 가장 많이 쓰고있죠. PCR 검사는 빠른 진단이 가능하다는 장점이 있지만 높은 오차율(30~35%)과 일반적 폐렴(disease bearing individuals)과 코로나 사이의 구분이 힘들다는 점, 그리고 음성이라 잘못 판단한 경우(false negative)가 있다는 단점이 있어 코로나 바이러스의 빠른 유행, 암울한 치료 결과에 기여한다고 합니다.

CT imaging은 어떨까요? CT는 폐를 찍어서 보여주기 때문에 폐에 폐렴으로 인한 염증이 있는지 확인할 수 있습니다. 그리고 폐렴으로 인한 염증의 패턴을 보고 일반적인 폐렴인지 아니면 코로나 바이러스에 걸린건지도 확인할 수 있죠. 그래서 코로나 판단의 중요한 역할을 맡고 있다고 할 수 있습니다.

허나 CT imaging도 단점이 있습니다. 앞서 폐렴으로 인한 염증의 패턴을 보고 코로나 바이러스로 인한 염증인지 아니면 다른 폐렴으로 이한 염증인지 판단할 수 있다고 말씀드렸죠? 그런데 둘 사이의 차이를 확인하는게 어렵습니다. 그래서 잘못 판단하는 경우가 있습니다.

그래서 저자들은 이러한 CT imaging의 단점을 머신러닝 알고리즘으로 학습된 모델이 해결할 수 있다고 가정했고 이를 만들기 위한 계획을 짰습니다.

appropriate machine learning strategy for Covid-19 detection

저자들은 머신러닝으로 어떤 모델을 만들건지 다음과 같이 3가지로 설명했습니다.

  1. 영상의학과 의사와 그 외 직원들이 빠르고 정확하게 코로나 바이러스를 판단할 수 있도록 도와줘야 함
  2. 다양한 CT 촬영기기에서 사용할 수 있어야 함
  3. 컴맹인 의료인들도 사용할 수 있을만큼 유저 친화적(user friendly)이여야 함

저자들은 위 3가지를 모두 만족하는 모델을 만들기 위해 노력했고, 그 결과 폐 CT로 이루어진 데이터셋을 학습해 코로나 바이러스 탐지 능력을 향상시킨 CovidCTNet을 만들었습니다.

Method


그러면 어떻게 만들었는지 살펴봅시다.

Dataset

데이터셋 구성에 많은 내용을 썼습니다. 의료 이미지는 외부와 공유하는게 어렵기 때문에 데이터셋을 만들기 힘들기 때문에 자세히 쓴게 아닐까 싶습니다.

우선 LUNGx Challenge라는 폐 분류 경진대회에 사용된 데이터셋을 포함했습니다. University of Chicago에 보관된 자료를 사용했다고 하네요.
그리고 이란에 있는 다섯개의 의료 센터에서 자료를 제공했다고 합니다.

데이터셋에 있는 폐 CT 이미지는 5개 브랜드에서 생산한 12개의 CT 촬영기기에서 찍은 것들입니다. 다양한 기기에서 찍었으니 해상도도 다를 것이며 각자 찍은 CT를 이미지 파일로 만드는데 사용한 프로그램도 다양할 것입니다. 세계 곳곳에 있는 다양한 CT 촬영기기에서 CovidCTNet을 사용할 수 있게 하려고 이렇게 데이터셋을 구성했다고 하니 훌륭한 데이터셋이라 말할 수 있습니다.

허나 제일 부족한 점이 있습니다. 바로 CT 이미지의 개수가 부족하다는 겁니다. 왜냐하면 앞서 말씀드렸듯 의료 이미지는 외부와 공유하는게 어렵기 때문입니다.

그래서 저자들은 적은 데이터셋을 가지고도 훈련이 가능한 BCDU-Net이라는 Semantic Segmentation model을 사용하기로 했습니다. BCDU-Net에 추가로 레이어를 추가한 모델을 설계 후 코로나 바이러스의 감염 여부를 정확히 판단하게끔 학습시키는 것이 이들의 계획입니다.

데이터셋의 구성법을 설명한 문단 뒤에 실제로 얼마나 있는지 숫자로 나타냈습니다. 데이터셋은 287명의 환자에게서 얻은 CT 이미지 89,145장으로 다음과 같이 구성되어 있습니다.

  1. PCR검사를 통해 양성 판정을 받은 109명 환자에게서 얻은 32,230장
  2. 코로나를 제외한 다른 폐렴에 걸린 104명의 환자에게서 얻은 25,699장
  3. 폐렴 증상이 아닌 환자거나 건강한 사람 97명에게서 얻은 31,216장, 논문에서는 Control group이라고 부릅니다.

그리고 Control group에 있는 65명(CT 이미지 20,317장)은 SPIE-AAPM-NCI lung nodule classification challenge dataset에서 가져온 것이라고 합니다.

Preprocessing Data

이제 데이터 전처리 방식에 대해 설명해 드리도록 하겠습니다.

CT에서 얻은 이미지 파일은 3D데이터입니다. 그래서 이를 (z, x, y)로 resampling해줍니다.
이 때 각 픽셀은 3D의 픽셀인 voxel입니다. voxel dimensions로 CT 이미지를 설명하려는 것이죠.(복셀의 단위는 1 x 1 x 1 밀리미터입니다.)

이렇게 데이터를 처리하는 이유는 다양한 기기에서 얻은 자료를 하나의 양식으로 통일하기 위함이라고 합니다.

하나의 양식으로 통일된 CT 이미지들은 적절한 범위의 Hounsfield Units (HU)를 갖도록 또다른 측면의 resampling을 거칩니다. HU는 X선이 몸을 통과할 때 몸의 각 부위가 흡수된 정도를 나타내는 정도를 상대적으로 나타낸 것입니다.

출처:https://radiopaedia.org/cases/77397/studies/89520?lang=us&referrer=%2Farticles%2Fhounsfield-unit%3Flang%3Dus%23image_list_item_52608436

위 사진은 특정 물체의 HU를 나타낸 자료입니다. 여기에는 나와있지 않지만 폐의 HU는 -700 ~ -600, 지방이 -120 ~ -90, 부드러운 조직이 100~300, 뼈가 300~900이라고 합니다. 사진에 나온 것과는 조금 다르네요.

우리가 원하는건 폐에 찍힌 것을 보고 코로나 바이러스를 판정하는 모델을 만드는 것입니다. 그럴려면 모델이 잘 판단하게끔 데이터를 가공해줘야죠. 여기서 적절한 범위의 HU를 갖게끔 한다는 말은 학습에 도움이 안되는 부분은 다 지우겠다는 걸 의미합니다.

저자는 HU가 -1000 ~ 400에 해당하는 부분만 살리고 나머지 부분은 다 지웠습니다. 폐가 아닌 조직들을 다 지운 것이죠.

이렇게 폐가 아닌 조직들을 CT 이미지에서 지운 뒤 값이 남아있는 voxel의 HU를 0.0~1.0 범위를 갖게끔 normalize해줍니다.

normalize된 CT 이미지들은 (x,y)사이즈를 240 x 240으로 조정합니다. z값은 유지합니다.

이 과정을 사진으로 나타내면 다음과 같습니다.

BCDU-Net

다음으로 BCDU-Net을 어떻게 사용할 것인지 설명하는 부분이 나옵니다.

BCDU-Net은 U-Net에 LSTM이라는 RNN을 추가해 segmentation을 강화시킨 모델입니다. 정확히는 bi-directional ConvLSTM(BConvLSTM)이라는 걸 사용합니다.

전체적인 구조는 다음과 같습니다.

입력값 내부에 있는 특정 부위를 도려내는(?)데 특화된 모델이라 생각하시면 됩니다.

아무튼, 이 BCDU-Net을 이용해 특정 부분만 드러낼 수 있는데요, CovidCTNet은 이를 폐렴 염증을 검출하는데 사용합니다. 기존에 폐 사진에 대해 훈련된 BCDU-Net을 폐만 추출하게끔 훈련시킨 뒤 원래 입력값에서 이를 빼서 염증 부위만 남아있게끔 학습시키는 것이죠.

이를 학습시키기 위해 건강한 폐 사진에 인위적인 폐렴 염증을 추가시켜 또다른 데이터셋을 만듭니다. (감염된 폐, 깨끗한 폐) 조합의 데이터셋을 만드는 것이죠.

Model Architecture

이제 모델의 전체적인 구조를 설명해 드리도록 하겠습니다.

단계별로 설명해 드리도록 하겠습니다.

(a) Training a subset of the Control dataset model

여기서는 폐에 별다른 이상이 없는 사람들의 폐 CT를 이용해 앞서 BCDU-Net에서 말씀드린 것과 같은 방식으로 훈련시킵니다. 이 때 훈련된 BCDU-Net은 폐 CT를 받을 때 페렴 염증이 없는 깨끗한 폐를 출력하게끔 훈련시킵니다.

(b) Feed all the dataset into the trained model

데이터셋에 있는 모든 파일을 전처리 해줍니다. 그림에 나와있듯 이미지의 픽셀 사이즈는 240 x 240으로 해줍니다.

전처리한 이미지들을 BCDU-Net에 넣어 폐렴 염증이 없는 깨끗한 폐사진(denoising)을 얻습니다. 그리고 기존 입력값에 깨끗한 폐사진을 픽셀 단위로 빼기(-) 연산을 해줍니다. 그러면

  • 폐렴 염증이 있는 폐 - 깨끗한 폐 = 폐렴 염증
  • 깨끗한 폐 - 깨끗한 폐 = 빈 이미지

이렇게 나오겠죠? 즉, 폐렴 염증'만' 가지고 코로나 양성인지 음성인지 판정하는 것입니다.

이렇게 처리된 이미지들은 이제 환자 단위로 묶어줍니다. 각 환자당 나온 CT의 집합들을 만들어주는 것이죠. 이를 위해 이미지를 2D로 만든 뒤 2D 이미지들을 묶어 3D 이미지 데이터로 만듭니다. CNN이 3차원 데이터를 받기 때문입니다.

그리고 각 환자별 CT 개수를 50장으로 맞춰줍니다. 그러면 한 3D 이미지 데이터의 사이즈는 50 x 240 x 240이 됩니다.

(c) Classifying a given CT images

앞서 우리는 50 x 240 x 240사이즈의 3D 이미지 데이터로 이루어진 데이터셋을 만들었습니다. 이를 Classification을 위해 만들어진 CNN의 입력값으로 넣어줍니다.

Classification을 위한 CNN은 구조가 특별한 점은 없으며 그냥 층층히 Convolutional Layer들을 쌓고 마지막에 Fully Connected Layer를 추가해 최종적으로 3개의 확률(양성일 확률, 일반적 폐렴일 확률, 아무런 증상이 없을 확률)을 출력합니다.

BCDU-Net 처리 전, 후를 비교해보자

논문에서 여러줄 작성하며 강조를 한 부분입니다.

왼쪽이 BCDU-Net에 값을 넣기 전의 point cloud, 오른쪽이 BCDU-Net 출력값의 point cloud입니다.

왼쪽의 CT 이미지에서 폐렴 부분을 찾는 것보다 오른쪽의 CT이미지에서 폐렴 부분 찾아 코로나 바이러스 판정을 하는게 더 쉬워보입니다. 실제로 그렇고 저자도 이 부분을 강조했습니다.

그리고 적은 데이터셋을 가지고 학습을 시켜야하는 상황에서 BCDU-Net의 역할이 컸다고 하네요.

Experiment


이제 실험 부분입니다. 데이터셋의 90%는 학습에, 10%는 검증에 사용했는데요, 평가 결과는 다음과 같습니다.

Verification


이렇게 ROC 곡선으로 나타냈는데요, 곡선 아래 영역의 넓이를 가지고 성능을 판단합니다. 1.0에 가까울 수록 완벽에 가깝습니다.

보시면 음성 판정의 ROC 곡선의 넓이는 1.0이고 코로나 환자는 0.95, 코로나 바이러스가 음성인데 폐렴 증상을 보이는 환자는 0.91입니다. 그리고 밑에 4개의 수치는

  1. 코로나 양성 vs 음성 판정 정확도 : 91.66
  2. 코로나 양성 vs 일반 폐렴 vs 음성 판정 정확도 : 87.5 (3 Classes입니다)
  3. 코로나에 대한 민감도(양성 판정인 사람을 양성이라 판정한 비율) : 87.5
  4. 코로나에 대한 특이도(음성 판정인 사람을 음성이라 판정한 비율) : 93.85

위와 같습니다.

Test

이번에는 영상의학과 의사들과 CovidCTNet의 성능을 비교해봤습니다. 이 때 사용한 데이터는 기존에 훈련, 검증에 사용한 데이터셋이 아닌 다른 곳에서 가져온 데이터입니다.

이 때 영상의학과 의사 네 분을 모셨는데 논문에 전혀 관여하지 않은 분들이며 테스트로 사용한 데이터셋 역시 논문 저자, 따로 모신 네 분의 의사들과는 전혀 연관이 없는 경로에서 얻은 자료들이라고 합니다. 참고로 데이셋은 양성, 일반폐렴, 건강한 사람의 폐 CT 이미지 20장으로 구성되어 있습니다.

결과는 다음과 같습니다.

ROC 곡선은 CovidCTNet의 곡선이며 영상의학과 의사들의 성적은 그림 속에 있는 표에 나와있습니다. 검증 단계에서 측정한 것과 같은 항목들입니다. CovidCTNet이 더 좋은 성능을 보여준다는 걸 확인하실 수 있습니다.

Conclusion


어느새 결론까지 왔습니다.

저자는 CovidCTNet이 영상의학과 의사들의 코로나 바이러스 양, 음성 판정에 기여할 것이라 말했고 CovidCTNet과 같이 의료 이미지를 처리하는 방식을 다양한 질병에 적용하거나 CovidCTNet을 이용한 어플리케이션을 만들어서 전지구적인 의료 진단 능력의 향상을 기대한다고도 말했습니다.

치료 과정에 스캔을 넣으면 지속적으로 환자의 상태를 관찰할 수 있고 더 좋은 진단 소프트웨어의 개발로 이어질거라 말하기도 했습니다. 저자들은 최신 기술(?)을 의료에 적용하길 바라고 있다고 느꼈습니다.

그리고 CovidCTNet이 개선될 수 있는 점 3개를 제안했습니다.

  1. 데이터셋이 다 이란에서 가져온 것이다, 다양한 곳에서 데이터셋을 추가했으면 좋겠다.
  2. 폐 CT말고 환자의 나이, 성별 등 추가적인 정보가 있으면 좋겠다.
  3. 다양한 CT 스캔 데이터베이스에서 테스트 했으면 좋겠다.



후기


의미 있는 논문이었습니다. 코로나 바이러스에 대응하기 위해 여러가지 방법을 시도해보는 의료인, 공학인들의 협업이 인상깊었고 앞으로도 이러한 협업이 계속되어 다양한 방향으로 세상이 발전했으면 좋겠습니다.

그럼 저는 다음 논문에서 뵙겠습니다.

profile
안녕하세요. 딥러닝 알고리즘에 관심이 많은 대학원생입니다.

0개의 댓글