Transformers documentation

Bộ xử lý ảnh

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bộ xử lý ảnh

Bộ xử lý ảnh chịu trách nhiệm tải ảnh (tuỳ chọn), chuẩn bị các đặc trưng đầu vào cho các mô hình thị giác và xử lý hậu kỳ đầu ra của chúng. Điều này bao gồm các phép biến đổi như thay đổi kích thước, chuẩn hóa và chuyển đổi sang tensor PyTorch và Numpy. Nó cũng có thể bao gồm các bước xử lý hậu kỳ đặc thù cho mô hình, chẳng hạn như chuyển đổi logits thành các mặt nạ phân đoạn.

Bộ xử lý hình ảnh sử dụng kiến trúc dựa trên backend. Hệ thống phân cấp lớp là:

  • BaseImageProcessor — lớp cơ sở trừu tượng (chỉ để tương thích ngược; không khởi tạo trực tiếp)
    • TorchvisionBackend — backend mặc định dựa trên torchvision. Được tăng tốc bằng GPU và nhanh hơn đáng kể so với backend PIL. Tất cả các model đều có một lớp <Model>ImageProcessor kế thừa từ nó.
    • PilBackend — backend thay thế dựa trên PIL/NumPy. Di động, chỉ chạy trên CPU. Chỉ khả dụng cho các model cũ thông qua lớp <Model>ImageProcessorPil; hữu ích khi cần độ khớp số học chính xác với bản triển khai gốc.

Cả hai backend đều cung cấp cùng một API. Sử dụng thuộc tính backend để kiểm tra backend mà một processor đã tải đang sử dụng (ví dụ: processor.backend == "torchvision").

Truyền backend vào AutoImageProcessor.from_pretrained() để chọn backend. Khi backend bị bỏ qua (mặc định), torchvision sẽ được chọn nếu đã được cài đặt, ngược lại PIL sẽ được sử dụng. Một số mô hình sử dụng nội suy Lanczos (Chameleon, Flava, Idefics3, SmolVLM) là ngoại lệ, và chúng mặc định dùng PIL khi torchvision < 0.27. Ép backend="torchvision" cho các mô hình này trên torchvision < 0.27 sẽ chuyển sang nội suy BICUBIC, vì torchvision chỉ hỗ trợ Lanczos cho tensor từ phiên bản 0.27 trở đi.

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")

Khi sử dụng backend torchvision, bạn có thể đặt đối số device để chỉ định thiết bị mà trên đó quá trình xử lý sẽ được thực hiện. Mặc định, quá trình xử lý được thực hiện trên cùng thiết bị với các đầu vào nếu các đầu vào là tensor, hoặc trên CPU trong trường hợp ngược lại.

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)

Dưới đây là một số so sánh về tốc độ giữa các backend torchvision và PIL cho các mô hình DETR và RT-DETR, cũng như cách chúng ảnh hưởng đến thời gian suy luận tổng thể:

Các bài kiểm tra này được chạy trên một thực thể AWS EC2 g5.2xlarge, sử dụng GPU NVIDIA A10G Tensor Core.

ImageProcessingMixin

lớp transformers.ImageProcessingMixin

< >

( **kwargs )

Đây là một mixin của bộ xử lý hình ảnh được sử dụng để cung cấp chức năng lưu/tải cho các bộ trích xuất đặc trưng tuần tự và hình ảnh.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )

