반응형

Python/PyTorch 공부 70

[PyTorch] dataset 분할하기

이번 포스팅에서는 10개의 카테고리을 지닌 데이터셋을 각 카테고리간 동일한 비율로 데이터를 갖도록 분리해보겠습니다. 사용하는 데이터셋은 STL-10 dataset입니다. STL-10 dataset은 10개의 카테고리로 이루어져 있으며, train과 test dataset을 제공합니다. val dataset을 제공하지 않기 때문에 test dataset을 분할하여 val dataset을 만들어보도록 하겠습니다. 작업 환경은 colab에서 진행했습니다. 분할에 이용하는 함수는 sklearn 모듈의 StratifiedShuffleSplit 함수입니다. STL-10 dataset 불러오기 파이토치의 torchvision 패키지에서 제공하는 STL-10 dataset을 불러옵니다. STL-10 dataset은 9..

[PyTorch] convolutional layer 출력 크기 계산하는 함수 만들기

CNN 모델을 구축하다보면 conv layer의 출력값 계산을 실수하여 모델이 오류가 발생하는 경우가 종종 있습니다. 실수를 방지하기 위해 conv layer의 출력값을 계산해주는 함수입니다. import torch.nn as nn import numpy as np # define the helper function def findConv2dOutShape(H_in, W_in, conv, pool=2): # get conv arguments kernel_size = conv.kernel_size stride = conv.stride padding = conv.padding dilation = conv.dilation H_out = np.floor((H_in + 2*padding[0] - dilation[..

[PyTorch] 암 이미지로 커스텀 데이터셋 만들기(creating custom dataset for cancer images)

kaggle에 있는 Histopathologic Cancer Detection 대회에서 제공하는 Histopathologic cencer 이미지로 커스텀 데이터셋(custom dataset)을 만들어보도록 하겠습니다. histopathologic cencer 이미지는 종양이 있는 경우 1, 없는 경우 0 두 가지로 분류되는 이진 분류 문제입니다. 우선, kaggle에서 제공한 데이터 레이블을 확인해보겠습니다. 구글 코랩을 사용했습니다. import pandas as pd path2csv = '/content/cookbook/MyDrive/data/train_labels.csv' labels_df = pd.read_csv(path2csv) labels_df.head() id 는 이미지의 이름을 의미합니다...

[PyTorch] CNN 신경망 구축하고 MNIST 데이터셋으로 학습하기

PyTorch Computer Vision Cookbook 을 공부하고 정리한 포스팅입니다. colab 환경에서 MNIST 데이터를 활용해 간단한 CNN 신경망을 구축하고 학습, 평가까지 진행해 보도록 하겠습니다! 이번 포스팅에서는 다음 순서로 진행됩니다. MNIST 데이터셋 불러오고 전처리 CNN 모델 구축 loss function과 optimizer 정의 학습 및 평가 모델 파라미터 저장 및 불러오기 데이터 전처리 우선 구글 colab에 마운트를 해줍니다. from google.colab import drive drive.mount('cookbook') CUDA를 확인하고 device를 지정합니다. import torch if torch.cuda.is_available(): device = torch..

[Object Detection] YOLO(v3)를 PyTorch로 바닥부터 구현하기 - Part 5

이 포스팅은 공부 목적으로 아래 게시물을 번역한 글입니다. How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 3 Part 3 of the tutorial series on how to implement a YOLO v3 object detector from scratch in PyTorch. blog.paperspace.com yolo v3을 파이토치로 바닥부터 구현하는 튜토리얼의 part 5 입니다. 지난 part에서 신경망의 출력값을 detection predictions로 변환하는 함수를 구현했습니다. 이제 남은 것은 입 출력 pipelines를 생성하는 것입니다. 전체 코드는 여기에서 확인하실 수 있습니다. 이 튜..

[Object Detection] YOLO(v3)를 PyTorch로 바닥부터 구현하기 - Part 4

이 포스팅은 공부 목적으로 아래 게시물을 번역한 글입니다. How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 3 Part 3 of the tutorial series on how to implement a YOLO v3 object detector from scratch in PyTorch. blog.paperspace.com 파이토치로 YOLO v3 detector를 구현하는 튜토리얼의 part 4 입니다. 지난 part에서 우리는 신경망의 순전파를 구현했습니다. 이번 part에서, detections를 object confidence로 threshold하고 non-maximum suppression을 할 것입니다. 이..

[Object Detection] YOLO(v3)를 PyTorch로 바닥부터 구현하기 - Part 3

이 포스팅은 공부 목적으로 아래 게시물을 번역한 글입니다. How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 3 Part 3 of the tutorial series on how to implement a YOLO v3 object detector from scratch in PyTorch. blog.paperspace.com YOLO v3 detector를 바닥부터 구현하는 튜토리얼의 Part 3입니다. 지난 part에서 YOLO 구조에 사용되는 layers를 구현했고, 이번 파트에서는 주어진 이미지로부터 출력값을 생성하기 위해 PyTorch로 YOLO의 신경망 구조를 구현할 것입니다. 이 튜토리얼 코드는 Python ..

[Object Detection] YOLO(v3)를 PyTorch로 바닥부터 구현하기 - Part 2

안녕하세요! YOLO를 PyTorch로 바닥부터 구현하기 part 2 입니다. 이 포스팅은 공부 목적으로 아래 게시글을 변역했습니다. How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 2 Part 2 of the tutorial series on how to implement your own YOLO v3 object detector from scratch in PyTorch. blog.paperspace.com 바닥부터 YOLO v3 detector를 구현하는 튜토리얼의 Part 2 입니다. 지난 파트에서, YOLO가 어떻게 작동하는 지 설명했고 이번 파트에서는 YOLO에서 사용되는 layers를 PyTorch로 구현해..

[Object Detection] YOLO(v3)를 PyTorch로 바닥부터 구현하기 - Part 1

YOLO를 알아보고, pytorch로 바닥부터 구현해보는 블로그가 있어 번역 해보기로 했습니다! 많은 공부가 될 것 같습니다ㅎㅎ 블로그는 아래 링크에서 확인하실 수 있습니다. Tutorial on implementing YOLO v3 from scratch in PyTorch Tutorial on building YOLO v3 detector from scratch detailing how to create the network architecture from a configuration file, load the weights and designing input/output pipelines. blog.paperspace.com 객체 탐지는 딥러닝의 발전에 의해 큰 이점을 얻은 분야입니다. 최근 몇년 ..

[PyTorch] 4. 검증(validation) 추가하고 fit() 와 get_data() 생성하기

실제로 효과적인 모델을 생성하는데 필요한 기본적인 기능들을 추가해보겠습니다. 검증(validation) 추가하기 이전 포스팅에서 훈련 데이터를 사용하기 위해 합리적인 훈련 루프를 설정하려 했습니다. 과적함인지 확인하기 위해 실제로는 항상 검증 데이터 셋을 갖고 있어야 합니다. 배치와 과적합 사이에 상관관계를 방지하기 위해 훈련 데이터를 섞는 것은 중요합니다. 반면에 검증 손실은 검증 셋을 섞었는지 안섞었는지 동일합니다. 따라서 데이터를 섞는 것은 추가 시간이 필요하기 때문에, 검증 데이터를 섞을 필요는 없습니다. 훈련 셋의 배치 크기 2배로 검증 셋에 대한 배치 크기를 사용하겠습니다. 검증 셋은 역전파가 필요없기 때문에 적은 메모리를 사용합니다. (기울기를 저장할 필요가 없기 때문입니다.) 큰 배치 크기..

반응형