시나리오 입력하면 영화처럼 긴 영상 생성

텍스트 기반 장편 비디오 생성 : 전체 그림은 자동 회귀적으로 생성된 하나의 연속 비디오다. 첫 번째 프롬프트에서 조건을 지정한 비디오를 생성한 다음 몇 프레임 후에 프롬프트를 다음으로 변경한다. 각 행에는 모델이 특정 프롬프트에서 조정되는 동안 선택한 프레임 수(왼쪽에서 오른쪽으로 순서대로)가 포함된다. 모델은 새로운 프롬프트를 채택하는 동안 비디오의 시간적 일관성을 유지하며 일반적으로 적응을 위한 최단 경로를 사용한다(곰 인형이 판다로 변하는 것에 주목). 생성된 비디오에는 반사, 폐색, 상호 작용 및 장면 전환과 같은 복잡한 시각적 기능이 있다.(사진=구글)
텍스트 기반 장편 비디오 생성 : 전체 그림은 자동 회귀적으로 생성된 하나의 연속 비디오다. 첫 번째 프롬프트에서 조건을 지정한 비디오를 생성한 다음 몇 프레임 후에 프롬프트를 다음으로 변경한다. 각 행에는 모델이 특정 프롬프트에서 조정되는 동안 선택한 프레임 수(왼쪽에서 오른쪽으로 순서대로)가 포함된다. 모델은 새로운 프롬프트를 채택하는 동안 비디오의 시간적 일관성을 유지하며 일반적으로 적응을 위한 최단 경로를 사용한다(곰 인형이 판다로 변하는 것에 주목). 생성된 비디오에는 반사, 폐색, 상호 작용 및 장면 전환과 같은 복잡한 시각적 기능이 있다.(사진=구글)

텍스트를 설명하는 것으로부터 사실적인 이미지를 생성하는 확산 모델이 최근 대세입니다. 특히 스테이블 디퓨전의 오픈 소스 릴리스로 인해 인공지능(AI) 영역에서 이에 대한 관심이 높아지고 있습니다. 확산 모델은 이미지에만 국한되지 않고, 텍스트를 음성으로, 이미지를 이미지로 전환할 수 있어 적용 범위가 계속 확장되고 있습니다.

비디오를 만드는 것은 이미지 생성 AI로 할 수 있을까요? 확산 모델과 같은 기술을 사용해도 비디오를 생성하는 것은 어렵습니다. 비디오는 연속적인 이미지들로 움직임을 표현하는데, 이는 훨씬 더 복잡한 문제입니다. 

비디오 생성은 텍스트-이미지 생성 AI 모델과 비교해 훨씬 복잡한 작업입니다. 그리고 계산 요구 사항도 더 높습니다. 하지만 가장 중요한 문제는 고품질의 '비디오-캡션' 쌍의 데이터 세트가 충분하지 않다는 것입니다. 심층 신경망을 훈련하려면 적절한 크기의 데이터 세트가 필요합니다.

비디오는 하나의 간단한 텍스트 프롬프트로는 완벽히 설명하기 어렵습니다. 이는 시간에 따라 발생하는 일련의 이벤트를 표현해야 하기 때문입니다. 그러므로 비디오를 생성하려면 훨씬 더 긴, 구체적인 프롬프트가 필요합니다.

AI 모델을 사용해 텍스트-이미지를 생성할 때는 많은 훈련 데이터를 사용할 수 있습니다. 예를 들어 인터넷에서 쉽게 찾을 수 있는 이미지와 캡션을 생각해 보세요.

하지만, 비디오에 대한 텍스트는 이미지에 대한 캡션과는 다릅니다. 비디오에서는 시각적 장면이나 일어나는 일에 대한 텍스트 설명이 필요하지만, 이러한 텍스트를 기반으로 한 데이터 세트를 찾는 것은 어렵습니다. 특히 텍스트로 주석이 달린 긴 비디오를 찾는 것은 더 어려울 것입니다.

구글은 텍스트-비디오 생성 AI 모델 '페나키(Phenaki)'를 공개했습니다. 이 모델은 텍스트로 작성된 시나리오를 입력하면 영화처럼 구체적이고 긴 동영상을 생성할 수 있습니다.

페나키는 약 5만2000시간의 짧은 비디오 클립과 이들에 대응하는 텍스트 설명으로 구축한 '웹비드(Webvid)' 데이터세트를 사용해 훈련했습니다. 긴 비디오 데이터가 없을 경우에도 짧은 비디오 데이터로 모델을 훈련시키는 것이 페나키의 핵심 기능입니다.

