AWS 기술 블로그

AWS 인공 지능 (AI) 및 기계 학습 (ML) 서비스를 사용한 비디오 요약

이 글은 AWS M&E Blog에 게시된 Video summarization with AWS artificial intelligence (AI) and machine learning (ML) services를 한국어 번역 및 편집하였습니다.

동영상 제작사와 방송사는 짧은 쇼츠 비디오 클립이 젊은 시청자의 관심을 끄는 데 효과적이라는 것을 알고 있습니다. 젊은 시청자 중 다수는 틱톡과 같은 플랫폼에서 짧은 형식의 콘텐츠를 좋아합니다. 전통적인 M&E 업계의 기업들이 오리지널 콘텐츠에서 짧은 비디오 클립을 효율적으로 생성하여 페이스북, 인스타그램, 스냅, 틱톡 등 다양한 소셜 미디어 플랫폼에 배포할 수 있다면 더 많은 시청자를 자사 서비스로 끌어들일 수 있는 잠재력이 있습니다.

복잡한 콘텐츠 이해, 일관성 유지의 어려움, 다양한 비디오 유형, 대용량 비디오 처리 시 확장성 부족 등의 문제로 인해 비디오 요약을 생성하는 것은 수동적이고 시간이 많이 걸리는 프로세스입니다. 인공 지능(AI) 및 머신 러닝(ML)을 사용하여 자동화를 도입하면 자동 콘텐츠 분석, 실시간 처리, 상황에 맞는 조정, 사용자 지정, 지속적인 AI/ML 시스템 개선을 통해 이 프로세스의 실행 가능성과 확장성을 높일 수 있습니다. 이로 인한 비즈니스 영향에는 콘텐츠 제작 공급망의 효율성 향상과 함께 더 많은 청중을 참여시켜 궁극적으로 수익 증대로 이어질 수 있습니다.

이 블로그 게시물에서는 사용자가 AWS AI/ML 서비스인 Amazon Transcribe, Amazon SageMaker JumpstartAmazon Polly를 활용하여 음성 내레이션이 포함된 짧은 형식으로 비디오를 업로드, 처리 및 요약하여 이 비즈니스 문제를 해결하는 방법을 보여줍니다.

Amazon Transcribe는 비디오의 음성을 텍스트 및 자막으로 자동 변환하는 완전 관리형 ML 서비스입니다. 또한 Amazon Transcribe는 도메인별 어휘를 이해하는 사용자 지정 모델을 지원합니다.

Amazon SageMaker JumpStart는 텍스트 요약과 같은 광범위한 문제 유형에 대해 Hugging Face, AI21, Stability AI와 같은 공개적으로 사용 가능한 소스의 기초 모델, 내장 알고리즘 및 사전 구축된 ML 솔루션을 제공하는 원-클릭 ML 허브입니다. 이런 모델들은 SageMaker API를 통해 안전하고 쉽게 배포할 수 있도록 패키징되었습니다.

Amazon Polly는 딥-러닝 기술을 사용하여 텍스트를 실제와 같은 음성으로 변환하는 서비스입니다. 이 음성은 솔루션에서 요약된 비디오의 내레이션 오디오를 만드는 데 사용할 예정입니다.

솔루션 개요

비디오 요약 워크로드를 위한 종합 솔루션은 1) 사용자 경험, 2) 요청 관리, 3) AWS AI/ML 서비스를 사용한 AWS Step Functions 워크플로우 오케스트레이션, 4) 미디어 및 메타데이터 스토리지, 5) 이벤트 기반 서비스 및 모니터링의 5가지 주요 구성 요소로 구성됩니다.

다음 다이어그램은 비디오 요약 워크로드의 파이프라인을 보여줍니다.

사용자 경험: 아키텍처에는 Amazon Simple Storage Service(Amazon S3)에서 호스팅되는 간단한 정적 웹 애플리케이션이 포함되어 있습니다. Amazon S3에 호스팅되는 정적 웹 사이트를 제공하기 위해 Amazon CloudFront 배포를 배포하고 OAC (오리진 액세스 제어)를 사용하여 S3 오리진에 대한 액세스를 제한합니다. Amazon Cognito를 사용하면 인증되지 않은 사용자로부터 웹 애플리케이션을 보호할 수 있습니다.

요청 관리: Amazon API Gateway는 워크플로우를 생성, 읽기, 업데이트, 삭제 (CRUD) 또는 실행하기 위한 요청이 시작되는 비디오 요약 워크로드의 프런트 엔드와 백엔드 간의 모든 실시간 통신을 위한 진입점으로 사용합니다. API 요청은 사전 처리된 요청을 AWS Step Functions로 전송하기 전에 비디오 요약 작업을 Amazon Simple Queue Service (Amazon SQS) 대기열에 추가하여 워크로드 안정성과 확장을 지원하는 AWS Lambda 함수를 호출합니다.

AWS AI/ML 서비스를 사용한 AWS Step Functions 워크플로우 오케스트레이션: 요약 비디오를 만드는 프로세스는 자동 음성 인식에 Amazon Transcribe를 사용하고 비디오의 음성을 출력 자막 파일의 타임스탬프와 같은 관련 메타데이터 정보와 함께 텍스트로 변환하는 것으로 시작됩니다. 그런 다음 Amazon SageMaker JumpStart의 사전 학습된 기초 모델을 활용하여 원본 비디오의 스토리를 그대로 유지하면서 짧은 형식으로 텍스트를 요약합니다. 이어 SageMaker JumpStart에 배포된 텍스트 임베딩 모델을 사용하여 요약된 콘텐츠의 각 문장을 원본 자막 파일의 해당 문장과 자동으로 연결합니다. 이 프로세스를 통해 가장 관련성이 높은 비디오 세그먼트를 정확하게 선택하고 타임스탬프를 결정할 수 있습니다. Amazon Polly를 사용하여 음성 나레이션을 생성하고 AWS Elemental MediaConvert를 사용하여 최종 비디오를 출력합니다.

미디어 및 메타데이터 스토리지: 솔루션은 업로드된 비디오 및 출력 비디오를 Amazon S3에 저장합니다. Amazon S3는 저렴한 비용으로 안정적이고 가용성이 높으며 확장 가능한 데이터 스토리지를 제공합니다. 모든 미디어, 프로파일링 및 작업 메타데이터는 Amazon DynamoDB NoSQL 데이터베이스 서비스에 저장되므로, 이를 통해 사용자는 작업 상태 및 기타 관련 정보를 추적할 수 있습니다.

이벤트 기반 서비스 및 모니터링: Amazon CloudWatchAmazon EventBridge를 활용하여 모든 구성 요소를 실시간으로 모니터링하고 Step Functions 워크플로우 중에 대응형 작업을 수행합니다.

단계 별 설명

이 블로그 게시물에서는 요약된 콘텐츠를 생성하고 가장 관련성이 높은 비디오 프레임 시퀀스를 선택하기 위해 AWS AI/ML 서비스를 사용하는 Step Functions 워크플로우에 초점을 맞춥니다. Amazon Transcribe StartTranscriptionJob API부터 시작하여 Amazon S3에 저장된 원본 비디오를 텍스트로 간단히 변환할 수 있습니다. API의 추가 요청 파라미터를 사용하여 전체 텍스트와 기타 메타데이터를 모두 JSON 및 SRT (자막) 파일 형식으로 가져올 수 있습니다.

다음은 워크로드의 Amazon Transcribe 출력을 JSON 형식으로 나타낸 예제입니다.

{  
    "jobName": "203b2cad-ed24-4670-8ba6-b9c836d7c48b",
    "accountId": "6393590*****",
    "results": {
        "transcripts": [{
                "transcript": "AWS is the world's most comprehensive and broadly adopted cloud platform..."}],
        "items": [{
                "start_time": "2.369","end_time": "2.95",
                "alternatives": [{
                        "confidence": "0.902","content": "AWS"}],
                "type": "pronunciation"
            },
            ...
        ]
    },
    "status": "COMPLETED"
}

다음은 SRT (자막) 형식의 Amazon Transcribe 출력의 또 다른 예입니다.

0
00:00:02,369 --> 00:00:06,780

AWS is the world's most comprehensive and broadly adopted cloud platform.

1
00:00:07,519 --> 00:00:12,369
Millions of customers trust AWS to power their infrastructure and applications.

2
00:00:13,699 --> 00:00:17,920
Organizations of every type and size are using AWS to lower costs

3
00:00:18,309 --> 00:00:21,129
become more agile and innovate faster.

워크플로우의 다음 단계에서는 사전 학습된 대형 언어 모델 (LLM) 을 Amazon SageMaker JumpStart에 배포합니다. 대형 언어 모델 (LLM) 은 수억에서 1조 개가 넘는 매개 변수를 포함하는 신경망 기반 언어 모델입니다. 생성 기능이 뛰어나 텍스트 생성, 요약, 번역, 감정 분석, 대화형 챗봇 등과 같은 작업에 널리 사용됩니다. 이 워크로드에서는 사전 학습되고 미세 조정된 Llama 2 모델을 선택하여 원본 텍스트를 요약합니다. Hugging Face DistilBART-CNN-12-6, Hugging Face BART Large CNN 등과 같은 여러 다양한 LLM을 텍스트 요약에 사용할 수 있으며, 클릭 한 번으로 Amazon SageMaker JumpStart에 쉽게 배포할 수 있습니다.

다음 Python 코드에서 볼 수 있듯이 Amazon SageMaker에 Llama 2를 배포한 후 InvokeEndpoint API를 호출하여 SageMaker 엔드포인트에서 호스팅되는 Llama 2 모델에서 추론을 쉽게 가져올 수 있습니다.

sagemaker = boto3.client(service_name='sagemaker-runtime')

endpoint_name = os.environ["sagemaker_endpoint"]

payload = {

"inputs": [[{"role": "system", "content": "Provide a concise summary of the input. Do not include any additional information or context."},{"role": "user", "content": original_text}]],

"parameters": {"max_new_tokens": 1024, "top_p": 0.9, "temperature": 0.25}

}

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name, ContentType='application/json', Body=json.dumps(payload), CustomAttributes="accept_eula=true")

result = json.loads(response['Body'].read().decode())

페이로드에 정의된 다양한 파라미터로 엔드포인트를 호출하여 텍스트 요약에 영향을 줄 수 있습니다. 두 가지 중요한 파라미터는 top_ptemperature입니다. top_p는 누적 확률을 기반으로 모델에서 고려되는 토큰의 범위를 제어하는 데 사용되고, temperature는 출력값의 임의성 수준을 제어합니다. 모든 사용 사례에서 적용 가능한 top_ptemperature 파라미터는 있을 수 없지만, 이 예제에서는 top_p가 높고 temperature가 낮을 경우 주요 정보에 초점을 맞추고 요약이 원본 내용에서 벗어나지 않으면서도 결과물의 흥미를 유지하기 위해 창의적인 결과를 생성하였습니다.

다음 단계는 Amazon Polly로 시작하여 요약된 텍스트에서 음성을 생성합니다. Polly 작업의 출력은 MP3 파일과 SSML (음성 합성 마크업 언어)으로 마크업된 문서 모두입니다. 이 SSML 파일에는 특정 Polly 음성으로 발성된 개별 문장의 지속 시간을 설명하는 필수 메타데이터가 캡슐화되어 있습니다. 이 오디오 재생 시간 정보를 사용하여 비디오 세그먼트의 길이를 정의할 수 있습니다. 이 경우에는 직접적인 1:1 대응이 사용됩니다.

{"time":3092,"type":"sentence","start":27,"end":165,"value":"AWS (Amazon Web Services) is the world's most comprehensive and broadly adopted cloud platform, trusted by millions of customers globally."}

{"time":11822,"type":"sentence","start":166,"end":310,"value":"AWS provides on-demand delivery of technology services via the internet, with pay-as-you-go pricing and no upfront costs or ongoing commitments."}

...

Step Functions 워크플로우의 마지막 단계에서는 요약된 콘텐츠의 모든 문장과 일치하는 가장 관련성이 높은 비디오 프레임 시퀀스를 선택하는 과정입니다. 이를 위해 텍스트 임베딩을 사용하여 두 텍스트의 유사성을 결정하는 문장 유사성 작업을 수행합니다. 문장 유사성 모델은 입력 텍스트를 의미 정보를 캡처하고 이들 간의 근접성 또는 유사성을 계산하는 벡터 (임베딩)으로 변환합니다.

Amazon SageMaker에서는 BlazingText와 같은 기본 제공 텍스트 임베딩 알고리즘을 사용하거나 텍스트 문자열을 입력으로 받아 384차원의 임베딩 벡터를 생성하는 Hugging Face all-MiniLM-L6-v2와 같은 오픈 소스에서 제공하는 트랜스포머 기반 모델을 사용할 수 있습니다. 이 워크로드에서는 Amazon SageMaker에서 사전 학습된 all-MiniLM-L6-v2 모델을 배포합니다.

다음 코드는 Amazon SageMaker Endpoint를 사용한 텍스트 임베딩의 작동 방식에 대한 예를 제공합니다.

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name, ContentType='application/x-text', Body=json.dumps(original_sentences).encode('utf-8'))
result = json.loads(response['Body'].read())
original_embedding = np.array(result['embedding'])

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name, ContentType='application/x-text', Body=json.dumps(summarized_sentences).encode('utf-8'))
result = json.loads(response['Body'].read())
summarized_embedding = np.array(result['embedding'])

similarity_matrix = cosine_similarity(summarized_embedding, original_embedding)

위 코드는 다음과 같은 similarity_matrix 행렬을 반환합니다.

[
…
[0.87043057 0.7364477 0.68395391 0.73774264 0.25494342 0.16451413 0.74744067]
[0.73210674 0.6532341 0.77794674 0.84328448 0.41453468 0.22100691 0.79868826]
…
]

