본문 바로가기

Deep Learning

Assessing the Trustworthiness of Saliency Maps for Localizing Abnormalities in Medical Imaging (2021, RSNA Radiology:Artificial Intelligence) 논문 링크 지난 논문과 비슷한 주제의 논문이다. Saliency map을 실제 이상 소견의 위치로 봐도 되는지에 대해 의문을 던지는 논문이다. 지난 논문은 Saliency map과 expert annotation 사이의 성능을 비교했다면, 이번 논문은 saliency map과 localization uitility (segmentation and detection) 사이의 성능을 여러 측면에서 비교한다. 실험을 위해 저자는 Segmentation 비교에는 SIIM 데이터셋 (PNX)과 UNet을, Detection 비교에는 RSNA 데이터셋 (PN)과 RetinaNet을 사용했다. 여러 가지 테스트를 진행하고서 저자는 Localization 결과를 얻고 싶다면 Saliency map은 신뢰성이 부족하니까.. 더보기
Benchmarking saliency methods for chest X-ray interpretation (2022, Nature machine intelligence) 논문 링크 블랙 박스 문제는 의료 영역 뿐만 아니라 모든 영역에서나 인공지능 출력 분석에 발목을 잡는다. 그래서 '해석 가능한 인공지능 (XAI, Explainable AI)' 이라는 주제로 여러 시도들이 연구되어 왔다. 방법론들을 정리한 리뷰 논문까지 있을 만큼 다양한 관점에서 많은 시도들이 이루어지고 있는 연구분야이다. 그 중에서 유명한 방식으로 Grad-CAM이 있고, 의료 인공지능 에서는 이 Grad-CAM을 '이상 소견이 위치해 있는 곳'으로 해석하고자 하는 (or 바라보는) 연구들이 많이 진행됐다. ※ 여기서 잠깐 용어하고 개념에 대해 정리 한 번 하고 넘어가자. (내 개인적인 생각) (1) XAI 중 Gradient-based method로 Saliency map, CAM, Grad-CAM,.. 더보기
TF 버전 별 재현성 잡는 방법 정리 이전 글에 정리한 것처럼 재현성 잡힌 결과를 얻고 싶다면 Tensorflow-Determinism을 다운받아 사용해주면 된다. UpSampling의 Interpolation 이슈만 제외하고 나머지는 거의 다 재현성이 잡혀서 원하는 결과를 얻을 수 있다. TF 1.14.0 버전을 사용하던 나는 1년 동안 아무 문제 없이 잘 사용하고 있었는데... 최근 들어서 또 다시 재현성의 늪에 빠지게 됐다. TF 2.1 이상은 tf-deteminism이 지원을 안 하네..? 말 그대로다. 회사 서버 업데이트를 하게 돼서 TF 2.5 버전을 사용하게 됐는데 tf-determinism이 해당 버전은 지원 안 한다는 에러 문구가 뜨더라. 그러면서 TF 2.8부터는 tf-determinism을 따로 설치할 필요 없이 간단한 .. 더보기
Self-evolving vision transformer for chest X-ray diagnosis through knowledge distillation (2022, Nature Communications) 의료 영역에서 주로 사용되는 모델 학습 방식은 지도학습(supervised learning)이다. CXR을 Radiologist가 판독한 결과를 해당 CXR의 정답 데이터(Label)로 학습에 사용한다. 직관적이고 간단한 학습 방법이면서도 모델의 성능 또한 좋게 나와서 의료 영역 뿐만 아니라 여러 영역에서 사용되는 학습 방법이다. 문제는 지도학습 방식에 꼭 필요한 고품질의 Label을 확보하는 과정이 어렵고 비용도 많이 든다는 것이다. CXR 촬영을 루틴으로 진행하는 건강검진센터만 놓고 생각해봐도 하루에 발생되는 CXR의 양은 쏟아지는 수준이다. 이러한 Large-scale CXR Datset의 모든 판독문을 분석해서 Labelling을 진행하는 것이 가장 이상적이겠지만, 기업 입장에서는 비용효율적인 측.. 더보기
헷갈리는 Dice와 IoU 개념, 내가 정리해 봄ㅋ Dice Score와 IoU Score는 Segmentation Task를 진행하면 흔하게 접하게 되는 개념이다. 'Prediction과 Ground-Truth가 얼마나 겹치느냐'를 평가하는 데에 쓰인다. 사실 IoU는 Object Detection에서만 사용되는 개념으로 알고 있었는데 Segmentation에서도 사용된다는 건 이번에 제대로 알게 됐다. 그래서!! 공부한 김에 정리해두고자 한다. 이번 글에서 다룰 내용은 아래와 같다. Dice와 IoU의 정의와 차이점 Score를 Loss로 사용할 때 어떤 차이가 있는지 추가로 알아둘 점 1. Dice와 IoU의 정의와 차이점 Dice와 IoU, 더 정확하게는 Dice Score와 IoU Score는 모두 모델이 GT와 얼마나 유사한 결과를 내놓는지를 .. 더보기
Loss weight, Class weight, Sample weight 케라스로 모델을 설계한 다음, 학습시키는 과정에서 적용할 수 있는 weight의 종류는 크게 3개이다. Loss weight model.compile( )에서 "loss_weights" 파라미터를 통해 넣어줄 수 있다. 모델에 2개 이상의 loss functin이 걸리는 경우 사용할 수 있는 파라미터이다. (EX) model.compile(optimizer='adam', loss=['binary_crossentropy', 'mse'], loss_weights=[2, 1]) Class weight 클래스 불균형을 해결하기 위한 방법으로 샘플 수가 상대적으로 적은 Class 쪽에 가중치를 부여하는 방식이 있다. model.fit( )이나 model.fit_generator( )의 "class_weight" .. 더보기
Probability Calibration 개념 정리 의료 AI 영역에서 일을 하다보면 의사로부터 "인공지능 모델의 출력값이 정확히 무엇을 의미하는 건가요? 0.7이라는 숫자는 환자가 실제로 질병을 갖고 있을 확률이라는 뜻인가요?"와 같은 맥락의 질문을 되게 많이 듣게 된다. 솔직히 그런 질문을 처음 들었을 때는 '어..? 나도 모르겠는데??...'하는 생각이 제일 먼저 들었다. 출력값에 thr 걸어줘서 단순히 True or False로만 생각해봤지 출력값 그 자체가 갖는 의미에 대해서는 깊게 생각해본적이 없었다. 그래서 이것 저것 검색하다보니 Probability Calibration이라는 개념을 접하게 됐다. 연구가 엄청 활발한 분야는 아닌 것 같은데 Medical Imaging 영역에서는 꼭 필요한 개념이라 차근차근 공부하며 정리해나가고자 한다. Pr.. 더보기
How to get reproducible results with Keras? (케라스 재현성 잡는 방법) You can use Tensorflow-Determinism. Check this Link. Line 5 and 6 are important to set reprocibility of Keras. import os import random import numpy as np import tensorflow as tf from tfdeterminism import patch patch() random_seed = 7 os.environ["PYTHONHASHSEED"] = "0" os.environ['TF_DETERMINISTIC_OPS'] = '1' os.environ['TF_CUDNN_DETERMINISTIC'] = '1' np.random.seed(random_seed) random.seed(rando.. 더보기