[BME, CS, Journal] 열공망막박리 진단을 위한, 검안경 사진을 이용한 딥러닝(Deep Learning)

in kr-med •  7 years ago  (edited)

안녕하세요, @doctorbme 입니다. 오늘은 의학 분야에서 나름 뜨겁다는 영상 진단에 관한 한 논문을 들고 찾아뵐까 합니다. 그런데 사실 영상 진단의 이미지도 다양하고 적용 분야 또한 다양해서, 리뷰가 한번에 끝날 것 같지는 않습니다. 기회가 되는 대로 틈틈히 올려보도록 하겠습니다.

오늘 리뷰할 논문은 Accuracy of deep learning, a machine-learning technology, using ultra–wide-field fundus ophthalmoscopy for detecting rhegmatogenous retinal detachment 입니다. 초광각 안저촬영을 통해 열공 망막박리를 진단하자는 연구입니다. 열공 망막박리는 망막이 찢어지거나 구멍이 생기게 되어, 결국 망막이 떨어지게 되는 질환인데, 빠른 처치가 필요합니다. Scientific Reports 논문이고 Creative Commons 4.0이 걸려있으므로 편하게 사용 가능합니다. 이 글의 그림은 논문에 포함된 그림입니다.


주의사항 1 : 이 논문은 제가 보기에 그다지 잘쓴 논문이 아닙니다. 그럼에도 리뷰하는 이유는 의학 영상의 진단에 대해 딥러닝을 적용함에 있어서, 가장 기초적인 흐름을 보이기 때문입니다.

주의사항 2: 본 논문에 대한 의견은 제 개인적인 의견일 뿐이며, 참고만 하시길 바랍니다.


1) 데이터

  • 열공망박박리를 가진 407명의 환자에서 추출한 411개의 이미지 (학습: 329개, 평가: 82개)
  • 열공망박박리를 가지지 않은 238명의 사람에게서 얻은 420개의 이미지 (학습: 336개, 평가: 84개)

지도학습을 위해 환자와 환자가 아닌 사람들의 데이터를 구성합니다. 임상적 진단을 위한 가장 간단한 구성으로, 질환이 있거나 없거나 (1 or 0)를 판단하는 binary classification을 구성하는 경우가 많습니다. 물론 3개 이상의 진단 혹은 분류를 원하는 경우가 있습니다. 이 경우에는 확률을 반영할 수 있는 Soft-max 를 씁니다. (보통 맨 마지막 노드에 넣습니다.)

하지만 Soft-max를 쓰는 경우 ROC(Receiver operating characteristic)를 구성하기 난감해지기도 합니다. 민감도와 특이도, 이를 바탕으로 하는 ROC curve와 이에 따른 AUC(Area Under Curve)를 적용할 때, 여러 분류가 존재한다면 어디까지 맞춘 걸로 보고 (true) 틀린 걸로 볼 것이냐 (false)에 대한 문제가 남기 때문입니다.


논문의 figure 1. 대표적인 초광각 안저촬영 사진 입니다.
왼쪽의 경우 정상 사진을, 오른쪽의 경우 열공망박박리 (흰색 화살표)가 발생한 사진을 나타냅니다.

2) 방법

논문의 figure 3. 논문에서 사용한 Convolutional neural network(CNN) 구조에 대한 모식도 입니다.

  • 모델 구성
    데이터셋에서 얻은 이미지를 우선 96 x 96 픽셀의 작은 크기로 전환하고, (원래 이미지는 3900 x 3072 크기 입니다. 매우 큽니다.) 이를 바탕으로 CNN에 넣습니다. Convolutaional Layer와 Max Pooling Layer 가 번갈아가며 배치됩니다. 뒷 부분에는 Fully-Connected Layer (FC layer)를
    배치합니다. 여기서 공간 데이터 정보가 소실됩니다. Activation 함수는 ReLU를 사용합니다.

  • 학습
    100개의 이미지 단위로 미니배치(mini batch)를 통해 학습시킵니다. 초기 weight는 0.05의 표준편차와 0의 평균을 가지는 가우시안 분포로 랜덤하게 둡니다. FC layer에 Drop out을 적용하고, Adaptive Subgradient Methods, AdaGrad를 통해 weight를 찾아나갑니다.

  • 다른 알고리즘과의 비교
    RBF 커널을 사용한 Support Vector Machine, SVM을 사용합니다. Grid Search 등을 통해 Hyper parameter 를 튜닝합니다. SVM에서는 5-fold Cross Validation을 썼습니다.

  • 기타
    각 알고리즘을 100번씩 돌려서, 결과를 측정해서 평균과 95% 신뢰구간을 얻습니다.

3)결과

논문의 figure 2. 두 알고리즘 (CNN, SVM)의 ROC curve를 나타냅니다. 딥러닝(CNN)의 경우 AUC는 0.988 (95% CI, 0.981 - 0.995)를, SVM의 경우 0.976 (95% CI 0.957-0.996)을 나타냅니다.

