일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이싼
- 기계학습
- end to end
- 9020
- Python
- 백트래킹
- 그리디 알고리즘
- 밑바닥부터 시작하는 딥러닝
- pyenv
- 4948
- N-Queen
- REST API
- 백준
- 1002
- 재귀
- 티스토리챌린지
- Retrieval
- streamlit
- 신경망 학습
- 손실함수
- 가상환경
- 개발환경
- 1101
- n과 m
- 오블완
- 15649
- 파이썬
- 경사하강법
- video retireval
- BOJ
- Today
- Total
파이톨치
ViQAgent 본문
ViQAgent는 VideoQA 문제에 대해 Zero-shot, Agent 기반, Open-Vocabulary Grounding을 사용하는 새로운 프레임워크입니다. 아래에 논문에서 제시한 접근 방식이 왜 그렇게 설계되었는지, 어떻게 작동하는지, 예시, 결과, 한계까지 상세히 정리해드릴게요.
🔍 왜 이런 접근을 했는가? (Why this approach?)
기존 VideoQA 모델은 다음과 같은 한계가 있었습니다:
- 시계열적, 인과적 추론 부족: VideoLLMs는 한두 프레임의 의미적 힌트만 보고 답을 내기도 함.
- End-to-End VLM은 black-box로 해석이 어려움.
- 프레임 단위 object tracking 성능 부족: 정확한 grounding이나 object의 시간 추적에 취약.
이를 해결하기 위해 ViQAgent는 다음 세 가지 아이디어를 채택합니다:
- Agent 구조로 분리된 모듈 운영 (분석, 탐지, 추론)
- YOLO-World로 Open-vocabulary object tracking 사용
- Chain-of-Thought 기반의 명시적 reasoning module
⚙️ 어떻게 접근했는가? (How does ViQAgent work?)
ViQAgent는 세 개의 모듈로 구성됩니다:
① M1: VideoLLM 기반 분석 모듈 (Analyzer)
- 입력: 질문 Q, 정답 옵션 Aopt (optional), 전체 영상 V
- 출력:
- 🔹 주요 객체(Target) 목록 (e.g., “red car”, “man in white”)
- 🔹 1차 답변 + reasoning 텍스트
- 🔹 시간 구간 단위로 caption 생성 (timeframes + descriptions)
② OG: YOLO-World 기반 객체 Grounding 모듈
- 입력: 영상 V, 타겟 목록
- 처리:
- 모든 프레임에 대해 타겟 객체 탐지
- 시간 단위로 객체 등장 여부를 정리
- 예: “red car”: [[00:01–00:04], [00:06–00:08]]
- 하이퍼파라미터:
- τc: confidence threshold
- τnms: NMS threshold
- τt: 시간 지속 기준
③ M2: Chain-of-Thought 기반 판단 및 정답 조정 모듈
- 역할:
- VideoLLM reasoning + YOLO grounding + Timeframe caption 비교
- 일치 여부 판단
- ⚠️ 불일치 발생 시:
- 해당 time range에 대한 clarification 질문 생성
- 해당 질문을 다시 VideoLLM에 물어보고 → 정답 보정
- ⚠️ 불일치 발생 시:
💡 예시 기반 설명 (Illustrative Example)
질문: "What does the man do after entering the house?"
예시 프로세스:
- M1: VideoLLM은 “man enters house, then he closes the door” → preliminary answer: “closes the door”
- M1은 타겟으로 "man", "door", "house"를 지정
- OG: YOLO-World로 프레임마다 “door” 등장 구간 추적 → 실제로 door가 닫히는 장면은 없음!
- M2: 불일치 탐지 → “<<00:03,00:06>> 구간에서 door 관련된 action 없음” → clarification 질문: “Is the door actually closed between 00:03–00:06?”
- VideoLLM로 다시 QA → 답: “unanswerable”
- 최종 정답은 “unanswerable” 또는 “no action visible”
이러한 구조는 정답의 근거를 논리적으로 추적 가능하게 하며, 오류 가능성도 줄입니다.
📊 성능 (Results)
ViQAgent는 다양한 벤치마크에서 SOTA를 갱신했습니다:
NExT-QA | 76.0 (MotionEpic) | 80.4 | +4.4% |
ActivityNet-QA | 54.6 (MotionEpic) | 59.9 | +5.3% |
iVQA | 60.9 (MoReVQA) | 62.6 | +1.7% |
⚠️ 한계 (Limitations)
- YOLO-World의 탐지 실패에 민감:
- 객체가 실제로 영상에 존재하지 않거나 탐지가 안 되면 오류 가능
- LLM 응답의 불확실성:
- temperature 0.0으로 설정해도 완전히 deterministic하지 않음
- 추론 단계가 길고 복잡함:
- 여러 번 VideoLLM 호출 필요 → latency 문제 존재
🧠 요약 정리
접근 이유 | 기존 LLM/VLM의 시각적 추론 한계 극복 |
핵심 기술 | VideoLLM + YOLO-World + CoT |
기여 요소 | 명시적 reasoning + open-vocab tracking + zero-shot |
주요 성과 | NExT-QA, iVQA, ActivityNet-QA에서 SOTA |
한계 | YOLO 실패 시 취약, 느린 추론, LLM 불확정성 |
필요하시면 case study 예시 단계나 실제 prompt 내용도 구조별로 정리해 드릴게요.
나의 말:
ChatGPT의 말:
좋아요, ViQAgent의 핵심인 reasoning과 timeframe captions이 어떻게 작동하는지를 예시와 함께 직관적으로 설명해드릴게요.
🧠 1. Reasoning: 왜 그런 답을 냈는지 설명
🔍 역할
- 첫 번째 단계인 VideoLLM에서 나온 초기 답변의 근거입니다.
- 마치 사람이 “왜 그렇게 생각했어?” 라고 물어봤을 때 논리적인 설명을 하는 부분이에요.
- 이후 모듈(M2)에서 이 reasoning이 grounding 정보랑 맞는지 검증합니다.
📌 예시
질문: What did the boy do after picking up the ball?
초기 reasoning (R1):
- "The boy first picks up the ball around 00:03.
- Then he looks around, walks a few steps, and throws it.
- So the answer is: He throws the ball."
➡️ 이렇게 reasoning은 중간 단계 생각들을 명시적으로 적어줌으로써, 그 답이 비디오 내용과 일치하는지 판단하는 근거가 됩니다.
🎬 2. Timeframe Captions: 장면을 시간 단위로 잘라 설명
🔍 역할
- VideoLLM이 영상 전체를 보면서 자동으로 의미 있는 장면들(timeframes) 을 나눔
- 각 구간마다 무슨 일이 벌어졌는지를 캡션으로 작성
📌 예시
Timeframe Captions 출력:
➡️ 마치 사람이 비디오를 보면서 중요한 장면마다 설명을 붙여주는 것처럼, 이 구조는 이후 object grounding 결과와 정합성 비교를 위한 기준점 역할을 합니다.
🔄 어떻게 서로 연결되나?
1️⃣ VideoLLM이 답변 생성 + reasoning 설명 | |
2️⃣ 동시에 timeframe caption을 생성해서 scene segmentation | |
3️⃣ YOLO-World가 실제 object가 언제 등장하는지 추적 | |
4️⃣ M2가 reasoning과 caption, object timeline을 비교 | |
5️⃣ 일치하지 않으면 질문을 다시 생성해 VideoLLM에 확인 요청 |
🧩 비유적으로 정리
- Reasoning = "내가 생각한 논리야"
- Timeframe Captions = "실제 영상에서 벌어진 장면 요약"
- Grounding Timeline = "객체가 실제로 등장한 시간표"
- M2는 이 셋을 비교하며 "그 논리 진짜 영상에 맞아?" 하고 따져보는 역할
'논문' 카테고리의 다른 글
VIDEOREASONBENCH: Can MLLMs PerformVision-Centric Complex Video Reasoning? (2) | 2025.06.01 |
---|---|
Watch and Listen: UnderstandingAudio-Visual-Speech Moments with Multimodal LLM (0) | 2025.05.26 |
VIDEOEVAL-PRO (2) | 2025.05.25 |
MLVU: Multi-task Long Video Understanding Benchmark (2) | 2025.05.25 |
Breaking Down Video LLM Benchmarks: Knowledge,Spatial Perception, or True Temporal Understanding? (2) | 2025.05.21 |