7-26 CNN을 모듈로 한 ImageNet의 발전

in #kr5 years ago (edited)

noname01.png

LeNet-5는 CNN을 개척한 LeCUN이 제시한 표준적인 구조의 뉴럴 네트워크이다. 32X32 이미지는 1024 비트 즉 1K비트급 이미지로서 일 단계 Convolution 처리과정에서 첫 번째 Convolution에서 6개의 5X5 필터를 사용하여 28X28 이미지로 크기를 줄인 후 두 번째로 막바로 Subsampling 즉 Max-Pooling 작업을 통해 6개의 14X14 이미지를 추출한다. 1998년 당시에는 없었지만 2010년 이후 지금은 Convolution 처리 후 반드시 ReLU 처리를 하게끔 변모하였다. 일 단계 Convolution 작업 이후 동일한 방법으로 이 단계 처리를 한 후에 Fully Connected 충과 인터페이스 한다. Convolution 작업의 중요한 역할은 edge를 포함한 이미지의 특징(frature)을 잘 유지 보존하면서 픽셀 수를 줄여나가야 한다.

32X32(1024)→6X28X28(4704)→6X14X14(1176)→16X10X10(1600)→16X5X5(400)
특징 추출 작업이 완료되면 400 픽셀에서 120, 84를 거쳐 최종적으로 10개의 Class 로 분류 작업을 실행한다. 대표적인 예제가 CIFAR-10 인 듯하다.

noname02.png

LeNet 이 흑백 이미지를 대상으로 하였으나 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)콘테스트에서 발표된 Alexnet은 Image 고해상도의 컬러 이미지로 오브젝트를 확장하였으며 Classification 종류도 1000 으로 확장하였다. 120만개의 이미지를 1000종으로 분류하는 ImageNet의 알고리듬의 바탕이 되었던게 아닌가 한다. 여기서 사용된 기법을 정리해 보면 MNIST 텐서플로우 처리에서 정밀도를 올리기 위해 사용했던 모든 기법들이 동원되었으며 플러스해서 Transfer Learning에서 사용하는 기법인 data augmentation 과 ReLU까지 사용이 되었으며 옵티마이저는 Stochastic Gradient Descent인 SGD를 사용하였으며 총 8개의 레이어를 사용하여 상위 5개 샘플 오차( top 5 error rate) 84.6%의 정밀도를 성취하였다. Top 5 error rate 값을 사용하는 이유는 매번 연산 마다 랜덤성으로 인해 출력 결과가 변동이 된다. 하지만 전체 클라스 확률의 합은 1.0인데 최종 fully Connected 레이어에서 Softmax 에 의해 예측된 클라스별 확률분포 값 중 큰 값 5개 중에서 최대 값이 타겟 라벨 값과 일치하는 경우의 인식률을 의미한다. Nvidia Geforce GTX 580 GPU 2개를 사용하였으며 6일간 학습을 시켰다.

noname03.png

2014년 ILSVRC의 승자였던 GoogleNet은 AlexNet에서 사용된 6000 만개의 파라메터 즉 웨이트 수를 1500만개로 줄이기 위해서 다양한 기법들이 사용되었으며 총 22개 레이어로 구성 수일간의 학습에 의해 거의 인간의 인식률에 가까운 6.67%까지 인식 오차를 줄였다.

noname03.png

2014년에 발표된 VGGNet은 CNN 레이어 구조가 반복되는 단순한 구조를 가졌디. AlexNet처럼 3X3 convolution 작업에 상당히 많은 수의 필터를 사용하여 4개의 GPU 상에서 수 주간의 학습을 요한다. 특징 추출 능력이 뛰어난 반면에 사용하는 파라메터 수 가 기하급수적으로 늘어나 1억4천8백만개에 달한다.

noname04.png

2015년 ILSVRC 승자인 ResNet은 가장 많은 수의 레이어를 채택하여 건너뛰는 형태의(skip connections) 알고리듬을 사용하여 인간의 인식률 한계로 알려진 5%를 넘어 3.57%를 달성하였다. 이 skip connection 알고리듬은 최근에 성공적인 RNN 레이어 구조로 알려진 GRU(Gated Recurrent Unit) 알고리듬과 유사성이 대단히 큰 것으로 보인다. 상당히 높은 인식률을 실증했지만 아직 학술적인 설명은 이루어지 못한 상태이다. 현재 Transfer Learning 예제 모델들에서 ResNet 학습 결과 중 가장 작은 모델인 Pretrained ResNet18을 불러서 사용한다는 점을 지적해 둔다.

ResNet18은 ResNet 중에서도 NVIDIA Tesla K80 GPU 4개를 사용하여 총 152개의 레이어를 사용 3주간의 학습에 의해서 얻어진 결과로서 정밀도가 어느 정도 되는 아주 작은 데모용으로 PyTorch의 Torchvision 라이브러리에서 서비스 하고 있다.

noname06.png

PyTorch에서는 ResNet18을 비롯하여 앞에서 언급했던 이미지 관련 네트워크의 웨이트 학습 결과를 제공하고 있다.
학습에 엄청난 컴퓨팅 타임이 소요되는 것이 사실이지만 이미 학습한 결과 웨이트 값들을 불러 쓴다는 것은 대단히 효율적인 코딩을 가능하게 한다는 점에 유의하자.

noname07.png

마나마인로고.png

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 62800.25
ETH 2449.72
USDT 1.00
SBD 2.57