# معالج الصور

يتولى مُعالج الصور مسؤولية تحميل الصور (اختياريًا)، وتجهيز ميزات الإدخال لنماذج الرؤية، ومعالجة مخرجاتها بعد التشغيل. وتشمل هذه العملية تحويلات مثل تغيير الحجم، والتطبيع، والتحويل إلى متجهات PyTorch وNumpy. وقد تشمل أيضًا معالجة لاحقة خاصة بالنموذج، مثل تحويل القيم الاحتمالية (logits) إلى أقنعة تجزئة.

تستخدم معالجات الصور بنية معمارية مبنية على الخلفية (backend). وهيكلية الفئات هي:

- [BaseImageProcessor](/docs/transformers/main/ar/main_classes/image_processor#transformers.BaseImageProcessor) — فئة أساسية مجردة (لأغراض التوافق مع الإصدارات السابقة فقط؛ لا يتم إنشاؤها مباشرة)
  - [TorchvisionBackend](/docs/transformers/main/ar/main_classes/image_processor#transformers.TorchvisionBackend) — الواجهة الخلفية **الافتراضية** المعتمدة على [torchvision](https://pytorch.org/vision/stable/index.html). تعمل بتسريع عبر وحدة معالجة الرسوميات (GPU) وهي أسرع بكثير من الواجهة الخلفية المعتمدة على PIL. جميع النماذج تعرض فئة `<Model>ImageProcessor` ترث منها.
  - [PilBackend](/docs/transformers/main/ar/main_classes/image_processor#transformers.PilBackend) — بديل الخلفية المبنية على PIL/NumPy. محمولة، وتعتمد على المعالج المركزي فقط. متاحة فقط للنماذج الأقدم عبر فئة `<Model>ImageProcessorPil`؛ وهي مفيدة عند الحاجة إلى تطابق عددي دقيق مع التنفيذ الأصلي.

توفر كلا الواجهتين الخلفيتين نفس واجهة البرمجة. استخدم خاصية `backend` لفحص الواجهة الخلفية التي يستخدمها المعالج المحمّل (على سبيل المثال `processor.backend == "torchvision"`).

مرّر `backend` إلى [AutoImageProcessor.from_pretrained()](/docs/transformers/main/ar/model_doc/auto#transformers.AutoImageProcessor.from_pretrained) لاختيار واجهة خلفية. عند إغفال `backend` (القيمة الافتراضية)، يتم اختيار torchvision إذا كان مثبّتًا، وإلا يُستخدم PIL. بعض النماذج التي تستخدم استيفاء Lanczos (Chameleon، Flava، Idefics3، SmolVLM) هي استثناء، وتكون قيمتها الافتراضية PIL عندما يكون torchvision < 0.27. فرض `backend="torchvision"` لهذه النماذج على torchvision < 0.27 يؤدي إلى الرجوع إلى استيفاء BICUBIC، لأن torchvision يدعم Lanczos للمصفوفات (tensors) فقط من الإصدار 0.27 فصاعدًا.

```python
from transformers import AutoImageProcessor

# Default: picks torchvision if available, otherwise pil
processor = AutoImageProcessor.from_pretrained("facebook/detr-resnet-50")

# Explicitly request torchvision
processor = AutoImageProcessor.from_pretrained("facebook/detr-resnet-50", backend="torchvision")

# Explicitly request PIL
processor = AutoImageProcessor.from_pretrained("facebook/detr-resnet-50", backend="pil")
```

عند استخدام واجهة torchvision الخلفية، يمكنك تعيين معامل `device` لتحديد الجهاز الذي يجب أن تتم عليه المعالجة. افتراضيًا، تتم المعالجة على نفس الجهاز الذي توجد عليه المدخلات إذا كانت المدخلات من نوع tensors، أو على وحدة المعالجة المركزية (CPU) في حال العكس.

```python
import torch
from torchvision.io import read_image
from transformers import DetrImageProcessor

device = torch.accelerator.current_accelerator().type if torch.accelerator.is_available() else "cpu"

images = read_image("image.jpg")
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
images_processed = processor(images, return_tensors="pt", device=device)
```

فيما يلي بعض مقارنات السرعة بين واجهتي torchvision وPIL لنموذجي `DETR` و`RT-DETR`، وكيف تؤثران على زمن الاستدلال الكلي:

  

  

  

  

تم تشغيل هذه الاختبارات المرجعية على [وحدة AWS EC2 g5.2xlarge](https://aws.amazon.com/ec2/instance-types/g5/)، باستخدام معالج رسومي NVIDIA A10G Tensor Core.

## ImageProcessingMixin[[transformers.ImageProcessingMixin]]

#### transformers.ImageProcessingMixin[[transformers.ImageProcessingMixin]]

```python
transformers.ImageProcessingMixin(**kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_base.py#L61)

هذا مزيج معالج صور يُستخدم لتوفير وظائف الحفظ/التحميل لمُستخرِجات الميزات التسلسلية والصور.

#### from_pretrained[[transformers.ImageProcessingMixin.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_base.py#L84)

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

pretrained_model_name_or_path (`str` أو `os.PathLike`) : يمكن أن يكون هذا: - نصًا، وهو *model id* لمعالج صور مُدرَّب مسبقًا مستضاف داخل مستودع نموذج على huggingface.co. - مسارًا إلى *directory* يحتوي على ملف معالج صور تم حفظه باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/internal/image_processing_utils#transformers.ImageProcessingMixin.save_pretrained)، على سبيل المثال `./my_model_directory/`. - مسارًا إلى ملف JSON *file* لمعالج صور محفوظ، على سبيل المثال `./my_model_directory/preprocessor_config.json`.

cache_dir (`str` أو `os.PathLike`، *اختياري*) : المسار إلى مجلد يجب تخزين معالج الصور النموذجي المُحمَّل مسبقًا فيه إذا لم يُستخدم المجلد المؤقت القياسي.

force_download (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إجبار إعادة تنزيل ملفات معالج الصور وتجاوز النسخ المخزنة مؤقتًا في حال وجودها.

proxies (`dict[str, str]`، *اختياري*) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.` تُستخدم هذه الوكلاء في كل طلب.

token (`str` أو `bool`، *اختياري*) : الرمز الذي يُستخدم كرمز تفويض HTTP bearer للملفات البعيدة. إذا كان `True`، أو لم يُحدد، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل `hf auth login` (المخزَّن في `~/.huggingface`).

revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرّف التزامن، نظرًا لأننا نستخدم نظامًا قائمًا على git لتخزين النماذج والمخرجات الأخرى على huggingface.co، لذا يمكن أن يكون `revision` أي معرّف مسموح به بواسطة git.     لاختبار طلب دمج قمت بإنشائه على Hub، يمكنك تمرير `revision="refs/pr/<pr_number>"`.

return_unused_kwargs (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `False`، فإن هذه الدالة تُرجع كائن معالج الصور النهائي فقط. أما إذا كانت `True`، فإن هذه الدالة تُرجع `Tuple(image_processor, unused_kwargs)` حيث *unused_kwargs* هو قاموس يتكوّن من أزواج المفاتيح والقيم التي لا تُعدّ مفاتيحها من سمات معالج الصور؛ أي الجزء من `kwargs` الذي لم يُستخدم لتحديث `image_processor` ويُتجاهل في حالته الأخرى.

subfolder (`str`، *اختياري*، القيمة الافتراضية `""`) : في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co، يمكنك تحديد اسم المجلد هنا.

kwargs (`dict[str, Any]`، *اختياري*) : القيم الموجودة في kwargs لأي مفاتيح تكون من سمات معالج الصور ستُستخدم لتجاوز القيم المحمّلة. أما السلوك المتعلق بالأزواج المفتاح/قيمة التي مفاتيحها *ليست* من سمات معالج الصور، فيتحكم به معامل الكلمة المفتاحية `return_unused_kwargs`.

**يعيد:**

معالج صور من النوع [ImageProcessingMixin](/docs/transformers/main/ar/internal/image_processing_utils#transformers.ImageProcessingMixin).

أنشئ نوعًا من [ImageProcessingMixin](/docs/transformers/main/ar/internal/image_processing_utils#transformers.ImageProcessingMixin) من معالج الصور.

أمثلة:

```python
# We can't instantiate directly the base class *ImageProcessingMixin* so let's show the examples on a
# derived class: *CLIPImageProcessor*
image_processor = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32"
)  # Download image_processing_config from huggingface.co and cache.
image_processor = CLIPImageProcessor.from_pretrained(
    "./test/saved_model/"
)  # E.g. image processor (or model) was saved using *save_pretrained('./test/saved_model/')*
image_processor = CLIPImageProcessor.from_pretrained("./test/saved_model/preprocessor_config.json")
image_processor = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32", do_normalize=False, foo=False
)
assert image_processor.do_normalize is False
image_processor, unused_kwargs = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32", do_normalize=False, foo=False, return_unused_kwargs=True
)
assert image_processor.do_normalize is False
assert unused_kwargs == {"foo": False}
```

#### save_pretrained[[transformers.ImageProcessingMixin.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_base.py#L190)

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

save_directory (`str` أو `os.PathLike`) : المجلد الذي سيُحفظ فيه ملف JSON لمعالج الصور (سيتم إنشاؤه إذا لم يكن موجودًا).

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع نموذجك إلى مستودع نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام `repo_id` (سيكون الافتراضي هو اسم `save_directory` ضمن نطاقك).

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

احفظ كائن معالج الصور في المجلد `save_directory` حتى يمكن إعادة تحميله باستخدام طريقة الفئة [from_pretrained()](/docs/transformers/main/ar/internal/image_processing_utils#transformers.ImageProcessingMixin.from_pretrained).

## BatchFeature[[transformers.BatchFeature]]

#### transformers.BatchFeature[[transformers.BatchFeature]]

```python
transformers.BatchFeature(data: dict[str, typing.Any] | None = None, tensor_type: None | str | transformers.utils.generic.TensorType = None, skip_tensor_conversion: list[str] | set[str] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/feature_extraction_utils.py#L58)

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

data (`dict`، *اختياري*) : قاموس من القوائم/المصفوفات/الموترات التي تُعاد بواسطة طريقتي __call__/pad ('input_values'، 'attention_mask'، وما إلى ذلك).

tensor_type (`Union[None, str, TensorType]`، *اختياري*) : يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

skip_tensor_conversion (`list[str]` أو `set[str]`، *اختياري*) : قائمة أو مجموعة من المفاتيح التي يجب ألا تُحوَّل إلى متجهات، حتى عند تحديد `tensor_type`.

يحتوي على مخرجات طريقة [pad()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad) وطريقة `__call__` الخاصة بمستخرج الميزات.

تُشتق هذه الفئة من قاموس بايثون ويمكن استخدامها كقاموس.

#### convert_to_tensors[[transformers.BatchFeature.convert_to_tensors]]

```python
convert_to_tensors(tensor_type: str | transformers.utils.generic.TensorType | None = None, skip_tensor_conversion: list[str] | set[str] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/feature_extraction_utils.py#L158)

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

tensor_type (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : نوع المصفوفات (tensors) المراد استخدامه. إذا كان `str`، فيجب أن يكون أحد قيم التعداد [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType). إذا كان `None`، فلا يتم إجراء أي تعديل.

skip_tensor_conversion (`list[str]` أو `set[str]`، *اختياري*) : قائمة أو مجموعة من المفاتيح التي يجب ألا تُحوَّل إلى متجهات، حتى عند تحديد `tensor_type`.

قم بتحويل المحتوى الداخلي إلى متجهات.

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

#### إلى[[transformers.BatchFeature.to]]

```python
to(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/feature_extraction_utils.py#L215)

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

args (`Tuple`) : سيتم تمريرها إلى دالة `to(...)` الخاصة بالمُتجهات.

kwargs (`Dict`، *اختياري*) : سيتم تمريره إلى دالة `to(...)` الخاصة بالمُتجهات. لتفعيل نقل البيانات غير المتزامن، اضبط علم `non_blocking` داخل `kwargs` (الافتراضي هو `False`).

**يعيد:** [BatchFeature](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.BatchFeature)

نفس الكائن بعد التعديل.

أرسل جميع القيم إلى الجهاز عن طريق استدعاء `v.to(*args, **kwargs)` (PyTorch فقط). يجب أن يدعم هذا التحويل إلى أنواع بيانات `dtypes` مختلفة وإرسال `BatchFeature` إلى جهاز `device` مختلف.

## BaseImageProcessor[[transformers.BaseImageProcessor]]

#### transformers.BaseImageProcessor[[transformers.BaseImageProcessor]]

```python
transformers.BaseImageProcessor(**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L60)

الفئة الأساسية لمعالجات الصور مع بنية خلفية مبنية على الوراثة.

تعريف هذا الصنف خط المعالجة المسبقة: التحقق من صحة معاملات kwargs، وتجهيز المدخلات، وتوجيه الطلب إلى طريقة `_preprocess` الخاصة بالخلفية. ترث صنفات الخلفية الفرعية (`TorchvisionBackend`، `PilBackend`) من هذا الصنف وتنفذ عمليات الصور الفعلية (تحديد الحجم، القص، إعادة التحجيم، التطبيع، وما إلى ذلك). ثم ترث معالجات الصور الخاصة بالنموذج من صنف الخلفية المناسب.

نظرة عامة على البنية ---------------------

هيكلية الفئات هي:

BaseImageProcessor (هذه الفئة) ├── TorchvisionBackend    (مع تسريع GPU، torch.Tensor) │   └── ModelImageProcessor (مثل LlavaNextImageProcessor) └── PilBackend            (CPU محمول، np.ndarray) └── ModelImageProcessorPil (مثل CLIPImageProcessorPil)

مسار المعالجة المسبقة هو:

__call__() → preprocess() → _preprocess_image_like_inputs() → _prepare_image_like_inputs() (يستدعي process_image لكل صورة) → _preprocess() (عمليات الدفعة: تغيير الحجم، الاقتصاص، إلخ)

- `process_image`: تنفّذها الخوادم الخلفية. تحوّل مدخلاً خاماً واحداً (PIL أو NumPy أو Tensor) إلى الصيغة التشغيلية الخاصة بالخادم الخلفي (torch.Tensor أو np.ndarray)، وتتعامل مع تحويل RGB وإعادة ترتيب القنوات.
- `_preprocess`: تنفّذه الخوادم الخلفية. يقوم بمعالجة الدفعة الفعلية (تحديد الحجم، القص المركزي، إعادة التحجيم، التطبيع، الحشو) ويعيد `BatchFeature`.

التطبيق الأساسي --------------------

للمعالجات التي تحتاج فقط إلى عمليات قياسية (تغيير الحجم، القص من المنتصف، إعادة التحجيم، التطبيع)، ورّث من واجهة خلفية وحدد سمات الفئة:

from transformers.image_processing_backends import PilBackend

class MyImageProcessorPil(PilBackend): resample = PILImageResampling.BILINEAR image_mean = IMAGENET_DEFAULT_MEAN image_std = IMAGENET_DEFAULT_STD size = {"height": 224, "width": 224} do_resize = True do_rescale = True do_normalize = True

يتولى منهج `_preprocess` الخاص بالخلفية معالجة خط المعالجة القياسي تلقائيًا.

المعالجة المخصصة -----------------

للمعالجات التي تتطلب منطقًا مخصصًا (مثل المعالجة على أساس البقع، أو أنواع مدخلات متعددة)، قم بتجاوز `_preprocess` في المعالج الخاص بنموذجك. يتلقى أسلوب `_preprocess` صورًا جاهزة مسبقًا (تم تحويلها إلى صيغة الخلفية مع ترتيب القنوات أولاً) وينفذ المعالجة الفعلية:

class MyImageProcessor(TorchvisionBackend): def _preprocess(self, images, do_resize, size, do_normalize, image_mean, image_std, **kwargs):
# تجميع الصور حسب الشكل لعمليات الدفع الفعّالة
grouped_images, grouped_images_index = group_images_by_shape(images) processed_groups = {} for shape, stacked_images in grouped_images.items(): if do_resize: stacked_images = self.resize(stacked_images, size=size) if do_normalize: stacked_images = self.normalize(stacked_images, mean=image_mean, std=image_std) processed_groups[shape] = stacked_images processed_images = reorder_images(processed_groups, grouped_images_index) return BatchFeature(data={"pixel_values": processed_images})

للمعالجات التي تتعامل مع أنواع مدخلات متعددة (مثل الصور + خرائط التقسيم)، تجاوز `_preprocess_image_like_inputs`:

def _preprocess_image_like_inputs( self, images: ImageInput, segmentation_maps: ImageInput | None = None, **kwargs, ) -> BatchFeature: images = self._prepare_image_like_inputs(images, **kwargs) batch_feature = self._preprocess(images, **kwargs)

if segmentation_maps is not None: maps = self._prepare_image_like_inputs(segmentation_maps, **kwargs) batch_feature["labels"] = self._preprocess(maps, **kwargs).pixel_values

return batch_feature

توسيع سلوك الخلفية --------------------------

لتخصيص العمليات لواجهة خلفية محددة، قم بإنشاء فئة فرعية من الواجهة الخلفية وتجاوز دوالها:

from transformers.image_processing_backends import TorchvisionBackend, PilBackend

class MyTorchvisionProcessor(TorchvisionBackend): def resize(self, image, size, **kwargs):
# منطق تحجيم مخصص لـ torchvision
return super().resize(image, size, **kwargs)

class MyPilProcessor(PilBackend): def resize(self, image, size, **kwargs):
# منطق تحجيم مخصص لـ PIL
return super().resize(image, size, **kwargs)

معلمات مخصصة -----------------

لإضافة معاملات تتجاوز `ImagesKwargs`، أنشئ فئة kwargs مخصصة واضبطها كـ`valid_kwargs`:

class MyImageProcessorKwargs(ImagesKwargs): custom_param: int | None = None

class MyImageProcessor(TorchvisionBackend): valid_kwargs = MyImageProcessorKwargs custom_param = 10  # default value

ملاحظات رئيسية ---------

- يتم اختيار الخلفية على مستوى الفئة: ورث من `TorchvisionBackend` أو `PilBackend`
- تستقبل الخلفيات الصور على شكل `torch.Tensor` (Torchvision) أو `np.ndarray` (PIL)، مع وضع القنوات أولاً دائماً
- جميع الصور تحتوي على بُعد القناة أولاً أثناء المعالجة، بغض النظر عن الخلفية
- تتخذ الحُجج التي لا يوفّرها المستخدمون قيمَ سمات الفئة افتراضيًا
- تُغلّف فئات الخلفية (Backend) المنطق الخاص بالخلفية (مثل تغيير الحجم والتطبيع، إلخ) ويمكن تجاوزها

#### center_crop[[transformers.BaseImageProcessor.center_crop]]

```python
center_crop(image: ndarray, size: dict, data_format: str | transformers.image_utils.ChannelDimension | None = None, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L500)

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

image (`np.ndarray`) : صورة لقصّها من المنتصف.

size (`dict[str, int]`) : حجم الصورة الناتجة.

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

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

يقوم بقصّ صورة من المنتصف إلى `(size["height"], size["width"])`. إذا كانت أبعاد المدخلات أصغر من `crop_size` على أي حافة، يتم ملء الصورة بأصفار ثم قصّها من المنتصف.

#### تطبيع[[transformers.BaseImageProcessor.normalize]]

```python
normalize(image: ndarray, mean: float | collections.abc.Iterable[float], std: float | collections.abc.Iterable[float], data_format: str | transformers.image_utils.ChannelDimension | None = None, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L463)

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

image (`np.ndarray`) : الصورة المراد تطبيعها.

mean (`float` أو `Iterable[float]`) : متوسط الصورة المستخدم للتطبيع.

std (`float` أو `Iterable[float]`) : الانحراف المعياري للصورة المستخدم للتطبيع.

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

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

**يعيد:** `np.ndarray`

الصورة المُطبَّعة.

تطبيع صورة. image = (image - image_mean) / image_std.

#### preprocess[[transformers.BaseImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], *args, image_like_kwargs: dict[str, typing.Any] | None = None, **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L382)

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

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : الصورة المراد معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

image_like_kwargs (`dict[str, Any]`، *اختياري*) : علم مخصص للمطورين لإدخال مدخلات إضافية تشبه الصور والتي سيتم معالجتها مسبقًا أيضًا. استخدم هذا الخيار فقط إذا لم يعمل تمرير المدخلات كحجة اسمية (kwarg). على سبيل المثال، يُعد `preprocess(images, masks=masks)` الخيار المفضل، لكنه يؤدي إلى مشاكل في أولوية الحجة لبعض النماذج. في تلك الحالات، يمكن استخدام `preprocess(images, image_like_inputs={"masks": masks})` بدلاً منه.

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

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

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

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

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

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

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

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

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

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

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

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

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

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*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`، *kwargs*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

معالجة صورة أو دفعة من الصور مسبقًا.

#### process_image[[transformers.BaseImageProcessor.process_image]]

```python
process_image(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L219)

معالجة صورة خام واحدة إلى الصيغة التشغيلية الخاصة بالخلفية.

يُنفَّذ بواسطة فئات فرعية تابعة للواجهة الخلفية (`TorchvisionBackend`، `PilBackend`). يحوّل مدخلاً خاماً (صورة PIL، مصفوفة NumPy، أو متجه torch) إلى الصيغة الداخلية للواجهة الخلفية (`torch.Tensor` لـ Torchvision، `np.ndarray` لـ PIL)، ويتعامل مع التحويل إلى RGB ويضمن ترتيب القنوات أولاً.

#### إعادة التحجيم[[transformers.BaseImageProcessor.rescale]]

```python
rescale(image: ndarray, scale: float, data_format: str | transformers.image_utils.ChannelDimension | None = None, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_utils.py#L430)

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

image (`np.ndarray`) : الصورة التي سيتم إعادة تحجيمها.

scale (`float`) : عامل التحجيم الذي يُستخدم لإعادة تحجيم قيم البكسل.

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

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

**يعيد:** `np.ndarray`

الصورة المُعاد تحجيمها.

إعادة تحجيم صورة بمعامل تحجيم. image = image * scale.

## TorchvisionBackend[[transformers.TorchvisionBackend]]

#### transformers.TorchvisionBackend[[transformers.TorchvisionBackend]]

```python
transformers.TorchvisionBackend(**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L86)

واجهة Torchvision الخلفية لمعالجة الصور الدفعية مع تسريع GPU.

#### center_crop[[transformers.TorchvisionBackend.center_crop]]

```python
center_crop(image: torch.Tensor, size: SizeDict, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L367)

قصّ صورة في المنتصف باستخدام Torchvision.

#### convert_to_rgb[[transformers.TorchvisionBackend.convert_to_rgb]]

```python
convert_to_rgb(image: torch.Tensor, input_data_format: str | transformers.image_utils.ChannelDimension | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L156)

تحويل صورة إلى تنسيق RGB.

#### fetch_images[[transformers.TorchvisionBackend.fetch_images]]

```python
fetch_images(image_url_or_urls: str | list[str] | list[list[str]])
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L100)

تحويل عنوان URL واحد أو قائمة من عناوين URL / المسارات إلى كائنات `torch.Tensor`.

تُمرَّر كائنات الصور الصالحة مسبقًا (المصفوفات المتوترة، مصفوفات numpy، صور PIL) دون تغيير، بحيث لا يتأثر المستدعون الذين يقومون بتحميل الصور مسبقًا.

#### تطبيع[[transformers.TorchvisionBackend.normalize]]

```python
normalize(image: torch.Tensor, mean: float | collections.abc.Iterable[float], std: float | collections.abc.Iterable[float], inplace: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L313)

تطبيع صورة باستخدام Torchvision.

#### pad[[transformers.TorchvisionBackend.pad]]

```python
pad(images: list, pad_size: SizeDict = None, fill_value: int | None = 0, padding_mode: str | None = 'constant', return_mask: bool = False, disable_grouping: bool | None = False, is_nested: bool | None = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L180)

قم بتوسيط الصور باستخدام Torchvision مع عمليات الدُفعات.

#### process_image[[transformers.TorchvisionBackend.process_image]]

```python
process_image(image: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], do_convert_rgb: bool | None = None, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, device: typing.Optional[ForwardRef('torch.device')] = None, **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L116)

معالجة صورة واحدة لخلفية torchvision.

#### إعادة التحجيم[[transformers.TorchvisionBackend.rescale]]

```python
rescale(image: torch.Tensor, scale: float, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L304)

إعادة تحجيم صورة بمعامل تحجيم باستخدام Torchvision.

#### rescale_and_normalize[[transformers.TorchvisionBackend.rescale_and_normalize]]

```python
rescale_and_normalize(images: torch.Tensor, do_rescale: bool, rescale_factor: float, do_normalize: bool, image_mean: float | list[float], image_std: float | list[float])
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L341)

إعادة تحجيم الصور وتطبيعها باستخدام Torchvision (مدمجة من أجل الكفاءة).

#### تغيير الحجم[[transformers.TorchvisionBackend.resize]]

```python
resize(image: torch.Tensor, size: SizeDict, resample: PILImageResampling | tvF.InterpolationMode | int | None = None, antialias: bool = True, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L230)

تغيير حجم صورة باستخدام Torchvision.

## PilBackend[[transformers.PilBackend]]

#### transformers.PilBackend[[transformers.PilBackend]]

```python
transformers.PilBackend(**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L444)

واجهة خلفية PIL/NumPy لمعالجة الصور على المعالج فقط، مع قابلية نقل عالية.

#### center_crop[[transformers.PilBackend.center_crop]]

```python
center_crop(image: ndarray, size: SizeDict, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L635)

قصّ صورة من المنتصف باستخدام NumPy.

#### convert_to_rgb[[transformers.PilBackend.convert_to_rgb]]

```python
convert_to_rgb(image: ndarray, input_data_format: str | transformers.image_utils.ChannelDimension | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L495)

تحويل صورة إلى تنسيق RGB.

#### تطبيع[[transformers.PilBackend.normalize]]

```python
normalize(image: ndarray, mean: float | collections.abc.Iterable[float], std: float | collections.abc.Iterable[float], **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L619)

تطبيع صورة باستخدام NumPy.

#### pad[[transformers.PilBackend.pad]]

```python
pad(images: list, pad_size: SizeDict = None, fill_value: int | None = 0, padding_mode: str | None = 'constant', return_mask: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L503)

حشو الصور إلى الحجم المحدد باستخدام NumPy.

#### process_image[[transformers.PilBackend.process_image]]

```python
process_image(image: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], do_convert_rgb: bool | None = None, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L458)

معالجة صورة واحدة لخلفية PIL.

#### إعادة التحجيم[[transformers.PilBackend.rescale]]

```python
rescale(image: ndarray, scale: float, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L605)

إعادة تحجيم صورة بمعامل تحجيم باستخدام NumPy.

#### تغيير الحجم[[transformers.PilBackend.resize]]

```python
resize(image: ndarray, size: SizeDict, resample: PILImageResampling | None = None, reducing_gap: int | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/image_processing_backends.py#L554)

تغيير حجم صورة باستخدام PIL/NumPy.

