이 영역을 누르면 첫 페이지로 이동
컴01기 블로그의 첫 페이지로 이동

컴01기

페이지 맨 위로 올라가기

컴01기

힝입니다.

ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning

  • 2023.11.23 20:01
  • 📰논문 리뷰

안녕하세요! 두 번째 리뷰입니다. 이 논문은 ViSiL (Video Similarity Learning architecture) 을 소개하는 논문입니다. 일반적으로 비디오 간의 시공간적 관계 (Spatio-Temporal relations)는 이전의 Video Retrieval 접근 방식에서 손실됐었는데, ViSiL 을 사용하면 정제된 frame-to-frame 매트릭스에서 video-to-video similarity 를 계산할 수 있어 intra-frame / inter-frame relations, 즉 시공간적 관계를 고려할 수 있다고 하네요! 그럼 리뷰 시작하겠습니다!

Introduction

인터넷을 통해 비디오를 공유하는 서비스가 인기가 있어짐에 따라, 웹 상에 있는 비디오 컨텐츠의 양이 전례 없는 규모에 이르렀습니다. 특히 최근 유행하고 있는 Short-form 영상 서비스인 Instagram Reels, Youtube Shorts, TikTok 등만 생각해봐도 하루에 엄청난 양의 비디오 컨텐츠들이 올라오는데, 그 외의 서비스까지 포함한다면 엄청난 컨텐츠가 업로드 되고 있겠죠! 아무래도 데이터가 늘어나다 보니, 컨텐츠를 기반으로 video retrieval 을 하는 것이 점점 더 어려워지고 있습니다. Video retrieval 이 사용되는 분야에는 video filtering, recommendation, copyright protection and verification 등이 있는데, 이는 우리가 사용하는 애플리케이션의 필수적인 요소라 이에 대한 그 중요성 또한 커지고 있죠. 본 논문에서는 Video retrieval system 의 핵심인 ‘비디오 pairs 간의 Similarity estimation (유사성 추정)’ 문제를 다룹니다.

기존에 이 문제에 대한 간단한 접근 방식이 있습니다. 바로 frame-level features 를 aggregate / pool 해서 하나의 video-representation 으로 만든 다음에, 이걸 이용하여 similarity measure 를 계산하는 방식입니다. 대표적인 예로는 global vectors, hash code, Bag-of-Words (Bow) 등이 있습니다. (global vectors, Bow는 ViSiL을 읽기 직전에 공부했던 내용이라 반가웠습니다! 나중에 hash code 도 공부해봐야겠네요.) 그러나, 이러한 representations 는 visual similarity 의 spatial and temporal 구조를 무시한다고 합니다.

그 외에도 다른 접근 방식들이 있었다고 합니다. 이러한 방식들을 살펴 봤을때, 논문 저자는 video retrieval 분야의 유망한 방향이 유사도를 측정할 때 비디오의 spatial and temporal 구조를 더 잘 활용하는 거라는 결론을 내린 것 같습니다.

본 논문에서는 ViSiL (Video Similarity Learning architecture) 을 제안합니다. 이는 visual similarity 의 spatial (intra-frame) 구조와 temporal (inter-frame) 구조를 둘 다 고려하는 Video similarity learning network, 즉 비디오의 유사도를 학습하는 네트워크 입니다.

이 방법을 사용하면, relevant videos 의 frame-level similarity 의 temporal structure 을 학습하고, (Fig1의 빨간 대각선 구조) 발생할 수도 있는 가짜 pairwise frame similarities 도 억제할 수 있다고 합니다. (Fig1 의 아래쪽을 보면, irrelevant videos 가 visil을 통과 했을 때 similarity 가 높은 부분이 나오지 않기 때문에 이런 말을 한 것 같습니다.)

 

 

Video Retrieval 문제에는 아래와 같은 것들이 있습니다.

  • NDVR (Near-Duplicate Video Retrieval)
  • FIVR (Fine-grained Incident) EVR (Event-based Video Retrieval)
  • AVR (Action Video Retrieval)

