Deep Learning/논문 리뷰

R-C3D: Region Convolutional 3D Network for Temporal Activity Detection 리뷰 (ICCV 2017)

백지오 2023. 6. 1. 20:57
반응형

이 논문은 2017년 ICCV에 제출된 논문으로, untimmed video 내에서 어떤 action의 class를 분류하고, 해당 action이 등장하는 구간을 판별하는 Action Detection(Localization) 문제를 다룬다. 저자들은 end-to-end로 학습 가능하며, 합성곱 계층으로만 구성된 모델인 Region Convolutional 3D Network, R-C3D를 제안한다. 이 모델은 THUMOS 2014 데이터셋에서 기존 모델들보다 빠르며, SOTA를 달성하였다.

기존 Action Localization 모델들은 대게 영상 전체를 sliding window 방식으로 탐색하며 action이 존재하는 segment를 분류하는 classification 문제로 접근하거나, 별도의 proposal 모델을 통해 영상에서 action이 존재할 것 같은 영역을 찾아내었다. 저자들은 이러한 방법의 문제를 다음과 같이 정의한다.

  • 이러한 모델들은 end-to-end로 학습되지 않고, hand-crafted feature를 사용하거나 VGG, ResNet, C3D 등 이미지에서 학습된 deep feature를 사용한다. 이는 영상 문제를 해결하기에 최적의 방법이 아니다.
  • sliding window 방법은 컴퓨팅적으로 비효율적이다.
  • sliding window 방법은 event boundary를 유연하게 잡아내지 못한다.

저자들은 이러한 문제를 해결하여 proposal과 분류 부분을 한번에 end-to-end 학습하는 Region Convolutional 3D Network (R-C3D)를 제안한다. 이 모델은 proposal 과정과 classification 과정에서 특성 추출을 공유하므로 computational cost가 적고, anchor 방식을 이용해 유연하게 event boundary를 찾을 수 있다. 저자들은 이 모델이 faster r-cnn에서 영감을 받았다고 한다.

저자들이 주장하는 이 논문의 contribution은 다음과 같다.

  • 아래와 같은 장점을 갖는 임의의 길이의 action들을 detection할 수 있는 end-to-end 모델 제안
  • proposal generation과 classification에 사용되는 특성 추출 연산을 공유하여 높은 속도 획득
  • THUMOS'14, Charades에서 SOTA 달성, ActivityNet에서 향상된 성능을 거두어 모델의 효과 검증

Region Convolutional 3D Network (R-C3D)

R-C3D의 구조

R-C3D는 위 그림처럼 크게 3가지 요소로 나누어진다. 특성을 추출하는 3D ConvNet Feature Extractor, action이 있을 것 같은 영역을 찾아내는 Proposal Subnet, 영역들이 가지고 있는 action을 분류하고 refine하는 Classification Subnet이다. 연산의 효율을 위해 Proposal Subnet과 Classification Subnet은 같은 3D ConvNet에서 추출된 특성을 사용하며, 이 논문의 핵심은 Faster R-CNN에서 사용한 2D ROI pooling을 3D로 이식하여 가변적인 길이의 영역을 proposal할 수 있게 한 것이다.

3D Convolutional Feature

저자들은 영상의 시공간적 정보를 모두 활용하기 위해 3D 합성곱을 통해 특성을 추출하였다. 동영상은 $\mathbb{R}^{3\times L\times H\times W}$크기로 입력되었으며, 출력은 $\mathbb{R}^{512\times\frac{L}{8}\times\frac{H}{16}\times\frac{W}{16}}$의 크기를 가진다. 저자들은 영상의 가로 세로 크기를 각각 112로 지정하였다. 영상의 길이(프레임의 수)는 GPU 메모리가 허용하는 한 자유롭게 입력할 수 있다.

Temporal Proposal Subnet

먼저 입력 영상을 3D ConvNet에 입력하여 얻어진 feature map $C_{conv5b}\in \mathbb{R}^{512\times\frac{L}{8}\times\frac{H}{16}\times\frac{W}{16}}$에 $3\times 3\times 3$ 크기의 3D 합성곱을 수행하고, 공간적 전역 최대 풀링을 수행하여 $1\times \frac{L}{8} \times 1 \times 1$ 크기로 변환한다. 이 feature의 $\frac{L}{8}$개의 값에 각각 $K$개의 앵커를 적용하여, 총 $(L/8)*K$개의 앵커를 얻는다. 여기에 $1\times 1\times 1$의 합성곱을 적용하여 각 앵커의 오프셋 (관심영역의 중심 프레임, 관심영역의 길이)와 action의 존재 여부를 나타내는 score를 얻는다.

