반응형

AI 17

Reducing Network Agnostophobia 논문 리뷰 (Entropic Open-set Loss)

안녕하세요 open-set Loss라는 주제를 가지고 논문 리뷰를 진행하려고 합니다. https://arxiv.org/pdf/1811.04110.pdf (작성중..) ** Code class Entropic_Open_set_Loss(): def __init__(self, class_names): self.class_num = len(class_names) self.Cross_entropy = nn.CrossEntropyLoss() def __call__(self, output, target_batch): output_softmax = F.softmax(output, dim=1) loss = 0 for i, target in enumerate(target_batch): if target == self.cl..

AI 2022.07.31

XML to TXT annotation file format 변환

안녕하세요. Custom data를 사용하여 YoloV5s 모델을 사용하려다 보니 dataset annotation format이 txt파일 포맷인 걸 알고 난 후 기존에 가지고 있던 데이터셋의 annotation format을 바꾸는 작업을 하려고 합니다. 데이터 로더 부분을 수정하는 방법도 있겠지만 학습코드를 건드리지 않는 선에서 진행을 하고 싶어 이 방법을 택했습니다. * 사용한 학습 코드 https://github.com/ultralytics/yolov5 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite. Contribute to ult..

AI 2022.07.26

Gradient Descent?

안녕하세요. Gradient Descent에 대해서 공부하기위해서 조사한 자료를 요약하고자 합니다. Gradient Descent Gradient descent는 한국말로 경사하강법이라고 불립니다. 머신러닝에서 Gradient Descent는 모델의 파라미터값들을 업데이트하기 위해서 사용됩니다. 어떤방식으로 파라미터값들을 업데이트 하는지 설명해드리겠습니다. Introduction 예시를 들어볼게요. 다음과 같이 3차원 그래프 그림이 있다고 가정을 해볼게요. 여기서 우리가 원하는 것은 오른쪽 위에보이는 높은 지형(높은 값을 가진 지형이라고 가정할게요) 에서 가장 낮은 지형(진한 파랑 -> 낮은 값을 가지고 있는 지형)으로 가고자 하는 것으로 하겠습니다. 그리고 그림에서 화살표는 해당 위치에서 음의 기울기방..

AI 2022.07.24

[에러] RuntimeError: Error(s) in loading state_dict for ~ , size mismatch for ~