public benchmark datasets 를 사용해서 이러한 video retrieval 문제에 대해 ViSiL을 평가했는데, 모든 경우에서 ViSiL이 최신 방법을 큰 차이로 능가했다고 합니다.

Preliminaries

Tensor Dot (TD)

Chamfer Similarity (CS)

 

ViSiL description

figure 2 가 우리가 제안하는 접근 방식인 ViSiL을 설명하는 그림입니다. 논문에서는 이걸 이후의 섹션에서 아래의 순서대로 설명을 했습니다.

  1. anchor, positive, negative videos 로 이루어진 triplet 이 input 으로 들어감
  2. feature maps 에 region pooling 적용시켜서 CNN 에서 region-level frame features 를 뽑아냄
  3. (2)은 PCA-whitened 되고, attention mechanism 에 의해 weighted 됨 (Section 4.1)
  4. TD (Tensor Dot) product 와 CS (Chamfer Similarity) 를 사용하여 frame-to-frame similarity matrics 를 생성함 (Section 4.2)
  5. (4)의 output matrics, 즉 모든 pairwise frame 으로 구성된 similarity matrix 가 video-level similarity model 을 학습시키기 위해 4-layer CNN에 실림. (Section 4.3)
  6. CNN의 마지막 layer 에서, CS (Chamfer Similarity)를 이용해 video-to-video similarity 를 계산함

이 때 이 과정은, training dataset 으로 부터 선택되거나 자동적으로 생성된 triplets 를 기반으로 하는 triplet loss scheme 를 이용하여 학습되는 것임. (Section 4.4, 4.5)

4.1. Feature extraction

 

 

 

( 🤔 이 때 N이 어떤 의미인지 질문을 했는데, 이건 layer의 갯수라고 합니다. 일단 논문에서 N =3 이고, 코드 보면 N = 4 인데, CNN 의 중간의 layer 3개와 마지막 layer 1개로 총 4개에서 feature map 을 뽑는다고 합니다. 일찍 뽑을 수록 이미지의 edge 같은 특성이 살아있는 low level의 feature map 이 뽑아지고, 늦게 뽑을 수록 이미지의 semantic 한 부분 (육안으로는 구별 x) 이 살아있는 high level 의 feature map 을 뽑기 때문에 이 정도를 granularity level 이라 표현한 것이라고 설명해주셨습니다.)

 

R-MAC 은 feature map 에서 여러 개의 region 을 만들어서, 여러 개의 image representation 을 만드는 기법이라고 합니다.

주어진 CNN architecture 은 K 개의 convolutional layers 로 구성 되어 있고, 이 layers 들은 K 개의 feature maps 를 생성합니다.

 

 

 

 

 

그 후에, extracted frame descriptors 에 PCA 를 적용 시킵니다. 이건 whitening and/or dimensionalirty reduction 을 수행하기 위함입니다.

 

 

 

이걸 video retrieval 에 성공적으로 적용시키기 위해서, 만든 것이 attention mechanism 입니다.

 

 

