Video Modelsalibaba-cloud

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

مستندات مدل تولید ویدیو از تصویر و ماسک wan2.2-vace-fun-a14b-outpainting-image-to-video از ای آی کار (AI-KAR)

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

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

این مدل از زبان فارسی به صورت ضعیف پشتیبانی می‌کند. برای دریافت بهترین نتیجه، استفاده از prompt های انگلیسی توصیه می‌شود.

مدل wan2.2-vace-fun-a14b-outpainting-image-to-video یک مدل تولید ویدیو است که توسط Alibaba Cloud توسعه داده شده است. این مدل به کاربران امکان می‌دهد تا با ترکیب یک تصویر منبع، یک ماسک و یک ویدیوی مرجع، ویدیوهای درخواستی را با کنترل دقیق بر روی منبع تولید کنند. به عبارت دیگر، شما می‌توانید یک تصویر ثابت را به عنوان نقطه شروع قرار دهید، سپس با استفاده از یک ماسک، مشخص کنید که کدام قسمت‌های تصویر باید تغییر کنند و در نهایت با ارائه یک ویدیوی مرجع، به مدل بگویید که چگونه این تغییرات را اعمال کند تا یک ویدیوی جدید و جذاب تولید شود.

این مدل برای کاربردهای مختلفی مناسب است. به عنوان مثال، می‌توانید از آن برای ایجاد جلوه‌های ویژه در ویدیوها، تغییر پس‌زمینه تصاویر، متحرک‌سازی تصاویر ثابت، و یا حتی تولید ویدیوهای تبلیغاتی خلاقانه استفاده کنید. یکی از ویژگی‌های برجسته این مدل، توانایی آن در حفظ جزئیات و کیفیت تصویر اصلی است. به این معنی که حتی پس از اعمال تغییرات و تولید ویدیو، تصویر نهایی همچنان واضح و با کیفیت خواهد بود.

برای استفاده از این مدل، شما باید یک تصویر منبع، یک ماسک و یک ویدیوی مرجع را به عنوان ورودی به مدل ارائه دهید. تصویر منبع، تصویری است که می‌خواهید آن را به ویدیو تبدیل کنید. ماسک، تصویری است که مشخص می‌کند کدام قسمت‌های تصویر منبع باید تغییر کنند. ویدیوی مرجع، ویدیویی است که به مدل نشان می‌دهد چگونه این تغییرات را اعمال کند. همچنین، شما می‌توانید یک متن توصیفی (prompt) را به مدل ارائه دهید تا به آن کمک کند تا ویدیوی مورد نظر شما را بهتر درک کند و تولید کند.

این مدل از پارامترهای مختلفی برای کنترل فرآیند تولید ویدیو پشتیبانی می‌کند. به عنوان مثال، شما می‌توانید تعداد فریم‌های ویدیو، نرخ فریم در ثانیه، وضوح تصویر، نسبت تصویر و سایر تنظیمات را تغییر دهید. همچنین، می‌توانید از پارامترهای پیشرفته‌تری مانند مقیاس هدایت (guidance scale) و تعداد مراحل استنتاج (num_inference_steps) برای بهبود کیفیت ویدیو استفاده کنید.

در نهایت، مدل wan2.2-vace-fun-a14b-outpainting-image-to-video یک ابزار قدرتمند و انعطاف‌پذیر برای تولید ویدیوهای خلاقانه و جذاب است. با استفاده از این مدل، شما می‌توانید تصاویر ثابت خود را به ویدیوهای پویا و چشم‌نواز تبدیل کنید و ایده‌های خلاقانه خود را به واقعیت تبدیل کنید. این مدل به ویژه برای تولیدکنندگان محتوا، هنرمندان دیجیتال و بازاریابان که به دنبال راه‌های جدیدی برای جذب مخاطب هستند، بسیار مفید است.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
نام مدل. مقدار ثابت: alibaba/wan2.2-vace-fun-a14b-outpainting
مقادیر مجاز (کلیک برای کپی):
video_url
stringRequired
آدرس URL فایل ویدیویی منبع. برای outpainting مورد نیاز است.
expand_left
boolean
آیا ویدیو به سمت چپ گسترش یابد؟
expand_right
boolean
آیا ویدیو به سمت راست گسترش یابد؟
expand_top
boolean
آیا ویدیو به سمت بالا گسترش یابد؟
expand_bottom
boolean
آیا ویدیو به سمت پایین گسترش یابد؟
expand_ratio
number
مقدار گسترش. این یک مقدار اعشاری بین 0 و 1 است، جایی که 0.25 مقدار 25٪ را به اندازه ویدیوی اصلی در طرف های مشخص شده اضافه می کند.
prompt
stringRequired
توضیحات متنی صحنه، موضوع یا عملی که باید در ویدیو ایجاد شود.
negative_prompt
string
توضیحات عناصری که باید در ویدیوی تولید شده از آنها اجتناب شود.
match_input_num_frames
boolean
تعداد فریم ها
num_frames
integer
تعداد فریم هایی که باید تولید شوند.
match_input_frames_per_second
boolean
آیا فریم در ثانیه (FPS) ویدیوی ورودی مطابقت داده شود؟
frames_per_second
integer
فریم در ثانیه ویدیوی تولید شده.
seed
integer
تغییر عدد seed راهی برای به دست آوردن نتایج مختلف برای سایر پارامترهای درخواست است. استفاده از مقدار یکسان برای یک درخواست مشابه نتایج مشابهی را تولید می کند. اگر مشخص نشده باشد، یک عدد تصادفی انتخاب می شود.
resolution
string
شمارشی که در آن ضلع کوتاه فریم ویدیو، وضوح را تعیین می کند.
مقادیر مجاز (کلیک برای کپی):
aspect_ratio
string
نسبت تصویر ویدیوی تولید شده.
مقادیر مجاز (کلیک برای کپی):
num_inference_steps
integer
تعداد مراحل استنتاج برای نمونه برداری. مقادیر بالاتر کیفیت بهتری می دهند اما زمان بیشتری می برند.
guidance_scale
number
مقیاس هدایت بدون طبقه بندی. میزان پایبندی به prompt / خلاقیت را کنترل می کند.
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
شتاب برای استفاده برای استنتاج.
مقادیر مجاز (کلیک برای کپی):
video_quality
string
کیفیت ویدیوی تولید شده.
مقادیر مجاز (کلیک برای کپی):
video_write_mode
string
روش مورد استفاده برای نوشتن ویدیو.
مقادیر مجاز (کلیک برای کپی):
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-outpainting",
        "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()

# Main function to generate and retrieve the video
def main():
    # Generate the video
    generation_data = generate_video()
    if generation_data and "id" in generation_data:
        generation_id = generation_data["id"]
        print(f"Generation ID: {generation_id}")

        # Poll for the video until it's complete
        while True:
            video_data = get_video(generation_id)
            status = video_data.get("status")

            if status == "completed":
                video_url = video_data.get("video", {}).get("url")
                print(f"Video URL: {video_url}")
                break
            elif status == "failed":
                print("Video generation failed.")
                break
            else:
                print("Video is still being generated...")
                time.sleep(10)  # Wait for 10 seconds before polling again
    else:
        print("Failed to start video generation.")

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
    }
  }
}