일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 웹3.0
- frontend
- embodied ai
- Ai
- ChatGPT
- datahub
- databricks
- embodied
- vision-language navigation
- Spark
- vln
- lambda
- 디스코드
- 챗봇
- Golang
- web3.0
- 블록체인
- airflow
- video understanding
- GPT
- data discovery
- discord
- s3
- 디스코드챗봇
- Rust
- Hexagonal Architecture
- bricksassistant
- 디스코드봇
- MLFlow
- backend
- Today
- Total
BRICKSTUDY
Video understanding 분야 찍먹하기 본문
안녕하세요 박찬영입니다. 최근 video 관련 연구 분야에 대한 작은 관심이 생겨서 프로젝트 주제를 선정하기도 했는데, 연구적인 호기심이 강해서 서비스보다는 연구 위주로 먼저 생각해보려고 오늘의 주제를 가져왔습니다.
오늘의 주제는 "Video Understanding"이라는 연구 분야에 대해서 세부적으로 어떤 Task들이 있는지 알아보고, 계속해서 관심을 받고 있는 LLM과 같이 활용하는 방법들을 소개하려고 합니다. 전체적인 내용은 서베이 논문인, Tang, Yunlong, et al. "Video understanding with large language models: A survey." _arXiv preprint arXiv:2312.17432_ (2023). 해당 논문을 보고 작성했습니다.
어려운 내용이 아닌, 단순히 어떤 연구 분야들이 있는지 알아보기 위한 용도입니다.
아 이런 분야도 있구나~ 하시면 됩니다.
빌드업
Video라는 형태는 평소에 '단순 이미지의 나열, 시간축을 포함한 이미지 데이터' 정도로 생각하고 있었지만, 최근 취업을 준비하기도 하면서, 어떤 산업들이 유망할까에 대한 고민을 했는데요. 고민한 결과(근거는 별로 없고 느낌만 있습니다.) 미디어 콘텐츠 산업은 계속해서 승승장구할 것이라는 생각이 있었습니다. 그 이유는 저도 그렇지만, 주변을 보면 전부 도파민에 중독되어 있기 때문입니다.
최근 사람들은 밥을 먹을 때도 영상 콘텐츠를 틀고, 자기 전에도 영상 콘텐츠를 틀어놓고 지내고 있다고 생각합니다. 즉, "현대 사회는 콘텐츠 소비 사회"라고 스스로 정리해봤을 때, 미디어 콘텐츠 산업이 유망하다 생각한 것입니다.
그러면, 콘텐츠를 소비하는 사람도 많지만, 이러한 콘텐츠를 공급하는 사람도 많아지지 않을까? 하는 생각과 함께 콘텐츠를 제작하는 사람을 위한 AI 서비스를 생각해보면 재밌을 것 같다는 생각을 했습니다. 그래서 해당 논문을 먼저 읽고 어떤 분야들을 더 자세하게 살펴보는 것이 좋을 지 생각해보려고 합니다.
인트로
논문에서도 비슷한 맥락으로 Video Understanding의 중요성을 강조하고 있습니다.
"온라인 비디오 플렛폼과 비디오 콘텐츠의 사이즈가 커지면서 Video understanding tool에 대한 중요성과 필요성이 떠올랐다"
우리는 현재 비디오가 미디어의 형태인 멀티모달 세계에서 살고 있는데, 온라인 비디오 플렛폼의 빠른 확장과, 감시 카메라, 엔터테이먼트, 자율주행 등 비디오는 매우 풍부한 매체로 부상하고 있습니다.
우리 주변에서 생각해보면 유튜브, OTT 만 생각해도 매일 수백만 개의 비디오가 제작되고 있습니다.
이렇게 거대한 크기의 비디오 콘텐츠들을 메뉴얼하게 처리하는 일은 노동력과 시간이 많이 소모되는 일입니다. 그렇기 때문에 결과적으로 이러한 비디오 콘텐츠들을 효과적으로 관리, 분석, 처리하는 것에 대한 도구와 요구가 증가하고 했습니다.
이를 충족하기 위해서 Video Understanding 방법들과 기술들이 떠올랐습니다. 추가적으로 현재에는 이러한 방법들에서 task-solving 능력을 강화하거나, 다양한 범위에서의 video understanding task를 처리할 수 있도록 하는 연구들이 진행 중이라고 합니다.
Development of video understanding methods
Video understanding method의 진화 과정은 다음과 같은 4단계로 나누어질 수 있는데, 하나 씩 살펴보도록 합시다.
1. Conventional Method
초기 단계의 video understanding에서 Handcrafted feature extraction 기술들이 이에 해당합니다.(SIFT, SURF, HOG 알고리즘) 이 기술들에서는 주로 비디오에서 여러 특징들을 추출하기 위한 방법들을 제안했습니다. 보통의 전통적인 머신러닝 기법들을 사용했다고 생각하면 되는데, CNN을 처음 배울 때, 여러 filter들이 각각의 feature들을 추출하는 것을 생각해볼 수 있습니다. CNN에서는 filter를 학습하는 것이지만, 이 전통적인 방법에서는 각 filter를 직접 정의해서 사용하는 형식입니다.
그 중에서는 물체를 인식하는 필터, 또는 motion information을 트래킹하는 방법(Optical flow method, Improved Dense Trajectories)들, 그리고 video는 일종의 시계열 데이터로 생각할 수 있으므로 시계열 분석 방법들이 사용되기도 했습니다.
또한 딥러닝이 유명해지기 전에, 전통적인 머신러닝 알고리즘(SVM, Decision Tree, Random Forest)도 video classification, recognition task에 사용되기도 했습니다.
그림과 같이 영상에서 Human motion을 detection할 때, human motion 패턴의 optical flow와 아닌 optical flow들을 학습 데이터로 하여 SVM을 이용한 탐지를 진행한 형식이다.
2. Early Neural Video Models
고전적인 방법과 비교해서 video understanding을 위한 딥러닝 방법들은 우월한 task-solving 능력을 가지고 있습니다. "DeepVideo"는 가장 처음 소개된 CNN을 이용한 Video understanding 방법이지만, 성능은 기존의 전통적인 방법들과 비교했을 때, 모션 정보를 잘 이용하지 못했기 때문에 뛰어나지는 못했습니다.
"Two-stream network"는 CNN과 IDT(Improved Dense Trajectories : 모션 정보를 트래킹하기 위해 제안된 방법)을 합쳐서 모션 정보를 캡처하여 성능을 높였고, Long-form video understanding을 위해서 LSTM을 이용한 "Temporal Segment Network(TSN)"은 video segment들을 분석하고 결합하는 방법을 사용하는 등, 딥러닝을 이용한 다양한 방법들이 있습니다.
전반적으로는 모두 Two-stream network의 형식을 따르다가 다른 형태로 3D network가 소개되고 "3D CNN to video understanding(C3D) 방법이 새롭게 등장하고 결과적으로 사람들은 더 챌린지한 시나리오에서 모델의 성능을 평가하기 시작했습니다.
또한 기존 2D에서 성능이 좋았던 네트워크들도 3D로 조정되어 소개되기도 했습니다.
ResNet, ResNext, SENet -> R3D, MFNet, STC
3. Self-supervised Video Pretraining
Video understanding을 위해서 self-supervised된 pretraining model의 transferability가 최소한의 추가적인 레이블링으로 다양한 task로 일반화할 수 있게 만들었는데, "VideoBERT"는 video pretraining을 수행하기 위한 초기 시도였습니다. 이러한 pre-training model은 여러 downstream task를 다루기 위해서 fine-tuning되는 형식으로 방법들이 나왔습니다.
self-supervised에 대해서 더 설명하자면, video는 레이블링해야 할 프레임 수가 매우 많기 때문에, 기본적으로 레이블링이 매우 어렵기 때문에, self-supervised 기반을 사용하는데, 방법은 레이블 없이 많은 수의 비디오를 넣고, 중간 프레임에 마스킹을 해서 그 프레임을 예측하는 방식으로 pre-train을 진행합니다. 또는 프레임을 섞어서 프레임 순서를 예측하면서 학습을 진행하고 이렇게 학습된 모델에다가 downstream task, 즉 target task를 수행하기 위한 약간의 수정을 진행하고 높은 성능으로 task를 수행하는 방식입니다.
이러한 패러다임에 기반하여 video-language model이 나타났습니다.
4. Large Language Models for Video Understanding
최근 LLM이 빠르게 발전하고 있는데, 광범위한 데이터 세트에서 사전 훈련된 대규모 언어 모델의 출현은 새로운 컨텍스트 학습 기능을 가능하게 했습니다. 이를 통해 fine-tuning없이 prompt를 사용하여 다양한 작업을 처리할 수 있습니다.
video understanding 기능과 통합된 LLM은 보다 정교한 멀티모달 이해의 이점을 제공하고 visual data와 text data간의 복잡한 상호 작용을 처리하고 해석할 수 있습니다.
Video Understanding Tasks
지금까지 Video understanding 방법들의 발전 과정을 살펴봤는데, 그렇다면 video understanding에는 어떤 task들이 있을까, 살펴보려고 합니다.
기본적으로 video understanding 필드는 video classification, action recognition과 같은 근본적인 task로부터 발전했습니다.
1. Abstract Understanding Tasks
Abstract understanding task로 분류된 task들은 레이블된 결과가 나오거나, text가 출력되는 1차원적인 task라고 생각할 수 있습니다.
Video Classification & Action Recognition
video sequence에서 카테고리화된 액션이나, 이벤트를 인식하는 것이라고 할 수 있습니다.
Text-Video Retrieval
텍스트 설명을 기반으로 관련된 비디오 클립을 검색하거나 매칭하는 것이라고 할 수 있습니다.
Video-to-Text Summarization
비디오 콘텐츠로부터 간략한 텍스트 요약을 생성하는 것이고, 이 과정은 주요 시각 및 오디오 요소를 추출하고 해석하여 일관성 있고 유익한 요약을 생성하는 것이 중요합니다.
Video Captioning
비디오 콘텐츠에 대한 설명적인 텍스트를 생성하는 task입니다.
Video QA
비디오 콘텐츠에 기반하여 자연어 질문에 대한 답을 말하는 task입니다.
2. Temporal Understanding Tasks
해당 분류는 결과물이 주로 timestamp이거나 영상 자체가 결과물인 것을 생각하면 이해하기가 편합니다.
Video Summarization
긴 비디오를 짧은 버전으로 만드는 task입니다. 여기서는 중요한 콘텐츠나 정보를 보존하면서 요약하는 것이 중요합니다.
Video Highlight Detection
이는 가장 중요하거나 가장 흥미로운 segment를 인식하거나 추출하는 것입니다.
Temporal Action/Event Localization
비디오 내에서 행동이나 사건의 정확한 시간적 경계를 식별하는 것을 포함하는 task입니다. 순차적인 프레임을 분석함으로, 이 작업은 특정 활동이 언제 시작되고 끝나는지 정확히 파악하는 것입니다.
예를 들어 "이 비디오에서 '달리기' 행동이 2:15에서 2:45까지 발생했다"와 같은 출력이 나오는 것입니다.
Temporal Action Proposal Generation
TAPG는 비디오 내에서 행동이나 이벤트를 포함할 가능성이 높은 후보 세그먼트를 생성하는 작업입니다. Temporal Action/Event Localization와 비슷하지만, TAPG는 예를 들어 "이 비디오에서 중요한 행동이 2:15에서 2:50까지 있을 것 같다"고 제안하는 것과 같습니다.
Video Temporal Grounding
주어진 텍스트 쿼리에 해당하는 비디오 내에서 특정 순간이나 간격을 찾는 task입니다. 이 task는 언어적 설명을 시각적 콘텐츠와 정렬하여 비디오 검색 및 콘텐츠 분석 응용 프로그램에 대한 관련 세그먼트를 정확하게 식별할 수 있도록 하는 것을 포함합니다.
video retrieval과 비슷하지만, video retrieval은 검색 결과가 전체 비디오이고, VTG는 특정 세그먼트 단위로 검색합니다. 즉, 비디오 내의 특정 구간을 의미합니다.
Generic Event Boundary Detection
비디오 내에서 주요한 변화가 발생한 시점을 인지하고 다른 이벤트나 활동 사이의 바운더리를 마킹하는 것입니다.
Dense Video Captioning
비디오 전체에서 발생하는 여러 이벤트와 행동에 대한 상세하고 지속적인 텍스트 설명을 생성하는 것을 포함하는 task입니다.
3. Spatiotemporal Understanding Tasks
Object Tracking
비디오 내에서 특정 객체의 위치를 시간에 따라 지속적으로 식별하고 추적하는 task
가림, 외관 변화, 움직임 등이 있어도 객체의 정확하고 일관된 궤적을 유지하는 것이 목표입니다.
ReID(Re-Identification)
서로 다른 비디오 프레임이나 카메라 뷰에서 개인이나 객체를 인식하고 매칭하는 task입니다.
Video Saliency Detection
비디오에서 시각적으로 가장 중요하고 주목을 끄는 영역을 식별하는 task
움직임 대비, 독특한 특징 등으로 인해 두드러지는 영역을 강조합니다.
Video Object Segmentation
비디오를 개별 객체에 해당하는 세그먼트로 분할하고, 시간에 따른 객체의 경계를 정확히 구분하는 task입니다.
Video Instance Segmentation
비디오 내의 각 고유한 객체 인스턴스를 식별, 분할, 추적하는 task입니다.
Video Object Referring Segmentation
자연어 설명을 기반으로 비디오 내 특정 객체를 분할하는 task입니다. 언급된 객체를 프레임 전체에 걸쳐 정확하게 식별하고 분리합니다.
SpatioTemporal Grounding
주어진 쿼리를 기반으로 비디오의 공간 및 시간 차원에서 특정 객체나 이벤트를 식별하고 위치를 파악합니다.
마무리...
지금까지 video understanding에 대해서 간략하게 어떤 task들이 있고 어떻게 발전해왔는지 살펴봤습니다. 다음에는 Vid-LLM관련한 내용까지 포함해서 업데이트 하겠습니다.
찍먹이지만, 공부를 하면서 단순히 알고 있다고 생각했던 것이 더 세부적인 명칭이 있다는 것을 알고 놀랐습니다. 역시 아는 만큼 보이는구나 싶습니다. 정확한 내용일지는 모르겠으나, 조금이라도 재미나 도움될만한 것들이 있으면 좋겠습니다
감사합니다.
'프로젝트' 카테고리의 다른 글
5년, 10년 뒤를 바라보는 기술 탐방기 (0) | 2024.09.21 |
---|---|
[바이럴 탐지 프로젝트] (1) 바이럴, 이것 뭐에요~? (0) | 2024.08.25 |
[BricksAssistant] 디스코드 AI 챗봇 구축기 - (3) chatGPT 연동하기 (0) | 2024.08.03 |
[BricksAssistant] 디스코드 AI 챗봇 구축기 - (2) 디스코드 연동하기 (0) | 2024.08.03 |
[BricksAssistant] 디스코드 AI 챗봇 구축기 - (1) 기획 (0) | 2024.07.25 |