일반적으로 볼 수 있는 관행과는 달리, calculated weights 에는 normalization function (e.g. soft-max or division by sum) 을 적용하지 않는다고 합니다. 그 이유는 각 vector 를 독립적으로 weight 하고 싶기 때문이라는데, 이게 이해가 가지 않아 질문을 했습니다. normalization 은 안 하면서, 범위는 바꾸는 이유가 궁금해서 질문했습니다. 🤔

  • 먼저, self-attention weight 를 줬을 때의 장점에 대해 들었습니다. 이건 대략적인 예시를 들어 설명해보겠습니다. [10, 100, 40, 200, 50] 이런 벡터가 있다고 해봅시다. 자신의 벡터를 이용하여 어떤 방식으로 attention weight 를 구했을 때, [0.1, 10, 0.4, 20, 0.5] 라는 weight 를 구했다고 칩시다. 이 weight 를 곱하면, [1, 1000, 16, 4000, 25] 가 됩니다. 큰 값은 더 커지고, 작은 값은 더 작아졌습니다. 이런 식으로 특성을 살려준다는게 self-attention 의 장점입니다.
  • 그런데 이런 상태에서, 정규화를 하면, [-201, -181, -198, 598, -196] 대강 이런 식으로 변하는데, 그러면 큰 값은 더 크고 작은 값이 더 작아지게 만들어 줬던게 헛수고가 됩니다. (예시가 적절하지 않을 수도 있는데 아무튼 그렇습니다…)
  • 따라서, weight 를 준 다음에 normalization 을 적용하거나, 마찬가지로 normalization 을 한 다음에 weight 를 주면 오히려 안 좋기 때문에, normalization 은 안 하고, self attention 으로 만든 weight 를 벡터에 값마다 각각 independently 하게 주는 것 입니다.

또한, 실험적으로 찾아냈다는데, 다른 works 들과는 다르게, atttention module 에서 hidden layer 를 사용하는 것은 시스템의 성능에 악영향을 미친다고 합니다.

( 🤔 이 부분도 궁금해서 질문을 했는데, hidden layer 가 늘어날 수록 parameter 또한 늘어나는데, over parameter 라고, parameter 가 너무 늘어나면 학습할 게 많아져서 오히려 성능이 안 좋아지는 영향이 있다고 합니다.)

4.2. Frame-to-frame similarity

두 개의 video frame �,�d,b 가 주어졌을 때, 우리는 이 둘의 similarity 를 계산하기 위해 그들의 feature maps 에 CS 를 적용합니다.

 

 

​

이 과정은 region vectors 로 캡쳐한 geometric 정보를 활용하고, 어느 정도의 spatial invariance 를 제공한다고 합니다.

더 자세하게 말하면, CNN 은 (objet parts 처럼) mid-level visual 구조에 해당하는 features 를 뽑고, CS 와 합쳐집니다. 이건 region-to-region matrix 의 global structure 를 무시하도록 디자인 된 것이고, spatial transformations (e.g. spatial shift) 에 대한 robust 한 similarity calculation proces 를 구성하게 됩니다.

(이렇게 하면 CNN 의 mid- level에서 feature 뽑고 CS로 합쳐지는거라 global structure 무시하는데, 이게 spatial transformation 에 대해 robust 하니까 오히려 좋다는 뜻으로 이해했습니다.)

4.3. Video-to-video similarity

 

이 부분!

 

이 network 는 segment level 에서의 video 간의 similarities 의 robust 패턴을 학습할 수 있습니다.

Table 1 은 제안된 ViSiL framework 의 CNN 구조를 보여줍니다.

 

final video similarity 를 구하기 위해서, 우리는 hard tanh activation function 을 netowrk ouput 인 values 에다가 적용시켰습니다.

 

이미지를 보면 알 수 있듯이, values 를 [-1,1] 의 범위로 clip 해주는 함수입니다.

그리고 나서, a single value 를 얻기 위해 CS 를 적용해줍니다.

 

 

4.4 Loss function

 

 

또한, saturated outputs (포화 출력) 을 초래할 수 있는, hard tanh 의 input 의 높은 값에 불이익을 주는 similarity regularization function 을 정의합니다.

 

 

4.5 Training ViSiL

ViSiL architecture 를 학습시키는 것은, segment level 의 ground truth annotations 이 있는 training dataset 이 필요합니다. 이러한 annotations 를 사용해서, 우리는 학습 중에 anchor-positive pairs 역할을 하기 위해, 관련 visual content 가 있는 video pairs 를 추출해야합니다.

추가로, 우리는 임의의 videos 에 여러가지 transformations 를 적용시킴으로써 인공적으로 positive videos 를 만들어냈다.

