computer vision/image classification

Going deeper with convolutions

loosiu 2023. 8. 22. 11:23

Abstract

우리는 ILSRVRC14에서 classification과 detection에 대한 새로운 sota에 책임이 있는 inception이라는 코드네임이 붙여진 deep cnn 구조를 제안한다.

inception의 주요 특징은 network에 있는 향상된 computing resource의 활용이다.

computational budget을 일정하게 유지하는 동안 network의 깊이와 필터 수를 증가시키는 설계에 의해 달성했다.

품질을 최적화하기 위해서, 구조적인 결정은 hebbin 원칙과 multiscale processing의 직관에 기반되어졌다.

ILSVRC14에 대해 제출에 사용된 것은 googlenet이라고 불렸고 22개의 deep network이며, classification과 detection의 context에서 품질이 평가된다.

 

 

 

Introduction

지난 3년동안 convolutional network로 deep learning의 발전때문에 image recognition과 object detection의 우수함은 급속도로 진행되어졌다.

한가지 유망한 소식은 대부분의 발전이 더 강력한 하드웨어와 더 큰 dataset, 더 큰 모델의 결과뿐만 아니라 새로운 아이디어, 알고리즘의 결과와 향상된 network 구조라는 것이다.

ILSVRC 2014에 googlenet은 2년 전에 krizhevsky et al의 우승 구조보다 12배 작은 parameter를 사용한 반면에 상당히 더 정확하다.

object detection에서 더 큰 이득은 하나의 deep network나 더 큰 model의 활용으로부터 오지 않는다.

하지만 깊은 구조의 시너지와 고전적인 computer vision은 girshuck et al에 의해 R-CNN의 알고리즘을 좋아한다.

 

다들 주목할만한 요인은 모바일의 지속적인 견인과 embedded computing, 우리의 효율성을 가진 것이다.

특히 power와 memory 사용은 중요성을 얻는다.

이 논문에서 제시된 깊은 구조의 설계에 가장 중요한 고려 사항은 정확도 수치에 고정되는 것보다는 이 요소를 포함하는 것이 주목할 만하다는 것이다.

대부분의 실험에 대해, 모델은 그들이 오직 학문적인 호기심이 되는 것에 처하지 않기 위해서 inference time에서 1.5 billion 곱셈 추가 계산 예산을 유지하도록 설계되었다.

하지만 합리적인 비용으로 큰 dataset에 실제로 사용할 수 있다.

 

논문에서 우리는 computer vision을 위해 효율적인 deep neural network 구조에 초점을 맞췄고

Lin et al의 network 논문에 있는 network로부터 유래된 inception으로 불렀다.

 

deep이라는 단어는 두개의 다른 의미로 사용된다.

우선, 우리는 inception module의 형태에서 새로운 단계의 구조와 증가된 network 깊이의 직접적인 의미를 소개한다.

일반적으로 한가지는 Arora et al에 의해 학문적인 작업으로부터 영감과 지도를 가지는 동안에 논리적인 절정으로 inception model을 간주할 수 있었다.

inception 구조의 장점은 ILSVRC 2014 classification과 detection challenge에서 실험적으로 입증되었고 현재 sota를 상당히 능가한다. 

 

 

 

Related Work

LeNet5로부터 시작한 cnn은 쌓인 convolutional layer가 한 개나 더 많은 fc layer 다음에 오는 전형적인 기본 구조를 가진다. 

기본적인 설계의 변종은 image classification 문헌에서 일반적이고 MNIST, CIFAR에 지금까지 가장 좋은 결과를 냈다.

그리고 imagenet classification challenge에서 가장 주목할만 하다.

imagenet처럼 더 큰 dataset에 대한 overfitting 문제를 다루기 위해 dropout을 사용하는 동안 최근 trend는 layer의 수와 layer 크기를 증가시키는 것이다.

 

max pooling layer는 정확한 공간 정보의 loss에 이르는 것에 염려에도 불구하고, 같은 convolutional network 구조는 localization, object detecton, human pose estimation에 성공적으로 사용했다.

serre et al은 inception model과 비슷하게 multi scale을 다루기 위해 일련의 고정된 Gabor 필터에 다른 크기를 사용한다.

그러나 고정된 2개 layer가 있는 deep model과 반대되는 inception model에 있는 모든 filter는 학습되어졌다.

더욱, inception layer가 여러번 반복되어져서 googlenet model의 경우에서 22개의 layer를 가진 deep model로 이어진다.

 

neural network의 대표적인 힘을 증가하기 위해서 network in network는 Lin et al에 의해 제안된 방법이다.

