일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- monai
- decorater
- Surgical video analysis
- genetic epidemiology
- parer review
- paper review
- 코드오류
- parametric model
- TabNet
- 확산텐서영상
- MICCAI
- MRI
- 확산강조영상
- 모수적 모델
- 데코레이터
- nlp
- non-parametric model
- Phase recognition
- 유전역학
- nfiti
- nibabel
- 파이썬
- deep learning #segmentation #sementic #pytorch #UNETR #transformer #UNET #3D #3D medical image
- tabular
- words encoding
- 비모수적 모델
- TeCNO
- PYTHON
- parrec
- precision #정밀도 #민감도 #sensitivity #특이도 #specifisity #F1 score #dice score #confusion matrix #recall #PR-AUC #ROC-AUC #PR curve #ROC curve #NPV #PPV
- Today
- Total
목록분류 전체보기 (54)
KimbgAI
어떤 이미지 안에 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..
클래스에서 매서드를 통해 속성의 값을 가져오거나 저장하는 경우가 있습니다. 예를들면, 아래와 같습니다. class Person: def __init__(self, a, b): self.name = a self.age = b person = Person("John", 20) print(person.age) person.age = person.age + 1 print(person.age) 20 21 Person 클래스의 인스턴스를 생성 후에, 필드 값을 읽거나 쓰는 것은 매우 자유롭습니다. 하지만 이렇게 되면 해당 데이터는 외부로부터 무방비 상태에 놓이게 됩니다. 이러한 상황에서 데이터를 접근을 관리할 수 있게 @property를 사용할 수 있습니다. class Person: def __init__(self..
데코레이터란? 파이썬은 데코레이터(decorator)라는 기능은 제공하는데, 함수(매서드) 클래스를 장식하는 도구를 뜻합니다. 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다. 보통 데코레이터는 프로그램의 버그를 찾는 디버깅, 함수의 성능 측정, 함수 실행 전에 데이터 확인 등에 활용합니다. 예를 들어, 함수의 시작과 끝을 출력하고 싶다면 다음과 같이 함수 시작과 끝 부분에 print()를 넣어주면 됩니다. def trace(func): # 호출할 함수를 매개변수로 받음 def wrapper(): # 호출할 함수를 감싸는 함수 print(func.__name__, '함수 시작') # __name__으로 함수 이름 출력 func() # 매개변수로 받은 함수를 호출 print(f..
확산강조영상(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...