Video Modelspixverse

معرفی و مستندات مدل هوش مصنوعی v5-image-to-video

مستندات مدل v5-image-to-video از pixverse، ارائه شده توسط ای آی کار (AI-KAR).

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

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

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

مدل v5-image-to-video از pixverse یک مدل هوش مصنوعی است که توسط ای آی کار (AI-KAR) ارائه شده و برای تولید ویدیو از روی یک تصویر ورودی طراحی شده است. این مدل با استفاده از تکنیک‌های پیشرفته یادگیری عمیق، قادر است تا با دریافت یک تصویر و یک توضیح متنی (prompt)، ویدیویی با کیفیت بالا و با جزئیات دقیق تولید کند. این مدل به طور خاص برای ارائه رندرینگ سریع‌تر تصویر به ویدیو با نتایج واضح، واقع‌گرایانه و سینمایی طراحی شده است.

یکی از ویژگی‌های برجسته این مدل، توانایی آن در حفظ کیفیت بصری در طول فرآیند تبدیل تصویر به ویدیو است. این بدان معناست که ویدیوی تولید شده نه تنها از نظر محتوایی با تصویر و متن ورودی مطابقت دارد، بلکه از نظر کیفیت نیز در سطح بالایی قرار دارد. این امر به ویژه برای کاربردهایی که کیفیت ویدیو اهمیت زیادی دارد، مانند تولید محتوای تبلیغاتی، آموزشی و سرگرمی، بسیار مهم است.

مدل v5-image-to-video از pixverse قابلیت‌های متنوعی را در اختیار کاربران قرار می‌دهد. کاربران می‌توانند با استفاده از پارامترهای مختلف، جنبه‌های مختلف ویدیو را کنترل کنند. به عنوان مثال، می‌توان نسبت تصویر (aspect ratio)، رزولوشن (resolution) و مدت زمان (duration) ویدیو را تنظیم کرد. همچنین، امکان تعیین یک توضیح منفی (negative prompt) برای جلوگیری از نمایش عناصر ناخواسته در ویدیو وجود دارد. علاوه بر این، کاربران می‌توانند سبک (style) ویدیو را نیز انتخاب کنند که شامل سبک‌های مختلفی مانند انیمه، انیمیشن سه بعدی، خمیری، کمیک و سایبرپانک می‌شود.

یکی دیگر از ویژگی‌های مهم این مدل، امکان استفاده از seed است. با تغییر مقدار seed، می‌توان نتایج متفاوتی را برای یک درخواست مشابه به دست آورد. این امر به کاربران این امکان را می‌دهد تا با آزمایش مقادیر مختلف seed، ویدیویی را تولید کنند که دقیقاً با نیازهای آن‌ها مطابقت داشته باشد. اگر مقدار seed مشخص نشود، یک عدد تصادفی انتخاب می‌شود.

برای استفاده از این مدل، کاربران باید ابتدا یک کلید API از ای آی کار (AI-KAR) دریافت کنند. سپس، با استفاده از API ارائه شده، می‌توانند درخواست‌های تولید ویدیو را به سرور ارسال کنند. فرآیند تولید ویدیو شامل دو مرحله است: ابتدا یک درخواست ایجاد و ارسال می‌شود که یک شناسه تولید (generation ID) را برمی‌گرداند. سپس، با استفاده از این شناسه، می‌توان وضعیت تولید ویدیو را بررسی کرد و در صورت تکمیل، ویدیوی تولید شده را دریافت کرد. این مدل برای کاربردهای گوناگونی از جمله تولید محتوای شبکه‌های اجتماعی، ساخت ویدیوهای تبلیغاتی، تولید محتوای آموزشی و ساخت جلوه‌های ویژه در فیلم‌ها و بازی‌ها مناسب است.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدل مورد استفاده برای تولید ویدیو. مقدار این پارامتر باید `pixverse/v5/image-to-video` باشد.
مقادیر مجاز (کلیک برای کپی):
image_url
stringRequired
آدرس اینترنتی (URL) تصویری که به عنوان فریم اول ویدیو استفاده می‌شود.
prompt
stringRequired
توضیح متنی صحنه، موضوع یا عملی که می‌خواهید در ویدیو تولید شود.
aspect_ratio
string
نسبت تصویر ویدیوی تولید شده. مقدار پیش‌فرض `16:9` است.
مقادیر مجاز (کلیک برای کپی):
resolution
string
رزولوشن ویدیوی تولید شده. مقدار پیش‌فرض `720p` است. این مقدار تعیین می‌کند که ضلع کوچک‌تر ویدیو چه رزولوشنی داشته باشد.
مقادیر مجاز (کلیک برای کپی):
duration
integer
مدت زمان ویدیوی خروجی به ثانیه. گزینه کیفیت 1080p از ویدیوهای 8 ثانیه‌ای پشتیبانی نمی‌کند.
مقادیر مجاز (کلیک برای کپی):
negative_prompt
string
توضیح عناصری که باید از نمایش در ویدیوی تولید شده اجتناب شود.
style
string
سبک ویدیوی تولید شده.
مقادیر مجاز (کلیک برای کپی):
seed
integer
تغییر عدد seed راهی برای به دست آوردن نتایج مختلف برای سایر پارامترهای درخواست یکسان است. استفاده از مقدار یکسان برای یک درخواست یکسان نتایج مشابهی را تولید می‌کند. اگر مشخص نشده باشد، یک عدد تصادفی انتخاب می‌شود.

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

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

برای احراز هویت، حتما کلید 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}/generate/video/pixverse/generation"
    headers = {
        "Authorization": f"Bearer {api_key}",
    }
    data = {
        "model": "pixverse/v5/image-to-video",
        "prompt": "Mona Lisa puts on glasses with her hands.",
        "image_url": "https://s2-111386.kwimgs.com/bs2/mmu-aiplatform-temp/kling/20240620/1.jpeg",
        "duration": 5
    }
    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}/generate/video/pixverse/generation"
    params = {
        "generation_id": gen_id,
    }
    # Insert your AI-KAR API Key instead of <YOUR_AI-KARAPI_KEY>:
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    response = requests.get(url, params=params, headers=headers)
    # print("Generation:", response.json())
    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("Still waiting... Checking again in 10 seconds.")
                time.sleep(10)
            else:
                print("Processing complete:/n", response_data)
                return response_data
        print("Timeout reached. Stopping.")
        return None

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