일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nfiti
- paper review
- 코드오류
- decorater
- Surgical video analysis
- 데코레이터
- 확산텐서영상
- nibabel
- TeCNO
- deep learning #segmentation #sementic #pytorch #UNETR #transformer #UNET #3D #3D medical image
- non-parametric model
- Phase recognition
- tabular
- PYTHON
- monai
- MICCAI
- genetic epidemiology
- 비모수적 모델
- 파이썬
- parrec
- 확산강조영상
- MRI
- nlp
- parer review
- 유전역학
- precision #정밀도 #민감도 #sensitivity #특이도 #specifisity #F1 score #dice score #confusion matrix #recall #PR-AUC #ROC-AUC #PR curve #ROC curve #NPV #PPV
- 모수적 모델
- words encoding
- TabNet
- parametric model
- Today
- Total
목록machine learning (19)
KimbgAI
참 오랜만에 하는 논문 리뷰네요ㅎㅎ TabNet은 Google Cloud AI팀에서 2021년 AAAI에 발표한 모델로 고성능, 고해석성을 가지고 있는 딥러닝 모델. 표 형식 데이터(tabular data)에 강점을 가지고 있는 모델임. 관련 논문은 아래 링크 참고!https://arxiv.org/pdf/1908.07442 TabNet은 tabular data를 학습하기 위한 새로운 딥러닝 아키텍처 (오른쪽 그림)순차적인 어텐션 구조를 바탕으로 해석력과 효율적인 학습을 가능하게 하고, 더불어 자기지도학습 방법을 적용해서 성능을 향상시킬 수 도있음. 텝넷은 Feature Transformer 블럭과 Attention Transformer 블럭으로 구성되어있고, 이러한 구조가 여러 개의 스텝을 통해 반..
도무지 이해가 안가는 경우였다. monia의 DiceMetric를 사용하던 중 y에 label을 넣고 y_pred에 model의 output을 넣는데 계산이 이상하게 나왔던 것. 더 이상했던 것은 y에 model의 output을 넣고, y_pred에 label을 넣으니 제대로 작동하더라는 것이다. 두 눈을 의심하고 코드를 뜯어봐도 결과는 마찬가지였다. 기존에는 동일한 코드로 잘만 사용했었는데 말이다. 해결한 결과부터 말하면, 1. output을 argmax 해야했음 2. 이제서야 문제가 밝혀는 까닭은 기존에 사용했던 monai 버전과 달라서 그랬던 것. (기존에는 1.0.0 사용, 현재는 1.3.0 사용) 현상을 살펴보면.. 각각 target, output, scratch 을 시각화면 아래와 같다. im..
어떤 이미지 안에 object 별로 annotation이 된 segmentation mask를 받았는데, 어떤 색상들로 구성되어 있는지 모를때.. 확인이 필요했다. 예를 들면, Pascal VOC 데이터셋 같은 경우는 색상별 어떤 클래스인지 나와있지만 그렇지 않은 경우에는 클래스가 몇개가 있고, 어떤 색상으로 되어있는지 확인이 필요하다. 간단하게 확인할 수 있는데, from PIL import Image import matplotlib.pyplot as plt path = '/data/2030/BileDuct/TestImage/mask/10.png' # 이미지 열기 image = Image.open(path) plt.imshow(image) (위 이미지는 간 수술 영상에서 담관을 annotation한 m..
분류 지표에는 Sensitivity, Precision, Specifisity, PPV, NPV 등.. 여러가지가 있습니다. 모델의 결과를 무엇에 중점을 두고 볼 것인가에 따라 다른 평가 지표를 사용해야하기 때문입니다. 하지만 늘 헷갈리고, 어렴풋이 알고있지만 이게 무엇을 의미하는지 제대로 이해하려면 멈칫하게 되는.. 그래서 한번 정리하고자 했습니다. 위 그림의 혼동행렬은 주의해서 봐야합니다. 어떤 곳에서는 True class와 Predicted class의 행렬이 뒤바뀌어있는 경우도 있습니다. 실제로 sklearn의 confusion matrix의 결과는 위 그림과는 반대로 행렬이 전치되어 나타납니다. 먼저 민감도. 민감도는 sensitivity, recall 으로도 불립니다. 실제 True 중에서 옳..
UNETR(UNEt TRansformers)은 그 이름처럼 UNet 형태의 아키텍쳐이고, encoding 부분을 transformer 구조로 대체하여 feature map을 추출하는 것이 특징입니다. 본 내용은 UNETR 를 pytorch로 구현하는 것을 정리하였습니다. 핵심적인 부분인 ViT 구현을 아래 블로그(제 블로그 ㅎㅎ;;)를 참고하시면 더 자세하게 볼 수 있습니다. https://kimbg.tistory.com/31 [ML] ViT(20.10); Vision Transformer 코드 구현 및 설명 with pytorchAN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE https://arxiv.org/pdf/2..
augmentation은 적은 데이터를 가지고도 데이터 풍부한 표현을 학습할 수 있는 장점이 있습니다. 그 중에서도 3D augmentation은 일반적인 2D augmentation과는 다른 특징들이 있는데, 이 글에서는 그와 관련된 내용을 담고 있습니다. monai, TorchIO 등 3D augmentation을 위한 라이브러리들이 몇몇 있지만, 여기서는 monai 기반 augmentation 적용 방법을 소개합니다. 본 내용은 아래 내용을 첨삭하여 작성했습니다. https://colab.research.google.com/github/Project-MONAI/tutorials/blob/main/modules/3d_image_transforms.ipynb 3d_image_transforms.ipyn..
AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE https://arxiv.org/pdf/2010.11929.pdf vit 논문에 관련한 양질의 리뷰는 상당히 많아서, 코드 구현에 관한 설명만 정리하고자 했습니다. 그래도 중요한 특징을 잡고 가자면, 1. 데이터가 많으면 많을수록 성능이 높아진다는 것. - ImageNet dataset과 같은 Mid-size으로 학습했을때, ResNet보다 성능이 좋지 않았지만, JFT-300M dataset으로 학습할 경우, ResNet보다 좋은 성능 달성함 - 이는 기존 CNN 계열의 모델보다 saturation이 덜 일어난다는 반증. - 하지만 일반적으로, 큰 데이터셋은 많이 없기때..
Dice는 특이하게 loss function으로도 쓰이지만, metric으로도 사용된다. (그 이유는 segmentation이라는 task의 특수성 때문인데, pixel별로 class를 예측하기 때문에 metric score의 변화가 상당히 연속적이라 대부분의 구간에서 미분값이 유의미하기 때문이다.) (classification task에서 accuracy를 가지고 loss function으로 사용하지 않는 이유와 반대로 비슷하게 생각하면 된다.) 한편, 보통 Dice loss 는 1 - dice metric 으로 정의된다. 보시다시피 F1 score와 같다. 민감도(sensitivity)와 정밀도(precision)의 조화평균이다. monai에서 dice loss와 score를 편하게 계산할 수 있다...
결론부터 말하자면 이름처럼 torch.nn.functional은 함수고 torch.nn은 클래스이다. 그래서 torch.nn으로 구현한 경우에는 객체를 인스턴스화하여 attribute를 활용해 state를 저장하고 활용할 수 있고, torch.nn.functional로 구현한 경우에는 인스턴스화 시킬 필요 없이 바로 사용이 가능하다. *attribute란 클래스 내부에 있는 메소드나 변수 등을 의미함 그저 model class를 만들 때 init 부분에 torch.nn 클래스를 이용하여 모델을 정의해 버리거나 forward 진행할 때 직접 torch.nn.functional 함수를 이용하여 계산해주거나의 차이일 뿐! 출처 https://cchhoo407.tistory.com/29 https://cvml...
논문들을 보고있노라면 FLOPs라는 개념이 등장하는데, 대충 연산량? 모델의 크기? 등 추상적으로 알고 있던 내용이라 정확한 개념을 알아보고자 정리를 해보았다.찾아보니 연산량에 대한 다양한 개념을 접할 수 있었다. FLOPs? FLOPS? MAC? 등.. 정리해보자 FLOPs(FLoating point OPerations)는 부동소수점 연산을 의미합니다. FLOPs에서의 연산은 사칙연산을 포함하여 root, log, exponential 등의 연산도 해당되며, 각각을 1회 연산으로 계산합니다. 반면, FLOPS는 FLoating point Operations Per Second의 약자로, 1초당 얼마나 많은 연산을 처리할 수 있느냐하는 하드웨어의 퍼포먼스 측면을 본다는 점에서 차이가 있습니다. MAC(M..