7-27 PyTorch Transfer Learning 예제-I

in #kr5 years ago (edited)

noname01.png

2019년 7월 현재 ImageNet 은 전체적으로 1000종에 달하는 140만개의 이미지 파일로 구성된 데이터 베이스로서 영어 사전에 해당하는 WordNet 방식을 따라 대상물의 명사들 별로 수백 수천가지의 이미지들로 이루어진다. 대상물 하나를 노드라고 하는데 평균 500장 정도의 이미지 데이터를 가지고 있다.

noname02.png

1000종 140만개의 이미지 데이터 베이스인 ImageNet을 대상으로 1998년 CNN(Convolutionary Neural Network)에 의한 LeCUN의 LeeNet에서 시작하여 2012년 AlexNet, 2014년 GoogleNet을 고비로 인간의 인식률이라고 볼 수 있는 95%를 넘어서게 되었으며 2015년 ResNet 이르러서는 GRU(Gated Recurrent Unit) 알고리듬과 아주 유사한 skip 알고리듬을 적용하여 top 5 error rate 기준 96%를 넘어 달성하게 된다. 이러한 학습 알고리듬들은 이미지 수가 140만개 달하는 ImageNet을 처리하기 위해서 무려 수주에 이르는 엄청난 학습실행 시간이 요구된다.

하지만 샘플 수가 적으면서 분류해야 할 클라스가 몇 안 되는 경우에 이미지 classification 작업이 필요한 경우에는 ImageNet에 사용자의 샘플을 추가하여 어마어마한 컴퓨팅 작업을 매번 되풀이 할 필요는 없을 것이다. 단지 엄청난 학습실행 시간이 소요되었던 학습 결과를 저장했다가 불러내어 활용할 수 있는 방법을 찾아봐야 할 것이며 그 기법이 바로 Transfer Learning 기법이다. 말 그대로 처음에 ImageNet을 학습했던 결과를 그대로 가져다 쓰기 위해서는 ImageNet 의 학습 알고리듬 구조와 역할을 정확히 이해해야 할 필요가 있다. Transfer Learning 모델에서는 코드 구조를 Feature Extraction 과 fully connected layer 로 구성한다. 단 classification 작업을 위한 fully connected 레이어는 사전 학습에서처럼 1000종의 클라스가 아니라 사용자가 학습시키려는 작은 값의 클라스로 재구성하늦 어도이다. 일단 가져온 학습 결과를 학습의 초기 값으로 삼은 후 사용자가 준비한 샘플 값들을 입력하여 학습을 진행하게 된다.

마나마인로고.png

Coin Marketplace

STEEM 0.26
TRX 0.13
JST 0.032
BTC 61663.08
ETH 2893.40
USDT 1.00
SBD 3.48