# CAM

PyTorch Lightning에서 CAM 시각화 구현
저가 못 찾은 건지 모르겠지만 pytorch lightning으로 cam을 만드는 코드를 찾을 수 없었니다. 물론 pytorch로 쉽게 구현할 수 있지만 pl로 만든 모델이라 pytorch로 포팅하는 것 보다 predict step이나 test step에 넣어서 보는게 더 편하다고 생각했습니다. CAM(class activation maps) CAM 논문 CAM은 워낙 잘 설명 되어있는 블로그나 영상이 많아서 패스하겠습니다 PL code 데이터는 데이콘의 도배하자 분류 유형 대회 데이터 셋을 사용했습니다. 코드를 고치기 쉽도록 좀 분리해서 작성했습니다. 코드를 다 적기에는 너무 길어 일부

[XAI 기반 예측 웹 서비스 프로젝트 - 모델 돌려보기 #1]
프로젝트 시작 > 지난 1년간 비전공자로서 머신러닝/딥러닝을 공부하며 가장 많이 든 생각은 "일단 해 보자"였다. 우연히 CV 프로젝트에 참여할 기회가 생겨 이번에도 무작정 뛰어들어 보기로 결정했다. 회의를 통해 정한 주제는, Flask로 웹 페이지를 구현하고 그 위에 Detection 모델을 서빙하여 서비스를 제공하는 것이다. 다소 단순해 보이는 이 프로젝트의 핵심은 Detection한 모델의 class를 예측함과 동시에 예측 이유를 시각화해주는 CAM을 활용하는 것이다. Flask와 html/css를 다뤄본 적이 없고, 심지어 XAI 모델도 공부해본 적이 없었기에 2달간 프로젝트에 온전히 집중해서 밀도있게 공부해보기로 결정했다. 논문 스터디를 통해 CAM, grad-CAM, grad-CAM++ 논문들은 이미 읽어본 상황이지만, 모듈화된 딥러닝 모델을 사용해본 경험이 별로 없어 이번 기회에 시도해봤다. 모델 맛보기 https://github.com/jacob

Implementation of CAM-loss with PyTorch
CAM-loss 논문링크 Cam-loss 구현코드가 없어서 직접구현을 해봤습니다. 논문에 나와있는 위 그림이 전체 구조입니다. Global Average Pooling(GAP)를 하기 전 계층의 Feature Map을 가져와 모두 더한 CAAM과 다음 계층의 가중치를 곱하고 더한 CAM의 차이(정확히는 label에 연결된 가중치)와 보통 사용하는 CrossEntropy를 가중합해서 만든 것이 CAM-loss입니다 간단하게 적용해보기 위해서 데이터 셋은 MNIST를 사용했습니다. Model 모델은 Resnet backbone모델과 간단한 Custom모델을 사용했습니다. backbone model을 사
[딥러닝-Classification] 뇌종양 이미지 멀티 클래스 분류-02(cam,gradcam Heatmap, 설명가능 AI)
03번째 게시물 03번째 게시물입니다. 이번 게시물에서는 딥러닝 이미지 Classification 결과를 도출할 때에 어떠한 영역을 보고 y라는 class를 예측하였는지 Heatmap형식으로 표현하는 cam, gradcam 기능에 대해서 간단하게 알아보겠습니다. 02번째 게시물에서 실습한 뇌종양 이미지 classification결과를 가지고 gradcam을 도출하여 class를 결정지을 때 주요 판단영역을 도출해보겠습니다. 1. cam 논문 : Learning Deep Features for Discriminative Localization 저자 : Zhou, Bolei, et al. "Learning deep features for discriminative localization." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. **위 논문의 내용을 간단하게
6. CNN Visualization
black box 모델인 CNN의 내부 동작을 가시화하는 방법들에 대해 설명 CNN을 구성해서 어떤 task의 데이터셋으로 입력과 출력을 주고 학습을 했음에도 잘 되지 않는 경우가 있는데 이 때는 왜 안되는걸까? 를 알아보기 위해 시각화를 진행한다. ZFNet deconvolution을 이용한 visualization을 시도한 연구 이 연구를 통해 낮은 계층에서는 조금 더 방향성이 있는 선을 찾는 filter들을 확인할 수 있었고, 높은 계층으로 갈 수록 high level의 의미가 있다는 것을 파악할 수 있었다. visualization은 단순히 눈이 호강하기 위해 하는 것이 아닌 CNN이 어떤 부분을 보고 어떻게 파악하는지를 조금이라도 알 수 있는 중요한 부분이다. filt
Class Activation Mapping
Prologue 수능문제를 풀 때 과목을 넘나들면서 묻는 문제유형이 있다. > 글쓴이(화자)의 의도로 올바른 것은? 다른 사람의 의도를 알고 싶어하는 건 인간의 본능인 것 같다. 요즘은 사람속 뿐만 아니라 흔히들 블랙박스라고 부르는 머신러닝 model의 속도 알고 싶어한다. model을 만들어서 학습을 하기는 하는데 어떤 근거로 개를 개로, 고양이는 고양이로 판단하는지 알 길이 없기 때문이다. What did the authors try to acomplish? AlexNet이나 VGGNet은 마지막 feature map을 f

Class Activation Map
AI는 모델의 가중치(weight)를 최적화하는 과정만 믿으면 해당 모델이 올바르게 학습하고 있는지 판단하기 어렵다. 만약 모델이 잘못된 부분을 학습하여 답을 한다면?! 생각보다 위험한 결과를 가져올 수 있기 때문에 올바르게 학습되고 있는지 확인하는 것이 좋다. 분류 문제를 푼다고 생각하면?! 해당 모델이 잘 학습되고 있는지 볼 수 있는 방법으로는 CAM이 있다. CAM은 Class Activation Map으로 모델이 어떤 곳을 보고 어떤 클래스임을 짐작하고 있는지 확인할 수 있는 지도이다. CAM은 일반적인 CNN이 커널 윈도우에 따라 특성을 추출하므로 CNN레이어를 거친 특성 맵에도 입력값의 위치정보가 유지된다. 따라서 특성 맵의 정보를 이미지 검출(Detection)이나 세그멘테
.png)
(2019)Automatic Acute Ischemic Stroke Lesion Segmentation using Semi-supervised Learning
0. Abstract AIS(Acute Ischemic Stroke)는 치료 가능한 시간이 매우 짧다. AIS의 lesion을 찾기 위해 딥러닝 기반의 segmentation 알고리즘들이 제안 되었지만 fully-labeled data를 얻는 것과 정확하게 annotation을 하는 것이 매우 어렵다. 460개의 weakly-labeled subjects와 5개의 fully-labeled subjects를 이용한 semi-supervised learning 방법을 제안하였다. 그리고 150개의 subjects에 테스트를 진행하였다. 1. Introduction Stroke는 ischemia와 hemorrhage로 나뉜다. 그 중 ischemic stroke는 87%를 차지한다. 치료 결과를 개선하기 위해 acute stage에서 신속하게 진단하고 정량적으로 평가하는 것이 가장 중요하다. ischemic stroke를 진단하기 위해서 MRI를 많이 사용한다. <img