본문 바로가기

papers

OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks

딥러닝 비전 태스크에서 1-stage 학습 모델의 시초격인 모델인 OverFeat을 제시한 논문을 공부한 글이다. 논문의 원문을 번역하고 간단한 설명을 덧붙였다.

Abstract

저자들은 classification, localization, detection을 통합적으로 하는 CNN기반의 프레임워크를 제시한다. 다차원 슬라이딩 윈도우(multiscale) 접근법을 통해 ConvNet을 효율적으로 구현한다. 객체의 경계(object boundary)를 예측함으로써 localization 태스크를 한다. Detection 태스크의 성능(confidence)를 향상하기 위해 Bounding boxes를 누적하는 방법을 쓴다. 세가지 태스크를 단일한 네트워크(single shared network)를 통해 학습하고 이 통합된 멀티태스크 모델을 OverFeat이라 이름지었다.

Introduction

이미지에서 주 객체를 인식하기 위해 ConvNets을 사용했다. 저자들이 연구할 당시, 규모가 작은 데이터셋에서는 SOTA의 성능을 내지는 못했었지만 1000가지 종류를 분류하는 이미지넷 데이터셋에는 가장 좋은 성능을 발휘하였다. CNN의 장점은 픽셀 단위에서 데이터의 분류까지 end-to-end로 학습하는 것이다. 피쳐 추출기(feature extractor)를 하나하나 직접 디자인 할 필요가 적어졌다. 데이터 학습을 위해 레이블된 데이터의 역할이 매우 커진 것은 단점같기도 하다.

이 연구의 주된 기여는 객체를 분류하고, 지역화(이미지에서 객체의 범위를 가두는 작업), 탐지하는 태스크를(classification, localization, detection)를 동시에 학습하는 CNN(single conv)모델 을 제안하면서도 동시에 좋은 성능을 낸 것이다. 예측된 bounding box를 누적(accumulated) 하는 방법으로 localization, detection 성능을 향상시켰다. 여러 localization를 통합함으로써 detection을 위해 별도로 배경(background)을 학습할 필요가 없어 시간 효율적인 이점이 있다. 배경을 학습하지 않는 것은 모델(network)이 정답 클래스를 학습하는데 집중하게하여 정확도를 더 높게한다.

실험은 이미지넷 2012, 2013 데이터를 사용했고 2013 데이터셋의 localization, detection 분야에서 SOTA를 달성했다.

이미지넷 데이터셋의 분류 이미지는 대략적으로 객체가 중간에 위치하고 있고 크기가 다양하게 달라지기도 하고 위치가 바뀌기도 한다. 이 문제를 다루기 위해 ConvNet을 sliding window 방식과 multiple scale으로 다양한 위치에 대한 정보를 탐지하였다. 이 방법은 이미지에서 전체적인 윤곽이 드러난 부분만 포착하는 문제가 있다. 이 문제는 classification 성능에는 긍정적인 작용을 하지만 localization, detection 성능에는 부정적인 영향을 미친다.

이를 극복하기 위해 윈도우에서 객체의 분류에 대한 확률 분포를 생산할 뿐 아니라 객체를 담고있는 윈도우와 관련된 bounding box의 위치와 크기를 예측하였다.

Vision Task

논문에서는 CV(computer vision)의 태스크에서 어려운 순서이자 다음 태스크의 하부 태스크에 속하는 classification, localization, detection의 순서로 다루고 그 순서대로 파이프라인을 형성한다.

2013 대회에서 분류를 위한 이미지는 중심에 있는 단일 객체를 맞춰야한다. 레이블 되지 않은 객체가 있을 수 있기 때문에 5번의 정답(guess)을 맞출 수있다. Localization도 5번 기회가 있다는 점에서 유사하고 추가로 매번 50% 이상의 영역을 맞춘 bounding box를 예측해야한다. Detection 태스크는 이미지마다 0개를 포함한 객체의 개수가 있다. FP(false positive)는 mAP(mean average precision) 점수에 감점이 있다. localization이 나머지 두 태스크의 중간 단계이고 detection과 관계없이 평가할 수 있다. Classification과 localization은 같은 데이터셋을 사용하고 detection 태스크에서는 좀 더 작은 객체가 있을 수 있는 이미지가 추가된다.

Classification

Classification을 위한 모델은 Alexnet과 유사하다.
이미지넷 2012 데이터셋(1.2m, 1000 클래스)을 사용했고 multi-scale 방식으로 학습했다. 한 이미지에서 5개의 random한 영역을 자르고(221x221) 이를 좌우 반전하였다. 저자들은 출력층의 크기를 1x1로 모델을 구성하였고 이를 non-spatial 구조라 하였다. 1-5 layer까지 Alexnet과 유사하지만 contrast normalization을 사용하지 않고 풀링시 겹치는 부분이 없게하고 stride를 4에서 2로 줄여 모델의 1-2 층의 크기가 큰것이 다르다.

