끄적거림

(수정중)[pytorch] 나만의 이미지 데이터 로딩 in Colab 본문

Python/pytorch

(수정중)[pytorch] 나만의 이미지 데이터 로딩 in Colab

Signing 2020. 12. 13. 16:42
728x90
반응형

[데이터셋] PHD08 한글 손글씨 이미지 데이터

 

[데이터셋] PHD08 한글 손글씨 이미지 데이터

딥러닝, 특히 CNN에서 가장 먼저 접하는 데이터셋이 바로 MNIST일거라 생각된다. MNIST는 0~9까지의 숫자에 대한 손글씨 이미지 데이터이다. 해외에서 공인된 데이터인만큼 데이터를 얻기도 매우 수

signing.tistory.com


예전 포스팅으로 한글 손글씨 이미지 데이터인 PHD08 데이터 셋에 대한 소개를 한 적이 있다.

이 데이터 셋을 가지고 이제 대학원 과제로 하게된 한글 손글씨 인식 모델링을 진행하고자 한다.

일단 전의 포스팅을 참고하여 데이터셋을 준비해야한다.

시간이 매우 오래 걸리니 원하는 파일만 가져다가 데이터를 준비하길 바란다.

 

그 다음으로 데이터를 가지고 모델링을 해야하는데 내 노트북은 8기가 램의 intel i5 - 10세대 CPU이기 때문에 뭐 크게 나쁜 사양은 아니지만 그래도 한 번 GPU 학습을 해보면 어떨까 해서(노트북에 낮은 수준의 NVIDIA가 있긴하지만 DL을 돌리기엔 역부족,,,) 국민노트북 Colab을 활용하기로 했다.

 

코랩: colab.research.google.com/

 

Google Colaboratory

 

colab.research.google.com

구글 계정만 있으면 손쉽게 구글의 GPU를 다룰 수 있기 때문에 공부용으로는 괜찮다고 생각한다.

이제 구글 드라이브에 준비했던 데이터들을 업로드 하고 colab에서 이를 마운트하면 colab에서 구글 드라이브에 접근할 수 있다.

 

Colab 시작하기 feat. Google Drive 마운트

 

 


1. 데이터 준비(구글 드라이브)

구글 드라이브에서 데이터 준비

그림처럼, 구글 드라이브에 상위 폴더 아래에 하위 폴더로 그림과 같이 이미지 데이터를 분리하여 업로드 해줘야한다.

그래야 제대로 데이터들을 읽어올 수 있기 때문이다.

 

 

2. 데이터 읽기(Colab)

import torchvision

data = torchvision.datasets.ImageFolder(
    root = 'drive/My Drive/CAU/2020_2/AdvancedAI/Korean_Image_Data',
    transform=None
)

torchvision은 pytorch에서 비전(vision)분야를 위해 만들어진 패키지이다.

위의 코드를 이용하여 데이터를 불러올 수 있다.

root 인자는 1.데이터 준비 단계에서 보았던 것처럼 이미지 데이터가 있는 최상위 폴더로 지정해준다.

 

 

3. 데이터 나누기(Colab)

len(data)		# 10935

print(int(len(data)*0.5))		# 5467
print(int(len(data)*0.3))		# 3280
print(int(len(data)*0.2))		# 2187

int(len(data)*0.5) + int(len(data)*0.3) + int(len(data)*0.2)		# 10934

train, val, test = torch.utils.data.random_split(data, [5468, 3280, 2187])

print(len(train))		# 5468
print(len(val))		# 3280
print(len(test))		# 2187

전체 데이터 수는 10935개였기 때문에, 이를 일정한 비율로 split하여 train, val, test 데이터로 나눠보자.

이때, random_split( ) 함수를 이용하여 손쉽게 나눠볼 수 있다.

 

 

 

4. 데이터 확인(Colab)

실제로 데이터를 잘 가져왔는지 살펴보자.

train.dataset.class_to_idx

# {'가': 0, '곯': 1, '깹': 2, '끙': 3, '나': 4}

위의 코드를 실행해보면, 각 class를 어떻게 labeling했는지를 확인할 수 있다.

 

이제 value_count를 확인해보자!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments