OpenSource-Hub

ViMax

애플리케이션

HKUDS/ViMax

아이디어, 소설 또는 각본을 자동으로 완전한 영상으로 변환하는 에이전트 시스템.

개요

ViMax는 감독, 각본가, 프로듀서 및 비디오 생성 기능을 하나로 통합한 올인원 에이전트 비디오 생성 플랫폼입니다. 원본 아이디어, 완성된 소설 또는 시나리오를 기반으로 스토리보드, 캐릭터 및 최종 비디오를 자율적으로 생성할 수 있으며, 아이디어-비디오 변환, 소설 각색, 시나리오 창작 및 개인 출연 등 다양한 모드를 지원합니다.

README 미리보기

\n   \n	\n  \n\n  ViMax: Agentic Video Generation\n\n  \n  \n\n  \n    \n	\n	\n  \n\n  \n    \n    \n  \n\n  \n    \n  \n\n\n\n	\n\n	\n    \n\n    \n      \n    \n\n\n\n---\n\n### 🚨 Current Video Generation Limitations:\n- ❌ **Limited to Short Clips** - Most AI tools generate only seconds of footage. \n- ❌ **Consistency Chaos** - Characters and scenes change unpredictably across frames. \n- ❌ **Visual-Only Focus** - Missing scripts, audio, narrative structure, and storytelling depth. \n\n### 💡 ViMax Solution:\n🎬 **Director**, **Screenwriter**, **Producer**, and **Video Generator** **All-in-One**! We're exploring a future where AI becomes a complete creative powerhouse. 💡 Simply input your concept. ViMax autonomously handles the rest. It orchestrates scriptwriting, storyboarding, character creation, and final video generation—all end-to-end. 🚀\n\nhttps://github.com/user-attachments/assets/5bad46b2-8276-4e1d-9480-3522640744b2\n\n\n\n\n\n---\n\n\n## 📑 Table of Contents\n\n- [💡 Key Features](#key-features)\n- [🔮 Demos](#Video-Demos-Generated-from-Scratch)\n- [🏗️ Architecture](#️-architecture)\n- [🚀 Quick Start](#quick-start)\n\n---\n## 💡Key Features\n\n\n\n\n\n\n\n\n🌟 Idea2Video\n\n\n\n  \n\n\n\nFrom Spark to Screen\n\n\n\nTransform  raw ideas  into complete video stories through intelligent multi-agent workflows automating  storytelling, character design, and production .\n\n\n\n\n\n\n\n\n\n🎨 Novel2Video\n\n\n\n  \n\n\n\nSmart Literary Adaptation Engine\n\n\n\nTransform complete novels into episodic video content with intelligent narrative compression, character tracking, and scene-by-scene visual adaptation\n\n\n\n\n\n\n\n\n⚙️ Script2Video\n\n\n\n  \n\n\n\nUnlimited Screenplay Video Creation\n\n\n\nUnleash your creativity by writing any screenplay from personal stories to epic adventures, giving you complete control over every aspect of your visual storytelling.\n\n\n\n\n\n\n\n\n\n\n🤳 AutoCameo\n\n\n\n  \n\n\n\nGenerate Video from Your Photo\n\n\n\n Crea

FAQ (2)

문제 해결
LLM이 non-Optional Pydantic 필드에 대해 null을 반환할 때 LangChain OutputParserException을 해결하는 방법

이 오류는 Pydantic이 int, bool, str 타입의 필수 필드에 대해 null을 거부하기 때문에 발생합니다. LLM이 null을 반환할 수 있는 모든 필드를 Optional로 지정하고 기본값을 None으로 설정하세요:

from typing import Optional
from pydantic import BaseModel, Field, model_validator

class CameraParentItem(BaseModel):
    parent_cam_idx: Optional[int] = Field(
        default=None,
        description="The index of the parent camera. Use null for the root camera.",
        examples=[0, 1, None],
    )
    parent_shot_idx: Optional[int] = Field(
        default=None,
        description="The index of the dependent shot. Use null for the root shot.",
        examples=[0, 3, None],
    )
    reason: Optional[str] = Field(
        default=None,
        description="The reason for selecting the parent camera.",
    )
    is_parent_fully_covers_child: Optional[bool] = Field(
        default=None,
        description="Whether the parent camera fully covers the child camera's content.",
        examples=[True, False, None],
    )
    missing_info: Optional[str] = Field(
        default=None,
        description="Elements in the child shot not covered by the parent shot. Set to null when fully covered.",
    )

루트 항목만 null 부모 참조를 가질 수 있는 경우, 루트가 아닌 항목이 여전히 유효하도록 검증을 추가하세요:

@model_validator(mode="after")
def validate_root_item(self):
    if self.parent_cam_idx is None or self.parent_shot_idx is None:
        if self.reason is None or "root" not in self.reason.lower():
            raise ValueError("Only the root camera/shot may have null parent indices")
    return self

또한 LLM 프롬프트를 업데이트하여 parent_cam_idx와 parent_shot_idx는 루트 항목에서만 null이어야 하며, 그 외의 경우에는 정수여야 함을 명시적으로 밝히세요.

원본 Issue #17
문제 해결
ViMax에서 "'Novel2MoviePipeline' object has no attribute 'working_dir'" 오류를 해결하는 방법

Novel2MoviePipeline.__init__에 누락된 속성을 정의하세요. 현재 파이프라인은 self.working_dir, self.embeddings, self.novel_compressor를 할당하지 않은 채 사용합니다. 다음과 같은 초기화 메서드를 추가하세요:

from pathlib import Path

class Novel2MoviePipeline:
    def __init__(self, embeddings, novel_compressor, working_dir="output", ...):
        self.embeddings = embeddings
        self.novel_compressor = novel_compressor
        self.working_dir = Path(working_dir)
        self.working_dir.mkdir(parents=True, exist_ok=True)

파이프라인을 인스턴스화할 때 필요한 의존성을 전달하고, 오래된 import를 현재 interfaces 패키지를 사용하도록 업데이트하세요. 이는 이슈 #43에 대한 PR "fix: initialize Novel2MoviePipeline dependencies"에서 수정되었습니다.

원본 Issue #43