전체 글 72

Attention UNET 모델 구조 파이토치(Pytorch) 코드

기존 UNET 구조에서 skip connection 결과가 Decoder 에 추가될 때, Attention score를 적용해보기 위해 Attention Layer를 추가 Codes # 02. Attention UNET Model class ConvBlock(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.conv = nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=True), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True), nn.Conv2d(..

Python Code 2024.01.23

torch 모델 save, load

Pytorch 에서 모델을 pth 파일로 저장 후, 가중치를 불러와서 prediction 시에 발생하는 오류가 있어서 정리 모델 파일에서 load_state_dict 로 정보들을 가져온 뒤 파라미터에 weight를 적용해도 성능이 0.0 으로 나오는 경우가 있음. 이런 경우는 모델 저장 시에 weight와 optimizer 정보까지 같이 저장한 경우여서, 두개 전부 load 해주어야함. # Torch model Save def save(ckpt_dir, model, optim, epoch, iou, f1): """ Save torch model in check point directory. Args: ckpt_dir (str): checkpoint directory path model (torch mod..

Python Code 2024.01.22

Nibabel 사용법

공식문서 페이지: https://nipy.org/nibabel/ 설치 pip install nibabel import nibabel as nib 데이터 읽기 (nib.load) Affine and Header affine: 4*4 array 형태로 voxel space에서 reference space으로의 변환을 설명함 header: 이미지의 모든 메타데이터를 저장하는 nibabel 구조로, 직접 쿼리할 수 있음 nib.aff2axcodes(affine) img.header['descrip'] 새 이미지를 만들었을 때 원본과 파생물이 일치하는지 확인하기 위해 Affine과 Header를 탐색할 수 있음 img load def display_slices(nii_file_path, num_slices=5):..

Python Code 2024.01.19

DICOM 파일 전처리

dicom meta 데이터를 활용한 이미지 전처리 - 실제 dicom 이미지에 저장된 값을 image값으로 변환하기 - dicom 내의 x좌표, y좌표 -> pixel_array[y좌표][x좌표]로 불러오기 - RescaleSlope,RescaleIntercept 는 디스크에 저장된 픽셀에서 메모리 표현으로의 선형 변환을 지정하는 태그 - CT 이미지는 일반적으로 부호없는 변수로 저장되기에 음수로도 저장되는 Houndsfield 단위에 대한 변환을 위해 후처리가 필요 1. Low-level 수준에서의 dicom 이미지 전처리 - RescaleSlope, RescaleIntercept를 활용하여 Dicnom 저장된 이미지 값으로 변환 - Dicom header의 Bits_Stored를 활용하여 normal..

Python Code 2024.01.19

anaconda 다중 사용자(multi-user) 환경 세팅

Anaconda 설치 받은 sh 파일을 실행 bash [받은 Anaconda 설치 파일] https://www.anaconda.com/download#downloads Anaconda 설치 폴더에 대한 작업 수행 # 그룹 추가 sudo addgroup add [그룹명] # 그룹이 Anaconda 폴더에 접근할 수 있도록 권한 변경 ex) /anaconda3 sudo chgrp -R mygroup /PATH/TO/ANACONDA/INSTALL sudo chmod 770 -R /PATH/TO/ANACONDA/INSTALL # 유저를 Anaconda 접근할 유저를 추가 sudo adduser [유저] [그룹명] 환경 변수 설정 유저의 홈 디렉터리에서 환경 변수(.bashrc) 적용(Anaconda 환경 접근을..

Deep Learning 2024.01.15

Multi class Segmentation Loss function 정리

Segmentation 에 적용할 수 있는 Loss function은 아래와 같다. BCE Loss 이진분류에 사용되는 Loss Focal Loss 불균형한 클래스 분포를 가진 데이터셋에서 Classification 할 때 주로 사용 희소한 class에 대해 더 집중되는 효과가 있음. ALPHA = 0.8 GAMMA = 2 def FocalLoss(targets, inputs, alpha=ALPHA, gamma=GAMMA): inputs = K.flatten(inputs) targets = K.flatten(targets) BCE = K.binary_crossentropy(targets, inputs) BCE_EXP = K.exp(-BCE) focal_loss = K.mean(alpha * K.pow((..

Deep Learning 2024.01.15

Glob 이용해서 특정폴더의 이미지 경로들을 DataFrame으로 만들기

이미지 처리를 하다보면 원본 이미지와 레이블된 이미지가 동시에 들어가있는 경우가 있음. 이럴때는 glob 을 잘 활용해서 파일명으로 구분한 후, filepath 를 데이터프레임으로 만드는 코드가 유용함. def get_file_row_nii(file_paths): """Produces ID of a patient, image and mask filenames from a particular path""" file_paths = sorted(list(set(glob(f'{file_paths}/*.nii.gz')) - set(glob(f'{file_paths}/*_mask.nii.gz')))) temp = [] for file in file_paths: for i in range(0, len(nib.load..

Python Code 2024.01.11

masking 종류 및 설명

마스킹 종류는 여러가지가 있으며, 각 데이터별로 활용하거나 적용할 수 있는 것들이 다양함. Uniform Sampling Mask : 이미지나 신호 처리에서 사용되는 용어 중 하나로, 균일하게 분포된 샘플을 기반으로 마스킹 하는 방법 이미지 처리에서의 균일 샘플링: 이미지에서 균일한 샘플링은 이미지의 각 픽셀이나 픽셀 그룹에 대해 균일한 간격으로 데이터를 선택하여 마스킹함. 이는 이미지를 효과적으로 다운샘플링하거나, 특정 영역에 대한 정보를 추출하거나, 이미지에서 특정 특징을 감지하는 등의 작업에서 사용됨. 신호 처리에서의 균일 샘플링: 신호 처리에서 균일 샘플링은 신호를 일정한 간격으로 샘플링하는 것으로 마스킹함. 이는 아날로그 신호를 디지털로 변환하는 과정에서 적용되며, 디지털 신호 처리에서도 다양한..

Image artifact generate 설명

"Image artifact"는 이미지에서 발생한 불규칙한 변형이나 오류를 나타내는 용어이고, "Image artifact generation"은 주로 이미지 처리나 그래픽스 관련 연구에서 사용되는 용어임. 인공적으로 이미지에 다양한 종류의 아티팩트를 도입하거나 생성하는 작업을 의미하며, 이러한 작업은 주로 다음과 같은 목적을 위해 수행됨. 데이터 증강 (Data Augmentation): 모델을 학습시키기 전에 데이터셋을 다양하게 만들기 위해 이미지에 다양한 아티팩트를 추가하는 것은 모델의 일반화 성능을 향상시킬 수 있음. 모델 성능 평가: 모델의 견고성을 테스트하거나 어떤 종류의 아티팩트에 대한 모델의 강건성을 확인하기 위해 image artifact를 생성하는 것이 유용할 수 있음. 보안 연구: 이..