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