안녕하세요 pretrained된 모델을 로드하고 학습 및 추론을 할 때 다음과 같은 에러를 보신적이 한두번은 있을겁니다. size mismatch가 아닌 없는 layer또는 있는 layer를 무시할 때는 state_dict = torch.load(cached_file) mdl.load_state_dict(state_dict,strict=False) 위에 코드처럼 load_state_dict()에 strict=False만 기입해주면 해결이 됩니다. 하지만 맨 위에 에러처럼 같은 layer에서의 size mismatch는 strict=False로 해결이 안됩니다... 외국 포럼 사이트에서 해결방법을 찾게되어 소개를 해볼려고 합니다. 우선 코드부터 보드리겠습니다. def on_load_checkpoint(se..

AI 2021.12.07

[Pytorch] LENET5 모델 학습 및 추론 코드(마스크 구별 프로그램)

안녕하세요 LENET5모델을 활용하여 Pytorch를 통해 학습시키는 과정을 해볼려고 합니다. 우선 전체 코드 공유해드릴게요~ import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from PIL import Image import os import torchvision.transforms as transforms from torchsummary import summary from torch import optim from datetime import datetime ##path define DATASET_PATH = './dataset/' EPOCHS..

AI 2021.11.11

tensorflow zoo && tensorflow detection api 사용하여 tflite파일 만드는 과정

안녕하세요 tensorflow zoo와 tensorflow detection api를 사용하여 tflite파일을 만드는 과정에 대해서 설명드리고자 합니다. https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md -> Object Detection API with TensorFlow 2 하나의 디렉토리를 만듭니다.(~디렉토리에 만든다고 가정할게요, 계속 나올거니까 유의하세요~) mkdir ~/tensorflow 그리고 Object Detection API를 설치하기 위해서는 protobuf-compiler를 설치해야합니다. (tensorflow는 파일 저장 포맷을 프로토콜 버퍼를 사용하고, 컴파일 하기위해..

AI 2021.11.10

RuntimeError: stack expects each tensor to be equal size, but got ~

안녕하세요 pytorch를 사용하여 학습 및 추론을 진행 할 때 RuntimeError: stack expects each tensor to be equal size, but got ~과 같은 에러가 DataLoader에서 발생하는 경우가 종종 있습니다. 해당 에러는 사용하는 데이터셋의 이미지의 사이즈가 서로 달라서입니다. 사이즈가 다르게되면 Array나 Tensor의 각 차원이 동일하지 않기 때문에 batch형태로 묶어줄 수 없기 때문에 발생합니다. 따라서 해결하기 위해서는 torchvision에서 제공하는 transforms.resize()함수를 사용하거나 그 외에 다양한 방법으로 Resize를 진행해주시면 됩니다. import torchvision.transforms as transforms tra..

AI 2021.11.09

RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0

안녕하세요 Pytorch를 사용하여 학습을 진행하는 과정에서 DataLoader를 진행하는 과정에서 다음과 같은 에러가 발생하는걸 종종 확인 할 수 있습니다. 저의 케이스에서는 학습 시킬 이미지 중에 채널이 3개만 있는 이미지 뿐만 아니라 채널이 4개가 있는 이미지가 포함되어 있을 때 발생합니다. 왜냐하면 저의 경우 normalize를 ((0.5,0.5,0.5),(0.5,0.5,0.5)) 3개의 채널에 대해서만 진행을 하기 때문입니다. 따라서 이 에러를 해결하기 위해서는 Dataset 클래스에서 이미지를 불러올 다음과 같이 수정했습니다. image = Image.open(self.img_list[idx]) -> image = Image.open(self.img_list[idx]).convert('RGB'..

AI 2021.11.09

torch.nn 과 torch.nn.functional 차이점!

안녕하세요~ pytorch 를 활용한 레퍼런스 코드를 보기위해 git에 돌아다니다보면 layer 및 activation Function 을 구현할 때 torch.nn.Dropout 를 쓰는 경우도 있고, torch.nn.functional.dropout 을 쓰는 경우도 있습니다. 같은 dropout인데 왜 두개나 있는지 궁금해서 구글에 서칭해본 결고 다음 블로그에서 잘 설명해주어서 도움이 되었습니다. https://cvml.tistory.com/10 당연 영어 사이트가 저를 맞이할줄 알았는데 한글로 잘 정리해줘서 고마웠습니다.(감사합니다~~) ##torch nn import torch import torch.nn as nn loss = nn.CrossEntropyLoss() input = torch.ra..

AI 2021.11.08

5x5 Conv 를 3x3 Conv2개로 대체 효율

안녕하세요 ~ VGG에서 사용한 5x5 Conv를 3x3Conv 2개로 대체했을 때 왜 파라미터가 수가 적어진다고 하는지 알아보겠습니다. 우선 가정을 해보십다~ output Feature map size: HXW, input Channel, output Channel = 1 라고 생각하면 쉬울거 같아요. 파라미터 및 곱셈 연산량 비교 5x5 Conv 3x3 Conv + 3x3 Conv Params 25 18 Multiplication 25HW 18(HW + H + W +2) 계산을 해보면 다음과 같은 결과를 얻을 수 있습니다. 따라서 항상 5x5 Conv가 3x3 Conv + 3x3 Conv보다 파라미터수는 적음을 확인 할 수 있지만, 연산량에 있어서는 항상 3x3Conv + 3x3Conv가 더 좋다고 ..

AI 2021.11.08
반응형