우리가 고려한 3가지 transformations 카테고리

  1. color
    1. conversion to grayscale
    2. brightness
    3. contrast
    4. hue
    5. saturation adjustment
  2. geometric
    1. horizontal / vertical flip
    2. crop
    3. rotation
    4. resize
    5. rescale
  3. temporal
    1. slow motion
    2. fast forward
    3. frame insertion
    4. video pause or reversion

학습하는 동안, 각 카테고리에서 하나의 transformation 이 랜덤하게 골라져서 선택된 비디오에 적용됩니다. positive pairs 로 구성된 2개의 video pools 를 construct 한 후, 각 positive pair 에 대해 hard triplets 를 생성합니다.

즉, anchor video 와 positive video 사이의 similarity 보다 큰, anchor 보다 큰 anchor 와 유사한 negative videos (hard negative) 를 construct 한다는 뜻입니다.

그 다음은, BoW 접근 방식을 사용해서 videos 사이의 similarity 를 계산하면 되는 것입니다.

pool 은 총 2개로 만들었습니다.

첫 번째 pool 은 training dataset 의 annotated videos 에서 파생된 것입니다. 최소 5초 이상의 overlap 이 있는 2개의 videos 가 하나의 positive pair 를 이루게 됩니다. s 를 해당 video segments 의 similarity 라고 해봅시다. positive pair 에 있는 두 segment 와, s 보다 similarity (BoW-based [20])가 큰 videos 는 hard negatives 를 구성하게 됩니다.

두 번째 pool 은 인공적으로 positive pairs 를 만드는데 쓰였던 training dataset 의 임의의 videos 로부터 파생되었습니다. initial videos 와 비슷한 (similarity > 0.1) videos 는 hard negatives 로 고려됩니다. 잠재적인 near-duplicates 를 피하기 위해, 우리는 hard negative sets 로부터 similarity > 0.5 인 videos 를 제거합니다. 각 training epoch 에서, 우리는 각 video pool 에서 T triplets 를 sample 한다. GPU memory limitations 때문에, network 에게 전체 videos 를 주지는 않는다고 합니다. 대신에, triplet 에 있는 each video 로부터 total size of W frames 의 랜덤한 video snippet 를 선택합니다. 이때, anchor videos 와 positives videos 사이에는 최소 5초의 overlap 이 있다는 것이 보장된다고 합니다.

Evaluation setup

제안된 approach 는 4가지 retrieval tasks 에 의해 평가됩니다.

  • NDVR (Near-Duplicate Video Retrieval)
  • FIVR (Fine-grained Incident Video Retrieval)
  • EVR (Event Video Retrieval)
  • AVR (Action Video Retrieval)

모든 tasks 에서 mAP (mean Average Precision) 을 report 하는 것이고, 이 tasks 들을 위한 데이터셋은 따로 있습니다.

Datasets

ViSiL 을 원복하려는데 FIVR 와 VCDB 가 언제 쓰이는지 많이 헷갈렸기에… dataset 도 살짝 정리해보겠습니다.

VCDB [16]

  • triplets 을 만드는 training dataset 으로 쓰였다.
  • It consists of 528 videos with 9,000 pairs of copied segments in the core dataset, and also a subset of 100,000 distractor videos.

CC_WEB_VIDEO [35]

  • NDVR (Near-Duplicate Video Retrieval) 에 사용되는 데이터셋
  • It consists of 24 query sets and 13,129 videos.
  • 우리는 이 annotations 에 대해 여러가지 quality issues 를 찾았기 때문에, ( e.g. numerous positives mislabeled as negatives)이 annotations 에 대한 ‘cleaned’ version 에 대한 결과를 제공한다.
  • 또한, 2 가지 evaluation settings 를 사용헀다.
    • query sets 에 대한 performance 만 측정하는 것
    • entire dataset 에 대한 performance 를 측정하는 것