이 연구에서는 피쳐 추출기(feature extractor)를 OverFeat으로 이름지었다. Accuracy 모델보다 fast 모델이 1.8%정도 에러율이 높지만 학습을 위한 모델의 파라미터가 두배 많다. 표 1은 fast 모델의 아키텍처에 대한 설명이다.

Multi-scale voting 방식이 사용되었다. 이미지의 4가지 구석과 가운데 부분 이에 대한 좌우 반전을 평균하였다. view에 빈부분이 있기도 하고 10개의 view가 겹치는 부분이 발생하기도 한다. Single-scale에서만 위 방식을 적용한다면 최적의 scale이 아닐 수 있는 것이다. 저자들은 이를 multiple scale 방식으로 극복했다.

기존 모델의 subsampling 비율은 36:1(pixel)이다. 이 분포대로 추출된 출력은 저자들이 제안한 10-views 방식에 비해 성능이 좋지 않다. 객체를 담는 window의 크기가 잘 정렬되지 않기 때문이다. 저자들은 12:1의 비율로 subsampling하였다.

저자들은 6개의 입력 scale을 사용해서 풀링되지 않은 다양한 해상도의 layer5의 map을 생성하고 풀링을 거친후에 분류기(classifier)로 전달한다.

a) 주어진 scale의 하나의 이미지의 풀링되지 않은 이미지에서 시작한다.
b) 각각 풀링되지 않은 map에서 지역을 겹치지 않으면서 (non-overlapped) 픽셀의 오프셋을 0,1,2로 주면서 3x3 max 풀링을 한다.
c) 각 offset마다 3x3번 복제된 풀링된 피쳐맵들을 생산한다. (fig에서는 x256)
d) 6, 7, 8층의 분류기는 고정된 5x5의 입력을 받아 C차원의 벡터를 출력한다. 각 offset별로 Sliding 윈도우 방식을 적용하여 C차원의 출력 maps를 출력한다.
e) 다른 offset에서 나온 출력 맵을 단일 3D로 변형한다.(reshape)
(C 차원 - number of class 차원)

이 연산은 분류기의 viewing을 풀링레이어를 subsampling 없는 skip-kernel로 1픽셀씩 옮기는 것으로 볼 수 있다. 또는 모든 offset에 마지막 층에풀링을 거치고 fully connected 한 뒤에 출력을 만든것과 같다. 위의 절차는 좌우 반전된 이미지에 동일하게 적용된다. 최후로 분류할때 좌우반전 포함 모든 scale 각 클래스에 spatial 최대 값을 추출하고 좌우반전 포함 다른 scale C차원의 벡터로 평균하는 것과 같다. 그리고 mean class vector에 대해 top1 혹은 top5 결과를 갖는다.

피쳐 추출(1-5)층과 분류(6-출력)층은 다른 직관으로 접근한다. 피쳐 추출시에는 이미지의 전 부분을 한번의 경로로 convolving한다. 계산효율성의 관점에서 고정된 크기의 피쳐 추출기로 슬라이딩 한 후 다른 위치의 결과를 합치는 것보다 낫다. 분류층에서는 5층의 피쳐에 대한 고정된 크기의 표현을 다양한 스케일과 부분을 공략한다. 즉 분류기는 5층의 맵들에 고정된 5x5 입력을 가진다. Offset을 활용한 풀링은 분류기가 피쳐 추출기에서 추출한 맵에서 더 정밀한 결과를 얻도록 한다. (5x5에서 가로, 세로 방향으로 0, 1, 2의 오프셋 적용)

다양한 스케일과 fine stride(0, 1, 2)를 적용한 방법이 성능상 이점이 있다. 논문에 따르면 13년 대회의 분류 태스크에서는 7개의 ConvNets을 voting한 모델이 13.6%의 top5 성능으로 5등을 차지했다.

다른 슬라이딩 윈도우 방식은 입력의 각 윈도우에 대한 전체 파이프라인을 한번에 하나씩 계산하는 반면 ConvNets을 적용한 방식은 겹치는 부분(ovelapped)의 계산을 공유한다는 점에서 효율적이다. 저자들의 방식은 더 큰 이미지가 입력되는 경우에도 적용하기 쉽다. 각 윈도우마다 하나의 spatial한 클래스를 예측할 수 있다.

Fig 5를 보면 학습시에는 1 by 1의 단일한 spatial을 출력하는 것을 알 수 있다. Test 시에 더 큰 이미지가 들어온다면 노란 영역에 대한 계산만 추가적으로 하면 된다. 학습시 마지막 층에 Fully connected layer는 1x1 커널의 콘볼루션 연산으로 변경된다.

Localization

Localization은 분류를 위해 학습한 피쳐 추출기는 그대로 이용하고 bounding box를 예측하기 위해 classifier를 regression 층으로 변경한다. 객체의 bounding box(BB)를 예측하기 위해 모든 스케일과 위치에 대해 분류기와 regressor를 돌린다. 피쳐 추출기를 같이 쓰기 때문에 마지막 regression 층만 다시 계산하면 된다. 마지막 softmax 출력을 통해 각 위치(bounding box)에 존재하는 객체가 클래스 c일 수 있는 confidence 점수를 출력한다.