Tham số

  • pretrained_model_name_or_path (str hoặc os.PathLike) — Đây có thể là:
    • một chuỗi, model id của một image_processor được huấn luyện trước, được lưu trữ trong một kho model trên huggingface.co.
    • đường dẫn đến một thư mục chứa tệp image processor được lưu bằng phương thức save_pretrained(), ví dụ: ./my_model_directory/.
    • đường dẫn đến tệp JSON của bộ xử lý ảnh đã lưu file, ví dụ: ./my_model_directory/preprocessor_config.json.
  • cache_dir (str hoặc os.PathLike, tùy chọn) — Đường dẫn đến thư mục mà bộ xử lý ảnh của mô hình được huấn luyện trước đã tải xuống sẽ được lưu đệm, nếu không sử dụng bộ lưu đệm tiêu chuẩn.
  • force_download (bool, tùy chọn, mặc định là False) — Có nên buộc (tải lại) các tệp bộ xử lý ảnh và ghi đè lên các phiên bản được lưu trong bộ nhớ đệm nếu chúng tồn tại hay không.
  • proxies (dict[str, str], tuỳ chọn) — Một từ điển các máy chủ proxy để sử dụng theo giao thức hoặc điểm cuối, ví dụ: {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Các proxy này được sử dụng cho mỗi yêu cầu.
  • token (str hoặc bool, tùy chọn) — Token được sử dụng làm HTTP bearer authorization cho các tệp từ xa. Nếu True, hoặc không được chỉ định, sẽ sử dụng token được tạo khi chạy hf auth login (được lưu trong ~/.huggingface).
  • revision (str, tùy chọn, mặc định là "main") — Phiên bản mô hình cụ thể cần sử dụng. Nó có thể là tên nhánh, tên thẻ hoặc id commit, vì chúng tôi sử dụng hệ thống dựa trên git để lưu trữ các mô hình và các sản phẩm khác trên huggingface.co, do đó revision có thể là bất kỳ định danh nào được git cho phép.

Tạo một kiểu ImageProcessingMixin từ một image processor.

Ví dụ:

# 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

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs )

Tham số

  • save_directory (str hoặc os.PathLike) — Thư mục nơi tệp JSON của bộ xử lý hình ảnh sẽ được lưu (sẽ được tạo nếu chưa tồn tại).
  • push_to_hub (bool, tùy chọn, mặc định là False) — Có đẩy mô hình của bạn lên Hugging Face model hub sau khi lưu hay không. Bạn có thể chỉ định kho lưu trữ muốn đẩy đến bằng repo_id (mặc định sẽ là tên của save_directory trong namespace của bạn).
  • kwargs (dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến phương thức push_to_hub().

Lưu đối tượng image processor vào thư mục save_directory để có thể tải lại bằng phương thức lớp from_pretrained().

BatchFeature

lớp transformers.BatchFeature

< >

( data: dict[str, typing.Any] | None = Nonetensor_type: None | str | transformers.utils.generic.TensorType = Noneskip_tensor_conversion: list[str] | set[str] | None = None )

Tham số

  • data (dict, tùy chọn) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi các phương thức call/pad (‘input_values’, ‘attention_mask’, v.v.).
  • tensor_type (Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo.
  • skip_tensor_conversion (list[str] hoặc set[str], tuỳ chọn) — Danh sách hoặc tập hợp các key không được chuyển đổi thành tensor, ngay cả khi tensor_type được chỉ định.

Chứa kết quả đầu ra của các phương thức pad() và __call__ cụ thể của bộ trích xuất đặc trưng.

Lớp này được kế thừa từ một từ điển python và có thể được sử dụng như một từ điển.

convert_to_tensors

< >

( tensor_type: str | transformers.utils.generic.TensorType | None = Noneskip_tensor_conversion: list[str] | set[str] | None = None )

Tham số

  • tensor_type (str hoặc TensorType, tuỳ chọn) — Loại tensor cần sử dụng. Nếu là str, phải là một trong các giá trị của enum TensorType. Nếu là None, sẽ không thực hiện thay đổi nào.
  • skip_tensor_conversion (list[str] hoặc set[str], tuỳ chọn) — Danh sách hoặc tập hợp các key không được chuyển đổi thành tensor, ngay cả khi tensor_type được chỉ định.

Chuyển đổi nội dung bên trong thành các tensor.

Note: Các giá trị không có cấu trúc dạng mảng (ví dụ: chuỗi, dict, danh sách các chuỗi) sẽ được tự động bỏ qua và không được chuyển đổi thành tensor. Các mảng không đều (danh sách các mảng có độ dài khác nhau) vẫn được thử chuyển đổi, mặc dù chúng có thể gây ra lỗi trong quá trình chuyển đổi.

đến

< >

( *args**kwargs ) → BatchFeature

Tham số

  • args (Tuple) — Sẽ được truyền vào hàm to(...) của các tensor.
  • kwargs (Dict, tùy chọn) — Sẽ được truyền cho hàm to(...) của các tensor. Để bật chuyển dữ liệu bất đồng bộ, hãy đặt cờ non_blocking trong kwargs (mặc định là False).

Trả về

BatchFeature

Cùng một instance sau khi được sửa đổi.

Gửi tất cả các giá trị đến thiết bị bằng cách gọi v.to(*args, **kwargs) (chỉ PyTorch). Thao tác này nên hỗ trợ chuyển đổi sang các dtypes khác nhau và gửi BatchFeature đến một device khác.

BaseImageProcessor

lớp transformers.BaseImageProcessor

< >

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

Lớp cơ sở cho bộ xử lý hình ảnh với kiến trúc backend dựa trên kế thừa.

Lớp này định nghĩa quy trình tiền xử lý: xác thực kwargs, chuẩn bị đầu vào và chuyển tiếp đến phương thức _preprocess của backend. Các lớp con của backend (TorchvisionBackend, PilBackend) kế thừa từ lớp này và triển khai các thao tác ảnh thực tế (resize, crop, rescale, normalize, v.v.). Các bộ xử lý ảnh cụ thể cho từng model sau đó sẽ kế thừa từ lớp backend phù hợp.

Tổng quan kiến trúc

Cấp bậc lớp là:

BaseImageProcessor (lớp này) ├── TorchvisionBackend (tăng tốc bằng GPU, torch.Tensor) │ └── ModelImageProcessor (ví dụ: LlavaNextImageProcessor) └── PilBackend (CPU di động, np.ndarray) └── ModelImageProcessorPil (ví dụ: CLIPImageProcessorPil)

Luồng tiền xử lý là:

call() → preprocess() → _preprocess_image_like_inputs() → _prepare_image_like_inputs() (gọi process_image cho từng ảnh) → _preprocess() (thao tác theo lô: resize, crop, v.v.)

  • process_image: Được triển khai bởi các backend. Chuyển đổi một đầu vào thô đơn lẻ (PIL, NumPy, hoặc Tensor) sang định dạng làm việc của backend (torch.Tensor hoặc np.ndarray), xử lý chuyển đổi RGB và sắp xếp lại kênh.
  • _preprocess: Được triển khai bởi các backend. Thực hiện xử lý batch thực tế (resize, center crop, rescale, normalize, pad) và trả về một BatchFeature.

Cài đặt cơ bản

Đối với các bộ xử lý chỉ cần các thao tác chuẩn (resize, center crop, rescale, normalize), hãy kế thừa từ một backend và định nghĩa các thuộc tính lớp:

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

Phương thức _preprocess của backend xử lý pipeline chuẩn một cách tự động.

Xử lý tùy chỉnh

Đối với các bộ xử lý cần logic tùy chỉnh (ví dụ: xử lý theo từng patch, nhiều loại đầu vào), hãy ghi đè _preprocess trong bộ xử lý cụ thể cho mô hình của bạn. Phương thức _preprocess nhận các hình ảnh đã được chuẩn bị sẵn (đã chuyển sang định dạng backend với thứ tự kênh-đầu) và thực hiện xử lý thực tế:

class MyImageProcessor(TorchvisionBackend): def _preprocess(self, images, do_resize, size, do_normalize, image_mean, image_std, **kwargs):

Nhóm hình ảnh theo hình dạng để thực hiện các thao tác theo lô hiệu quả

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

Đối với bộ xử lý xử lý nhiều loại đầu vào (ví dụ: ảnh + bản đồ phân đoạn), ghi đè _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

Mở rộng Hành vi Backend

Để tùy chỉnh các thao tác cho một backend cụ thể, hãy kế thừa backend đó và ghi đè các phương thức của nó:

from transformers.image_processing_backends import TorchvisionBackend, PilBackend

class MyTorchvisionProcessor(TorchvisionBackend): def resize(self, image, size, **kwargs):

Logic tự định nghĩa để thay đổi kích thước cho torchvision

return super().resize(image, size, **kwargs)

class MyPilProcessor(PilBackend): def resize(self, image, size, **kwargs):

Logic tự định nghĩa để thay đổi kích thước cho PIL

return super().resize(image, size, **kwargs)

Tham số tùy chỉnh

Để thêm các tham số ngoài ImagesKwargs, hãy tạo một lớp kwargs tùy chỉnh và đặt nó làm valid_kwargs:

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

class MyImageProcessor(TorchvisionBackend): valid_kwargs = MyImageProcessorKwargs custom_param = 10 # giá trị mặc định

Ghi chú chính

  • Việc chọn backend được thực hiện ở cấp lớp: kế thừa từ TorchvisionBackend hoặc PilBackend
  • Backends nhận ảnh dưới dạng torch.Tensor (Torchvision) hoặc np.ndarray (PIL), luôn theo thứ tự kênh trước
  • Tất cả các hình ảnh đều có chiều kênh (channel dimension) đứng đầu trong quá trình xử lý, bất kể backend nào
  • Các đối số không được người dùng cung cấp sẽ mặc định là giá trị thuộc tính của lớp
  • Các lớp backend đóng gói logic cụ thể của backend (resize, normalize, v.v.) và có thể được ghi đè

center_crop

< >

( image: ndarraysize: dictdata_format: str | transformers.image_utils.ChannelDimension | None = Noneinput_data_format: str | transformers.image_utils.ChannelDimension | None = None**kwargs )

Tham số

  • image (np.ndarray) — Ảnh cần cắt phần giữa.
  • size (dict[str, int]) — Kích thước của ảnh đầu ra.
  • data_format (str hoặc ChannelDimension, tùy chọn) — Định dạng chiều kênh cho ảnh đầu ra. Nếu không được đặt, định dạng chiều kênh của ảnh đầu vào sẽ được sử dụng. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).
  • input_data_format (ChannelDimension hoặc str, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).

Cắt giữa một hình ảnh thành (size["height"], size["width"]). Nếu kích thước đầu vào nhỏ hơn crop_size dọc theo bất kỳ cạnh nào, hình ảnh sẽ được đệm bằng 0 rồi sau đó được cắt giữa.

normalize

< >

( image: ndarraymean: float | collections.abc.Iterable[float]std: float | collections.abc.Iterable[float]data_format: str | transformers.image_utils.ChannelDimension | None = Noneinput_data_format: str | transformers.image_utils.ChannelDimension | None = None**kwargs ) → np.ndarray

Tham số

  • image (np.ndarray) — Ảnh cần chuẩn hóa.
  • mean (float hoặc Iterable[float]) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa.
  • std (float hoặc Iterable[float]) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa.
  • data_format (str hoặc ChannelDimension, tùy chọn) — Định dạng chiều kênh cho ảnh đầu ra. Nếu không được đặt, định dạng chiều kênh của ảnh đầu vào sẽ được sử dụng. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).
  • input_data_format (ChannelDimension hoặc str, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).

