23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요, SKT AI Fellowship 6기로 'C11: AI 기반 광고 컨텐츠 생성 및 Layout Generation' 을 주제로 연구 중인 t1vaker 팀 신연상 입니다.
어느덧 세 달이 지나 중간 발표도 무사히 끝이 났네요.
본 글에서는 저희 팀이 지금까지 어떤 과제를 어떻게 해결해 나가고 있는지, 그리고 받은 피드백을 바탕으로
앞으로 남은 Fellowship 기간 동안 어떤 계획을 세우고 있는지에 대해 정리해보았습니다.
(DEVOCEAN 파일 용량 제한 및 비디오 업로드 불가로, 많은 자료가 사진으로 대체되었습니다.)
혹시 이런 TV 광고를 보신 적 있으신가요?
저는 택시 뒷자리에서 본 기억이 있네요! 현재 SK 브로드밴드에서는 'B tv 우리동네광고'라는 서비스를 제공하고 있습니다.
이 서비스는 소상공인들이 직접 광고를 제작하여 실행할 수 있도록 돕는 역할을 하고 있습니다.
그러나 이 서비스에는 한 가지 아쉬운 점이 있습니다. 소상공인들이 직접 디자인을 해야 한다는 점인데요.
대부분의 소상공인 분들은 영상 디자인에 익숙하지 않으시기 때문에, 현재 'B tv 우리동네광고'에서는 아래와 같이 템플릿을 제공하여,
이를 선택한 후 템플릿에 맞춰 영상을 제작할 수 있도록 돕고 있습니다.
하지만 템플릿 기반 광고 역시 시간과 노력이 필요합니다. 또한, 같은 템플릿의 광고들이 반복적으로 나타난다면 시청자 입장에서 흥미가 떨어지기 쉽겠죠.
그렇다면, 소상공인들이 "쉬운 줄글"로 광고하고 싶은 내용과 분위기만 작성하면, 정해진 템플릿 없이 자동으로 영상을 제작 할 수는 없을까요?
이 질문에서 저희 과제가 시작되었습니다. 다른 연구팀에서 간단한 줄글에서부터 각 영상 씬의 시나리오를 생성하는 작업을 맡고 있습니다.
저희는 이 자연어로 구성된 시나리오를 바탕으로 광고 영상을 제작 하는 다음 단계를 연구 주제로 삼아 진행하고 있습니다.
저희 팀은 이번 과제의 파이프라인을 구성하는 데 가장 많은 시간을 투자했습니다. 그 이유 중 하나는, 이 주제와 관련된 기존의 연구나 작업이 전무하다는 점입니다!
처음 이 주제를 접했을 때, 저희는 크게 Video Generation과 Layout Generation의 두 가지로 접근해 보았습니다.
Video Generation의 측면에서는 최근 가장 주목받고 있는 OpenAI의 Sora 모델 [1] 을 참고했는데요,
이 모델은 텍스트를 입력받아 이를 바탕으로 비디오를 생성하는 Text-to-Video 모델입니다.
Sora는 텍스트를 prompt로 입력받아 비디오를 생성하는 방식으로, 저희가 설정한 input/output 구조와 유사합니다.
하지만, 저희가 만들고 싶은 결과물과 조금 결이 다른 것이 느껴지시나요?
광고 영상의 특성상 광고하고자 하는 내용(이름, 전화번호 등)을 텍스트로 지속적으로 보여주는 것이 중요한데,
현재 존재하는 Text-to-Video 모델들은 이러한 요구 사항을 충족시키지 못하고 있습니다. 방향이 조금 다른 것이지요.
그렇다면, Layout Generation 은 무엇일까요? 아래는 Diffusion model 을 활용하여 Layout Generation 을 연구한 LACE [2] 의 예시입니다:
결과를 보시면 다양한 색상의 사각형들이 보이는데요, 이는 정보를 사각형(이하 bounding box)으로 표현한 것입니다.
이 bounding box의 크기와 종류(이미지, 텍스트 등)을 고려하여 가장 적절한 배치를 찾아내는 것이 Layout Generation의 목적입니다.
저희가 만들고자 하는 광고 영상에서는 모든 텍스트와 이미지를 사각형의 bounding box로 쉽게 표현할 수 있다는 점에서 Layout Generation과 매우 밀접한 관련이 있습니다.
하지만, 지금까지 Layout Generation을 비디오로 확장한 연구는 전무한 상황입니다.
이에 저희 팀은 Dynamic Layout Generation 이라는 새로운 주제를 설정하고, 기존의 한계를 넘어선 새로운 방향을 개척하기로 했습니다.
마치 달에 깃발을 꽂으러 가듯이, 미지의 세계로 도전장을 내밀었습니다.
최근의 Layout Generation 연구를 살펴보니, 크게 Diffusion 모델 기반의 접근과 LLM (Large Language Model) 기반의 접근으로 나눌 수 있었어요.
저희 팀은 이 두 가지 접근 방식을 모두 PoC(Proof of Concept)을 통해 실험해본 후, 최종적으로 사용할 접근법을 결정하기로 했습니다.
먼저, Video Diffusion 모델들은 Stable Diffusion과 같은 이미지 기반 Diffusion 모델에 Temporal Layer를 추가하는 아이디어로 확장되었습니다.
저희 팀도 이 아이디어를 응용해, 앞서 언급한 LACE 모델에 Temporal Layer를 추가하여 실험을 진행했습니다.
실험 결과 Temporal Layer가 어느 정도 학습되는 경향을 보이기는 했으나, 두 가지 주요 문제로 인해 연구를 중단하게 되었습니다.
첫 번째 문제는, Diffusion 모델을 처음부터 학습시키기 위해서는 대규모 데이터가 필요하지만, 저희가 보유한 데이터는 상대적으로 부족하다는 점이었습니다.
두 번째 문제는, 이 과제가 요구하는 다양한 조건을 만족시키기에는 Diffusion 모델의 controllability가 충분하지 않다는 것이었습니다.
그렇다면 LLM 기반의 접근은 어떨까요? 여기서 한 가지 의문이 드실 수 있습니다.
LLM은 텍스트를 입력받아 텍스트를 출력하는 언어 모델인데, 과연 시각적인 자료를 이해하고 생성할 수 있을까요?
놀랍게도, 답은 'Yes' 입니다. 저희는 논문[3]을 통해 언어 데이터로만 학습된 LLM 모델이 시각적인 자료를 이해하고 생성할 수 있다는 사실을 확인했습니다.
이를 바탕으로, LLM을 활용 하여 어떻게 우리의 과제를 해결할 수 있을지에 대해 고민을 이어갔습니다.
LLM을 활용하기 위해서는 Video를 텍스트로 표현 할 수 있어야 합니다. 광고 영상의 한 씬을 표현하려면 해당 씬의 다양한 요소들이 텍스트로 정리되어야 합니다.
여기에는 씬의 길이(프레임 수), 배경 색깔, 각 오브젝트의 종류(텍스트/이미지) 및 색깔, 텍스트일 경우 그 내용과 텍스트박스의 색깔,
그리고 각 오브젝트가 프레임마다 위치한 bounding box의 위치와 크기가 포함됩니다.
저희는 이러한 정보를 효과적으로 표현하기 위해 JSON (JavaScript Object Notation) 포맷을 사용 하기로 했습니다.
이 포맷을 통해 광고 영상의 모든 요소를 구조적으로 정리하고, 다음과 같은 형식으로 이 정보를 표현할 수 있도록 결정했습니다.
이제 저희가 할 일은 LLM을 이용하여 입력으로 주어진 시나리오 텍스트로부터 JSON 형태의 출력물을 생성하는 것입니다.
이 JSON에는 비디오 제작에 필요한 모든 정보가 담기게 되며, 최종적으로 이 JSON을 기반으로 비디오를 생성하는 과정을 거치게 됩니다.
위 파이프라인을 따라 pre-trained LLM (GPT-4 및 GPT-4o) 을 활용해 학습 없이 Zero-shot으로 PoC를 진행해본 결과,
시나리오 텍스트를 바로 JSON 포맷의 결과물로 변환하는 것이 쉽지 않다는 점을 확인했습니다.
< Ground Truth 영상 (캡처본) >
< CoT 적용 전 영상 (캡처본) >
이 문제를 해결하기 위해, 저희는 Chain-of-Thought(CoT) 기법 [4] 에서 아이디어를 얻었습니다.
CoT 기법은 모델이 결과를 도출하는 이유와 과정을 단계적으로 생각하며 추론하도록 유도함으로써 성능을 향상시키는 방법입니다.
저희는 시나리오 텍스트로부터 바로 JSON을 생성하는 대신, 먼저 'Detail' 이라는 중간 정보를 생성한 후 이를 바탕으로 JSON을 생성 하는 방식을 시도했습니다.
이 Detail 단계에서는 각 오브젝트가 어떻게 배치되고 움직이는지에 대한 명확한 가이드라인을 제공하여 최종 JSON의 생성을 돕습니다.
이 방법을 적용한 후의 결과는 아래와 같습니다. CoT 기법을 사용하기 전과 비교했을 때, 많이 개선된 모습이 보이시죠?
< CoT 적용 후 영상 (캡처본) >
'Detail'을 포함한 최종 파이프라인은 아래와 같습니다.
저희 파이프라인에서 LLM은 최종적으로 JSON 형식의 출력을 생성합니다. 그러나, 이 JSON 원문은 결과를 바로 확인하기에 적합하지 않습니다.
따라서, 저희 팀은 JSON 데이터를 보기 쉽게 Video 형태로 변환해주는 Visualization Tool을 개발 하여, 평가 및 결과 보고 시 불필요한 과정을 최소화하고자 했습니다.
위에서 보신 결과 영상들은 모두 이 Visualization Tool을 사용한 결과물입니다. 이전에는 JSON의 결과를 직접 손으로 비디오로 옮겨야 했지만,
< Visualization Tool 이용 전 영상 (캡처본) >
이제 저희가 만든 Visualization Tool을 사용하면, JSON으로부터 자동으로 아래와 같은 가시적인 비디오를 생성할 수 있습니다.
이 Tool 덕분에 모델의 결과를 확인하는 과정이 훨씬 빨라지고 효율적으로 개선되었습니다.
< Visualization Tool 이용 후 영상 (캡처본) >
Pre-trained 모델을 사용하는 과정에서 성능 한계가 분명히 드러났습니다.
이에 저희 팀은 다양한 PEFT (Parameter Efficient Fine Tuning) 기법(LoRA, QLoRA, DoRA 등)을 활용해 LLM을 fine-tuning 하기로 결정했습니다.
그러나 모델을 fine-tuning하기 위해서는 데이터셋이 필요 하며, 현재 저희가 보유한 데이터는 비디오 형태의 광고 영상들 뿐입니다.
다음 섹션에서는 fine-tuning을 위한 데이터셋을 어떻게 구축했는지에 대해 설명드리겠습니다.
기존 파이프라인은 Info -> Detail -> JSON -> Video 의 순서로 시나리오 텍스트에서 비디오를 생성합니다.
데이터셋을 구축할 때는 이 파이프라인을 역순 으로 진행하여, 비디오로부터 나머지 세 정보 (Info / Detail / JSON)를 생성합니다.
데이터셋 구축의 핵심은 "최대한 자동화하자" 입니다. 모든 사람의 시간은 매우 소중하기 때문에(?),
다양한 아이디어를 고안하고 적용하여 데이터셋 구축 과정을 최대한 효율적으로 만들었습니다.
첫 번째 단계인 Video-to-JSON에는 다음과 같은 방법을 통해 이루어집니다.
Rewind-and-Track: 대부분의 오브젝트는 시간이 흐르면서 사라지기보다 새로 나타나는 경우가 많습니다.
이를 활용하여, 모든 씬을 각각 되감은 상태에서 AOT (Associating Objects with Transformers) 를 사용해 각 오브젝트를 프레임별로 tracking 했습니다.
Keyframe Extraction: Tracking 된 모든 프레임을 사용하는 것이 아닌, 중요한 keyframe만 추출하여 LLM 학습에 활용합니다.
Bounding Box Algorithm: 픽셀 단위로 나타나는 tracking 결과를 단순히 사각형(box) 형태로 옮기면 오차가 매우 큽니다.
이를 개선하기 위해 tracking 결과로부터 bounding box를 생성하는 알고리즘을 개발하여 오차를 최소화하고 일관성을 높였습니다.
VLM (GPT-4o): 각 오브젝트를 텍스트 또는 이미지로 분류하고, 텍스트 내용을 추출하는 데 OCR 기술을 사용했습니다.
K-means Clustering with color values: VLM이 색깔 추출에서 오차가 심했기 때문에,
픽셀들의 RGB 값에 대한 K-means Clustering을 추가로 활용하여 색깔 정보 획득의 정확성을 강화했습니다.
예를 들어, Bounding Box Algorithm 개선 전후의 차이를 살펴보면, 아래 영상은 단순히 tracking 결과의 최대/최소 좌표값들을 bounding box로 지정한 결과입니다.
< Bounding Box Algorithm 개선 전 영상 (캡처본) >
알고리즘을 개선한 후에는, 아래와 같이 훨씬 안정적이고 정확한 box 정보가 얻어집니다.
< Bounding Box Algorithm 개선 후 영상 (캡처본) >
이외에도 투명한 텍스트박스에 있는 텍스트나 이미지 위에 텍스트가 겹쳐 있는 경우 등 다양한 복잡한 케이스들이 있었지만, 모두 성공적으로 해결했습니다.
다음 단계인 JSON-to-Detail과 Detail-to-Info 는 각각 VLM (GPT-4o-mini)를 활용하여 이전 단계의 결과물과 한 프레임의 사진 정보를 바탕으로 다음 단계의 결과물을 생성했습니다.
이로써, 저희는 LLM 학습에 필요한 Info, Detail, JSON, Video의 모든 데이터를 생성 할 수 있게 되었습니다.
중간 발표 시점을 기준으로, 저희는 총 140 개의 씬(JSON) 데이터를 모았습니다.
데이터 양은 아직 적지만, 이를 활용하여 저희가 제안한 파이프라인의 generalizability(일반화 가능성)와 scalability(확장성)를 실험해보았습니다.
아래는 LLaMA 3.1 8B 모델을 140개의 데이터로 LoRA fine-tuning (rank 16, lora_alpha = 32) 및 Mixed Precision Training (BF16)을 이용해 100 epoch 동안 학습한 결과입니다.
먼저, Train set에 포함된 데이터를 inference한 결과는 다음과 같습니다:
< Train set 영상 inference 결과 (캡처본) >
다음은 Train set에 포함되어 있지 않은 Test set의 결과입니다:
< Test set 영상 inference 결과 (캡처본) >
적은 양의 데이터를 많은 epoch 동안 학습했기 때문에 모델은 overfitting이 되었습니다.
Train set의 데이터는 모두 암기되어 원본 비디오와 동일한 결과를 보여주고 있습니다.
반면, Test set의 결과는 아직 많이 부족하지만, 애니메이션이 나타난다는 점, 전화번호가 대부분의 영상과 유사하게 구석에 위치하는 점,
그리고 적절한 멘트를 생성하는 점 등에서 앞으로 더 향상될 가능성을 확인 할 수 있었습니다.
중간 발표를 통해 멘토 분들과 Fellow 분들로부터 많은 소중한 피드백을 받을 수 있었습니다. 주요 피드백을 다음과 같이 정리하였습니다:
Problem Definition에 대한 피드백:
발표 시간이 한정된 탓에, 저희 팀이 어떤 주제를 왜 연구하고 있는지에 대한 이해 및 설득력이 부족하다는 피드백이 많았습니다.
이를 반영하여, 본 DEVOCEAN 글에서 문제 정의와 배경을 더욱 꼼꼼히 작성하였고, 최종 발표 때도 문제 정의 과정과 배경을 설득력 있게 전달하는 데 집중할 계획입니다.
다양하고 세련된 결과물에 대한 요구:
더 다양한 결과물을 보여달라는 요청이 있었습니다. 최종 발표에서는 더 많은 데이터를 활용해 학습한 모델의, 더 세련된 결과물을 다양하게 준비해 선보이겠습니다.
Scene 전환에 대한 질문:
몇몇 분들께서 Scene 전환에 대해 질문하셨습니다. 현재까지 저희 모델은 현실적으로 transition을 JSON 포맷으로 표현하거나 데이터셋으로 구축하기 어려워 이 부분은 고려하지 않았습니다.
중간 발표 및 본 글에서는 설명드리지 않았지만, 저희 팀은 Post-processing 과정 을 통해 Font 선정, Transition 등을 해결할 계획입니다.
최종 발표 때 Post-processing 과정이 포함된 pipeline 및 최종 결과물을 소개해 드리겠습니다.
기술적인 조언:
Jittering, Easing Function, Saliency Map, Adapter 등 다양한 기술적인 조언을 받았습니다.
조언들에 감사드리며, 저희가 지금까지 고민해 왔던 문제들과 함께 주신 조언을 반영하여 모델을 더욱 개선해 나가겠습니다.
저희 팀은 앞으로의 계획을 크게 네 가지 파트로 정리하였습니다.
Scale-Up
현재는 모델과 데이터를 각각 LLaMA 8B, 0.14K 개로 실험해 보았지만, 앞으로 모델과 데이터셋의 크기를 모두 scale-up 할 계획입니다.
모델은 LLaMA 70B 모델을 이용하거나 GPT-4o의 Fine-tuning 기능을 이용해 볼 것이며, 데이터셋은 최대 개수인 약 10K 개까지 모을 예정입니다.
Engineering
FSDP(Fully Sharded Data Parallel) 혹은 Deepspeed와 같은 효율적인 multi-GPU 학습 방법들을 도입하고, 최신 LLM 기술을 활용하여 모델 성능을 높일 계획입니다.
또한, 앞서 언급한 Post-processing 과정을 추가하여 더 높은 controllability를 제공할 예정입니다.
Benchmarks
Dynamic Layout Generation 이라는 주제가 기존에 없었던 만큼, 이를 측정할 적절한 metric 또한 존재하지 않습니다.
저희는 이 task 에서 사용될 수 있는 새로운 정량적 지표 를 제안하고 이를 측정할 계획입니다. 또한, 질적 결과와 user study 를 통해 저희 모델의 강점 및 성능을 확실히 측정할 것입니다.
Archive
저희 팀은 Top-tier 컨퍼런스(CVPR 2025) 제출 을 목표로 하고 있습니다. 해당 연구를 논문으로 잘 발전시켜 아카이빙할 계획입니다.
[1] OpenAI, "Video generation models as world simulators (Sora technical report)," OpenAI, 2024. [Online]. Available: https://openai.com/index/video-generation-models-as-world-simulators/. [Accessed: Aug. 30, 2024].
[2] Chen et al., Towards Aligned Layout Generation via Diffusion Model with Aesthetic Constraints, ICLR, 2024.
[3] Sharma et al., A vision check-up for language models, arXiv, 2024.
[4] Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS, 2022.
이상으로 긴 글 읽어주셔서 감사합니다! 지금까지 "C11: AI 기반 광고 컨텐츠 생성 및 Layout Generation" 을 주제로 연구하고 있는 Team T1Vaker 신연상 이었습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.