convolutional layer에 적용될 때, 방법은 추가적인 1x1 convolutional layer가 rectified linear activation 뒤에 오는 것으로 간주되어질 수 있었다.

그리고 현재 cnn 파이프라인에서 쉽게 통합되어질 수 있게 하고 이 방법을 많이 쓴다.

하지만 우리의 setting에서 1x1 convolution은 이중 목적이 있다.

매우 비판적으로 그들은 우리의 network의 크기를 제한하는 computational bottleneck을 제거하는 차원 감소 module처럼 사용되어졌다.

이것은 깊이를 증가시킬 뿐만 아니라 상당한 성능 불이익없이 우리의 network의 필터 수 증가도 허용한다.

 

object detection에 대해 현재 가장 중요한 방법은 Girshick et al에 의해 제안된 R-CNN이다.

 

R-CNN는 두개의 세부문제에서 전반적인 detection 문제로 나눴다.

카테고리를 모르는 방식에서 잠재적인 object proposal을 위해 색깔과 super pixel의 일관성과 같은 낮은 level 신호를 먼저 활용 하고 그 이후 이 위치에서 object 카테고리를 확인하기 위해서 cnn classifier를 사용한다.  

two stage 방법은 cnn의 sota의 아주 강력한 classification뿐만 아니라 낮은 level 신호를 가진 bounding box segmentation의 정확도를 활용한다.

detection과 비슷한 pipeline을 채택하지만 더 높은 object bounding box recall에 대한 multi box 예측처럼 stage 둘 다 향상되었고 bounding box proposal의 나은 범주화를 위해서 방법을 앙상블한다.

 

 

 

Motivation and High Level considerations

deep neural network의 성능을 향상시키는 가장 간단한 방법은 network 크기를 증가시키는 것이다.

$\rightarrow$ network 크기 증가 = 각 level에서 unit의 수(width)와 network의 level의 수(depth) 증가

 

label된 training data가 많을 때는 큰 network를 쓰는 것이 더 쉽고 안전하다.

 

  •  큰 network를 사용했을 때의 결점
  1. network 크기가 커지면 parameter가 많아지는데 training set이 작은 경우에 overfitting이 잘 됨.                                                                                                                              $\rightarrow$ 위에 있는 그림처럼 세분화된 범주를 구분하기 위해 전문가가 필요한 경우, training set을 만드는데 까다롭고 비용이 많이 들 수 있어 병목 현상이 나타날 수 있음
  2. 계산 resource의 사용이 급격하게 증가

결점을 해결하는 근본적인 방법은 convolution에 있는 fc구조로부터 sparsely connected 구조로 이동시키는 것이다.

 

convnet은 균형을 깨고 학습을 향상하기 위해서 random하고 sparse한 connection 표를 사용했고 trend는 병렬 컴퓨팅을 더 좋게 최적화하기 위해서 기존의 full convolution으로 바꼈다.

구조의 획일화와 많은 filter와 더 좋은 batch size는 효율적인 dense한 계산한다.

 

hyperparamter인 learning rate와 향상된 학습 방법을 조절한 후, inception 구조는 localization과 detection에 좋은 결과를 보였다.

 

 

 

Architectural Details

inception model

 

inception 구조의 메인 아이디어는 convolutional vision network에서 최적의 local sparse 구조가 사용가능한 dense한 요소에 의해 어떻게 근사화되고 다뤄지는지 알아내는데에 기초를 둔다.

input layer에 가까운 layer에서 상관성이 있는 unit은 local region에 집중되어졌다.

single region에서 집중된 많은 cluster로 하게 되고, 다음 layer에서 1x1 convolution의 layer로 한다.

그러나 더 큰 patch에 걸쳐 convolution으로 다루는 더 작은 수의 공간적으로 분산된 cluster가 있고 더 크고 더 큰 영역에 걸쳐 patch의 수가 감소할 것이라고 예상할 수 있다.

patch 정렬 문제를 피하기 위해, inception 구조의 현재 화신은 1x1, 3x3, 5x5의 filter 크기에 제한되어있다.

또한 제안된 구조는 다음 단계의 입력을 형성하는 단일 출력 벡터로 연결되는 출력 필터 뱅크가 있는 모든 레이어의 조합임을 의미합니다.

추가적으로, pooling 연산은 현재 sota convolutional network에 필수적이므로 각 stage에서 대체가능한 병렬 pooling path를 추가하는 것은 추가적인 이로운 효과를 가진다.

 