Trả về

np.ndarray

Hình ảnh đã được chuẩn hóa.

Chuẩn hóa một hình ảnh. image = (image - image_mean) / image_std.

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]*argsimage_like_kwargs: dict[str, typing.Any] | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> ) → ~image_processing_base.BatchFeature

Tham số

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Ảnh cần tiền xử lý. Kỳ vọng một ảnh đơn hoặc một lô ảnh với giá trị pixel từ 0 đến 255. Nếu truyền vào các ảnh có giá trị pixel từ 0 đến 1, hãy đặt do_rescale=False.
  • image_like_kwargs (dict[str, Any], tùy chọn) — Cờ dành cho nhà phát triển để chỉ định các đầu vào dạng ảnh bổ sung, cũng sẽ được tiền xử lý. Chỉ sử dụng cờ này khi việc truyền các đầu vào dưới dạng kwarg không hoạt động. Ví dụ, preprocess(images, masks=masks) là phương án được ưu tiên nhưng có thể gây ra vấn đề về thứ tự ưu tiên của đối số đối với một số mô hình. Trong những trường hợp đó, có thể sử dụng preprocess(images, image_like_inputs={"masks": masks}) thay thế.
  • do_convert_rgb (bool, kwargs, optional) — Có nên chuyển đổi ảnh sang RGB hay không.
  • do_resize (bool, kwargs, optional) — Có nên thay đổi kích thước ảnh hay không.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Mô tả các kích thước đầu vào tối đa của mô hình.
  • default_to_square (bool, kwargs, tuỳ chọn) — Có mặc định thành ảnh vuông khi thay đổi kích thước hay không, nếu size là một số nguyên.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước của ảnh đầu ra sau khi áp dụng center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. Giá trị này có thể là một trong các hằng số liệt kê (enum) của PILImageResampling. Chỉ có hiệu lực khi do_resize được đặt thành True.
  • do_rescale (bool, kwargs, optional) — Có nên điều chỉnh lại tỷ lệ ảnh hay không.
  • rescale_factor (float, kwargs, optional) — Hệ số rescale để rescale ảnh nếu do_rescale được đặt thành True.
  • do_normalize (bool, kwargs, optional) — Có nên chuẩn hóa ảnh hay không.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, optional) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếu do_normalize được đặt thành True.
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếu do_normalize được đặt thành True.
  • do_pad (bool, kwargs, optional) — Có nên chèn padding cho ảnh hay không. Padding được thực hiện đến kích thước lớn nhất trong batch hoặc đến một kích thước vuông cố định cho mỗi ảnh. Chiến lược padding cụ thể phụ thuộc vào model.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước ở dạng {"height": int, "width" int} để đệm cho các hình ảnh. Phải lớn hơn kích thước bất kỳ hình ảnh nào được cung cấp để tiền xử lý. Nếu không cung cấp pad_size, các hình ảnh sẽ được đệm đến chiều cao và chiều rộng lớn nhất trong lô. Chỉ được áp dụng khi do_pad=True.
  • do_center_crop (bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không.
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Chỉ hỗ trợ ChannelDimension.FIRST. Được thêm vào để tương thích với các bộ xử lý chậm.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).
    • "none" hoặc ChannelDimension.NONE: ảnh ở định dạng (chiều cao, chiều rộng).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — Thiết bị để xử lý các video. Nếu không được đặt, thiết bị sẽ được suy ra từ các video đầu vào.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Trả về các tensor được xếp chồng nếu được đặt thành 'pt', ngược lại trả về một danh sách các tensor.
  • disable_grouping (bool, kwargs, tuỳ chọn) — Có nên vô hiệu hóa việc nhóm các hình ảnh theo kích thước để xử lý chúng riêng lẻ thay vì theo lô hay không. Nếu là None, giá trị sẽ được đặt thành True nếu các hình ảnh nằm trên CPU, và False trong các trường hợp khác. Lựa chọn này dựa trên các quan sát thực nghiệm, như được mô tả chi tiết tại đây: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, optional) — Số lượng token hình ảnh sẽ được sử dụng cho mỗi hình ảnh trong đầu vào. Được thêm vào để đảm bảo tương thích ngược, nhưng trong các mô hình tương lai, giá trị này nên được đặt như một thuộc tính của bộ xử lý.