FIVR-200K

  • FIVR (Fine-grained Incident Video Retrieval) 문제를 위한 데이터셋
  • It consists of 225,960 videos and 100 queries. It includes three different retrieval tasks:
    • a) the Duplicate Scene Video Retrieval (DSVR)
    • b) the Complementary Scene Video Retrieval (CSVR)
    • c) the Incident Scene Video Retrieval (ISVR)
  • 빠른 비교를 위해, 우리는 FIVR-200K 대신, 이의 일부인 FIVR-5K를 사용했다.

FIVR-5K인 경우

DSVR task 에서 50개의 가장 어려운 query 들을 선택한 것

  • Query : 50 videos
  • Dabtabase
    • DSVR : 1074 videos, index

EVVE

  • EVR (Event Video Retrieval) 를 위한 데이터셋
  • It consists of 2,375 videos, and 620 queries.

ActivityNet

  • AVR (Action Video Retrieval) task 를 위한 데이터셋.
  • It consists of 3,791 training, 444 validation and 494 test videos.

Experiments

  1. frame-to-frame similarity 비교

 

 

 

2. Ablation study

ViSiL의 Video retrieval 에 대한 성능을 각 모듈 별로 평가해봤습니다.

 

FIVR-5K dataset 에 대해 평가했고, ViSiL 에게 4가지의 configuration settings 를 적용한 결과 입니다. 위에 있는 3개를 보면, 각 component 를 추가할 때 마다 성능이 올랐음을 알 수 있습니다.

아래 2개를 비교했을 때, 이 문제에서는 CS의 non symetric 한 버전이 더 나은 것을 알 수 있었습니다.

Similarity regularization loss 의 impact 에 대해서도 평가해봤습니다.

 

retrieval 의 performance 에 영향을 미친다는 것을 알 수 있었는데요. 사용할 때 모든 tasks 에서 성능향상이 있음을 알 수 있었습니다.

 

3. state-of-the-art 와의 비교

  • CC_WEB_VIDEO 데이터셋을 사용한 NVDR 문제에서 성능을 비교해봤습니다.

 

original annotations 이 사용된 CTE 를 제외하고는, 다른 경쟁 시스템들과 비교했을 때 가장 좋은 성능을 냈습니다. 아 위에서도 말했듯이 annotations 에 에러가 많아서 그렇다고 하는데요, 이 논문에서 제시한 ‘cleaned version’ 의 annotations 을 사용하여 테스트 했을 때 (*) 0.993으로, CTE와 0.003 밖에 차이나지 않음을 알 수 있었습니다.

  • FIVR 데이터셋을 사용한 DSVR 문제에서 성능을 비교해봤습니다.

 

Table 6. 을 보면 알 수 있듯이. ViSiL_v 가 가장 좋은 성능을 냈습니다.

잘못된 경우를 수동으로 검사해봤더니, 실제로 positive 여야 하는데 라벨이 제대로 붙지 않은 경우가 있었다고 합니다.

원래대로였으면 positive 라고 label 되어야했기 때문에, Table 의 성능이 실제와 조금 다를 수 있다는 의미로 보여준 것 같습니다.

  • EVVE 데이터셋을 사용한 EVR 문제에서 성능을 비교해봤습니다.

ViSiL_v 가 대다수의 이벤트에서 가장 좋은 결과를 냈음을 알 수 있습니다. 참고로, original EVVE dataset 중에 더 이상 사용할 수 없는 비디오들도 있었기에, 이 결과는 데이터셋의 80%를 사용한 결과입니다.

  • ActivityNet 데이터셋을 사용한 AVR 문제에서 성능을 비교해봤습니다.

 

ViSiL_sym 이 다른 접근방식들과 비교했을 때 큰 차이로 성능이 좋은 것을 알 수 있습니다.

Conclusion

본 논문에서는, 비디오 간의 similarity 를 계산하는 방법을 학습하는 네트워크인 ViSiL을 제안했습니다.

ViSiL의 key contribution 은 아래와 같습니다.

  • regional level 의 유사성을 capture 하는 frame-to-frame 유사도 계산 방법 제안
  • video segments 사이의 frame-to-frame 유사도 matrix 를 분석하는 supervised video-to-video similarity 계산 전략 제안