더 높은 추상화 feature가 더 높은 layer에 의해 캡처됨에 따라 공간 집중도가 감소할 것으로 예상되어 3x3과 5x5 convolution이 상위 layer로 이동함에 따라 증가해야 합니다.

 

naive version에서 한가지 큰 문제는 적당한 수의 5x5 convolution은 많은 filter를 가진 convolutional의 분류층보다 엄청나게 비싸다는 것이다.

이 구조가 최적의 sparse 구조를 다룰수 있지만 매우 비효율적이기때문에 몇 stage 내에서 계산 폭증으로 이어집니다.

 

낮은 차원의 embedding도 상대적으로 큰 image patch에 대해 많은 정보를 포함할 수 있습니다

그러나 embedding은 dense하고 압축된 형태로 정보를 나타내며 압축된 정보를 모델링하기 힘들다.

1x1 convolution은 3x3, 5x5 convolution 전에 계산을 축소한다.

게다가 계산 축소를 사용하면서 이중목적을 하게하는 relu의 사용을 포함한다.

일반적으로, inception network는 grid의 해상도를 반으로 줄이기 위해 2 stride를 가진 max pooling layer를 사용한다.

 

 

이 구조의 주요 장점 중 하나는 계산 복잡성에 제어되지 않은 확장 없이 각 단계에서 unit 수를 증가시키는 것이다.

차원 축소의 흔한 사용은 마지막 stage의 많은 수의 input filter를 다음 layer로 차폐하기 때문에 큰 patch 크기로 filter를 convolution 하기 전에 먼저 차원을 줄인다.

 

계산 resource의 향상된 사용은 계산상의 어려움없이 stage의 개수뿐만 아니라 각 stage의 filter 개수 둘 다 증가한다.

우리는 포함된 모든 손잡이와 레버가 비inception 구조를 사용하는 유사한 성능의 network보다 2~3배 더 빠른 network를 생성할 수 있는 계산 resource의 제어된 균형을 허용한다는 것을 발견했습니다.

그러나 이 시점에서 신중한 수동 설계가 필요합니다.

 

 

 

GoogLeNet

약간 질 낮은 품질인 더 깊고 filter가 많은 inception network를 사용했지만 inception network에 앙상블을 더하는 것은 미미하게 결과를 향상시키는 것으로 보인다.(parameter 영향이 상대적으로 적은 것으로 보임)

 

Googlenet incarnation of the inception architecture

정확히 같은 토폴리지는 앙상블에서 7개의 model 중에서 6개를 사용했다.

 

inception module 안에 포함하는 모든 convolution은 rectified linear activation을 사용한다.

우리의 network에서 receptive field의 사이즈는 평균 차로 RGB 컬러 채널을 가지는 224x224이다.

3x3 감소와 5x5 감소는 3x3과 5x5 convolution 전에 사용된 감소 layer에서 많은 1x1 필터를 상징한다.

한가지는 pool proj column에 있는 max pooling 후에 은닉층에 많은 1x1 필터를 볼 수 있다.

모든 감소 layer와 은닉층 또한 rectified linear activation을 사용한다.

 

network는 특히 낮은 메모리 사용량으로 추론이 제한된 계산 resource를 가지는 포함하는 개인적인 장치를 돌릴 수 있게 하기 위해서 염두에 둔 계산 효율성과 실용성으로 설계되어졌다.

parameter가 있는 layer를 계산할 때 network는 22개의 layer 깊이이다.

network의 구현에 사용하는 layer의 평균적인 수는 약 100개이다.

우리의 구현은 우리가 여분의 linear layer에 사용한다는 점에서 다름에도 불구하고 classifier 전에 average pooling의 사용은 기반된다.

이것은 쉽게 다른 label set에 대한 우리의 network를 조정하고 fine tuning 할 수 있게 한다.

fc layer에서 average pooling layer로 이동은 top1 정확도를 약 0.6%를 향상되는 것을 알게 됐다.

그러나 fc layer를 제거한 이후에도 dropout의 사용은 필수적으로 유지됐다.

 

상대적으로 network의 깊이가 깊은 것을 고려했을 때, gradient를 모든 layer를 통해 효과적으로 전파하는 능력이 걱정되었다. 

한 가지 흥미로운 통찰력은 task에서 상대적으로 더 얉은 network의 좋은 성능은 network 중간에 있는 layer에 구성된 feature가 매우 특이하다는 것이다.

중간 layer에 연결된 보조 classifier를 추가함으로써, 우리는 역전파를 얻고 추가적인 정규화를 제공하는 gradient 신호를 증가하는 classifier에서 낮은 단계에 차이를 조장하는 것으로 예상된다.

