동영상은 공간 + 시간을 함께 다룬다
컴퓨터 비전에서 동영상은 연속된 프레임의 집합으로, 공간 정보(픽셀, 형태)뿐 아니라 시간에 따른 변화(움직임, 동작) 를 함께 담는다. 이 시공간적 특성을 활용해 행동 인식, 제스처·수화 인식, 장면 이해 등을 다룰 수 있다. 이 글에서는 동영상 데이터의 특성과 분석 기법(3D CNN, 2D CNN 변형, Attention)을 정리한 뒤, 수화 단어 인식용 WLASL 데이터셋 소개와 클래스별 필터링까지 다룬다. VideoDataset·R3D 학습·추론 등 실전 구현은 다음 편에서 이어서 정리한다.
(수화 인식 데이터를 바탕으로 재구성했다.)
1. 동영상 데이터의 특성
동영상 데이터는 정적 이미지와 달리 다음을 동시에 가진다.
- 공간 정보: 각 프레임의 픽셀, 객체 위치·형태
- 시간 정보: 프레임 간 움직임, 동작 순서, 상호작용
그래서 객체 추적, 행동 인식, 비디오 요약 등에서는 프레임 간 상관관계와 움직임을 어떻게 뽑아 쓰느냐가 핵심이다.
2. 동영상 분석 기법 세 가지
2-1. 시계열 분석 (3D CNN)
3D CNN은 동영상을 공간(가로·세로) + 시간(프레임 순서) 을 함께 쓰는 3차원 합성곱으로 처리한다. 2D CNN이 한 장의 이미지에서만 특징을 보는 것과 달리, 여러 프레임을 한꺼번에 입력해 움직임·흐름 같은 시간적 패턴까지 학습한다. 행동 인식, 제스처·수화 인식, 스포츠 장면 분석처럼 연속성과 동작 맥락이 중요한 태스크에 잘 맞는다.
2-2. 이미지 합성 (2D CNN 변형)
여러 프레임을 채널 방향으로 이어 붙여 하나의 다채널 이미지로 만든 뒤 2D CNN에 넣는 방식이다. 예를 들어 12프레임이면 12×3=36채널 입력처럼 구성할 수 있다. 3D CNN보다 연산·메모리가 적지만, 프레임 간 세밀한 시간 정보는 제한적으로만 반영된다. 정적인 장면이 더 중요한 경우에 유리하다.
2-3. Attention 기법
모든 프레임을 동등하게 쓰지 않고, 프레임별 중요도(가중치) 를 학습해 중요한 순간에 더 큰 비중을 두는 방식이다. 긴 동영상에서 핵심 장면을 골라 쓰는 데 유리하고, 행동 인식·영상 요약·이상 탐지 등에 활용된다.
3. WLASL 데이터셋
WLASL(World-Level American Sign Language)은 미국 수화 단어를 단위로 한 비디오 데이터셋이다. 같은 단어를 여러 사람이 수행한 영상이 있어 표현 다양성을 반영하며, 손 모양·움직임·얼굴 표정 등 시계열적 비주얼 특징을 학습하기 좋다. 수화 인식, 제스처 인식, 청각장애인 보조 기술 개발 등에 쓰인다.
Kaggle에서 다운로드한 뒤 WLASL_v0.3.json과 videos/ 디렉터리를 사용한다.
# Kaggle API 설정 후
kaggle datasets download risangbaskoro/wlasl-processed
unzip -q wlasl-processed.zip
import json
import os
data_root = '.'
annotation_filename = 'WLASL_v0.3.json'
video_dir = os.path.join(data_root, 'videos')
with open(os.path.join(data_root, annotation_filename), 'r') as f:
annotations = json.load(f)
어노테이션 항목 하나는 gloss(수화 단어), instances(각 동영상의 video_id, split 등) 구조를 가진다.
4. 클래스별 영상 개수와 필터링
클래스(단어)별로 실제 존재하는 영상 개수를 세고, 일정 개수 미만인 클래스는 제외해 학습 가능한 클래스만 남긴다.
from collections import defaultdict
class_map = defaultdict(int)
for annot in annotations:
for instance in annot['instances']:
video_path = os.path.join(video_dir, f"{instance['video_id']}.mp4")
if os.path.exists(video_path):
class_map[annot['gloss']] += 1
# 예: 최소 5개 이상 영상이 있는 클래스만 사용
max_cnt = 5
new_annotations = []
class_list = []
for annot in annotations:
if class_map[annot['gloss']] < max_cnt:
continue
class_list.append(annot['gloss'])
for instance in annot['instances']:
video_path = os.path.join(video_dir, f"{instance['video_id']}.mp4")
if not os.path.exists(video_path):
continue
new_annotations.append({
'filename': f"{instance['video_id']}.mp4",
'label': annot['gloss'],
'split': instance['split']
})
annotations = new_annotations
5. 정리
| 주제 | 핵심 포인트 |
|---|---|
| 동영상 데이터 | 공간 + 시간 정보를 함께 쓰는 시공간 데이터로, 프레임 간 상관관계·움직임 추출이 중요하다. |
| 3D CNN | 공간·시간 축을 함께 합성곱해 움직임·동작 패턴을 학습한다. 수화·행동 인식에 활용한다. |
| 2D CNN 변형 | 프레임을 채널로 붙여 다채널 이미지로 만든 뒤 2D CNN에 넣는다. 연산은 적지만 시간 정보는 제한적이다. |
| Attention | 프레임별 중요도를 학습해 핵심 장면을 강조한다. |
| WLASL | 미국 수화 단어 단위 비디오 데이터셋으로, 수화 인식·제스처 인식 연구에 널리 쓰인다. |
마치며
- 동영상 분석에는 3D CNN(시계열적 움직임), 2D CNN 변형(프레임 합성), Attention(중요 프레임 강조) 등이 쓰인다.
- WLASL은 수화 단어 인식 실험에 바로 쓸 수 있는 공개 데이터셋이며, 클래스별 영상 수를 확인한 뒤 최소 개수로 필터링하면 학습이 안정적이다.
VideoDataset 구성, R3D(3D CNN) 로 학습·추론하는 실전 코드는 다음 편에서 이어서 정리한다.
'AI·머신러닝 > 딥러닝·비전' 카테고리의 다른 글
| 오토인코더 - 개념, MNIST·CIFAR10 구현, Denoising과 유사 이미지 탐색 (0) | 2026.02.04 |
|---|---|
| WLASL 수화 인식 실습 - VideoDataset, R3D, 학습과 추론 (0) | 2026.02.03 |
| timm ViT로 멀티 브랜치 분류기 만들기 - 4자리 숫자 이미지 분류 (0) | 2026.01.27 |
| Vision Transformer(ViT) - 개념과 원리, 패치부터 분류까지 (0) | 2026.01.26 |
| 이안류 CCTV와 스타벅스 세그멘테이션 - AI Hub·COCO에서 YOLOv8까지 실습 (0) | 2026.01.08 |