논문에서는 CNN이 SVM보다 좋다고 결론내리고 있습니다.


제한점

논문에서는 좋은 데이터 얻기 어려웠다, 양이 적었다, 열공망막박리 이외에 다른 질병을 못해봐서 아쉽다.. 이런 이야기를 하고 있으나,

제가 보기엔

  1. 아니 왜, Transfer Learning을 안쓴걸까요, 이걸 쓰면 기존의 CNN을 가지고 조금만 더 학습시키면 될 것을. 그러면 아마 96 x 96이라는 (매우 작은) 해상도까지 안내려갔어도 되었을 것입니다.
  2. 맨 끝에 노드를 왜 soft-max 2개로 배치했는지 모르겠습니다. 어차피 binary classification 할거면서.... 오히려 한 개 노드 배치와 2개 노드 배치를 비교했을 때 2개를 써서 좋았다 이러면 모르겠으나....
  3. SVM은 cross validation 하면서 결과를 구하는데, CNN에는 똑같이 시행했다는 이야기가 없습니다.
  4. CNN과 SVM은 급차이가 좀 나는 느낌입니다. 비교를 할 것이었으면 AdaBoostRandom Forest 정도는 넣어줘야하는 것 아닙니까.
  5. 해상도를 이렇게 팍 줄일거면, 사실 어떻게 해상도를 줄였는지에 관한 이야기가 나와야 합니다.
    96 * 96 / (3900*3072) = 0.0769% (???) 손실되는 정보량이 너무 많습니다.
  6. 데이터를 구성할 때, 각 의사 선생님들이 어떻게 ground truth를 구성하였는지에 대한 정보가 없습니다. 사실 어떤 케이스에서 차이가 나는지 알려줘야 하거든요.

나름대로의 결론

딥러닝을 의학 영상 혹은 다른 데이터에 적용하기 위해서, 가장 기초적인 방법은

데이터 -> 알고리즘 -> 결과이고, 알고리즘은 CNN 등을 쓰며, 결과는 binary classification을 바탕으로한 ROC curve를 살펴본다. 다른 알고리즘과 비교하면 좋다.

입니다.

그런데, 이 논문은 위의 결론 이외에 다른 내용이 없습니다. (...)
이 논문 이외에 다른 좋은 논문들이 많은데, 우선 이 논문이 왜 좋지 않은지를 봐야 다른 논문을 볼 때, 왜 이런 이야기를 하는지 알게됩니다.


원래는 안저의 영상진단과 관련하여 아주 유명한 논문인, JAMA의 Development and Validation of a Deep Learning Algorithm for Detection of Diabetic Retinopathy in Retinal Fundus Photographs 논문을 리뷰하려 했으나,

그림 하나 사용하는데 가장 저렴해 보이는 구성을 만들어도, 위와 같이 840 불...(...)을 써야 하므로, 이건 제가 나중에 돈 많이 벌면 하는 걸로... (아무리 논문이 무료로 배포되더라라도, 논문의 그림을 사용하려면 돈을 내야하는 경우가 있으니 꼭 주의하시기 바랍니다.)

읽어주셔서 감사합니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

항상 좋은 글 감사드립니다. 한계점을 보면서 선생님 생각을 배울 수 있어서 좋네요. 딥러닝이 의료계에도 적용될 수 있다는 사실 역시 재미있었습니다. 얼마 전 구글다니셨던 분의 세미나를 들으러갔었는데 인공지능관련해서는 너무 위험하기 때문에 의료나 헬스쪽으로 방향을 틀었다는 말을 들었습니다. 앞으로 미래가 기대되네요 :)

인공지능 자체의 방법론을 발전시키는 것도 중요하겠고, 이를 각종 영역으로 (알맞게) 적용시키는 부분도 중요하다고 생각합니다. 특히 적용해볼만한 분야들이 상당수 존재합니다. 법학, 의학 등 사고체계를 어느 정도 도식화할 수 있는 분야에서는 가능성이 보이는 것 같습니다.

와~ 논문을 쓰신 분은 의사이신가요 아니면 프로그래머이신가요? 제 주위사람중에도 의사를하다가 영상진단개발쪽으로 넘어간 사람이 있는데 그런 분들 보면 정말 대단하다는 생각뿐입니다! 논문 그림사용에 대한 고민은 저도 하고 있는지라 마음에 와닿는군요 ㅠㅠ

임상 안과 선생님 두 분과 엔지지어 한 분이 연구하신 것 같습니다. 우리나라에서 영상 진단 쪽은 루닛 혹은 뷰노 쪽이 활발하게 연구하는 것으로 압니다.

논문에 있는 그림 사용은 언제나 조심 또 조심 뿐입니다. 무조건 copyright 혹은 rights and permission 부분을 체크해보셔야 합니다.