1.4초 길이의 비디오를 사용하여 페나키 모델을 훈련시킵니다. 그리고 모델이 새 프롬프트에서 생성된 마지막 비디오를 이어서 반복적으로 새로운 프롬프트에서 비디오를 생성하도록 합니다. 이렇게 반복하면 1분 길이의 비디오를 생성할 수 있으며, 이를 무한대로 계속하면 잠재적으로 무한히 긴 비디오도 생성할 수 있습니다.

페나키 아키텍터. 왼쪽: C-ViViT 인코더 아키텍처. 원시 프레임 x의 이미지 및 비디오 패치 임베딩은 비디오 토큰 z를 생성하기 위해 공간 및 인과 트랜스포머(시간에 따른 자동 회귀)에 의해 처리된다. 가운데:: 마스크GiT는 C-ViViT 인코더로 예측하고, 주어진 프롬프트 p0의 T5X 토큰을 조건으로 하는 마스킹된 토큰 z를 재구성하도록 훈련했다. 오른쪽: 페나키가 과거 토큰을 고정하고 미래 토큰을 생성하여 임의의 긴 비디오를 생성하는 방법. 프롬프트는 시간 변수 프롬프트(예: 스토리) 조건부 생성을 활성화하기 위해 시간이 지남에 따라 변경할 수 있다. 아래 첨자는 시간(즉, 프레임 번호)을 나타낸다.(사진=구글)
페나키 아키텍터. 왼쪽: C-ViViT 인코더 아키텍처. 원시 프레임 x의 이미지 및 비디오 패치 임베딩은 비디오 토큰 z를 생성하기 위해 공간 및 인과 트랜스포머(시간에 따른 자동 회귀)에 의해 처리된다. 가운데:: 마스크GiT는 C-ViViT 인코더로 예측하고, 주어진 프롬프트 p0의 T5X 토큰을 조건으로 하는 마스킹된 토큰 z를 재구성하도록 훈련했다. 오른쪽: 페나키가 과거 토큰을 고정하고 미래 토큰을 생성하여 임의의 긴 비디오를 생성하는 방법. 프롬프트는 시간 변수 프롬프트(예: 스토리) 조건부 생성을 활성화하기 위해 시간이 지남에 따라 변경할 수 있다. 아래 첨자는 시간(즉, 프레임 번호)을 나타낸다.(사진=구글)

페나키는 텍스트를 비디오로 바꿔주는 '트랜스포머(Transformer)' 기술을 기반으로 합니다. 이 모델은 문장 속 단어와 같은 순차 데이터를 학습하여 맥락과 의미를 추적할 수 있으며, '어텐션(attention)' 기법을 이용해 서로 떨어져 있는 데이터 요소들의 의미를 이해할 수 있습니다. 이러한 트랜스포머 모델은 순차적 텍스트나 이미지, 비디오 데이터를 사용하는 애플리케이션에 적용될 수 있습니다.

페나키는 비디오를 픽셀 수준이 아닌 토큰으로 변환하여 비디오와 텍스트 생성을 통합합니다. 이를 위해 구글의 대규모 언어 모델 'T5X'를 사용하여 입력된 텍스트 프롬프트를 단어의 수치 표현인 텍스트 임베딩으로 변환합니다. T5X는 '이미지-캡션' 쌍의 대규모 데이터 세트로 훈련되어 있으며, 이것은 비디오와 결합되어 텍스트에서 비디오를 생성하도록 훈련될 것입니다.

동시에 ‘C-ViViT’는 비디오 인코더-디코더 모델로서, 입력 비디오를 압축된 비디오 임베딩인 비디오 토큰 매트릭스로 변환하는 인코더와 비디오 토큰 매트릭스를 다시 비디오로 복원하는 디코더로 구성됩니다. 그리고 이를 통해 가변 길이 비디오를 생성할 수 있는 자동 회귀(autoregressive) 모델로 훈련합니다. 자동 회귀 모델은 이전에 생성된 프레임을 이용해 다음 프레임을 순차적으로 생성합니다.

인코더는 비디오로부터 순서대로 프레임을 가져와 일정 크기의 패치 단위로 추출하고 선형 변환(linear transform)을 적용해 압축합니다. 먼저 프레임별로 각 패치의 정보를 프레임 내의 인접한 패치 정보와 결합해 공간적인(spatial) 관계를 학습합니다. 그런 다음 시간에 따라 순차적으로 각 패치를 이전 프레임의 동일한 위치에서 가져온 패치와 결합합니다. 즉 특정 프레임 내의 각 패치에 대한 과거 프레임과의 인과(casual) 관계를 학습합니다. 

