논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

HyperNet: Towards Accurate Region Proposal Generation and Joint Object Detection

1. Introduction

최근 제안된 Region Proposal Network (RPN, Faster R-CNN)은 localization 성능이 낮아 작은 객체나 높은 IoU 스레스홀드를 사용할 경우 문제가 있었습니다. 또한 낮은 후보 수를 사용할 경우 속도는 빨라지지만 정확도를 하락시킵니다.

이러한 문제는 객체 후보와 검출이 좀 더 informative해야하며, 후보 생성과 검출을 위한 레이어의 해상도가 더 높아져야 함을 의미합니다. 딥 컨볼루셔널 레이어는 객체를 찾는 문제에서는 높은 리콜을 보여주지만 위치를 찾는데는 낮은 성능을 보이는데 이것은 듬성한 피쳐맵에 기인합니다. 반면 네트워크의 낮은 레이어는 위치는 잘 찾지만 객체 검출 리콜은 떨어트립니다.

세그멘테이션 분야의 Fully Convolution Network (FCN)은 높은 레이어와 낮은 레이어를 통합하여 높은 성능을 기록하였습니다. 여기에 영향을 받아 이 논문에서는 깊고 좁은 피쳐와 세세한 정보를 합한 Hyper Feature를 제안합니다. 그리고 이를 이용한 Hypernet을 정밀한 영역 후보를 생성해 내고, 동시에 객체 검출을 수행합니다.

2. Related Work

3. HyperNet Framework

3.1. Hyper Feature Production

이미지가 주어지면 프리트레이닝 모델의 컨볼루셔널 레이어들을 이용하여 피쳐 맵을 생성합니다. CNN의 서브 샘플링과 풀링 때문에 각 레이어의 피쳐 맵들이 같은 해상도를 갖지 않습니다. 같은 해상도의 다단계 맵을 만들기 위해서 레이어마다 다른 샘플링 전략을 사용하였습니다. 낮은 레이어에서는 맵스 풀링을 사용하여 서브샘플링을 하였습니다. 높은 레이어에서는 deconvolutional 연산 (Deconv)을 이용하여 업샘플링을 하엿습니다. 여기에 컨볼루셔널 레이어를 적용하여 더 맥락적인 피쳐를 뽑음과 동시에 유니폼 공간으로 압축하는 효과를 내었습니다. 마지막으로 피쳐맵을 local response normalization (LRN)을 적용하고, 하나의 출력 큐브로 붙였습니다. 이것을 HyperNet Feature라고 부르도록 하겠습니다.

HyperNet Feature는 몇가지 장점이 있습니다. 먼저 다단계로 추상화 능력을 가집니다. 둘때로 적절한 해상도를 가집니다. 마지막으로 계산이 효율적입니다.

3.2. Region Proposal Generation

Ren의 연구1에서 딥 클래시파이어 네트워크의 마지막 피쳐는 그 자체로도 중요하며 ConvNet의 피쳐맵이 잘 작동한다는 것을 보였습니다. 따라서 후보 영역을 생성하기 위한 가벼운 ConvNet을 디자인하였습니다. 이 ConvNet은 ROI pooling 레이어와 컨볼루셔널 레이어, Fully Connected 레이어로 구성되며, 마지막으로 2개의 출력 레이어가 오게 됩니다. 각 이미지마다 30k개의 후보 박스를 생성하게 됩니다.

ROI pooling은 각 박스마다 w x h 개의 출력빈으로부터 max pooling을 수행합니다. ROI pooling 출력에 2개의 추가 레이어를 붙여 ROI position을 더 추상적인 피쳐 큐브 (13 x 13 x 4)를 인코드 하는 레이어와, 256 차원의 피쳐 벡터를 인코드 하는 레이어를 추가하였습니다. 각 후보 박스마다 2개의 출력 레이어가 따라다니게 됩니다. 점수 레이어는 객체가 있을 확률과 바운딩 박스를 예측합니다.

영역 후보들은 많이 겹쳐 있기 때문에 non-maximum suppression (NMS)을 수행하여 중복되는 박스들은 제거하였습니다. 이 때 IoU는 0.7을 사용하였습니다. NMS 이후에 남은 박스들 중 점수가 높은 200개만 후보로 사용하였습니다.

3.3. Object Detection

객체를 탐지하는 방법은 FC-Dropout-FC-Dropout 구조를 사용하는 것인데 여기에서는 2가지 수정을 가했습니다. 먼저 FC레이어 전에 3 x 3 x 63 짜리 컨볼루셔널 레이러를 추가하여 분류기가 더 성능이 좋도록 하였고 차원을 줄이도록 하였습니다. 또 dropout 비율을 0.5에서 0.25로 줄여 더 효과적으로 분류를 할 수 있도록 하였습니다.

후보 영역 생성과 마찬가지로 2개의 레이어가 더 붙게 되는데, 하나는 각 클래스에 대한 N+1개의 점수를 내보내고, 다른 하나는 4xN개의 바운딩 박스 예측 결과를 내보내게 됩니다. 여기서 N은 클래스 수이고 +1은 배경에 대한 것을 나타냅니다.

3.4. Joint Training

학습을 위해서 각 박스마다 바이너리 클래스 레이블을 할당하였습니다. 각 박스는 객체와 IoU가 0.45가 넘으면 객체가 있는 것으로 계산하였고, 0.3보다 작으면 객체가 없도록 하였습니다.

다음의 로스로 멀티 태스크 러닝을 수행하였습니다.

$$ L(k, k^*, t, t*) = L_{cls}(k, k*) + \lambda L_{reg}(t, t^*) $$

$L_{cls}$는 클래스간 소프트맥스 로스입니다. 참인 객체 대한 $L_{reg}$는 바운딩 박스 로스입니다. $\lambda=3$을 사용하였습니다. 자세한 계산 방법은 R-CNN에서 사용한 것과 동일하빈다.

3.5. Speeding up

속도를 높이기 위해 약간 수정을 하여 3x3x4 컨볼루셔널 레이러를 ROI pooling 직전으로 옮겼습니다. 이것으로 Hyper feature 맵의 채널이 126에서 4로 줄일 수 있었으며, 분류기가 Conv-FC에서 FC으로 구조가 단순해였습니다. 이로 후보 영역 생성 연산 모듈의 속도가 올랐습니다.

4. Comparison to Prior Works

5. Experimental Evalation

6. Conclusion

 

1 S. Ren, K. He, R. Girshick, X. Zhang, and J. Sun. Object detection networks on convolutional feature maps. arXiv preprint arXiv:1504.06066, 2015.

Add a Comment Trackback