Near-Duplicate Video Retrieval by Aggregating Intermediate CNN Layers 리뷰
유사 중복 동영상 검색(Near-duplicate video retrieval, NDVR)은 카메라 앵글, 인코딩 방식과 같이 아주 작은 차이만 존재하고 사실상 같은 영상을 검색하는 task로, 인터넷의 발전에 따른 동영상 콘텐츠의 증가에 따라 중요하게 관심받는 분야 중 하나이다.
NDVR task를 정의하는 다양한 방법이 있지만, 이 논문에서는 NDVR을 다음과 같이 정의한다.
유사 중복 영상은 원본 영상과 동일한, 혹은 거의 동일한 영상이지만, 파일 포맷, 인코딩 속성, 영상학적인 차이(색조, 광량 등), 영상 편집(자막, 로고, 외곽선 등), 영상 길이와 같은 영역에서 차이가 있는 영상을 말한다.
이 논문은 2017년, 당시 CNN의 성공에 힘입어 영상 검색 문제에 CNN 중간의 feature를 활용한 첫 연구이다.
논문에서는 합성곱 계층의 출력을 NDVR에 활용하기 위해 max-pooling을 통해 합성곱 계층의 확성화 값을 추출하고, 두 가지의 aggregation technique들을 제안한다.
하나는 레이어의 출력 벡터들을 concatenate하여 하나의 벡터로 묶는 것이고, 하나는 layer-specific 한 codebook을 만들어 생성한 bag-of-words 표현들을 aggregation 하는 것이다.
나아가, 저자들은 세 가지의 유명한 딥러닝 모델(AlexNet, VGGNet, GoogLeNet) 구조들에서 이를 평가하고, SOTA 이상의 훌륭한 결과를 보여준다.
제안된 방법은 CC_WEB_VIDEO 데이터셋에서 mAP 0.976을 달성하여 이전 방식의 0.958 결과를 앞선다.
Related Work
NDVR 연구는 매칭을 수행하는 수준에 따라 비디오 레벨, 프레임 레벨, 하이브리드 레벨로 나뉜다.
비디오 레벨 매칭에서는 비디오를 aggregated feature vector와 같은 표현으로 나타낸다. 기존 연구로는 Bounded Coordinate System, Multiple Feature Hashing 등이 있다.
프레임 레벨 매칭에서는 각 프레임, 혹은 프레임들의 시퀀스로 Near-Duplicate video를 찾는다.
하이브리드 레벨 매칭에서는 비디오 전체를 비교하여 1차적으로 필터링을 수행하고, 이로 필터링되지 않는 영상들을 더 많은 연산량을 요구하는 프레임 레벨로 비교하여 필터링하는 등 두 방법을 모두 활용한다.
I-MAC Approach
이 논문에서는 중간 CNN 레이어에서 생성되는 feature들을 활용하고, layer 기반 aggregation을 사용해 각 영상의 bag-of-word representation을 얻는다. 영상의 BoW representation은 inverted file index로 효율적으로 저장되며, 이들의 코사인 유사도를 활용해 NDVR이 수행된다.
CNN 기반 특성 추출
저자들은 AlexNet, VGGNet, GoogLeNet 3가지 네트워크에서 $224\times 224$ 사이즈의 입력 크기를 사용해 frame descriptor들을 추출했다. 사전학습된 CNN $\mathcal{C}$는 $L$개의 합성곱 계층을 가지고 있으며, 각 계층은 $\mathcal{L}^1, \mathcal{L}^2, \cdots , \mathcal{L}^L$과 같이 나타내었다.
이미지 $I$를 $\mathcal{C}$에 투입하면 총 $L$개의 feature map을 얻게 되는데, 이는 $\mathcal{M}^l \in \mathbb{R}^{n^l_d \times n^l_d \times c^l} (l=1, \cdots, L)$ 과 같이 나타내었다.
이때, $n^l_d \times n^l_d$는 각 합성곱 계층 $\mathcal{L}^l$의 출력 피쳐맵의 크기이며, $c^l$는 채널 수이다.
$$ v^l(i) = \max \mathcal{M}^l(\cdot , \cdot, i), i=(1, 2, \cdots, c^l)$$
각 합성곱 계층에서 하나의 descriptor를 추출하기 위해, feature map에 위와 같은 aggregation 함수를 적용하였다. feature map $\mathcal{M}^l$의 각 채널에 global max-pooling을 적용하여 하나의 값을 출력하도록 하여, $c^l$ 차원의 벡터 $v^l$를 각 feature map에 대하여 얻어내었다.
이렇게 얻어낸 $\mathcal{M}^l$ feature map에 대한 $c^l$차원 벡터 $v^l$에 L2-normalization을 사용해 스케일을 조정한다.
저자들은 사전학습 신경망의 완전 연결 계층의 출력들은 사용하지 않았으며, VGGNet과 GoogLeNet에서는 첫 번째 합성곱 계층의 출력도 사용하지 않았다. (첫 계층들은 아주 간단한 특성들을 추출하기 때문이다.)
Feature Aggregation
위에서 영상의 각 프레임을 CNN에 투입하여, 각 계층의 MAC descriptor를 추출하였다.
이제 두개의 feature aggregation 과정을 거쳐, 영상 전체를 대표하는 descriptor를 만들 것이다.
Vector Aggregation
한 프레임에서 추출된 벡터 $v^1, v^2, \cdots, v^l$을 concatenate 한 벡터 $v^C$에 대하여 bag-of-words 방식을 적용한다. 전체 프레임들에서 생성된 $K$개의 visual words를 포함한 codebook $C_K=(t_1, t_2, \cdots, t_K)$에서 가장 $v^C_f$와 유사한 $t_f$를 찾아 codebook 속 유사한 $t$에 대한 histogram을 만든다.
즉, 한 프레임의 Descriptor $H_f$는 coodbook 속 하나의 visual word가 된다.
이 $H_f$들을 모두 더하여 영상에 대한 descriptor $H_v$를 얻는다.
Layer Aggregation
중간 CNN 계층 $\mathcal{L}$의 구조적 정보를 보존하기 위해, $L$개의 Layer-Specific 한 codebook들을 생성하여 각 레이어 별로 bag-of-words representation을 생성한다. codebook은 다음과 같이 생겼다. $C_K^l = (t_1^l, t_2^l, \cdots, t_K^l), l = 1, \cdots, L$
각 프레임 $f$의 계층별 벡터 $v_f^l$는 가장 가까운 codebook 속 word $t_f^l$에 매핑된다.
Vector Aggregation 방법과 달리, 모든 프레임 $f$는 frame-level histogram $H_f$로 변환되며, 계층의 개수 $L$개의 words를 갖는다.
두 방법에서 공통적으로 visual codebook은 K-means++ 방법을 통해 랜덤하게 선택된 10만 개의 비디오 프레임에서 생성된다.
Keyframe to Video Aggregation
최종적으로 사용될 비디오의 representation은 해당 영상에 포함된 키프레임들의 bag-of-words histogram으로 생성된다. 영상 $d$가 $|F|$개의 키프레임 $F=(f_1, f_2, \cdots, f_F)$로 구성될 때, 영상 레벨 히스토그램 $H_v$는 해당 영상의 키프레임의 히스토그램 벡터들의 합으로 계산된다.
$$ H_v = \sum_{f_i\in F} H_{f_i}$$
이때, 두 과정에서 얻어진 histogram의 크기가 다름에 유의해야 한다. Vector Aggregation은 $K$ 크기이고, Layer Aggregation은 $K\cdot L$ 크기의 벡터이다.
Video Indexing and Querying
먼저, 위 방법으로 얻은 2개의 영상 히스토그램에 대하여 tf-idf 알고리즘을 이용한 가중치를 부여한다.
tf-idf는 간단히 말하면, 많은 빈도로 등장하는 요소에는 높은 가중치를 부여하되, 너무 잦은 빈도로 등장할 경우 이를 데이터 전체에 대부분 등장하는 background와 같이 인식하여 낮은 가중치를 부여하는 방식이다.
tf-idf 가중치는 모든 영상 $D_b$의 모든 visual word에 대하여 계산된다.
$$w_{td} = n_{td}\cdot \frac{\log|D_b|}{n_t}$$
$w_{td}$는 영상 $d$안의 word $t$에 대한 가중치를 의미하며, $n_{td}$과 $n_t$은 각각 word $t$가 영상 $d$, 혹은 전체 영상 $D$에서 등장하는 횟수이다. $|D_b|$는 전체 영상의 개수이다.
쿼리 영상 $q$가 제공되면, 쿼리 영상으로부터 히스토그램 $H_v^q$를 추출하고 inverted file indexing structure를 이용하여 쿼리와 공통된 visual word를 하나 이상 가진 영상들을 빠르게 탐색한다. 그 후, 모든 영상들과 쿼리 영상들 간에 tf-idf를 고려한 코사인 유사도를 계산하여 유사도가 높은 순으로 영상들을 정렬한다.
Experiments
Vector Aggregation vs Layer Aggregation
저자들은 CC_WEB_VIDEO 데이터셋을 이용해 여러 가지 실험을 진행했다.
위에서 설명하였듯이 AlexNet, VGGNet, GoogLeNet 3가지 구조의 CNN을 사용했고, 모든 Aggregation 방식에 $K=1000$을 적용하였다.
모든 구조에서, Vector Aggregation에 비해 Layer Aggregation이 더 좋은 결과를 보였으며, Vector 기반 방식에서는 GoogLeNet이 가장 우수한 성능을 보였고, Layer 기반에서도 비슷하지만 VGGNet이 근소하게 앞선 성능을 보였다.
Using Individual Layers
저자들은 모델의 전체 합성곱 계층에서 feature를 뽑지 않고, 한 개의 계층에서만 feature를 뽑는 실험을 진행하였다.
일반적으로 모델의 첫 합성곱 계층에서 뽑은 feature만 사용할 경우 성능이 좋지 않았고, 다른 계층들에서는 비슷한 결과를 내었으며 일부 계층에서 뽑은 feature들의 성능은 vector aggregation 성능보다도 좋은 성능을 내었다.
그러나 layer aggregation의 성능을 뛰어넘은 경우는 없었다.
결론
이 논문에서는 첫 계층을 제외한 CNN의 합성곱 계층 전체에서 MAC을 추출하여 concatenate 하여 frame-level histogram representation을 만들고, 이를 summation 하여 video-level histogram representation을 생성하여 Near-Duplicate Video Retrieval을 수행하여 높은 성능을 보였다.
논문의 내용도 훌륭하였지만 figure와 table이 적절히 배치되어 있고, 설명이 친절하여 잘 읽히는 좋은 논문이었던 것 같다.
나중에 논문을 쓸 일이 있으면 참고해야지 싶은, 좋은 논문이었다.
'Deep Learning > 논문 리뷰' 카테고리의 다른 글
ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning 리뷰 (0) | 2023.04.04 |
---|---|
Near-Duplicate Video Retrieval with Deep Metric Learning 리뷰 (0) | 2023.03.30 |
R-MAC: Particular Object retrieval with Integral Max-Pooling of CNN Activations 리뷰 (0) | 2023.03.28 |
ResNet: Deep Residual Learning for Image Recgnition 리뷰 (0) | 2023.03.21 |
SSD: Single Shot MultiBox Detector 논문 정리 (0) | 2023.01.05 |
댓글
이 글 공유하기
다른 글
-
ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning 리뷰
ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning 리뷰
2023.04.04 -
Near-Duplicate Video Retrieval with Deep Metric Learning 리뷰
Near-Duplicate Video Retrieval with Deep Metric Learning 리뷰
2023.03.30 -
R-MAC: Particular Object retrieval with Integral Max-Pooling of CNN Activations 리뷰
R-MAC: Particular Object retrieval with Integral Max-Pooling of CNN Activations 리뷰
2023.03.28 -
ResNet: Deep Residual Learning for Image Recgnition 리뷰
ResNet: Deep Residual Learning for Image Recgnition 리뷰
2023.03.21