필요한 라이브러리 임포트 import cv2 import torch import numpy as np from torch import nn import torch.nn.functional as F import matplotlib.pyplot as plt 이미지를 마스크 경부에 따라 넘파이 어레이로 읽어오기 def img_read(data_path, is_mask = False): if is_mask: img = cv2.imread(data_path, cv2.IMREAD_GRAYSCALE) # (256, 256) else: img = cv2.imread(data_path) # (256, 256, 3) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR -> RGB ret..
코드를 이해하기 위한 지식 더보기 mask = cv2.imread(mask_fn)[..., 0] / 255. 에서 [..., 0]에 대한 설명 [..., 0] 구문은 Python의 NumPy 라이브러리나 PyTorch에서 사용되는 고급 인덱싱 기법 중 하나입니다. 이 구문은 다차원 배열에서 특정 차원의 모든 요소를 선택하면서, 동시에 다른 차원에서는 특정 인덱스의 요소만을 선택하고자 할 때 사용됩니다. 예를 들어, cv2.imread로 이미지를 읽었을 때 반환되는 배열의 형태는 일반적으로 (높이, 너비, 채널)입니다. 여기서 채널은 BGR 순서로 색상을 나타냅니다(OpenCV는 기본적으로 BGR 포맷을 사용). [..., 0]는 이 배열에서 모든 높이와 너비에 대해 첫 번째 채널(B 채널)만을 선택하라는..
코드 독해에 필요한 배경지식 더보기 torch.load() 함수 torch.load() 함수는 PyTorch에서 모델이나 텐서 등을 저장한 파일을 로드할 때 사용됩니다. 이 함수는 저장된 객체를 직렬화된 형태에서 다시 Python 객체로 복원합니다. 주로 모델의 가중치, 옵티마이저의 상태 등을 저장한 체크포인트 파일을 로드하는 데 사용됩니다. 예를 들어, 학습 중에 모델의 상태를 파일에 저장했다면, 이후에 torch.load()를 사용하여 해당 상태를 다시 로드할 수 있습니다. load_state_dict() 함수와 strict=True load_state_dict() 함수는 모델의 매개변수(가중치와 편향)를 로드하기 위해 사용됩니다. 이 함수는 인자로 전달된 상태 딕셔너리(state_dict)를 현재 ..
폴더에 너무 유사한 이미지가 많다면, 이를 삭제 import os import PIL import json import glob import numpy as np from PIL import Image import cv2, numpy as np import matplotlib.pyplot as plt from matplotlib import font_manager, rc def similar_image_deletion(dir_path: str, index: int): dir_path = dir_path #img_dirs = [이미지 디렉토리 전부 저장] img_dirs = [] for path in os.listdir(dir_path): img_dir = os.path.join(dir_path, path..
images 폴더와 labels 폴더에 동일한 이름의 파일이 존재 labels 폴더의 txt 파일 맨 앞에는 대응하는 이미지의 클래스를 기록 import os import shutil images_folder = './train/images' labels_folder = './train/labels' output_folder = './train/classes' for label_file in os.listdir(labels_folder): if label_file.endswith('.txt'): # 동일한 이름의 이미지 파일 경로 생성 image_name = label_file.replace('.txt', '.jpg') image_path = os.path.join(images_folder, image_..
나만의 머신러닝 코드를 작성하기 위해선 기존에 완성된 코드를 분석하는 것이 우선이라고 생각하였다. 따라서 2019년에 발표된 edge connect 논문의 코드를 먼저 깊게 분석하기로 한다. 메인 함수 더보기 main.py 개요 모델을 불러와서 argument를 넣고 train 혹은 test를 진행하는 함수 보조 모듈 config.py, edge_conncect.py 함수 main(mode = None) 1. arguements 받기 (import config.py) 2. CUDA 설정 3. 랜덤 시드 설정 4. 모델 초기화 (import edge_connect.py) 5. train/test/eval에 따른 실험 진행 load_config(mode = None) config.yml 파일을 받아서 arg..