일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- precision #정밀도 #민감도 #sensitivity #특이도 #specifisity #F1 score #dice score #confusion matrix #recall #PR-AUC #ROC-AUC #PR curve #ROC curve #NPV #PPV
- 확산텐서영상
- deep learning #segmentation #sementic #pytorch #UNETR #transformer #UNET #3D #3D medical image
- tqdm #deep learning #dataloader #jupyter #notebook #ipywidgets
- MRI
- parrec
- pytorch #torch #monai #dice #score #metric #segmentation #loss
- genetic epidemiology
- 데코레이터
- 파이썬
- 코드오류
- monai
- MICCAI
- pytorch #torch #ViT #vit #VIT #Transformer #deep learning #vision #classification #image
- nlp
- pytorch #torch #torch.nn #torch.nn.Functional #F #nn #차이
- FLOPs #FLOPS
- nibabel
- decorater
- PYTHON
- Surgical video analysis
- Phase recognition
- nfiti
- words encoding
- TeCNO
- data augmentation #augmentation #3d #deep learning #image # medical image #pytorch #medical #CT #3D
- 유전역학
- RGB #CMYK #DPI
- 확산강조영상
- VNet #Vnet #segmentation #3D #voxel #semantic #pytorch #deep learning #UNet
- Today
- Total
목록분류 전체보기 (51)
KimbgAI
확산강조영상(Diffusion weighted image, DWI)은 인체 내 물분자들의 자기 확산(self-diffusion) 정도를 정량화 함으로서 생체 조직의 생리학적 특성과 이상 유무를 판단하는 자기공명영상 기법의 한 종류이다. 생체 내 물분자의 움직임은 세포막 등에 의해 제약을 받는데, 이를 제한 확산(restricted-diffusion)이라고 한다. 확산이란 용액 내 용매 분자가 농도 경사에 의해 농도가 높은 곳에서 낮은 곳으로 이동하는 현상이다. 그러나 농도 경사가 없는 순수한 물에서도 물분자 자체가 가진 역학적 에너지에 의해 불규칙하게 움직이게 되는데, 이런 현상을 브라운운동 이라고한다. 물분자의 확산은 세포 밀도나 혐수성 세포막의 밀도가 높으면서 세포 외 공간의 왜곡이 심한 악성 조직에..
분류 지표에는 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...
tqdm은 반복문에서 현재 어느 정도까지 진행이 되었는지 시각적으로 나타낼 수 있어 인내심을 길러주는데 아주 유용하다 특히나, pytorch에서 dataloader를 활용할때 자주 사용되는데, 여러 옵션을 넣어주면 더 편하게 볼 수 있어 좋다. from tqdm.notebook import tqdm import time dataloader = range(100) epoch_iterator = tqdm(iters, desc="Training (X / X Steps) (loss=X.X)", dynamic_ncols=True) global_step, max_iterations, loss = 0, 100, 3 for cnt, i in enumerate(epoch_iterator): time.sleep(0.1) ..
논문들을 보고있노라면 FLOPs라는 개념이 등장하는데, 대충 연산량? 모델의 크기? 등 추상적으로 알고 있던 내용이라 정확한 개념을 알아보고자 정리를 해보았다.찾아보니 연산량에 대한 다양한 개념을 접할 수 있었다. FLOPs? FLOPS? MAC? 등.. 정리해보자 FLOPs(FLoating point OPerations)는 부동소수점 연산을 의미합니다. FLOPs에서의 연산은 사칙연산을 포함하여 root, log, exponential 등의 연산도 해당되며, 각각을 1회 연산으로 계산합니다. 반면, FLOPS는 FLoating point Operations Per Second의 약자로, 1초당 얼마나 많은 연산을 처리할 수 있느냐하는 하드웨어의 퍼포먼스 측면을 본다는 점에서 차이가 있습니다. MAC(M..
V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation 논문은 아래 링크 참조 https://arxiv.org/abs/1606.04797 VNet은 UNet에서 영감을 받아 만들어진 architecture로써 구조가 상당히 비슷하다. CT나 MRI같은 image sequences data들은 2d보다 3d 그 자체로 분석했을때 유의미한 결과를 얻을 수 있는 부분이 많다. 왜냐하면, 어떤 한 slice 이미지가 직전, 직후 slice 이미지와의 연관성이 매우 높기 때문이다. 3d convolution은 이러한 장점을 가지고 연산할 수 있다. (연산량이 매우 많은 것은 단점..) 그림에서 볼수 있듯이, UNet과..