코사인 유사성 알고리즘을 사용하여 두 벡터 간의 유사성을 측정합니다. 예를 들어, 이전 결과를 다음과 같이 해석할 수 있습니다. 행렬의 첫 번째 행은 요약된 내용의 첫 번째 문장에 해당하고 모든 열은 원본 텍스트의 문장과의 유사성 점수를 보여줍니다. 유사성 값의 범위는 일반적으로 -1에서 1 사이이며, 여기서 1은 벡터가 동일하거나 매우 유사함을 나타내고, 0은 벡터가 직교 (상관 관계가 없음) 이고 유사성이 없음을 나타냅니다. -1은 벡터가 정반대이거나 매우 유사하지 않음을 나타냅니다.

유사성 매트릭스에서 요약된 콘텐츠의 각 문장에 대해 top-k 유사성 점수를 식별하여 원본 텍스트에서 가장 유사한 문장과 정렬합니다. 또한 원본 텍스트의 각 문장에는 원본 SRT 자막 파일에 저장된 해당 타임스탬프 (예: StartTime, EndTime)가 있습니다. 다음 단계에서는 타임스탬프를 사용하여 원본 비디오를 클립으로 분할하는 과정을 안내합니다. 요약된 각 문장의 Polly 오디오 재생 시간과 원본 자막 파일의 타임스탬프를 통합하여 각 요약된 문장에 해당하는 가장 관련성이 높은 프레임의 타임스탬프 시퀀스를 선택할 수 있습니다. 요약된 문장에 대해 선택한 각 비디오 세그먼트의 길이는 해당 내레이션 오디오의 길이에 맞춰 정렬됩니다. 타임스탬프 출력의 예는 다음과 같습니다.

# startTime, endTime
00:00:00:00,00:00:02:36
00:00:02:36,00:00:12:71
00:00:13:29,00:00:27:07
00:01:15:24,00:01:26:26
00:02:00:97,00:02:12:55
00:02:50:03,00:02:59:02
00:02:59:02,00:03:06:27

그런 다음 타임스탬프의 시퀀스를 파라미터로 활용하여 비디오 입력에서 해당 타임스탬프  세그먼트 단위로 추출하는AWS Elemental MediaConvert 어셈블리 워크플로우를 생성합니다. Amazon Polly의 MP3 오디오와 결합하고 원하는 배경 음악을 통합할 수 있어 궁극적으로는 최종 비디오 요약 결과를 얻을 수 있습니다.

다음 이미지는 간단하고 사용하기 쉬운 비디오 요약 웹 애플리케이션의 사용자 인터페이스를 보여줍니다. 프론트엔드는 오픈소스 디자인 시스템인 Cloudscape를 기반으로 구축되었습니다.

결론

이 블로그 게시물에서는 미디어 공급망을 위한 AI 생성 비디오 요약 워크로드를 소개했습니다.  이를 통해 사용자는 비디오를 수집, 처리 및 음성 내레이션과 함께 짧은 클립으로 요약할 수 있습니다. 이 블로그에서는 사용자가 Amazon Cognito 사용자 풀로 로그인해야 하는 프런트엔드부터 다양한 AWS AI/ML 서비스를 사용하는 백엔드의 AWS Step Functions 로직에 이르기까지 엔드 투 엔드 솔루션을 구축하고 마지막으로 AWS Elemental MediaConvert를 사용하여 요약된 비디오 출력을 생성하는 방법을 설명합니다. 비디오 요약 워크로드는 오디오 음성이 포함된 비디오와 관련된 시나리오를 다룹니다. 참고로 이 블로그 게시물의 범위는 비디오에 오디오 스피치 또는 대화 콘텐츠가 없는 상황에는 적용되지 않습니다.

이 솔루션은 Amazon S3, Amazon CloudFront, Amazon API Gateway, AWS Lambda, Amazon Cognito, AWS Step Functions와 Amazon Transcribe, Amazon SageMaker, Amazon Polly 등과 같은 AWS AI/ML 서비스를 사용합니다.

모든 AWS 서비스에 대한 자세한 내용은 이 링크를 참조하여 자세히 알아보십시오.

Simyung Yang

Simyung Yang

양시명 솔루션즈 아키텍트는 텔코 엔터프라이즈 기업 고객을 대상으로 고객의 비즈니스 성과 달성을 위해 고객과 함께 최적의 아키텍처를 구성하는 역할을 수행하고 있습니다. MSA 아키텍쳐를 기반으로 애플리케이션 및 텔코 네트워크와 미디어 워크로드에 클라우드를 적용하고 현대화하는데 도움을 드리고 있습니다.

Seunguk Kang

Seunguk Kang

강승욱 Solutions Architect는 다년간의 백엔드 개발의 경험을 바탕으로 AWS기반의 워크로드들을 스타트업에서 부터 현재는 Telco회사들과 함께 여정을 함께하고 있습니다.