인공지능 응용 공학

인공지능 응용 공학 Image Classification

coding art 2023. 1. 20. 01:55
728x90

1998년 LeNet-5 발명 이후로 10 여년간 MNIST에 관한 알고리듬 벤치마킹이 활발히 이루어진 이후 20212년 스탠포드 대학에서 주최한 ILSVRC 컨퍼런스에서 AlexNet 이 우승한 이후 CNN을 기반으로 하는 Image Classification 분야가 급속히 발전하였다.

 

LeNet 에 있어서 인식(지)의 목표는 이미지에 포함된 하나의 객체 즉 숫자가 무엇인지 알아내는 비교적 간단한 문제였지만 AlexNet 이후로부터는 이미지에 포함된 여러 이미지들이 각각 무엇인가를 인식하는 인간과 거의 비슷한 인식능력을 시험하는 단계로 발전하였다.

 

32X32 수기문자 이미지는 1024 비트 즉 1K 비트급 이미지로서 일 단계 Convolution 처리 과정의 첫 번째 Convolution 에서 6개의 5X5 필터를 사용하여 28X28 이미지로 크기를 축소한 후 두 번째로 Subsampling 즉 Max-Pooling 작업을 통해 6개의 더욱 축소된 14X14 이미지를 추출한다. 1998년경에 활성화 함수로서는 주로 tanh 가 주로 사용되었다.

 

동일한 방법으로 2 단계 Convolution 작업 이후 얻어낸 특징 맵들을 순차적으로 배열하여 Fully Connected 층과 인터페이스 한다. Fully Connected 란 딥러닝이 가능하도록 Depth 가 큰 입력을 대상으로 Width 를 최종적으로 주어진 클라스 라벨 수만큼으로 활성화 함수는 softmax 를 사용하여 줄이는 딥러닝 처리 과정이다.

 

Convolution 작업의 중요한 역할은 edge 요소를 포함한 이미지의 특징(features)을 잘 유지 보존하는 한도 내에서 픽셀 수를 줄여 가면서 특징맵(feature map)을 추출 작성함에 있다.


32X32(1024)→6X28X28(4704)→6X14X14(1176)
→16X10X10(1600)→16X5X5(400)

 

특징 추출 작업이 완료되면 400 픽셀에서 다시 120, 84를 거쳐 최종적으로 10개의 Class로 분류 작업을 실행한다. 대표적인 예제가 MNIST 와 CIFAR10 이다.

 

LeNet 은 흑백 이미지를 대상으로 하는 CNN이었으나 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 컨퍼런스에서 발표된 AlexNet은 120만 개의 이미지를 1000 종류로 분류하는 고해상도의 컬러 이미지 ImageNet 전체를 제대로 인식할 수 있었던 최초의 알고리듬이 되었다.

옵티마이저로서는 Stochastic Gradient Descent인 SGD 를 사용하였으며 총 8단의 레이어를 사용하여 상위 Top 5 error rate 기준 84.6%의 인식률을 성취하였다. Top 5 error rate 값 사용하는 이유는 매번 머신러닝 연산마다 초기치 설정의 랜덤성으로 인해 출력 결과에 변동이 있을 수 있다. 하지만 전체 클라스 확률의 합은 1.0인데 최종 Fully Connected 레이어의 마지막 단의 softmax 에 의해 예측된 클라스별 라벨값의 확률분포 값 중 큰 순서로부터 정리된 값 5개 증 첫번째가 타겟 라벨값과 일치하는 경우의 인식률을 의미한다. 학습에 걸린 시간은 터론토 대학교 GPU 컴퓨팅 소스를 몽땅 총동원해서 일개월 이상 소요되었다는 얘기가 있다.

 

AlexNet의 초기 인식률은 60% 전후 수준에 불과하였으나 이때부터 전 세계적인 Image Classification R&D 열풍이 일었으며 2013ILSVRC 컨퍼런스에서는 16 레이어로 구성되는 영국의 VGG16 architecture가 두각을 나타내었고, 2014년에 19 레이어의 VGG19 이 발표되었다.

 

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

 

AlexNet 과 비교할 때 VGG16 네트워크의 특징은 상대적으로 작은 컨볼루션 커늘 사이즈를 채택했다는 점이며 아울러 파라메터 수의 대폭 감축이 이루어진 아주 효율적인 네트워크로 평가된다. ImageNet을 대상으로 Top-5 테스트 인식 정밀도 92.7% 를 기록했다.

그 이후에도 파라메터 수를 줄여 컴퓨팅 효율을 증가시키기 위한 차원에서 GoogleNet을 비롯 MobileNet, SSD 가 제안되었다. 레이어 수가 무려 40개에 달할 정도로 길어진 GoogleNet의 특징을 살펴보자.

 

 

AlexNet 이후로 92% 인식률의 VGG를 거쳐 Inception 이라고도 불리우는 GoogleNet에 이르러서 인간 기준 인식률 95%의 문턱에 해당한다고 하는 94% 인식률에 도달함과 아울러 VGG의 파레메터 수 규모를 대폭 줄일 수 있도록 1X1 컨볼루션 필터 채용이 이루어졌다.

1X1을 사용하여 컨볼루션 작업을 하더라도 원 이미지의 크기에 변동이 없다는 특징과 함께 컴퓨팅 부담 경감이 가능하다는 이점이 있지만 대신에 레이어 수가 증가하게 된다.

 

2015년 ILSVRC 승자인 ResNet은 가장 많은 수의 레이어를 채택하여 건너뛰는 형태의(skip connections) 알고리듬을 사용하여 인간의 인식률 한계로 알려진 95%를 돌파하여 96.43%를 달성하였다.

특히 ResNet은 반복적으로 152개에 달할 정도로 많은 수의 레이어를 사용하기 때문에 컴퓨팅 부담 또한 만만치 않으나 Batch Normalization 기법을 채택하여 파라메터 수를 대폭 경감시켰다. 이러한 기법은 MobileNet, SSD에서도 이미 사용되었다.

 

ResNet의 skip connection 알고리듬은 최근에 성공적인 RNN 레이어 구조로 알려진 GRU(Gated Recurrent Unit) 알고리듬과도 유사성이 대단히 큰 것으로 보인다. skip 알고리듬은 앞 레이어의 정보를 레이어 하나를 건너뛰어 전달하는데, 이는 역전파 연산에서 기울기 크기의 변동이 거의 없도록 억제하면서 그대로 전달해주는 특성이 있다. 상당히 높은 인식률을 보여준다는 점이 실증되었으며, ResNet은 현재 Transfer Learning 예제 모델들에서 ResNet 학습 결과 중 가장 작은 모델로서 사전학습( Pretrained)된 ResNet18 이 많이 사용되고 있으며, 자율주행 차량에서도 시험적으로 사용되고 있다.

 

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

 

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

아래는 PyTorch에서 제공하는 사전학습 class 루틴 명단이며, 응용에 참고하자.