이 classifier은 inception 4a과 4d module의 output 위에 있는 더 작은 convolutional network의 형태를 가진다.

training동안에 그들의 loss는 discount weight를 가진 network의 전체 loss를 더했다.

추론 시간에, 보조 network는 버려졌다.

 

- 보조 classifier를 포함하는 여분의 network의 정확한 구조

  1. (4a)에 대해 4x4x512 output, (4d) 단계에서는 4x4x528 output이 되는 5x5 filter 사이즈와 3 stride를 가진 average pooling layer
  2. 차원 감소와 recified linear activation(ReLU)로 128 filter를 가지는 1x1 convolution
  3. 1024 unit과 relu를 가진 fc layer
  4. 버려진 output의 비율이 70%인 dropout layer
  5. 분류층으로서 sofrmax loss를 가진 linear layer

Googlenet network with all the bells and whistles

 

 

 

Training Methodology

우리의 network는 보통의 규모의 model과 데이터 병렬성을 사용하는 machine learning system을 사용해서 학습되어졌다.

우리는 cpu에 기반된 실행을 사용했음에도 불구하고 대략적인 추정치는 googlenet network가 일주일 안에 소수의 고급 GPU를 사용하여 수렴하도록 학습될 수 있다는 것을 보여준다.

주요 제한 사항은 메모리 사용량이다.

우리의 학습은 0.9 momentum을 가진 asynchronous stochastic gradient descent를 사용했고 learning rate schedule을 고정했다.

polyak averaging은 추론 시간에 사용된 마지막 model을 만들곤 했다.

 

image sampling 방법은 대회에서 상당히 바뀌었고 이미 수렴된 model은 때떄로 dropout과 learning rate와 같이 바뀐 hyperparameter와 함께 다른 옵션에서 학습되어졌다.

그래서 이 network를 학습하기 위해 가장 효율적인 한가지 방법에 확실한 지도를 주는 것이 어렵다.

문제를 더 복잡하게 하기 위해서 몇몇 model은 주로 더 작은 상대적인 crop을 학습했고 다른 model은 더 큰 것에 대해 학습했다.

그럼에도 불구하고, 대회 후에 잘 작동하는 것을 입증하는 한가지 처방은 크기가 image area의 8%와 100% 사이에 고르게 분포되어 있고 가로세로비가 3/4와 4/3 사이에 있는 무작위로 선택된 image의 다양한 크기 patch의 sampling을 포함합니다. 

또한 우리는 photometric distortion이 어느정도 overfitting을 방지하는 것에 효과가 있다는 것을 알았다.

게다가, 우리는 다른 hyperparameter 변화와 함께 상대적으로 늦은 resizing으로 random 보간법을 사용하기 시작했다.

 

 

 

ILSVRC 2014 Classification Challenge Setup and Results

ILSVRC 2014 classification challenge는 imagenet hierarchy에서 1000개의 leaf node 카테고리 중 한 카테고리에 있는 image를 분류하는 것의 task를 포함한다.

 

- 데이터 개수

train:1.2 million, validation: 50000, test: 100000

 

우리는 같은 googlenet model의 7개 버전을 학습했고, 앙상블 예측을 수행한다.

이 모델은 같은 초기화, learning rate policy로 학습되어졌고, sampling methodologies와 input image를 보는 무작위 순서에 대해 다르다.

 

test하는 동안, 우리는 더 공격적인 cropping 접근법을 채택한다.

구체적으로 우리는 더 낮은 차원인 256, 288, 320, 352로 각각 image의 크기를 4개의 척도로 resize하고, resize된 image의 왼쪽, 중앙, 오른쪽 사각형을 가진다.

각각 사각형에 대해서, 우리는 4개의 corner와 224x224로 resize된 사각형뿐만 아니라 중앙을 224x224로 crop하고 mirror된 버전도 가졌다.

이 결과 image당 144개의 crop이 됐다.

crop의 합리적인 수가 존재한 후에 더 많은 crop의 장점이 미미하게 되므로 우리는 공격적인 cropping이 실제 적용에 필수적이지 않을지도 모른다는 것에 주목했다.

 

softmax 확률은 마지막 예측을 얻기 위해 모든 각각의 classifier와 많은 crop에 걸쳐 평균이 됐다.

실험에서 우리는 crop에 max pooling과 classifier에 averaging과 같이 validation data에 대체 가능한 접근법을 분석했다.

하지만 그들은 간단한 averaging보다 안 좋은 성능으로 이어졌다.

 

