Video Understanding
비디오 이해는 시간에 따라 비디오에서 일어나는 일, 즉 동작, 이벤트 및 순서를 해석하는 AI 기술입니다. 관련 작업, 모델 계열 및 코드를 다룹니다.
동영상 이해는 시간에 따라 동영상에서 일어나는 일을 해석하는 컴퓨터 비전 분야입니다. 어떤 객체와 사람이 있는지, 이들이 무엇을 하는지, 이벤트가 언제 시작하고 끝나는지, 한 이벤트가 어떻게 다음 이벤트로 이어지는지를 분석합니다. 이미지 인식은 각 프레임을 개별적으로 분석하지만, 동영상 이해 모델은 많은 질문에 필요한 움직임과 시간 순서를 모델링합니다. 한 프레임에는 사람이 의자에 앉기 시작한 모습이 보일 수 있지만, 앉는 중인지 일어서는 중인지는 앞뒤 프레임을 함께 봐야 알 수 있습니다. 이 분야는 짧은 클립에 라벨을 붙이는 것부터 몇 시간 분량의 영상에 대한 개방형 질문에 답하는 것까지 폭넓게 다룹니다.
핵심 작업#
- 행동 인식: 트리밍된 짧은 클립에 "팔굽혀펴기" 또는 "넘어짐"과 같은 라벨 하나를 지정합니다.
- 시간적 행동 위치 추정: 길고 트리밍되지 않은 동영상에서 각 행동의 시작과 끝을 찾습니다. 시공간 행동 탐지는 각 프레임에서 행위자 주위에 박스도 표시합니다.
- 객체 추적: 각 객체가 프레임을 거쳐 이동하는 동안 지속적인 ID를 부여해 추적합니다. 이는 객체 수 세기, 속도 측정, 궤적 분석의 기반입니다.
- 동영상 세그멘테이션: 프레임마다 일관성을 유지하는 객체 또는 장면 영역의 픽셀 마스크를 생성합니다.
- 동영상 캡셔닝 및 질의응답: 클립을 텍스트로 설명하거나 "차가 멈추기 전에 운전자는 무엇을 했나요?"와 같은 질문에 답합니다.
- 시간적 그라운딩: "골키퍼가 공을 잡는다"와 같은 문장에 해당하는 순간을 찾습니다. 이 작업은 모먼트 검색이라고도 합니다.
- 이상 탐지: 넘어짐, 싸움, 역주행 차량과 같은 비정상적인 이벤트를 표시합니다.
동영상 모델의 작동 방식#
동영상 모델은 객체의 외형과 변화 양상인 움직임을 모두 포착해야 합니다. 2-스트림 네트워크는 RGB 프레임과 광학 흐름을 별도의 분기에서 처리합니다. 3D 합성곱 신경망(CNN)은 높이, 너비, 시간 차원에 걸쳐 함께 합성곱을 수행합니다. Temporal Shift Module은 각 레이어 채널의 일부를 인접 프레임으로 이동해 추가 연산 없이 2D CNN에 시간 모델링을 적용합니다. 동영상 Transformer는 시공간 패치 전반에 셀프 어텐션을 적용하며, TimeSformer는 시간과 공간에 별도 단계로 어텐션을 적용해 이를 효율적으로 구현했습니다. 라벨링되지 않은 동영상으로 자기 지도 사전 학습을 수행하면 범용성이 높은 인코더를 얻을 수 있습니다. Meta의 V-JEPA 2는 마스킹된 영역의 표현을 예측하는 방식으로 100만 시간 이상의 인터넷 동영상에서 학습했으며, 주로 움직임에 따라 구별되는 손과 객체의 행동을 다루는 벤치마크인 Something-Something v2에서 top-1 정확도 77.3%를 달성했습니다. 동영상 언어 모델은 프레임을 샘플링하고 각 프레임을 시각 토큰으로 인코딩한 뒤, 텍스트로 질문에 답하는 대규모 언어 모델(LLM)에 전달합니다.
시스템에 필요한 출력에 따라 주로 어떤 모델 계열을 사용할지가 결정됩니다:
객체 트랙에서 이벤트 추출#
많은 실제 시스템은 트랙을 추론해 동영상을 이해합니다. 디텍터가 각 프레임에서 객체를 찾고, 트래커가 객체를 연결해 궤적을 만든 다음, 규칙이나 모델이 궤적을 구역 진입, 선 통과, 지나치게 오래 정지와 같은 이벤트로 변환합니다. Ultralytics 객체 카운팅 솔루션은 YOLO26 추적 기능을 사용해 이 방식으로 작동합니다. 추적 중인 객체가 선을 통과하면 각 객체를 한 번씩 세고, 연속된 프레임에서 객체의 위치를 바탕으로 방향을 기록합니다:
import cv2
from ultralytics import solutions
# Count people (COCO class 0) crossing a horizontal line through the middle of the 640x360 frame
counter = solutions.ObjectCounter(model="yolo26n.pt", region=[(0, 180), (640, 180)], classes=[0])
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4")
while True:
success, frame = cap.read()
if not success:
break
results = counter(frame)
# A crossing and its direction come from each person's track, so they exist only across frames
print(f"Crossed moving down: {results.in_count}, moving up: {results.out_count}")두 카운트는 단일 프레임에는 담기지 않는 이벤트를 나타냅니다. 사람이 아래쪽으로 걸어 내려가는지 위쪽으로 걸어 올라가는지 구별하려면 동일한 사람을 추적한 위치가 최소 두 개 필요하기 때문입니다.
동영상 이해와 관련 용어#
- 이미지 인식: 단일 이미지의 콘텐츠를 분류하거나 감지합니다. 동영상의 모든 프레임에 실행하면 프레임별 결과만 얻을 수 있으며, 객체의 정체성이나 움직임, 순서는 파악할 수 없습니다.
- 다중 객체 추적(MOT): 객체가 무엇을 하는지 해석하지는 않지만 프레임 간 객체의 정체성을 유지하는 동영상 이해의 구성 요소입니다.
- 동영상 생성: 텍스트나 이미지에서 새로운 동영상을 생성하는 역방향 작업입니다. 두 작업 모두 시간이 지남에 따라 장면이 변하는 방식을 모델링합니다.
- 멀티모달 AI: 동영상을 오디오, 자막 또는 다른 데이터와 결합합니다. 사운드트랙이나 음성에 핵심 정보가 담겨 있을 때 유용합니다.
응용 분야#
- 스포츠 분석: 선수와 공을 추적해 속도, 점유율, 포메이션을 측정하고 전체 경기 녹화본에서 하이라이트를 찾습니다.
- 교통 및 스마트 시티: 차량과 보행자의 수를 세고 속도를 측정하며, 역주행이나 정차한 차량을 감지합니다.
- 소매 및 안전 모니터링: 대기열 길이를 측정하고, 요양 시설에서 넘어짐을 표시하며, 제한 구역에 진입하는 사람을 감지합니다.
- 미디어 및 콘텐츠 조정: 대규모 동영상 라이브러리를 검색할 수 있도록 색인화하고 정책을 위반하는 업로드를 표시합니다.
- 로보틱스 및 자율주행 차량: 보행자와 다른 차량이 다음에 이동할 위치를 예측합니다.
과제#
동영상에서는 이미지 처리 비용이 프레임 수만큼 늘어납니다: 초당 프레임 수가 30인 동영상의 1분 분량에는 프레임이 1,800개 포함되므로, 모델은 프레임을 성기게 샘플링해 클립당 보통 8~64개 프레임만 사용하지만, 그럼에도 짧은 이벤트를 놓칠 위험이 있습니다. 긴 동영상은 메모리와 컨텍스트 길이에 부담을 주며, 행동의 정확한 시작 및 종료 시점을 표시해 라벨링하는 데는 이미지 라벨링보다 훨씬 더 오래 걸립니다. Google의 Gemini API는 동영상을 초당 한 프레임으로 샘플링하며, 기본 저해상도 설정에서 동영상 1초당 약 100개의 토큰을 사용하므로 컨텍스트 윈도우가 100만 토큰인 모델은 동영상을 최대 3시간까지, 고해상도에서는 최대 1시간까지 처리할 수 있습니다.