Trả về

~image_processing_base.BatchFeature

  • data (dict) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi phương thức call (‘pixel_values’, v.v.).
  • tensor_type (Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp một tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo.

Tiền xử lý một hình ảnh hoặc một lô hình ảnh.

process_image

< >

( *args**kwargs )

Xử lý một hình ảnh thô duy nhất thành định dạng làm việc của backend.

Được triển khai bởi các lớp con của backend (TorchvisionBackend, PilBackend). Chuyển đổi đầu vào thô (PIL Image, mảng NumPy, hoặc torch Tensor) sang định dạng nội bộ của backend (torch.Tensor cho Torchvision, np.ndarray cho PIL), xử lý chuyển đổi RGB và đảm bảo thứ tự kênh-đầu (channels-first).

rescale

< >

( image: ndarrayscale: floatdata_format: str | transformers.image_utils.ChannelDimension | None = Noneinput_data_format: str | transformers.image_utils.ChannelDimension | None = None**kwargs ) → np.ndarray

Tham số

  • image (np.ndarray) — Ảnh cần điều chỉnh tỷ lệ.
  • scale (float) — Hệ số tỷ lệ để điều chỉnh lại giá trị pixel.
  • data_format (str hoặc ChannelDimension, tùy chọn) — Định dạng chiều kênh cho ảnh đầu ra. Nếu không được đặt, định dạng chiều kênh của ảnh đầu vào sẽ được sử dụng. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).
  • input_data_format (ChannelDimension hoặc str, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:
    • "channels_first" hoặc ChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width).
    • "channels_last" hoặc ChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels).

