Amazon Web Services 한국 블로그
Amazon Bedrock, TwelveLabs 비디오 이해 모델 정식출시
올해 초, AWS는 Amazon Bedrock에서 TwelveLabs 비디오 이해 모델을 지원할 예정이라고 사전 발표한 바 있습니다. 오늘 드디어, 이 모델을 사용하여 정확하고 신뢰할 수 있는 방식으로 비디오를 검색하고, 장면을 분류하고, 요약하고, 인사이트를 추출할 수 있게 되었음을 발표합니다.
TwelveLabs는 검색, 분류 등의 작업을 능숙하게 수행하는 비디오 임베딩 모델인 Marengo와 비디오 데이터를 기반으로 텍스트를 생성할 수 있는 비디오 언어 모델인 Pegasus를 도입했습니다. 이들 모델은 Amazon SageMaker HyperPod에서 훈련되어 텍스트 요약, 메타데이터 생성, 크리에이티브 최적화를 지원하는 획기적인 비디오 분석 기능을 제공합니다.
Amazon Bedrock의 TwelveLabs 모델을 사용하면 ‘게임의 첫 터치다운을 보여줘’ 또는 ‘주인공이 처음 만나는 장면 찾아줘’와 같이 자연어 비디오 검색 기능을 사용하여 특정 시점을 찾고 정확히 그 시점으로 바로 이동할 수 있습니다. 또한 제목, 주제, 해시태그, 요약, 챕터, 하이라이트 등의 설명 텍스트를 생성하여 인사이트와 연관성을 도출함으로써, 사전 정의된 레이블이나 카테고리 없이도 비디오 콘텐츠를 이해하는 애플리케이션을 구축할 수 있습니다.
일례로, 고객 피드백에서 반복적으로 나타나는 주제를 찾거나 이전에는 명확하지 않았던 제품 사용 패턴을 포착할 수 있습니다. 수백 시간이든 수천 시간이든 비디오 콘텐츠의 분량에 관계없이, 이제 엔터프라이즈급 보안과 성능을 유지하면서 전체 라이브러리를 검색 가능한 지식 리소스로 만들 수 있습니다.
TwelveLabs가 게시한 Marengo 및 Pegasus 동영상을 살펴보겠습니다.
이들 모델을 사용하면 여러 산업 분야에 걸쳐 비디오 워크플로를 혁신할 수 있습니다. 미디어 제작자와 편집자는 특정 장면이나 대화를 즉시 찾을 수 있으므로 몇 시간 분량의 영상을 샅샅이 뒤지느라 시간을 허비하지 않고 스토리텔링에 집중할 수 있습니다. 마케팅 팀들은 다양한 시청자가 공감할 수 있도록 콘텐츠를 빠르게 개인화하여 광고 워크플로를 간소화하고 있으며, 보안 팀들은 이 기술을 사용하여 여러 비디오 피드의 패턴을 파악함으로써 잠재적 위험을 사전에 찾아내고 있습니다.
Amazon Bedrock에서 TwelveLabs 모델 시작하기
TwelveLabs 모델을 처음 사용하는 경우, 시작하기 전에 Amazon Bedrock 콘솔로 이동하고 왼쪽 하단 탐색 패널에서 모델 액세스를 선택합니다. 최신 TwelveLabs 모델을 사용 하려면, 리전에 따라 TwelveLabs의 Marengo Embed 2.7 또는 Pegasus 1.2에 대한 접근을 요청합니다.
Amazon Bedrock에서 TwelveLabs 모델을 사용하려면 왼쪽 탐색 창의 테스트에서 채팅/텍스트 플레이그라운드를 선택합니다. 모델 선택을 선택하고 카테고리로 TwelveLabs를, 모델로 Pegasus를 각각 선택한 다음 적용을 선택합니다.
비디오에서 텍스트를 검색하거나 생성하려면 비디오를 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드하거나 Base64 형식의 비디오 문자열을 입력해야 합니다.
Amazon Nova Reel에서 ‘A cute raccoon playing guitar underwater.라는 프롬프트로 생성한 샘플 비디오를 사용해 보겠습니다.
업로드한 비디오의 S3 URI와 S3 버킷 소유자를 입력한 다음 ‘Tell me about the video by timeline’라는 프롬프트를 실행합니다.
그러면 다음과 같은 모델 응답을 얻을 수 있습니다.
이 동영상은 모래가 깔린 해저와 흔들리는 해초가 등장하는 수중 장면으로 시작되며 고요한 분위기를 자아냅니다. 약 5초 후, 호기심 어린 표정으로 카메라를 향해 헤엄치는 너구리가 등장합니다. 10초에 너구리가 해저 근처에서 헤엄치는 모습을 볼 수 있습니다. 그런 다음 11초에서 13초 사이에 해저 근처에서 우아하게 헤엄치는 코이 피쉬 무리로 포커스가 이동합니다.
14초에는 해저에 가라앉은 우쿨렐레로 장면이 전환되고 카메라가 확대되어 디테일을 보여줍니다. 20초에 너구리가 다시 나타나 코이 피쉬 사이를 헤엄치고, 23초에 우쿨렐레를 연주하기 시작합니다. 너구리는 29초부터 41초까지 계속해서 우쿨렐레를 연주하며, 코이 피쉬가 그 주위를 헤엄치면서 수중 배경에 활기차고 다채로운 느낌을 더합니다.
42초에서 49초 사이에는 너구리가 우쿨렐레를 연주하는 모습과 주위를 헤엄치는 코이 피쉬를 볼 수 있습니다. 이 동영상은 50초에서 54초 사이에 "Video generated with Amazon Novo Reel 1.1"과 "Available in Amazon Bedrock"이라는 텍스트를 표시하는 화면으로 끝나고, 그 후 55초에서 57초 사이에 AWS 로고가 표시됩니다.
대화형 AI 상호 작용을 위한 통합 인터페이스를 제공하는 Amazon Bedrock Invoke API를 사용하여 TwelveLabs 모델을 애플리케이션에 쉽게 통합할 수 있습니다.
다음은 AWS SDK for Python(Boto3)에서 TwelveLabs Pegasus 모델을 사용하는 방법을 보여주는 예시입니다.
import boto3
import json
import base64
AWS_REGION = "us-west-2"
MODEL_ID = "us.twelvelabs.pegasus-1-2-v1:0" # OR "eu.twelvelabs.pegasus-1-2-v1:0" if it is doing cross region inference in europe
VIDEO_PATH = "sample.mp4"
def read_file(file_path: str) -> str:
"""Read a file and return as base64 encoded string."""
try:
with open(file_path, 'rb') as file:
file_content = file.read()
return base64.b64encode(file_content).decode('utf-8')
except Exception as e:
raise Exception(f"Error reading file {file_path}: {str(e)}")
bedrock_runtime = boto3.client(
service_name="bedrock-runtime",
region_name=AWS_REGION
)
request_body = {
"inputPrompt": "tell me about the video",
"mediaSource": {
"base64String": read_file(VIDEO_PATH)
}
}
response = bedrock_runtime.invoke_model(
modelId=MODEL_ID,
body=json.dumps(request_body),
contentType="application/json",
accept="application/json"
)
response_body = json.loads(response['body'].read())
print(json.dumps(response_body, indent=2))
TwelveLabs Marengo Embed 2.7 모델은 비디오, 텍스트, 오디오 또는 이미지 입력으로부터 벡터 임베딩을 생성합니다. 이러한 임베딩은 유사성 검색, 클러스터링 및 기타 기계 학습(ML) 작업에 사용할 수 있습니다. 이 모델은 Bedrock StartAsyncInvoke API를 통한 비동기 추론을 지원합니다.
비디오 소스의 경우, StartAsyncInvoke
API를 사용하여 TwelveLabs Marengo Embed 2.7 모델을 위한 JSON 형식을 요청할 수 있습니다.
{
"modelId": "twelvelabs.marengo-embed-2.7",
"modelInput": {
"inputType": "video",
"mediaSource": {
"s3Location": {
"uri": "s3://your-video-object-s3-path",
"bucketOwner": "your-video-object-s3-bucket-owner-account"
}
}
},
"outputDataConfig": {
"s3OutputDataConfig": {
"s3Uri": "s3://your-bucket-name"
}
}
}
지정된 S3 위치로 응답이 전송되도록 할 수 있습니다.
{
"embedding": [0.345, -0.678, 0.901, ...],
"embeddingOption": "visual-text",
"startSec": 0.0,
"endSec": 5.0
}
처음 시작하는 분들은 여러 가지 사용 사례와 다양한 프로그래밍 언어에 대한 광범위한 코드 예시를 참조하면 도움이 됩니다. 자세한 내용은 AWS 설명서에서 TwelveLabs Pegasus 1.2와 TwelveLabs Marengo Embed 2.7을 참조하세요.
정식 출시
현재 Amazon Bedrock의 TwelveLabs 모델은 Marengo 모델의 경우 미국 동부(버지니아 북부), 유럽(아일랜드), 아시아 태평양(서울) 리전에서, Pegasus 모델의 경우 미국 서부(오리건), 유럽(아일랜드) 리전(미국 및 유럽 리전에서 리전 간 추론을 통해 액세스 가능)에서 각각 정식 출시되었습니다. 향후 업데이트 여부는 전체 리전 목록을 확인하세요. 더 자세히 알아보려면 Amazon Bedrock 기반 TwelveLabs 제품 페이지와 Amazon Bedrock 요금 페이지를 참조하세요.
지금 바로 Amazon Bedrock 콘솔에서 TwelveLabs 모델을 사용해 보고 AWS re:Post for Amazon Bedrock 또는 평소 이용하는 AWS Support 연락처로 피드백을 보내주세요.
– Channy