# LLaVa-NeXT-Video

## نظرة عامة

قُدِّم نموذج LLaVa-NeXT-Video في [LLaVA-NeXT: A Strong Zero-shot Video Understanding Model](https://llava-vl.github.io/blog/2024-04-30-llava-next-video/) من قِبل Yuanhan Zhang وBo Li وHaotian Liu وYong Jae Lee وLiangke Gui وDi Fu وJiashi Feng وZiwei Liu وChunyuan Li. يحسّن LLaVa-NeXT-Video أداء [LLaVa-NeXT](llava_next) من خلال الضبط الدقيق على مزيج من مجموعات بيانات الفيديو والصور، مما يزيد من أداء النموذج على مقاطع الفيديو.

يُفاجئ [LLaVA-NeXT](llava_next) بقدرته القوية على فهم محتوى الفيديو بطريقة zero-shot بفضل تقنية AnyRes التي يستخدمها. تمثّل تقنية AnyRes بشكل طبيعي صورة عالية الدقة في عدة صور. هذه التقنية قابلة للتعميم بشكل طبيعي لتمثيل مقاطع الفيديو، إذ يمكن اعتبار الفيديو مجموعة من الإطارات (بمشابهة مجموعة الصور في LLaVa-NeXT). يستفيد الإصدار الحالي من LLaVA-NeXT من تقنية AnyRes، ويُدرب باستخدام الضبط الدقيق الإشرافي (SFT) فوق LLaVA-Next على بيانات الفيديو لتحقيق قدرات أفضل في فهم الفيديو. يُعدّ هذا النموذج حالياً من أفضل النماذج مفتوحة المصدر على [VideoMME bench](https://huggingface.co/papers/2405.21075).

المقدمة من المدونة هي كالتالي:

في 30 يناير 2024، أطلقنا LLaVA-NeXT، وهو نموذج متعدد الوسائط كبير (LMM) مفتوح المصدر تم تدريبه حصريًا على بيانات النص والصورة. بفضل تقنية AnyRes المقترحة، يعزز القدرات في الاستدلال، والتعرف الضوئي على الحروف (OCR)، والمعرفة العالمية، مما يُظهر أداءً ملحوظًا عبر طيف واسع من مهام فهم الوسائط المتعددة القائمة على الصور، بل ويتجاوز Gemini-Pro في عدة معايير تقييم للصور، مثل MMMU وMathVista.

**في استكشافنا اليوم، نتعمق في أداء LLaVA-NeXT في مجال مهام فهم الفيديو. نكشف عن أن LLaVA-NeXT يتمتع بشكل مفاجئ بأداء قوي في فهم محتوى الفيديو. تتضمن النسخة الحالية من LLaVA-NeXT للفيديو عدة تحسينات:**

- قدرات تمثيل الفيديو بدون تدريب مسبق باستخدام AnyRes: تقنية AnyRes تمثّل بشكل طبيعي صورة عالية الدقة في عدة صور يمكن لنموذج VIT المُدرَّب مسبقًا معالجتها، ثم تُشكّلها في تسلسل مُدمج. هذه التقنية قابلة للتعميم بشكل طبيعي لتمثيل مقاطع الفيديو (المكوّنة من عدة إطارات)، مما يتيح لنموذج LLaVA-Next المُدرَّب على الصور فقط أداءً مفاجئًا في مهام الفيديو. ومن اللافت للنظر أن هذه هي المرة الأولى التي تُظهر فيها نماذج LMMs قدرة قوية على التحويل بين الوسائط بدون تدريب مسبق.
- تحسّن الاستدلال مع التعميم الطويل في مقاطع الفيديو الأطول. تتيح تقنية التوسع الخطي التعميم الطويل، مما يسمح لـ LLaVA-NeXT بمعالجة مقاطع الفيديو الطويلة بفعالية تتجاوز حد "max_token_length" الخاص بنموذج اللغة.
- قدرة قوية على فهم الفيديو. (1) LLaVA-Next-Image، الذي يجمع بين التقنيتين المذكورتين أعلاه، يحقق أداءً فوريًا (zero-shot) متفوقًا مقارنةً بنماذج LMM مفتوحة المصدر المُعدَّلة على بيانات الفيديو. (2) LLaVA-Next-Video، الذي يخضع LLaVA-Next-Image لضبط دقيق مُشرف (SFT) على بيانات الفيديو، يحقق قدرات أفضل في فهم الفيديو مقارنةً بـ LLaVA-Next-Image. (3) LLaVA-Next-Video-DPO، الذي يحاكي استجابة النموذج مع ملاحظات الذكاء الاصطناعي باستخدام التحسين المباشر للتفضيلات (DPO)، مما يُظهر تحسّنًا كبيرًا في الأداء.
- نشر واستدلال فعّالان باستخدام SGLang. يتيح ذلك استدلالاً أسرع بخمس مرات في مهام الفيديو، مما يسمح بخدمة قابلة للتوسع أكثر، مثل إعادة تسمية ملايين مقاطع الفيديو. راجع التعليمات في مستودعنا.

تمت مساهمة هذا النموذج من قِبل [RaushanTurganbay](https://huggingface.co/RaushanTurganbay). يمكن العثور على الكود الأصلي [هنا](https://github.com/LLaVA-VL/LLaVA-NeXT/tree/inference).

## نصائح للاستخدام

- ننصح المستخدمين باستخدام `padding_side="left"` عند حساب التوليد المجمّع، إذ يؤدي ذلك إلى نتائج أكثر دقة. ما عليك سوى التأكد من استدعاء `processor.tokenizer.padding_side = "left"` قبل التوليد.

- يستخدم Llava-Next عددًا مختلفًا من البقع (patches) للصور، وبالتالي يجب عليه ملء المدخلات داخل كود النمذجة، إلى جانب عملية الملء التي تتم عند معالجة المدخلات. الإعداد الافتراضي هو "left-padding" إذا كان النموذج في وضع `eval()`، وإلا فهو "right-padding".

> [!NOTE]
> ستُصدر نماذج LLaVA بعد الإصدار v4.46 تحذيرات بشأن إضافة `processor.patch_size = {{patch_size}}` و`processor.num_additional_image_tokens = {{num_additional_image_tokens}}` و`processor.vision_feature_select_strategy = {{vision_feature_select_strategy}}`. يُوصى بشدة بإضافة هذه السمات إلى المعالج إذا كنت تمتلك نقطة التفتيش للنموذج، أو فتح طلب سحب (PR) إذا لم تكن تمتلكها.
إضافة هذه السمات تعني أن LLaVA سيحاول استنتاج عدد رموز الصور المطلوبة لكل صورة وتوسيع النص بعدد من العناوين الوهمية `<image>` مساوٍ لعدد الرموز. عادةً يكون العدد حوالي 500 رمز لكل صورة، لذا تأكد من عدم اقتطاع النص، وإلا فسيحدث فشل عند دمج التضمينات. يمكن الحصول على السمات من إعدادات النموذج، مثل `model.config.vision_config.patch_size` أو `model.config.vision_feature_select_strategy`. يجب أن يكون `num_additional_image_tokens` بقيمة `1` إذا أضاف العمود الفقري البصري رمز CLS، أو `0` إذا لم يُضف أي شيء إضافي إلى رقعات الرؤية.

### تنسيق الموجهات باستخدام قوالب المحادثة  

يتم تدريب كل **نقطة تحقق** باستخدام تنسيق محدد للموجّه، وذلك تبعًا لنموذج اللغة الكبير الأساسي. ولضمان التنسيق الصحيح، استخدم طريقة `apply_chat_template` الخاصة بالمعالج.

**مهم:**

- يجب عليك بناء سجل محادثة — لن يعمل تمرير نص عادي.
- يجب أن يكون كل رسالة قاموسًا بمفاتيح `"role"` و`"content"`.
- يجب أن يكون `"content"` قائمة من القواميس (dictionaries) للأنماط (modalities) المختلفة مثل `"text"` و`"image"`.

فيما يلي مثال على كيفية هيكلة مدخلاتك. سنستخدم [LLaVA-NeXT-Video-7B-hf](https://huggingface.co/llava-hf/LLaVA-NeXT-Video-7B-hf) وسجل محادثة يتضمن مقاطع فيديو وصورًا.

```python
from transformers import LlavaNextVideoProcessor

processor = LlavaNextVideoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")

conversation = [
    {
        "role": "system",
        "content": [
            {"type": "text", "text": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions."},
            ],
    },
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "What’s shown in this image?"},
            {"type": "image"},
            ],
    },
    {
        "role": "assistant",
        "content": [{"type": "text", "text": "This image shows a red stop sign."},]
    },
    {

        "role": "user",
        "content": [
            {"type": "text", "text": "Why is this video funny?"},
            {"type": "video"},
            ],
    },
]

text_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)

# Note that the template simply formats your prompt, you still have to tokenize it and obtain pixel values for your visuals
print(text_prompt)
```

🚀 **مكافأة إضافية:** إذا كنت تستخدم `transformers>=4.49.0`، يمكنك أيضًا الحصول على مخرجات متجهية من `apply_chat_template`. راجع **أمثلة الاستخدام** أدناه لمزيد من التفاصيل حول كيفية استخدامه.

## مثال على الاستخدام

### وضع وسائط واحد

يمكن للنموذج قبول كل من الصور والفيديوهات كمدخلات. فيما يلي مثال على الكود للاستدلال بدقة نصفية (`torch.float16`):

```python
from huggingface_hub import hf_hub_download

from transformers import LlavaNextVideoForConditionalGeneration, LlavaNextVideoProcessor

# Load the model in half-precision
model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", device_map="auto")
processor = LlavaNextVideoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")

# Load the video as an np.array, sampling uniformly 8 frames (can sample more for longer videos)
video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")

conversation = [
    {

        "role": "user",
        "content": [
            {"type": "text", "text": "Why is this video funny?"},
            {"type": "video", "path": video_path},
            ],
    },
]

inputs = processor.apply_chat_template(conversation, num_frames=8, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt").to(model.device)

out = model.generate(**inputs, max_new_tokens=60)
processor.batch_decode(out, skip_special_tokens=True, clean_up_tokenization_spaces=True)
```

### وضع الوسائط المختلطة

يمكن للنموذج أيضاً توليد مخرجات من مدخلات صور وفيديوهات متناوبة. ومع ذلك، يُرجى ملاحظة أنه لم يتم تدريبه في إعداد الصور والفيديوهات المتناوبة، مما قد يؤثر على الأداء. فيما يلي مثال على الاستخدام لمدخلات وسائط مختلطة، أضف الأسطر التالية إلى مقتطف الشيفرة أعلاه:

```python

# Generate from image and video mixed inputs
conversation = [
    {

        "role": "user",
        "content": [
            {"type": "text", "text": "How many cats are there in the image?"},
            {"type": "image", "url": "http://images.cocodataset.org/val2017/000000039769.jpg"},
            ],
    },
    {

        "role": "assistant",
        "content": [{"type": "text", "text": "There are two cats"}],
    },
    {

        "role": "user",
        "content": [
            {"type": "text", "text": "Why is this video funny?"},
            {"type": "video", "path": video_path},
            ],
    },
]
inputs = processor.apply_chat_template(conversation, num_frames=8, add_generation_prompt=True, tokenize=True, return_dict=True, padding=True, return_tensors="pt").to(model.device)

# Generate
generate_ids = model.generate(**inputs, max_length=50)
processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)

```

## تحسين النموذج

### التكميم باستخدام Bitsandbytes لكفاءة استخدام الذاكرة

يمكن تحميل النموذج بعدد أقل من البتات، مما يقلل العبء على الذاكرة بشكل كبير مع الحفاظ على أداء النموذج الأصلي. وهذا يتيح النشر بكفاءة في الحالات التي تكون فيها الموارد محدودة.

أولاً، تأكد من تثبيت bitsandbytes عبر تشغيل `pip install bitsandbytes` ولديك وصول إلى وحدة معالجة رسومية/مسرّع مدعوم من قبل المكتبة.

يخضع bitsandbytes لإعادة هيكلة لدعم واجهات خلفية متعددة تتجاوز CUDA. حالياً، نضجت تطبيقات ROCm (لوحات AMD GPU) وIntel CPU، بينما جارٍ العمل على Intel XPU، ومن المتوقع دعم Apple Silicon بحلول الربع الرابع/الربع الأول. للحصول على تعليمات التثبيت وآخر تحديثات الواجهات الخلفية، زر [هذا الرابط](https://huggingface.co/docs/bitsandbytes/main/en/installation#multi-backend).

نقدّر ملاحظاتكم للمساعدة في تحديد الأخطاء قبل الإطلاق الكامل! راجعوا [هذه الوثائق](https://huggingface.co/docs/bitsandbytes/main/en/non_cuda_backends) لمزيد من التفاصيل وروابط تقديم الملاحظات.

ثم ما عليك سوى تحميل النموذج المُكمَّم بإضافة [BitsAndBytesConfig](/docs/transformers/main/ar/main_classes/quantization#transformers.BitsAndBytesConfig) كما هو موضح أدناه:

```python
from transformers import LlavaNextVideoForConditionalGeneration

# specify how to quantize the model
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
)

model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", quantization_config=quantization_config, device_map="auto")
```

### Flash-Attention 2 لتسريع عملية التوليد

علاوة على ذلك، يمكننا تسريع استنتاج النموذج بشكل كبير من خلال استخدام [Flash Attention](../kernel_doc/loading_kernels#attention-kernels)، وهو تنفيذ أسرع لآلية الانتباه المستخدمة داخل النموذج.

أولاً، تأكد من تثبيت أحدث إصدار من Flash Attention 2:

```bash
pip install -U flash-attn --no-build-isolation
```

كما يجب أن يكون لديك عتاد متوافق مع Flash-Attention 2. اقرأ المزيد حول ذلك في التوثيق الرسمي لـ [مستودع flash attention](https://github.com/Dao-AILab/flash-attention). لا يمكن استخدام FlashAttention-2 إلا عند تحميل النموذج في `torch.float16` أو `torch.bfloat16`.

لتحميل نموذج وتشغيله باستخدام Flash Attention-2، ما عليك سوى إضافة `attn_implementation="flash_attention_2"` عند تحميل النموذج على النحو التالي:

```python
from transformers import LlavaNextVideoForConditionalGeneration

model = LlavaNextVideoForConditionalGeneration.from_pretrained(
    "llava-hf/LLaVA-NeXT-Video-7B-hf", , 
    attn_implementation="flash_attention_2",
).to(0, device_map="auto")
```

## LlavaNextVideoConfig[[transformers.LlavaNextVideoConfig]]

#### transformers.LlavaNextVideoConfig[[transformers.LlavaNextVideoConfig]]

```python
transformers.LlavaNextVideoConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, image_token_index: int = 32001, video_token_index: int = 32000, projector_hidden_act: str = 'gelu', vision_feature_select_strategy: typing.Literal['default', 'full'] = 'default', vision_feature_layer: int | list[int] = -2, multimodal_projector_bias: bool = True, tie_word_embeddings: bool = False, image_grid_pinpoints: list | None = None, spatial_pool_mode: str = 'average', spatial_pool_stride: int = 2, image_seq_length: int = 576, video_seq_length: int = 288)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/configuration_llava_next_video.py#L32)

**المعاملات:**

vision_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : كائن الإعداد أو قاموس العمود الفقري البصري.

text_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : كائن الإعداد أو قاموس العمود الفقري النصي.

image_token_index (`int`، *اختياري*، القيمة الافتراضية `32001`) : فهرس رمز الصورة المستخدم كعنصر نائب لصور الإدخال.

video_token_index (`int`، *اختياري*، القيمة الافتراضية `32000`) : فهرس رمز الفيديو المستخدم كعنصر نائب لفيديوهات الإدخال.

projector_hidden_act (`str`، *اختياري*، القيمة الافتراضية هي `gelu`) : دالة التنشيط المستخدمة في المُشغِّل متعدد الوسائط.

vision_feature_select_strategy (`Literal[default, full]`، *اختياري*، الافتراضي `default`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من العمود الفقري البصري.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*، القيمة الافتراضية `-2`) : فهرس الطبقة التي يتم اختيار ميزات الرؤية منها. إذا تم تقديم عدة فهارس، فسيتم دمج ميزات الرؤية المقابلة لتلك الفهارس لتكوين ميزات الرؤية.

multimodal_projector_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام الانحياز في المُسقط متعدد الوسائط.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

image_grid_pinpoints (`List`، *اختياري*، الافتراضي `[[336, 672], [672, 336], [672, 672], [1008, 336], [336, 1008]]`) : قائمة بالدقات الممكنة للاستخدام في معالجة الصور عالية الدقة. يجب أن يكون كل عنصر في القائمة على شكل مجموعة (tuple) أو قائمة بالصيغة `(height, width)`.

spatial_pool_mode (`str`، *اختياري*، القيمة الافتراضية `"average"`) : وضع التجميع (Pooling) المستخدم للفيديوهات. يمكن أن يكون "average" أو "max" أو "conv".

spatial_pool_stride (`int`، *اختياري*، القيمة الافتراضية 2) : الخطوة المستخدمة في طبقة التجميع للفيديوهات.

image_seq_length (`int`، *اختياري*، القيمة الافتراضية `576`) : طول تسلسل تضمين صورة واحدة.

video_seq_length (`int`، *اختياري*، القيمة الافتراضية `288`) : طول تسلسل تضمين فيديو واحد.

هذه فئة الإعدادات المخزنة لإعدادات نموذج LlavaNextVideoModel. تُستخدم لاستحداث نموذج Llava Next Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ [llava-hf/LLaVA-NeXT-Video-7B-hf](https://huggingface.co/llava-hf/LLaVA-NeXT-Video-7B-hf)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import LlavaNextVideoForConditionalGeneration, LlavaNextVideoConfig, CLIPVisionConfig, LlamaConfig

>>> # Initializing a CLIP-vision config
>>> vision_config = CLIPVisionConfig()

>>> # Initializing a Llama config
>>> text_config = LlamaConfig()

>>> configuration = LlavaNextVideoConfig(vision_config, text_config)

>>> model = LlavaNextVideoForConditionalGeneration(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## LlavaNextVideoProcessor[[transformers.LlavaNextVideoProcessor]]

#### transformers.LlavaNextVideoProcessor[[transformers.LlavaNextVideoProcessor]]

```python
transformers.LlavaNextVideoProcessor(video_processor = None, image_processor = None, tokenizer = None, chat_template = None, patch_size = None, vision_feature_select_strategy = None, video_token = '<video>', image_token = '<image>', num_additional_image_tokens = 0, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/processing_llava_next_video.py#L42)

**المعاملات:**

video_processor (`LlavaNextVideoVideoProcessor`) : معالج الفيديو هو مدخل مطلوب.

image_processor (`LlavaNextImageProcessor`) : مُعالج الصور هو مدخل مطلوب.

tokenizer (`tokenizer_class`) : مُجزِّئ النص (tokenizer) هو مدخل إلزامي.

chat_template (`str`) : قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتحويم.

patch_size (`int`، *اختياري*) : حجم البقعة من برج الرؤية.

vision_feature_select_strategy (`str`، *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من العمود الفقري البصري. يجب أن تكون مطابقة لتلك الموجودة في إعدادات النموذج

video_token (`str`، *اختياري*، القيمة الافتراضية `"<video>"`) : الرمز الخاص المستخدم للإشارة إلى موقع الفيديو.

image_token (`str`، *اختياري*، القيمة الافتراضية `"<image>"`) : الرمز الخاص المستخدم للإشارة إلى موقع الصورة.

num_additional_image_tokens (`int`، *اختياري*، القيمة الافتراضية 0) : عدد الرموز الإضافية المضافة إلى تمثيلات الصورة، مثل CLS (+1). إذا لم يكن للعمود الفقري أي رمز CLS أو رموز إضافية أخرى مرفقة، فلا حاجة إلى تعيين هذا الحجة.

ينشئ LlavaNextVideoProcessor الذي يجمع معالج فيديو ومعالج صور ومُرمِّز في معالج واحد.

يوفر [LlavaNextVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoProcessor) جميع وظائف [LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor) و[LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) و`tokenizer_class`. راجع [~LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor) و[~LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) و`~tokenizer_class` لمزيد من المعلومات.

## LlavaNextVideoVideoProcessor[[transformers.LlavaNextVideoVideoProcessor]]

#### transformers.LlavaNextVideoVideoProcessor[[transformers.LlavaNextVideoVideoProcessor]]

```python
transformers.LlavaNextVideoVideoProcessor(**kwargs: *<class 'transformers.processing_utils.VideosKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/video_processing_llava_next_video.py#L22)

**المعاملات:**

do_convert_rgb (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'shortest_edge' : 224}`): يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم افتراض صورة مربعة عند تغيير الحجم، إذا كان size من نوع int.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `3`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

do_rescale (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*، القيمة الافتراضية هي `0.00392156862745098`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطاً على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *اختياري*، القيمة الافتراضية هي `[0.48145466, 0.4578275, 0.40821073]`) : متوسط الصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *اختياري*، القيمة الافتراضية هي `[0.26862954, 0.26130258, 0.27577711]`) : انحراف معيار الصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_center_crop (`bool`, *kwargs*, *اختياري*, القيمة الافتراضية هي `True`) : ما إذا كان سيتم قص الصورة من المنتصف.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'height' : 224, 'width': 224}`): حجم الصورة الناتجة بعد تطبيق `center_crop`.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

do_sample_frames (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب أخذ عينات من الإطارات من الفيديو قبل المعالجة أم معالجة الفيديو بالكامل.

video_metadata (`Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None]`, *kwargs*) : بيانات وصفية للفيديو تتضمن معلومات عن المدة الإجمالية، ومعدل الإطارات في الثانية (fps)، وإجمالي عدد الإطارات. تُستخدم هذه البيانات لاختيار إطارات من الفيديو أو لحساب الطوابع الزمنية. لا تقم بتمرير أي بيانات وصفية إلا إذا كنت تحاول فك ترميز الفيديو يدوياً قبل المعالجة.

fps (`Annotated[int | float | None, None]`، *kwargs*) : عدد الإطارات المستهدفة التي يجب أخذ عينات منها في الثانية الواحدة عندما يكون `do_sample_frames=True`.

num_frames (`Annotated[int | None, None]`، *kwargs*) : الحد الأقصى لعدد الإطارات التي يجب أخذها كعينة عند تعيين `do_sample_frames=True`.

return_metadata (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع بيانات وصفية للفيديو أم لا. بيانات الوصفية للفيديو هي كائن يحتوي على معلومات حول مدة الفيديو، ومعدل الإطارات، وخلفية فك الترميز، وما إلى ذلك.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : إذا تم ضبطه، فسيُرجع تينسورات من إطار عمل محدد. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

- ****kwargs** ([VideosKwargs](/docs/transformers/main/ar/main_classes/processors#transformers.VideosKwargs)، *اختياري*) : خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

ينشئ معالج فيديو LlavaNextVideoVideoProcessor.

## LlavaNextVideoModel[[transformers.LlavaNextVideoModel]]

#### transformers.LlavaNextVideoModel[[transformers.LlavaNextVideoModel]]

```python
transformers.LlavaNextVideoModel(config: LlavaNextVideoConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L302)

**المعاملات:**

config ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Llava-Next الذي يتكون من هيكل بصري ونموذج لغوي دون رأس لنمذجة اللغة.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LlavaNextVideoModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, image_sizes: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, use_cache: bool | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.modeling_flash_attention_utils.FlashAttentionKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L501)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor). راجع [LlavaNextImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([LlavaNextVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoProcessor) يستخدم [LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) لمعالجة الصور).

pixel_values_videos (`torch.Tensor` من الشكل `(batch_size, num_frames, num_channels, frame_size, frame_size)`، *اختياري*) : المصفوفات المقابلة لفيديو الإدخال. يمكن الحصول على قيم البكسل للفيديوهات باستخدام [LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor). راجع [LlavaNextVideoVideoProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) للتفاصيل ([LlavaNextVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoProcessor) يستخدم [LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor) لمعالجة الفيديوهات).

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`، *اختياري*) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`، *اختياري*، القيمة الافتراضية `"default"`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`. إذا كانت `"default"`، يتم إزالة رمز CLS من ميزات الرؤية. إذا كانت `"full"`، تُستخدم ميزات الرؤية الكاملة.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`، *اختياري*) : قاموس حيث تكون المفاتيح هي الأنماط المدعومة والقيم هي المخرجات المُرمّزة لذلك النمط. كل مخرَج مُرمّز هو مجموعة (tuple) تتكون من (`pooler_output`، *اختياري*: `last_hidden_states`، *اختياري*: `hidden_states`، *اختياري*: `attentions`) `pooler_output` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

**يعيد:** `LlavaNextVideoModelOutputWithPast` أو `tuple(torch.Tensor)`

`LlavaNextVideoModelOutputWithPast` أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

تتجاوز طريقة [LlavaNextVideoModel](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.

  إذا تم استخدام `past_key_values`، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل `(batch_size, 1, hidden_size)` هي التي تُخرج.
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **image_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم `(batch_size, num_images, sequence_length, hidden_size)`. image_hidden_states الناتجة عن النموذج من قِبل مُشفِّر الرؤية بعد إسقاط حالة الإخفاء الأخيرة.
- **video_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم `(batch_size * num_frames, num_videos, sequence_length, hidden_size)`. video_hidden_states الناتجة عن النموذج من قِبل مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.

#### get_image_features[[transformers.LlavaNextVideoModel.get_image_features]]

```python
get_image_features(pixel_values: Tensor, image_sizes: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L388)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_patches, channels, height, width)`) : المصفوفات المقابلة لصور الإدخال.

image_sizes (`torch.Tensor` من الشكل `(num_images, 2)`) : الحجم الفعلي للصورة لكل صورة (H, W).

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

image_sizes (`torch.Tensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

يحصل على حالات الإخفاء الأخيرة للصور من برج الرؤية ويطبّق الإسقاط متعدد الوسائط.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

#### get_placeholder_mask[[transformers.LlavaNextVideoModel.get_placeholder_mask]]

```python
get_placeholder_mask(input_ids: LongTensor, inputs_embeds: Tensor, image_features: typing.Optional[torch.Tensor] = None, video_features: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L460)

يحصل على قناع العلامات الوهمية متعددة الوسائط من `input_ids` أو `inputs_embeds`، ويتحقق من أن عدد رموز العلامات الوهمية يساوي طول الميزات متعددة الوسائط. إذا اختلفت الأطوال، يتم رفع خطأ.

#### get_video_features[[transformers.LlavaNextVideoModel.get_video_features]]

```python
get_video_features(pixel_values_videos: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L594)

**المعاملات:**

pixel_values_videos (`torch.Tensor]` من الشكل `(batch_size, num_frames, channels, height, width)`) : المصفوفات المتناظرة مع الفيديو المدخل.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

يحصل على حالات الإخفاء الأخيرة للفيديو من برج الرؤية ويطبّق الإسقاط متعدد الوسائط.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

#### pack_image_features[[transformers.LlavaNextVideoModel.pack_image_features]]

```python
pack_image_features(image_features, image_sizes, vision_feature_select_strategy, image_newline = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L321)

**المعاملات:**

image_features (`list[torch.Tensor]` بطول num_images، كل منها على شكل `(num_patches, image_length, embed_dim)`) : قائمة من تينسورات ميزات الصور، حيث يحتوي كل تينسور على جميع الميزات البصرية لجميع الباتشات.

image_sizes (`torch.Tensor` من الشكل `(num_images, 2)`) : الحجم الفعلي للصورة لكل صورة (H, W).

vision_feature_select_strategy (`str`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من العمود الفقري البصري.

image_newline (`torch.Tensor` من الشكل `(embed_dim)`) : متجه تضمين السطر الجديد.

**يعيد:**

image_features (`torch.Tensor` من الشكل `(all_feat_len, embed_dim)`) feature_lens (`list[int]`) طول الرموز لكل صورة في image_features

أعد تشكيل كل image_feature وإزالة الحشو ثم حزمه في متجه image_features واحد يحتوي على جميع المتجهات البصرية.

## LlavaNextVideoForConditionalGeneration[[transformers.LlavaNextVideoForConditionalGeneration]]

#### transformers.LlavaNextVideoForConditionalGeneration[[transformers.LlavaNextVideoForConditionalGeneration]]

```python
transformers.LlavaNextVideoForConditionalGeneration(config: LlavaNextVideoConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L650)

**المعاملات:**

config ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج LLAVA-NeXT الذي يتكون من هيكل بصري ونموذج لغوي.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LlavaNextVideoForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, image_sizes: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L703)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor). راجع [LlavaNextImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([LlavaNextVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoProcessor) يستخدم [LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) لمعالجة الصور).

pixel_values_videos (`torch.Tensor` من الشكل `(batch_size, num_frames, num_channels, frame_size, frame_size)`، *اختياري*) : المصفوفات المقابلة لفيديو الإدخال. يمكن الحصول على قيم البكسل للفيديوهات باستخدام [LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor). راجع [LlavaNextVideoVideoProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) للتفاصيل ([LlavaNextVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoProcessor) يستخدم [LlavaNextVideoVideoProcessor](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoVideoProcessor) لمعالجة الفيديوهات).

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`، *اختياري*) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار الميزة البصرية من العمود الفقري البصري. يمكن أن تكون أحد `"default"` أو `"full"`.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن `[0, ..., config.vocab_size]` أو -100 (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`، *اختياري*، القيمة الافتراضية `0`) : إذا كان `int`، يتم حساب القيم اللوجستية (logits) لآخر `logits_to_keep` رموز. إذا كانت `0`، يتم حساب القيم اللوجستية لجميع `input_ids` (حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط ضرورية للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة، وهو ما يصبح ذا أهمية كبيرة للترتيبات الطويلة أو لحجم المفردات الكبير. إذا كان `torch.Tensor`، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول الترتيب. وهذا مفيد عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول الترتيب).

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`، *اختياري*) : قاموس حيث تكون المفاتيح هي الأنماط المدعومة والقيم هي المخرجات المُرمّزة لذلك النمط. كل مخرَج مُرمّز هو مجموعة (tuple) تتكون من (`pooler_output`، *اختياري*: `last_hidden_states`، *اختياري*: `hidden_states`، *اختياري*: `attentions`) `pooler_output` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

**يعيد:** `LlavaNextVideoCausalLMOutputWithPast` أو `tuple(torch.Tensor)`

`LlavaNextVideoCausalLMOutputWithPast` أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

تتجاوز طريقة [LlavaNextVideoForConditionalGeneration](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoForConditionalGeneration) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **image_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم (batch_size * num_patches, num_images, sequence_length, hidden_size)`. image_hidden_states الناتجة عن النموذج بواسطة مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.
- **video_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم `(batch_size * num_frames, num_videos, sequence_length, hidden_size)`. video_hidden_states الناتجة عن النموذج من قِبل مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.

مثال:

```python
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import av
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration

>>> def read_video_pyav(container, indices):
...     '''
...     Decode the video with PyAV decoder.
...     Args:
...         container (`av.container.input.InputContainer`): PyAV container.
...         indices (`list[int]`): List of frame indices to decode.
...     Returns:
...         result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
...     '''
...     frames = []
...     container.seek(0)
...     start_index = indices[0]
...     end_index = indices[-1]
...     for i, frame in enumerate(container.decode(video=0)):
...         if i > end_index:
...             break
...         if i >= start_index and i in indices:
...             frames.append(frame)
...     return np.stack([x.to_ndarray(format="rgb24") for x in frames])

>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", device_map="auto")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")

>>> prompt = "USER: <video>\nWhy is this video funny? ASSISTANT:"
>>> video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")
>>> container = av.open(video_path)

>>> # sample uniformly 8 frames from the video (model was trained with 32 frames per video, but this video is short)
>>> total_frames = container.streams.video[0].frames
>>> indices = np.arange(0, total_frames, total_frames / 8).astype(int)
>>> clip = read_video_pyav(container, indices)
>>> inputs_video = processor(text=prompt, videos=clip, return_tensors="pt").to(model.device)

>>> # load an image to generate from an image
>>> prompt = "USER:<image>\nWhat is shown in this image? ASSISTANT:"
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> inputs_image = processor(text=prompt, images=image, return_tensors="pt").to(model.device)

>>> # Generate from video
>>> generate_ids = model.generate(**inputs_video, max_length=50)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER:\nWhy is this video funny? ASSISTANT: The humor in this video comes from the unexpected and endearing sight of a baby wearing glasses and (...)"

>>> # Generate from image
>>> generate_ids = model.generate(**inputs_image, max_length=30)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER: \nWhat's the content of the image? ASSISTANT: The image shows a red stop sign on a pole, with a traditional Chinese archway (...)"
```

#### get_image_features[[transformers.LlavaNextVideoForConditionalGeneration.get_image_features]]

```python
get_image_features(pixel_values: Tensor, image_sizes: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L671)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_patches, channels, height, width)`) : المصفوفات المقابلة لصور الإدخال.

image_sizes (`torch.Tensor` من الشكل `(num_images, 2)`) : الحجم الفعلي للصورة لكل صورة (H, W).

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

image_sizes (`torch.Tensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from PIL import Image
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration

>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

#### get_video_features[[transformers.LlavaNextVideoForConditionalGeneration.get_video_features]]

```python
get_video_features(pixel_values_videos: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llava_next_video/modeling_llava_next_video.py#L820)

**المعاملات:**

pixel_values_videos (`torch.Tensor]` من الشكل `(batch_size, num_frames, channels, height, width)`) : المصفوفات المتناظرة مع الفيديو المدخل.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LlavaNextVideoConfig](/docs/transformers/main/ar/model_doc/llava_next_video#transformers.LlavaNextVideoConfig)) والمدخلات.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from PIL import Image
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration

>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