아아 저 무려 840불짜리 논문 얘기를 들어본 것 같습니다ㅎㅎㅎㅎ
Dm retinopathy에서 딥러닝과 상위 안과 전문의들과의 차이가 거의 없다고 했던 것 같네요ㅎㅎ

참 놀라운 발전입니다!!

최근의 딥러닝 혹은 머신러닝을 의학에 적용한 논문의 목표 중 하나는 임상과의 전문의 선생님들과의 차이를 줄이는 것입니다. 한번 학습이 되고나면 속도 면에서는충분히 장점이 있죠. 사실 가장 중요한 것은, 그래서 이 연구가 제시한 결과를 어떻게 해석할 것인가? 어떻게 적용할 것인가? 인 것 같습니다.

상세히 기술적으로 논문 리뷰를 해주셔서 감사합니다. 저도 자세히 한번 읽어보고 댓글 남기겠습니다.

네. 토론은 언제나 환영입니다. 제 깜냥이 드러날지도 모르겠습니다. (...) 들러주새고 댓글 남겨주셔서 감사합니다.

멋지십니다 선생님.

제가 이러한 칭찬을 들어도 되나 싶습니다. 제가 무얼 잘 한게 아닌데요, 뭘. 전공자와 비전공자 간의 괴리를 어떻게 줄여야할까 항상 고민하고 있습니다. 댓글 감사합니다.

와 스티밋에 이런 얘기를 이해하시는 분들이 이렇게나 많은거군요. 앞으로 나도 보다 전문적인 얘기를 해야겠다, 고 마음 먹지만 아무리 생각해도 없네요...

들러주셔서 감사합니다. 저는 취향의 관점에서 한번 바라보고 싶습니다. 각자 나름대로의 취향이 있고, 이러한 취향에 따라서 끌리는 이야기를 보다보면 어느샌가 전문적인(?) 길로 들어서는 것 말이지요. @deadpxsociety 님께서도 책에 관한 이야기, 사회에 관한 이야기, 사람에 관한 이야기를 즐겨하시기에, 충분히 다른사람을 이끄는 취향을 가지고 계시고 전문적이라고 이야기 해도 좋지 싶습니다. :)

이거 그냥 실험논문인가 보네요.
기존의 알고리즘 두개를 비교한건지 아니면 논문 저자가 자신의 알고리즘을 만들어 놓고 기존의 알고리즘과 비교 실험한건지는 알수 없지만 암튼 흥미로운 논문 설명을 잘 들었어요.

안녕하세요, 이 논문은 임상적 데이터에 알고리즘을 적용한 기본적인 논문에 가깝습니다.

논문저자가 자신의 알고리즘을 만들어 놓았더라도, 좀 더 자세하게 설명이 필요했을 것 같습니다. 사실 CNN도 여러 구조로 변형할 수 있는데, 굳이 그런 것 같지는 않습니다. (그랬다면 설명을 자세히 했겠죠.) 차라리 처음에 데이터를 어떻게 처리했는지라도 명확하게 알려주면 그래도 좀 더 괜찮았을 것 같아, 아쉬운 논문입니다.

Congratulations @doctorbme! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of comments

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

역시 CNN이군요. 작년에 재미삼아 아산병원에서 하는 의료영상분석대회에 참가한적이 있는데, 뭐 말 그대로 좋은 경험이었지만, 이런쪽 비지니스 모델도 괜찮은 듯 합니다:) 항상 좋은 글 감사합니다!

요즘에는 (영상에 있어서) 모두 CNN , 아니면 더 나아가서 GAN을 적용하는 시도가 늘고 있습니다. 사실 의학 분야뿐만 아니라 다른 분야도 마찬가지이겠지요.

저는 가끔 우려가 되는 점이, 1) 데이터가 있다 2) CNN 적용해야지 (가져다 써야지) 3) 결과가 나옴. 괜찮음. 이렇게 진행되는 부분에 있어서 분야만 바꾸어서 천편일률적으로 논문을 재생산하는 느낌이 들기도 합니다. 사실, 의료 혹은 헬스케어 관련 비즈니스모델을 바탕으로 무언가 하려면 여러가지 제약사항들이 있는데, 언젠가 한번 기술해보도록 하겠습니다.

네 그렇군요:) 좋은글 기대하겠습니다 !!

좋은 글 읽고 갑니다.
앞으로 딥러닝 분야를 전공하려는 대학원생으로서 많은걸 배우고 가네요.

안녕하세요, 사실 딥러닝 분야에서 열심히 그리고 저보다 잘 하시는 분들이 많으셔서 저는 사실 좀 부끄럽고요, 이 글은 딥러닝 분야를 의학 영상에 적용할 때 어떤 점을 고려해야하는지 정도만 아주아주 간략하고 간단하게 적은 글로 보아주시면 좋을 것 같습니다. 앞으로 잘 부탁드릴게요. :)