Trả về

np.ndarray

Hình ảnh đã được thay đổi tỷ lệ.

Thay đổi tỷ lệ một ảnh theo hệ số tỷ lệ. image = image * scale.

TorchvisionBackend

lớp transformers.TorchvisionBackend

< >

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

Backend Torchvision cho xử lý ảnh theo lô được tăng tốc bằng GPU.

center_crop

< >

( image: torch.Tensorsize: SizeDict**kwargs )

Cắt ảnh ở giữa bằng Torchvision.

convert_to_rgb

< >

( image: torch.Tensorinput_data_format: str | transformers.image_utils.ChannelDimension | None = None )

Chuyển đổi một hình ảnh sang định dạng RGB.

fetch_images

< >

( image_url_or_urls: str | list[str] | list[list[str]] )

Chuyển đổi một hoặc một danh sách URL / đường dẫn thành các đối tượng torch.Tensor.

Các đối tượng ảnh hợp lệ sẵn (tensor, mảng numpy, ảnh PIL) được truyền qua không thay đổi để những người gọi đã tải ảnh trước đó không bị ảnh hưởng.

normalize

< >

( image: torch.Tensormean: float | collections.abc.Iterable[float]std: float | collections.abc.Iterable[float]inplace: bool = False**kwargs )

Chuẩn hóa một hình ảnh bằng Torchvision.

pad

< >

( images: listpad_size: SizeDict = Nonefill_value: int | None = 0padding_mode: str | None = 'constant'return_mask: bool = Falsedisable_grouping: bool | None = Falseis_nested: bool | None = False**kwargs )

Đệm ảnh bằng Torchvision với các thao tác theo lô.

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 = Noneinput_data_format: str | transformers.image_utils.ChannelDimension | None = Nonedevice: typing.Optional[ForwardRef('torch.device')] = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )

Xử lý một hình ảnh duy nhất cho backend torchvision.

rescale

< >

( image: torch.Tensorscale: float**kwargs )

Thay đổi kích thước một hình ảnh theo hệ số tỷ lệ bằng Torchvision.

rescale_and_normalize

< >

( images: torch.Tensordo_rescale: boolrescale_factor: floatdo_normalize: boolimage_mean: float | list[float]image_std: float | list[float] )

Tái quy mô và chuẩn hóa hình ảnh bằng Torchvision (được hợp nhất để tăng hiệu quả).

resize

< >

( image: torch.Tensorsize: SizeDictresample: PILImageResampling | tvF.InterpolationMode | int | None = Noneantialias: bool = True**kwargs )

Resize một hình ảnh bằng Torchvision.

PilBackend

lớp transformers.PilBackend

< >

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

Backend PIL/NumPy cho xử lý ảnh chỉ trên CPU có khả năng di động.

center_crop

< >

( image: ndarraysize: SizeDict**kwargs )

Cắt giữa một hình ảnh bằng NumPy.

convert_to_rgb

< >

( image: ndarrayinput_data_format: str | transformers.image_utils.ChannelDimension | None = None )

Chuyển đổi một hình ảnh sang định dạng RGB.

normalize

< >

( image: ndarraymean: float | collections.abc.Iterable[float]std: float | collections.abc.Iterable[float]**kwargs )

Chuẩn hóa một hình ảnh bằng NumPy.

pad

< >

( images: listpad_size: SizeDict = Nonefill_value: int | None = 0padding_mode: str | None = 'constant'return_mask: bool = False**kwargs )

Đệm ảnh đến kích thước đã chỉ định bằng NumPy.

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 = Noneinput_data_format: str | transformers.image_utils.ChannelDimension | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )

Xử lý một hình ảnh duy nhất cho backend PIL.

rescale

< >

( image: ndarrayscale: float**kwargs )

Thay đổi kích thước một hình ảnh theo hệ số tỷ lệ bằng NumPy.

resize

< >

( image: ndarraysize: SizeDictresample: PILImageResampling | None = Nonereducing_gap: int | None = None**kwargs )

Đổi kích thước ảnh bằng PIL/NumPy.

Update on GitHub