torchcodec: Video Decoding을 위한 PyTorch Library (feat. ffmpeg)

torchcodec 소개

torchcodec는 비디오 데이터를 PyTorch 텐서로 디코딩하는 Python 라이브러리입니다. CPU와 CUDA GPU 모두에서 작동하며, PyTorch 생태계와의 높은 통합성과 사용 편의성을 제공합니다. 이 라이브러리는 FFmpeg를 기반으로 작동하며, 사용자가 비디오 데이터를 손쉽게 기계 학습 모델에 활용할 수 있도록 돕습니다.

torchcodec의 장점은 다음과 같습니다:

  • Python 및 PyTorch 친화적 API 제공

  • FFmpeg의 복잡성을 추상화하여 효율적이고 올바르게 사용 가능

  • PyTorch 텐서 형태로 데이터 반환

또한, torchcodec은 다양한 해상도 및 FPS 비디오에서 높은 처리 속도를 보여줍니다. 22코어 CPU와 Nvidia A100 GPU에서 테스트를 수행한 결과는 다음과 같습니다:
(테스트 데이터는 1280x720, 60FPS, 120초 길이의 비디오 및 960x540, 29.7FPS, 206초 길이의 비디오입니다)

:warning: torchcodec은 아직 개발 중으로, 사용자의 피드백 등에 따라 일부 API가 변경될 수 있습니다. 사용 중 발생하는 이슈에 대해서 torchcodec 저장소에 남겨주세요!

torchcodec의 주요 기능 및 예시 코드

Video Decoding

비디오를 프레임 단위로 PyTorch 텐서로 변환합니다. 주요 메서드는 아래와 같습니다:

from torchcodec.decoders import VideoDecoder

decoder = VideoDecoder("path/to/video.mp4", device="cuda")
metadata = decoder.metadata  # 비디오 메타데이터 추출
frames = decoder[0:10]       # 프레임 범위 지정

Clip Sampling

비디오를 클립 단위로 샘플링하여 분석하거나 학습에 적합한 형식으로 제공합니다.

from torchcodec.samplers import clips_at_regular_timestamps

clips = clips_at_regular_timestamps(
    decoder,
    seconds_between_clip_starts=1.5,
    num_frames_per_clip=4,
    seconds_between_frames=0.1
)

:scroll: torchcodec 소개 블로그

:github: torchcodec GitHub 저장소

https://github.com/pytorch/torchcodec




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: