Video Modelsalibaba-cloud

معرفی و مستندات مدل هوش مصنوعی wan2.2-vace-fun-a14b-depth-image-to-video

مستندات مدل تولید ویدیو از تصویر و عمق wan2.2-vace-fun-a14b-depth-image-to-video، ارائه شده توسط ای ای کار (AI-KAR).

معرفی و بررسی فنی

⚡ وضعیت پشتیبانی از زبان فارسی

این مدل از زبان فارسی در سطح متوسط پشتیبانی می‌کند. درک نسبتا خوبی از دستورات فارسی دارد اما برای نتیجه بهتر پیشنهاد می شود از عبارات ساده تر استفاده شود.

مدل wan2.2-vace-fun-a14b-depth-image-to-video یک مدل تولید ویدیو است که توسط Alibaba Cloud توسعه داده شده است. این مدل به شما امکان می‌دهد با ترکیب یک تصویر منبع، یک ماسک و یک ویدیوی مرجع، ویدیوهایی با کنترل دقیق بر روی محتوای تولید شده ایجاد کنید. به عبارت دیگر، شما می‌توانید با استفاده از این مدل، ویدیویی تولید کنید که در آن عناصر خاصی از تصویر منبع شما (مانند یک شیء یا یک شخص) در ویدیوی تولید شده حضور داشته باشند و حرکات و رفتارهای ویدیوی مرجع را تقلید کنند. این مدل برای کاربردهایی مانند تولید محتوای تبلیغاتی، ایجاد جلوه‌های ویژه در فیلم‌ها و بازی‌ها، و تولید ویدیوهای آموزشی بسیار مناسب است.

نحوه کارکرد مدل:
این مدل از یک رویکرد دو مرحله‌ای برای تولید ویدیو استفاده می‌کند. در مرحله اول، یک شناسه تولید (generation ID) ایجاد می‌شود. این شناسه به عنوان یک کلید برای پیگیری فرآیند تولید ویدیو استفاده می‌شود. در مرحله دوم، با استفاده از این شناسه، می‌توان وضعیت تولید ویدیو را بررسی کرد و پس از اتمام فرآیند، ویدیوی تولید شده را دریافت کرد.

کاربردهای مدل:
این مدل کاربردهای فراوانی دارد، از جمله:
  • تولید ویدیوهای تبلیغاتی جذاب و خلاقانه
  • ایجاد جلوه‌های ویژه بصری در فیلم‌ها و بازی‌ها
  • تولید ویدیوهای آموزشی و سرگرم‌کننده
  • تبدیل تصاویر ثابت به ویدیوهای متحرک
  • شخصی‌سازی ویدیوها بر اساس سلیقه و نیاز کاربر

مزایای استفاده از مدل:
  • کنترل دقیق بر روی محتوای تولید شده
  • کیفیت بالای ویدیوهای تولید شده
  • سرعت بالای تولید ویدیو
  • سهولت استفاده

نکات مهم:
برای استفاده از این مدل، به یک کلید API نیاز دارید. همچنین، باید توجه داشته باشید که این مدل به یک تصویر منبع، یک ماسک و یک ویدیوی مرجع نیاز دارد. کیفیت ویدیوهای تولید شده به کیفیت تصاویر و ویدیوهای ورودی بستگی دارد. برای دستیابی به بهترین نتایج، توصیه می‌شود از تصاویر و ویدیوهای با کیفیت بالا استفاده کنید. این مدل به خوبی می‌تواند با توضیحات متنی (prompt) فارسی کار کند، اما ممکن است در برخی موارد نیاز به تنظیم دقیق‌تر پارامترها باشد. با این حال، به طور کلی، پشتیبانی از زبان فارسی در این مدل در سطح خوبی قرار دارد.

مشخصات فنی (API References)

پارامترنوعتوضیحات و مقادیر
model
stringRequired
نام مدل. مقدار این فیلد باید `alibaba/wan2.2-vace-fun-a14b-depth` باشد.
مقادیر مجاز (کلیک برای کپی):
video_url
stringRequired
آدرس URL فایل ویدیویی منبع. برای وظیفه عمق (depth task) مورد نیاز است.
prompt
stringRequired
توضیحات متنی صحنه، موضوع یا عملی که می‌خواهید در ویدیو تولید شود.
negative_prompt
string
توضیحات عناصری که باید در ویدیوی تولید شده از آنها اجتناب شود.
match_input_num_frames
boolean
مشخص می‌کند که آیا تعداد فریم‌های ویدیوی تولید شده باید با تعداد فریم‌های ویدیوی ورودی مطابقت داشته باشد یا خیر.
num_frames
integer
تعداد فریم‌هایی که باید تولید شوند. باید بین 81 تا 241 باشد.
match_input_frames_per_second
boolean
مشخص می‌کند که آیا نرخ فریم (FPS) ویدیوی تولید شده باید با نرخ فریم ویدیوی ورودی مطابقت داشته باشد یا خیر.
frames_per_second
integer
نرخ فریم (FPS) ویدیوی تولید شده. باید بین 5 تا 30 باشد.
seed
integer
یک عدد تصادفی برای تولید نتایج مختلف با پارامترهای مشابه. استفاده از یک مقدار ثابت برای درخواست‌های یکسان، نتایج مشابهی تولید می‌کند. اگر مشخص نشود، یک عدد تصادفی انتخاب می‌شود.
resolution
string
یک شمارش که در آن ضلع کوتاه فریم ویدیو، وضوح را تعیین می‌کند.
مقادیر مجاز (کلیک برای کپی):
aspect_ratio
string
نسبت تصویر ویدیوی تولید شده.
مقادیر مجاز (کلیک برای کپی):
num_inference_steps
integer
تعداد مراحل استنتاج برای نمونه‌برداری. مقادیر بالاتر کیفیت بهتری می‌دهند اما زمان بیشتری می‌برند.
guidance_scale
number
مقیاس هدایت بدون طبقه‌بندی. کنترل میزان پایبندی به دستورات / خلاقیت.
shift
number
پارامتر شیفت زمان‌بندی نویز. بر پویایی زمانی تأثیر می‌گذارد.
image_list
string
آرایه‌ای از URLهای تصویر (2-4 تصویر) برای تولید ویدیو از چند تصویر.
image_url
string
آدرس URL تصویری که به عنوان اولین فریم ویدیو استفاده می‌شود.
last_image_url
string
یک لینک مستقیم به یک تصویر آنلاین یا یک تصویر محلی با کد Base64 که به عنوان آخرین فریم ویدیو استفاده می‌شود.
enable_safety_checker
boolean
اگر روی true تنظیم شود، بررسی‌کننده ایمنی فعال می‌شود.
enable_prompt_expansion
boolean
مشخص می‌کند که آیا گسترش prompt فعال شود یا خیر.
preprocess
boolean
مشخص می‌کند که آیا ویدیوی ورودی پیش‌پردازش شود یا خیر.
acceleration
string
شتاب مورد استفاده برای استنتاج. مقادیر موجود: none یا regular.
مقادیر مجاز (کلیک برای کپی):
video_quality
string
کیفیت ویدیوی تولید شده.
مقادیر مجاز (کلیک برای کپی):
video_write_mode
string
روش مورد استفاده برای نوشتن ویدیو. مقادیر موجود: fast, balanced, small.
مقادیر مجاز (کلیک برای کپی):
num_interpolated_frames
integer
تعداد فریم‌هایی که بین فریم‌های اصلی درون‌یابی می‌شوند.
temporal_downsample_factor
integer
ضریب نمونه‌برداری زمانی برای ویدیو.
enable_auto_downsample
boolean
حداقل فریم در ثانیه برای کاهش نمونه ویدیو.
auto_downsample_min_fps
number
حداقل فریم در ثانیه برای کاهش نمونه ویدیو.
interpolator_model
string
مدل مورد استفاده برای درون‌یابی. مقادیر موجود: rife, film.
مقادیر مجاز (کلیک برای کپی):
sync_mode
boolean
حالت همگام‌سازی برای صدا و تصویر. مقادیر موجود: Loose یا tight.

نمونه کدهای درخواست

نکته مهم برای توسعه‌دهندگان:

برای احراز هویت، حتما کلید API خود را جایگزین YOUR_API_KEY کنید. هدر Authorization الزامی است.

import requests
import time

# replace <YOUR_AI-KARAPI_KEY> with your actual ای آی کار (AI-KAR) key
api_key = "<YOUR_AI-KARAPI_KEY>"
base_url = "https://api.ai-kar.com/v1"

# Creating and sending a video generation task to the server
def generate_video():
    url = f"{base_url}/video/generations"
    headers = {
        "Authorization": f"Bearer {api_key}",
    }
    data = {
        "model": "alibaba/wan2.2-vace-fun-a14b-depth",
        "video_url": "https://storage.googleapis.com/falserverless/example_inputs/wan_animate_input_video.mp4",
        "prompt": "A lone woman strides through the neon-drenched streets of Tokyo at night.  Her crimson dress, a vibrant splash of color against the deep blues and blacks of the cityscape, flows slightly with each step. A tailored black jacket, crisp and elegant, contrasts sharply with the dress's rich texture. Medium shot:  The city hums around her, blurred lights creating streaks of color in the background. Close-up:  The fabric of her dress catches the streetlight's glow, revealing a subtle silk sheen and the intricate stitching at the hem. Her black jacket’s subtle texture is visible – a fine wool perhaps, with a matte finish. The overall mood is one of quiet confidence and mystery, a vibrant woman navigating a bustling, nocturnal landscape. High resolution 4k.",
        "resolution": "720p",
    }
    response = requests.post(url, json=data, headers=headers)
    if response.status_code >= 400:
        print(f"Error: {response.status_code} - {response.text}")
    else:
        response_data = response.json()
        print(response_data)
        return response_data

# Requesting the result of the task from the server using the generation_id
def get_video(gen_id):
    url = f"{base_url}/video/generations"
    params = {
        "generation_id": gen_id,
    }
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    response = requests.get(url, params=params, headers=headers)
    return response.json()

def main():
    # Running video generation and getting a task id
    gen_response = generate_video()
    gen_id = gen_response.get("id")
    print("Generation ID:  ", gen_id)
    # Trying to retrieve the video from the server every 10 sec
    if gen_id:
        start_time = time.time()
        timeout = 600
        while time.time() - start_time < timeout:
            response_data = get_video(gen_id)
            if response_data is None:
                print("Error: No response from API")
                break
            status = response_data.get("status")
            print("Status:", status)
            if status == "waiting" or status == "active" or  status == "queued" or status == "generating":
                print("Waiting for video generation...")
                time.sleep(10)
            elif status == "completed":
                video_url = response_data.get("video", {}).get("url")
                print("Video URL:", video_url)
                break
            elif status == "failed":
                error = response_data.get("error")
                print("Error:", error)
                break
            else:
                print("Unexpected status:", status)
                break

if __name__ == "__main__":
    main()

نمونه پاسخ موفق (JSON)

RESPONSE (200 OK)
{
  "id": "60ac7c34-3224-4b14-8e7d-0aa0db708325",
  "status": "completed",
  "video": {
    "url": "#",
    "duration": 8
  },
  "duration": 8,
  "error": null,
  "meta": {
    "usage": {
      "tokens_used": 120000
    }
  }
}