Regression 학습은 5번째 층의 풀링된 피쳐맵을 가져온다. 최종적으로는 bounding box의 4개 좌표를 출력한다. 분류 태스크처럼 x,y offset을 이용한다.

원문에서도 글씨가 잘 안보인다..

Classifier, detector는 각 위치에 대한 클래스와 신뢰도(confidence)를 출력한다. 예측의 해상도는 증가할 수 있다. 그 뒤에 regressor는 window를 기준으로 객체의 위치(location scale)를 예측한다. 그리고 격자모양으로 생긴 BB들은 소수의 객체로 누적된다(accumulated).

Fig 7은 하나의 예측으로 하쳐지기 전에 regression nets가 생성한 BB를 보여준다. BB가 격자로 많이 겹쳐있다는 것은 모델이 객체의 위치가 그 주변에 있다고 예측하는 것이다.

Regression 층은 L2 로스를 사용하고 실제 BB(ground truth)와 예측 BB의 차이를 학습한다. 마지막 층에는 1,000개의 클래스에 대응하는 뉴론이 있다. Regressor는 각 공간적인 위치(spatial location)에서 비교를 진행한다. 50% 이하로 겹쳐지는 부분은 학습하지 않는다.

Multi-scale 방식에서 scale을 관통하여 regressor를 학습하는 것은 예측된 결과를 합치는데 성능상 이점이 있다. Scale의 비율은 네트워크의 stride에 정확하게 맞추기 위해 차원(dimensions)가 조정되므로 다르다.

예측된 BB들(fig 7)은 greedy merge 방식으로 합쳐진다. (순서는 Fig 8참조)
Fig 8을 보면 regressor의 최종 출력은 BB의 각 코너인 4채널이다.

(a) Spatial location에서 최대 탐지(maximum detection) 클래스를 찾아 1~6 스케일에 대해 topk 클래스를 할당한다.
(b) 스케일 s의 모든 spatial location에서 Regressor에 의해 예측된 BB를 할당한다.
(c) B에 BB의 합집합을 할당한다.
(d) Merging
(e) b1, b2가 같지 않으면 match_score(b1, b2)의 결과 중 작은 것을 선택(argmin)
match_score()는 두 BB의 중심간에 거리와 겹쳐지는 부분을 이용해 계산. box_merge()는 BB 네 좌표를 평균하여 계산.
(f) match_socre(b1_, b2_)가 t 보다 크면 멈춤
(g) 그렇지 않으면 B에 b1_, b2*를 제거한 것과 box_merge(b1_, b2*)를 합집합하여 다시 할당

마지막 BB 예측은 maximum class score를 받은 BB이다. 이는 예측된 BB로 부터 입력 window들에 대해 점증적으로 탐지된 클래스의 출력을 계산한다. Fig 6을 보면 여러 BB가 하나의 high-confidence BB로 합쳐지는 예가 나온다. 중간의 multi-scale 단계에서는 거북이와 고래가 BB로 나타나지만 최종적인 탐지 이미지에서는 사라진다. 곰이 포함된 box는 대략 평균적으로 0.5 이상의 confidence와 높은 matching score가 나타난다. 최종적으로는 높은 신뢰도의 곰만 남고 나머지 false positive들은 탐지 threshold이하의 신뢰도로 인해 사라진다.

multiscale, multi-view 방식이 성능 개선에 효과가 좋았다. Scale을 더할 수록 top5 에러율에 개선이 있었다. PCR (per-class regressor)는 3 scale에도 44%의 에러율로 단일 SCR(single-class regressor)에 비해 성능이 좋지 않았다. Per class의 경우 top layer에서 학습 데이터에서 파라미터의 개수가 1000배 적어 학습이 충분치 않았기 때문이다.

Detection

탐지를위한 학습은 분류와 비슷하지만 공간적인 방법이다. 이미지의 다양한 위치가 동시에 학습된다. 모델이 컨볼루션이기 때문에 모든 weight가 공유된다. localization 태스크와 다른 점은 이미지에 아무 객체가 없는경우를 학습해야 한다는 것이다.

13년 경진대회에서 24.3%의 mAP로 SOTA를 달성했다. 저자는 윈도우 대상의 개수를 줄이는 방법을 사용하는 다른 상위 2개 시스템과는 다른 방법을 사용하여 추론시 속도를 빠르게하고 false positive를 개선한다.

Conclusion

저자들은 multi-scale, sliding window방식으로 classification, localization, detection 태스크에서 효과를 보았고 ILSVRC 2013 데이터셋에서 분류 4위, 로컬라이즈 1위, 탐지 1위를 달성한다. 그리고 ConvNets이 어떻게 탐지와 로컬라이즈에 사용되는지를 설명한다. 저자들은 피쳐 추출영역을 공유하는 파이프라인을 제시한다. 그렇지만 localization에서 전체 네트워크를 back-propping 하지는 않아 개선의 여지가 있다.

Refrence

https://herbwood.tistory.com/7
https://arxiv.org/abs/1312.6229