Video Modelsalibaba-cloud

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

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

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

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

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

مدل wan2.2-vace-fun-a14b-inpainting-image-to-video یک مدل تولید ویدیو است که توسط Alibaba Cloud توسعه داده شده است. این مدل به کاربران اجازه می‌دهد تا با ترکیب یک تصویر منبع، یک ماسک (اختیاری)، و یک ویدیوی مرجع، ویدیوهایی با محتوای دلخواه تولید کنند. این مدل به ویژه برای کارهایی مانند نقاشی در ویدیو (video inpainting) مناسب است، جایی که می‌توان بخش‌هایی از ویدیو را با استفاده از ماسک مشخص کرد و سپس مدل آن بخش‌ها را با محتوای جدیدی که توسط کاربر تعیین می‌شود، جایگزین می‌کند. این مدل از طریق API قابل دسترسی است و به دو مرحله اصلی تقسیم می‌شود: ابتدا، یک درخواست تولید ویدیو به سرور ارسال می‌شود که یک شناسه تولید (generation ID) برمی‌گرداند. سپس، با استفاده از این شناسه، می‌توان وضعیت تولید ویدیو را بررسی کرد و پس از تکمیل، ویدیوی تولید شده را دانلود کرد. این مدل از پارامترهای مختلفی برای کنترل فرآیند تولید ویدیو پشتیبانی می‌کند، از جمله URL ویدیوی منبع، URL ماسک (در صورت نیاز)، متن توضیحات صحنه (prompt)، متن توضیحات عناصر منفی (negative prompt)، تعداد فریم‌های ویدیو، فریم در ثانیه (FPS)، seed برای تولید نتایج مختلف، رزولوشن ویدیو، نسبت تصویر، تعداد مراحل استنتاج (inference steps)، مقیاس راهنمایی (guidance scale) برای کنترل میزان پایبندی به prompt، و پارامترهای دیگر برای تنظیم کیفیت و سرعت تولید ویدیو. همچنین، این مدل امکان استفاده از چندین تصویر به عنوان ورودی (multi-image-to-video generation) و تعیین تصویر اول و آخر ویدیو را فراهم می‌کند. با استفاده از این مدل، کاربران می‌توانند ویدیوهایی با کیفیت بالا و با کنترل دقیق بر محتوای تولید شده ایجاد کنند. این مدل برای کاربردهای مختلفی مانند تولید محتوای تبلیغاتی، ایجاد جلوه‌های ویژه، و ترمیم ویدیوهای قدیمی مناسب است. مدل wan2.2-vace-fun-a14b-inpainting-image-to-video با ارائه امکانات پیشرفته و کنترل دقیق، به کاربران کمک می‌کند تا ویدیوهایی خلاقانه و با کیفیت تولید کنند.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
نام مدل. مقدار ثابت: alibaba/wan2.2-vace-fun-a14b-inpainting
مقادیر مجاز (کلیک برای کپی):
video_url
stringRequired
URL به فایل ویدیوی منبع. برای inpainting الزامی است.
mask_video_url
string
URL به فایل ماسک منبع. برای inpainting الزامی است.
mask_image_url
string
URL به فایل ماسک راهنما. اگر ارائه شود، مدل از این ماسک به عنوان مرجع برای ایجاد ویدیوی ماسک شده با استفاده از ردیابی ماسک برجسته استفاده می‌کند. اگر mask_video_url ارائه شود، نادیده گرفته می‌شود.
prompt
stringRequired
توضیحات متنی صحنه، موضوع یا عملی که می‌خواهید در ویدیو تولید شود.
negative_prompt
string
توضیحات عناصری که باید در ویدیوی تولید شده از آنها اجتناب شود.
match_input_num_frames
boolean
تعداد فریم های ویدیو ورودی را با خروجی تطبیق دهد.
num_frames
integer
تعداد فریم‌هایی که باید تولید شوند. حداقل: 81، حداکثر: 241. مقدار پیش‌فرض: 81
match_input_frames_per_second
boolean
آیا فریم در ثانیه (FPS) ویدیوی ورودی را مطابقت دهد.
frames_per_second
integer
فریم در ثانیه ویدیوی تولید شده. حداقل: 5، حداکثر: 30. مقدار پیش‌فرض: 16
seed
integer
تغییر عدد seed راهی برای دریافت نتایج مختلف برای سایر پارامترهای درخواست است. استفاده از مقدار یکسان برای یک درخواست یکسان نتایج مشابهی ایجاد می‌کند. اگر مشخص نشود، یک عدد تصادفی انتخاب می‌شود.
resolution
string
یک شمارش که در آن ضلع کوتاه فریم ویدیو، رزولوشن را تعیین می‌کند. مقدار پیش‌فرض: auto
مقادیر مجاز (کلیک برای کپی):
aspect_ratio
string
نسبت تصویر ویدیوی تولید شده. مقدار پیش‌فرض: auto
مقادیر مجاز (کلیک برای کپی):
num_inference_steps
integer
تعداد مراحل استنتاج برای نمونه‌برداری. مقادیر بالاتر کیفیت بهتری می‌دهند اما زمان بیشتری می‌برند. مقدار پیش‌فرض: 30
guidance_scale
number
مقیاس راهنمایی بدون طبقه‌بندی. میزان پایبندی به prompt / خلاقیت را کنترل می‌کند. مقدار پیش‌فرض: 5
shift
number
پارامتر شیفت برنامه نویز. بر پویایی زمانی تأثیر می‌گذارد. مقدار پیش‌فرض: 5
image_list
string · uri[]
آرایه‌ای از 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
شتاب برای استفاده در استنتاج. مقدار پیش‌فرض: regular
مقادیر مجاز (کلیک برای کپی):
video_quality
string
کیفیت ویدیوی تولید شده. مقدار پیش‌فرض: high
مقادیر مجاز (کلیک برای کپی):
video_write_mode
string
روش استفاده شده برای نوشتن ویدیو. مقدار پیش‌فرض: balanced
مقادیر مجاز (کلیک برای کپی):
num_interpolated_frames
integer
تعداد فریم هایی که بین فریم های اصلی درون یابی می شوند.
temporal_downsample_factor
integer
فاکتور نمونه برداری زمانی برای ویدیو.
enable_auto_downsample
boolean
حداقل فریم در ثانیه برای کاهش نمونه ویدیو.
auto_downsample_min_fps
number
حداقل فریم در ثانیه برای کاهش نمونه ویدیو. مقدار پیش فرض: 15
interpolator_model
string
مدلی که برای درون یابی استفاده می شود. Rife یا film در دسترس هستند. مقدار پیش فرض: 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}",
        "Content-Type": "application/json"
    }
    data = {
        "model": "alibaba/wan2.2-vace-fun-a14b-inpainting",
        "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['id']

    # Polling the server until the video generation task is completed
    while True:
        video_response = get_video(gen_id)
        status = video_response['status']
        if status == 'completed':
            video_url = video_response['video']['url']
            print(f"Video generated successfully. URL: {video_url}")
            break
        elif status == 'failed':
            print("Video generation failed.")
            break
        else:
            print(f"Video generation status: {status}. Waiting...")
            time.sleep(10)  # Wait for 10 seconds before polling again

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