이 두 개를 합쳐서, video similarity 의 fine-grained 시공간적 유사성을 고려하는 video similarity 계산 방식을 이끌어 낼 수 있었습니다. 이를 이용한 ViSiL을 컨텐츠 기반 retrieval 문제들에 적용해 보았더니 SOTA를 갱신했습니다. 논문 저자가 말하길, 추후에는 계산 복잡도도 줄이고, 제안한 방법을 video retrieval 뿐만 아닌 다른 분야에도 적용시키고 싶다고 합니다.

+ 처음에 딱 봤을 때 모르는 말들이 너무 많았는데, 이 논문을 읽으면서 Video retrieval 라는 것에 대한 기반지식을 어느 정도 쌓을 수 있었습니다. 어떤 tasks이 있고, 각 taks에 대해 어떤 데이터셋을 사용하는지도 알게 됐습니다. 그리고 자세히 알아보지는 못했지만 related works 부분을 읽으면서 이런 흐름이 있었구나~도 조금이나마 파악할 수 있었습니다.

논문 링크

ViSiL: Fine-Grained Spatio-Temporal Video Similarity Learning

저작자표시 (새창열림)

'📰논문 리뷰' 카테고리의 다른 글

[ACMMM 2007] Practical Elimination of Near-Duplicates from Web Video Search  (0) 2023.11.23
[AAAI 2021] BSN++ : Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation  (0) 2023.11.23
BSN : Boundary Sensitive Network for Temporal Action Proposal Generation  (0) 2023.11.23
[ICCV 2015] Learning Spatiotemporal Features with 3D Convolutional Networks  (0) 2023.11.23
[arXiv 2021] Multimodal End-to-End Sparse Model for Emotion Recognition  (0) 2023.11.23

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [AAAI 2021] BSN++ : Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation

    [AAAI 2021] BSN++ : Complementary Boundary Regressor with Scale-Balanced Relation Modeling for Temporal Action Proposal Generation

    2023.11.23
  • BSN : Boundary Sensitive Network for Temporal Action Proposal Generation

    BSN : Boundary Sensitive Network for Temporal Action Proposal Generation

    2023.11.23
  • [ICCV 2015] Learning Spatiotemporal Features with 3D Convolutional Networks

    [ICCV 2015] Learning Spatiotemporal Features with 3D Convolutional Networks

    2023.11.23
  • [arXiv 2021] Multimodal End-to-End Sparse Model for Emotion Recognition

    [arXiv 2021] Multimodal End-to-End Sparse Model for Emotion Recognition

    2023.11.23
다른 글 더 둘러보기

정보

컴01기 블로그의 첫 페이지로 이동

컴01기

  • 컴01기의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (87)
    • 📰논문 리뷰 (16)
    • 🍒회고록 (4)
    • 🖤네이버 ai tech (0)
    • ✨글쓰는힝 (1)
    • 🔥취준일기 (2)
    • 🎲유니티 (2)
    • 🔨삽질 (10)
    • 📚 서적 리뷰 (4)
    • 🐹알고리즘 (4)
    • 😎정리하는 카테고리 (4)
    • 📝CS 공부 (6)
      • 운영체제 (1)
      • 네트워크 (4)
      • 리팩토링 (1)
    • etc (22)
      • 혼공단 (7)
      • Spring (7)
      • JS (1)
      • OpenCV (2)
      • Unity (5)

최근 글

인기 글

댓글

태그

  • 혼공머신
  • github
  • 백준
  • 혼공SQL
  • 혼공단
  • 회고록
  • 혼공학습단
  • unity

나의 외부 링크

  • Github
  • Youtube

정보

힝님의 컴01기

컴01기

힝님

방문자

  • 전체 방문자
  • 오늘
  • 어제

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 힝님. Designed by Fraccino.

티스토리툴바