학습 시에는 각 앵커 segment에 양성/음성 라벨을 부여하여 action이 있는 segment를 분류하도록 학습시킨다. 이때 앵커의 IoU가 0.7 이상이거나 어떤 action과 가장 높은 IoU를 가지면 양성으로, 모든 action들과 0.3 미만의 IoU를 가진다면 음성으로 라벨링하였다. 학습 시 양성과 음성 segment의 균형을 맞추어 학습을 진행하였다.

Activity Classification Subnet

먼저, 이전 단계에서 제안된 proposal segment를 골라낸다. 제안된 segment 중 IoU가 0.7 이상인 segment들을 Non Max Suppression을 적용하여 가장 confidence score가 높은 segment만 남기고 제거하였다.

그 다음, 각자 다른 크기의 segment들에 3D RoI Pooling을 적용하여 고정된 크기로 만들어 주었다. 3D RoI Pooling은 입력 feature map을 동일한 크기 $1\times 4\times 4$의 격자로 나누어 Pooling을 수행하는 것이다. 예를들어, 우리가 원하는 출력 크기가 $2$인데, $4$ 크기의 입력이 입력되면 kernel_size=2의 pooling을 수행하고, $8$ 크기의 입력이 입력되면 kernel_size=4의 pooling을 수행한다. 논문에서 3D ConvNet에서 추출된 feature map에 앞서 proposal된 segment의 길이$l_p$에 해당하는 feature map을 추출하면 $512\times l_p\times 7\times 7$의 크기를 갖는데, 이를 3D RoI Pooling을 거쳐 $512\times 1\times 4\times 4$크기로 만들어준다.

이렇게 얻어진 고정된 크기의 특성은 두 개의 fully connected layer에 입력되어 각각 action의 시작, 종료 시간 회귀와 action의 종류 분류를 수행한다.

학습

저자들은 분류와 회귀 문제를 한번에 학습시켰다. 분류에는 softmax loss, 회귀에는 smooth L1 loss를 사용하였다.

$$\mathcal{L} = \frac{1}{N_{cls}} \sum_i \mathcal{L}_{cls}(a_i , a_i^*) + \lambda \frac{1}{N_{reg}}\sum_i a_i^* \mathcal{L}_{reg}(t_i, t_i^*)$$

$N_{cls}, N_{reg}$는 각각 앵커와 proposal segment의 갯수이고, $\lambda$는 두 손실 함수의 비율을 조절해주는 값으로, 기본은 1이다. $a_i^*, t_i^*$각각 정답을 의미한다. 위 손실 함수를 Proposal Network에 적용할 때, $\mathcal{L}_{cls}$는 proposal segment가 action인지 background인지를 판별하는 이진 분류 손실, $\mathcal{L}_reg$는 앵커의 오프셋에 대한 손실로 적용되며, Classification Network에 적용할 때는 $\mathcal{L}_{cls}$가 action의 종류를 분류하는 멀티 클래스 분류 손실, $\mathcal{L}_{reg}$가 action의 시작과 끝에 대한 손실이 된다.

두 신경망의 학습에 사용되는 4개의 손실 함수는 모두 한번에 최적화된다.

예측

R-C3D의 예측은 2단계로 구성된다.
먼저, proposal subnet이 입력된 영상에서 action이 있을 것으로 보이는 후보 영역들의 오프셋과 score를 예측한다. 이들은 NMS로 필터링 되고, classification subnet이 각 영역의 class 분류를 수행하고, action의 시작과 끝 오프셋을 다시금 예측한다.

Experiments

THUMOS'14에서, 사용한 IoU 임곗값에 대한 mAP

저자들은 THUMOS'14 데이터셋에서 다른 모델들과의 비교를 수행하였다. 그 결과 R-C3D는 SOTA를 달성하였다. 저자들은 학습 단계에서 GPU memory의 제한으로 인해 영상을 처음부터 끝까지 sliding하며 분할하여 버퍼에 입력한 one-way buffer 방법을 사용하고, 여기에 더하여 영상을 뒤에서부터 처음까지 sliding한 것을 추가한 two-way buffer 방법으로 실험을 진행했다.

저자들은 또한 실험을 통해 앵커의 갯수 $K$를 정하였는데, THUMOS에서는 $K=10$을 취하고 각 앵커의 scale은 $[2, 4, 5, 6, 8, 9, 10, 12, 14, 16]$을 사용하였다.

ActivityNet에서의 실험 결과
Charades에서의 실험 결과

저자들은 ActivityNet과 Charades 데이터셋에서도 실험을 진행하였다. Charades에서는 SOTA를 달성하였고, ActivityNet에서는 2번째로 높은 성능을 달성하였다.

더불어 R-C3D는 정확도 뿐 아니라 속도 면에서도 기존 모델들에 비해 빠른 성능을 보였다.

정성적 결과

결론

저자들은 최초의 end-to-end 학습 가능한 action localization 모델을 제안하였다. 이때 proposal network와 classification network에 사용되는 feature extractor를 공유하여 연산량을 크게 줄이고 속도를 개선하였다.

반응형