Classification performance

 

GoogLeNet classification performance break down

challenge에서 마지막 제출에서 validation과 test data 둘 다 top 5 error가 6.67%로 나왔다.

2012년 supervision 접근법에 비해 상대적으로 56.5% 감소한 것이고 이전 년도의 최고의 접근법에 비해 상대적으로 약 40% 감소한 것으로, 두 가지 모두 classifier를 학습하기 위해 외부 데이터를 사용했습니다.

 

모든 수들이 test data에 overfit되지 않게 하기 위해 validation dataset에 기록되어졌다.

 

 

 

ILSVRC 2014 Detection Challenge Setup and Results

ILSVRC detection task는 200개 가능한 class들 사이에서 iamge에 있는 object 근처에 bounding box를 생산하는 것이다.

만약 groundtruth의 class를 맞춘다면 detected object는 맞는 것으로 간주하고 bounding box는 적어도 50%로 겹쳐진다.

관련없는 detection은 false positive로 간주되고 패널티를 받는다.

classification task와 대조해서, 각 image는 많은 object나 none을 포함하고 크기는 큰 것부터 작은 것으로 다르다.

결과는 mAP를 사용했다

 

googlenet이 detection을 위해 취한 접근법은 R-CNN에 비슷하지만 inception model을 region classifier로 사용하여 증가시켰다.

추가적으로, region proposal 단계는 더 높은 object bounding box recall에 대한 multi box 예측을 가진 selective search 접근법을 결합함으로써 향상되어졌다.

false positive의 수를 줄이기 위해서, superpixel 크기는 2배 증가되어졌다.

selective search algorithm으로 proposal을 반으로 줄인다.

200개의 region proposal을 다시 추가하여 사용한 proposal의 약 60%를 차지했다.

한편 적용 범위를 92%에서 93%로 늘렸다.

증가된 범위에서 proposal의 수를 줄이는 것의 전체적인 효과는 single model경우에 대해서 mAP의 1% 향상이였다.

마침내, 우리는 40%에서 43.9% 정확도로부터 결과를 향상하는 각 region을 분류할 때 6개의 convnet의 앙상블을 사용한다.

R-CNN과 대조해서 우리는 시간이 부족하기 때문에 bounding box regression을 사용하지 않았다는 것에 주목한다.

 

detection performance
single model performance for detection

우리는 처음으로 가장 좋은 detection 결과를 기록했고 detection task의 초판으로 과정을 보인다.

2013 결과와 비교해서 정확도는 거의 두배 올랐다.

최고의 성능을 보이는 팀 전체는 convolutional network를 사용한다. 

외부 data는 detection data에 나중에 정제된 pretrain 모델에 대한 전형적인 ILSVRC12 classification data이다.

몇몇 team은 localization data의 사용을 언급한다.

localization task bounding box의 좋은 부분은 detection dataset에 포함되지 않으므로 classification이 pretraining에 사용하는 것과 동일하게 data를 사용하여 localization box regressor를 pretrain 할 수 있다

googlenet은 pretrain을 위해 localization data를 사용하지 않았다.

 

두번째 표에서, 우리는 single 모델을 사용하는 결과를 비교한다.

googlenet은 앙상블을 가진 상당한 강력한 결과를 얻은 반면에 3개 모델의 앙상블로 놀랍게도 0.3% 올랐다.

 

 

 

Conclusions

우리의 결과는 쉽게 사용할 수 있는 dense하게 만들어진 block으로 예상되는 최적의 희소 구조로 근사화하는 것이 computer vision을 위해 신경망을 개선하기 위한 실행 가능한 방법이라는 확실한 증거를 제공하는 것 같습니다.

이 방법의 주요 장점은 더 얇고 덜 넓은 network와 비교해서 연산 필요 조건이 약간만 증가하더라도 상당한 품질 이점을 얻을 수 있다는 것이다.

우리의 detection 작업은 context를 활용하지 않고 bounding box regression을 수행하지 않았음에도 불구하고 경쟁력이 있었으며 이 사실은 inception 구조의 강점에 대한 추가 증거를 제공합니다.

비슷한 품질의 결과는 비슷한 깊이와 폭으로 더 많이 비싼 network로 될 수 있다는 것에 기대되어지는 것에 불구하고 우리의 방법은 더 희소한 구조로 움직이는 것은 실현가능하고 일반적으로 유용한 아이디어인 것으로 확실한 증거를 말한다.

이것은 자동화된 방식으로 더 희소하고 정교한 구조를 만들기 위해 유망한 미래 연구를 제안한다.