7-17 구글 Colabo에서 PyTorch CIFAR-10 이미지 GPU 머신 러닝 I

in #kr5 years ago (edited)

CIFAR-10 PyTorch 쥬피터 노트북(Jupyter Notebook)예제를 구글 Colabo에서 다루어 보자. 쥬피터 노트북에서 실행이 잘되면 Colabo에서 실행도 아무런 문제가 없을 것이지만 단 학습과 테스트를 위한 데이터 파일을 Colabo 맞춰 준비해주고 런타임에서 유형을 GPU 로 설정해주면 실행이 된다.

10개의 class 로 구인된 6만개의 이미지인 CIFAR-10 는 MNIST와 마찬가지로 5만개는 학습용이고 1만개는 테스트용이다. 각각의 이미지는 3X32X32로 주어진다. 맨 앞의 3X의 3은 Convolutional Neural Network 처리를 위한 RGB 컬러 색상을 뜻한다. 32X32 해상도이면 MNIST 흑백 문자 데이터이면 충분하지만 컬러 실물 사진은 아주 흐릿하여 간신히 인간의 눈으로 인식할 수 있는 정도이다. 판독율이 나쁠 수도 있다.

noname01.png

사진 이미지를 대상으로 하는 CNN(Convolutional Neural Network) 학습에서 가장 어려운 점의 하나는 CNN 구조가 복잡하여 각 레이어별로 어떤 효과가 있는지 이해하기가 어렵다는 점이다. 따라서 CNN의 이해를 돕기 위해서는 적절한 이미지 예제를 선택 사용해야 하는데 유튜브에서 찾아 볼 수 있는 Brabdon Rohrer의 “How Convolutional Neural Networks work”의 “OX” 예제가 대단히 효과적일 수가 있다. “OX” 중 특히 “X”를 사용한 설명이 쉽게 이해에 많은 도움을 준다. Brabdon Rohrer의 CNN 학습 원리를 해설하고 있는 필자의 저서 6장의 CNN 해설 편을 참조하도록 하자.

noname02.png

PyTorch 튜토리알의 Trainning a Classifier 코드의 구글 Colabo에서 GPU 르 사용하여 실행하기 위한 아래의 5 단계를 살펴보자.

  1. torchvision을 사용하여 CIFATR10 학습용 및 테스용 이미지를 load하고 크기를 일정하게 normalization 작업을 한다.
  2. CNN 루틴을 설정한다.
  3. Loss 함수를 설정한다.
  4. trainning 데이터 사용 학습을 시킨다.
  5. test 데이터 사용 학습을 시킨다.

구글 Colabo Untitles.ipynb 의 파일명을 rename하고 런타임에서 GPU 모드로 설정 연결하자.

CIFAR10 Loading Normalization
torch 라이브러리는 기본적으로 불러드여야 하며 이미지를 처리하기 위해서는 torchvision 도 필수적이다. 아울러 이미지 크기 조절을 하려면 torchvision.transforms 도 불러야 한다.

noname03.png

torchvision의 PIL(Python Imaging Library)이미지는 [0,1] 사이의 픽셀 값을 가지므로 변환(transforms)에 의해서 표준화된(normalized)[-1, 1] 사이의 텐서값을 가지도록 변환하자. 그 다음 학습을 위한 이미지 데이터 파일 다운로드 작업을 해야 하는데 그냥 아래 코드를 실행하면 자동적으로 성공적인 다운로딩이 이루어진다.

noname04.png

자동적으로 toronto 모 대학으로부터 다운로드 되었음이 확인되었다는 메시지가 뜬다. CIFAR10 예제의 데이터 파일을 다운 받아 압축을 풀고 직접적으로 설치 작업을 할 필요가 없다. 참고로 터론토 대학에서는 CIFAR-10 말고도 MNISt 라든지 ImageNet을 포함 여러 종류의 이미지 데이터베이스를 torchvision.datasets.∙∙∙ 명령 형태로 불러 올 수 있다. 이 점에 관해서는 터론토 대학과 공동으로 PyTorch게발이 이루어진 듯하다.

noname05.png

데이터 다운로딩까지 성공적으로 이루어졌으면 나머지 과정은 쥬피터 노트북에서처럼 셀별로 복사 후 Colabo에서 실행시키면 된다.

다음 블로그에서 학습과정 알고리듬을 살펴보기로 하자.

마나마인로고.png

Coin Marketplace

STEEM 0.26
TRX 0.13
JST 0.031
BTC 61587.45
ETH 2890.35
USDT 1.00
SBD 3.43