인코더는 비디오를 프레임 단위로 추출하고, 각 프레임을 일정 크기의 패치로 잘라 선형 변환(linear transform)을 적용하여 압축합니다. 이때, 인코더는 프레임 내의 각 패치를 인접한 패치들과 결합해 공간적(spatial) 관계를 학습하며, 특정 프레임의 각 패치를 이전 프레임의 동일한 위치에서 가져온 패치와 결합하여 과거 프레임과의 인과(casual) 관계를 학습합니다.

C-ViViT 인코더는 시공간적인 관계를 학습하여 프레임 단위로 가변 길이의 비디오를 이어 붙일 수 있다. 그리고 C-ViViT 디코더는 인코더에서 수행한 작업을 역으로 적용하여 픽셀 공간에서 비디오를 복원한다.

마지막으로 구글의 ‘마스크GIT(MaskGIT)’ 모델을 이용하여, C-ViViT 인코더가 생성한 비디오 토큰과 캡션에 대한 T5X 텍스트 임베딩을 정렬하여 텍스트 설명과 일치하는 비디오를 복원하는 학습을 진행합니다. 마스크GIT은 비디오 토큰을 동시에 포워드와 백워드로 예측하는 양방향 트랜스포머 모델로, '버트(BERT)' 트랜스포머 모델과 유사하지만 텍스트와 비디오를 처리하는 멀티모달입니다.

마스크GIT의 무작위 마스킹에 의한 병렬 디코딩(사진=구글)
마스크GIT의 무작위 마스킹에 의한 병렬 디코딩(사진=구글)

훈련 중에는 비디오 토큰 중 일부를 무작위로  '[MASK]' 토큰으로 마스킹하며, 이러한 [MASK] 토큰 위치에 있을 비디오 토큰을 예측하도록 합니다.

전체 모델이 훈련된 추론 단계에서는 새로운 프롬프트의 텍스트 임베딩과 함께 마스킹된 비디오 프레임부터 시작해서 단계적으로 [MASK] 토큰을 실제 비디오 토큰으로 예측하고, 이를 사용해 새로운 프레임을 생성할 수 있습니다.

마스크GIT을 사용하여 긴 비디오를 제작하는 과정에서, 처음에는 전체 마스킹된 프레임과 첫 문장 설명으로부터 프레임 단위로 비디오를 생성합니다. 그리고 새로운 문장 설명과 이전에 제작된 비디오의 마지막 프레임을 가져와서 비디오의 연속을 예측하여 비디오를 연장합니다. 이를 반복적으로 진행하면 점점 더 긴 비디오를 생성할 수 있습니다.

예를 들어 아래와 같은 긴 프롬프트를 입력하면 페나키는 2분짜리 비디오를 생성해 줍니다.

페나키가 생성한 2분 분량의 비디오 (사진=구글)
페나키가 생성한 2분 분량의 비디오 (사진=구글)

미래 도시의 교통량이 많습니다. 외계인 우주선이 미래 도시에 도착합니다. 카메라는 외계인 우주선 안으로 들어갑니다. 카메라는 파란색 방에 우주 비행사를 보여줄 때까지 앞으로 이동합니다. 우주 비행사가 키보드를 입력하고 있습니다. 카메라가 우주 비행사에게서 멀어집니다. 우주 비행사는 키보드를 떠나 왼쪽으로 걸어갑니다. 우주 비행사는 키보드를 떠나 걸어갑니다. 카메라는 우주 비행사 너머로 이동하여 화면을 봅니다. 우주 비행사 뒤의 화면에는 바다에서 헤엄치는 물고기가 표시됩니다. 파란 물고기로 크래시 줌. 우리는 어두운 바다에서 헤엄치는 푸른 물고기를 따라갑니다. 카메라는 물을 통해 하늘을 가리킵니다. 바다와 미래 도시의 해안선. 미래의 마천루를 향해 크래시 줌. 카메라는 많은 창 중 하나를 확대합니다. 우리는 빈 책상이 있는 사무실에 있습니다. 사자가 사무실 책상 위를 달리고 있습니다. 카메라는 사무실 내부의 사자 얼굴을 확대합니다. 사무실 방에서 검은 양복을 입은 사자를 축소합니다. 입고 있는 사자가 카메라를 바라보며 미소 짓고 있습니다. 카메라는 마천루 외부로 천천히 축소됩니다. 현대 도시에서 저속 촬영한 일몰입니다.'

박찬 위원 cpark@aitimes.com

키워드 관련기사
  • "동영상 생성 AI 나올 것"...샘 알트만 오픈AI CEO
  • AI는 사진 속 풍경도 들여다 봅니다
  • 명령만 하면 AI가 영화도 만들어 준다고?