[python] OpenCV, PIL, Numpy, PyTorch 타입 분석, 타입 변환 정리
·
💻 Programming/Computer Vision
# PIL RGB 타입으로 이미지 읽음 torchvision.transforms 모듈에서 지원하는 데이터 타입이 PIL의 Image array 이므로 pytorch 프레임워크 사용시 PIL 로 이미지를 로딩하는 방식을 많이 사용 numpy array 인덱싱 불가능 → 상황에 따라 numpy array로 바꾸기 위한 작업 필요 사이즈 확인시 .size() 메서드로 확인 가능한데, (W,H)로 출력됨. 하지만, numpy array 로 변환시 (H,W,C)로 나오니까 주의. 즉, .size()로 확인 시에만 (W,H)로 나오는 것. from PIL import Image image = Image.open("image.jpg").convert('RGB') image.show() image.save("saved..
[pytorch] COCO Data Format 전용 Custom Dataset 생성
·
💻 Programming/AI & ML
Object Detection과 Segmentation 에서 흔히 사용되는 COCO dataformat 전용 Customdataset을 생성하는 방법을 소개한다. 흔히 알고 있는 COCO 데이터셋이 있고, 많은 데이터셋들이 COCO data format 을 따르는데, 이러한 데이터셋을 사용하기 위해 Customdataset을 구성하는 방법과 COCO API 인 Pycocotools 사용법을 설명한다. COCO Data Format Detection task에서는 Bounding box의 위치와 class label이 필요하고 segmentation task 에서는 segment mask 정보가 필요하다. 이러한 annotation 정보들은 json 형태로 제공되고, JSON 파일에는 Info, Licen..
[pytorch] model 에 접근하기, 특정 layer 변경하기
·
💻 Programming/AI & ML
pytorch 모델에 접근하고 특정 layer 또는 layer 내부의 모듈을 변경하는 방법을 정리한다. - 예시 모델 : resnet50 import torch.nn as nn import torchvision.models as models model = models.resnet50(pretrained=True) 1. self.named_parameters() for name, param in model.layer1.named_parameters(): print(name,param.shape,sep=" ") 2. self.named_children() for name,ch in model.layer1.named_children(): print("name :",name) print("child :", ch..
[pytorch] Custom dataset, dataloader 만들기
·
💻 Programming/AI & ML
* dataset 폴더 구조 minc2500 ├─images │ ├─brick │ │ ├─brick_000000.jpg │ │ ├─brick_000001.jpg │ │ ├─... │ ├─carpet │ │ ├─carpet_000000.jpg │ │ ├─... │ ├─... │ │ ├─... │ │ ├─... ... ... ... ├─labels │ ├─train1.txt │ ├─train2.txt │ ├─... │ ├─test1.txt │ ├─test2.txt │ └─... import os import os.path import torch import torch.utils.data as data from PIL import Image from torchvision import transforms imp..
[pytorch] DataParallel 로 학습한 모델 load
·
💻 Programming/AI & ML
model = custom_LSTM() model = torch.nn.DataParallel(model) with open(os.path.join('C:/Users/' + 'model_1.pt'), 'rb') as f: model.load_state_dict(torch.load(f)) DataParallel 로 학습시킨 모델을 load해서 사용할 때는 위와 같이 torch.nn.DataParallel(model) 코드를 써줘야 error 없이 사용 가능하다.
[pytorch] 모델의 일부 레이어 웨이트 업데이트 막기 | model freezing (모델 프리징)
·
💻 Programming/AI & ML
PyTorch에서 모델 일부분의 학습을막기 위해서는 해당 부분의 매개변수에 대해 requires_grad 속성을 False로 설정하면 된다. 이를 통해 그 매개변수에 대한 gradient가 계산되지 않아 웨이트가 업데이트되지 않는다. 기본적으로 model.named_parameters() 메서드를 사용하여 name과 param을 추출하고 원하는 name의 레이어만 requires_grad를 변경할 수 있다. 모델 프리징 예시 - Resnet 예시 import torch import torch.nn as nn import torchvision.models as models # ResNet-50 모델 불러오기 (pre-trained) resnet50 = models.resnet50(pretrained=Tr..