Transformers documentation

InstructBlipVideo

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

Mô hình này được công bố trên HF papers vào ngày 2023-05-11 và được đóng góp cho Hugging Face Transformers vào ngày 2024-06-25.

FlashAttention SDPA

InstructBlipVideo

Tổng quan

InstructBLIPVideo là phần mở rộng của các mô hình được đề xuất trong InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning của Wenliang Dai, Junnan Li, Dongxu Li, Anthony Meng Huat Tiong, Junqi Zhao, Weisheng Wang, Boyang Li, Pascale Fung, Steven Hoi. InstructBLIPVideo sử dụng cùng kiến trúc với InstructBLIP và hoạt động với cùng các checkpoint như InstructBLIP. Điểm khác biệt duy nhất là khả năng xử lý video.

Tóm tắt từ bài báo như sau:

Các mô hình ngôn ngữ đa dụng có khả năng giải quyết nhiều tác vụ khác nhau trong lĩnh vực ngôn ngữ đã ra đời nhờ quy trình tiền huấn luyện và điều chỉnh theo hướng dẫn. Tuy nhiên, việc xây dựng các mô hình thị giác-ngôn ngữ đa dụng là một thách thức do sự khác biệt giữa các tác vụ tăng lên do đầu vào thị giác bổ sung. Mặc dù tiền huấn luyện thị giác-ngôn ngữ đã được nghiên cứu rộng rãi, việc điều chỉnh theo hướng dẫn thị giác-ngôn ngữ vẫn còn tương đối ít được khám phá. Trong bài báo này, chúng tôi tiến hành một nghiên cứu có hệ thống và toàn diện về việc điều chỉnh theo hướng dẫn thị giác-ngôn ngữ dựa trên các mô hình BLIP-2 đã được tiền huấn luyện. Chúng tôi thu thập một loạt 26 bộ dữ liệu công khai, chuyển đổi chúng sang định dạng điều chỉnh theo hướng dẫn và phân loại chúng thành hai cụm cho việc điều chỉnh theo hướng dẫn giữ trong (held-in) và đánh giá zero-shot giữ ngoài (held-out). Ngoài ra, chúng tôi giới thiệu việc trích xuất đặc trưng thị giác nhận thức hướng dẫn (instruction-aware visual feature extraction), một phương pháp quan trọng cho phép mô hình trích xuất các đặc trưng thông tin được điều chỉnh phù hợp với hướng dẫn được đưa ra. Các mô hình InstructBLIP kết quả đạt hiệu suất zero-shot tiên tiến (state-of-the-art) trên tất cả 13 bộ dữ liệu giữ ngoài, vượt trội đáng kể so với BLIP-2 và Flamingo lớn hơn. Các mô hình của chúng tôi cũng dẫn đến hiệu suất tiên tiến khi được tinh chỉnh (finetune) trên các tác vụ hạ nguồn riêng lẻ (ví dụ: độ chính xác 90,7% trên ScienceQA IMG). Hơn nữa, chúng tôi minh họa định tính các ưu điểm của InstructBLIP so với các mô hình đa phương thức đồng thời.

drawing InstructBLIPVideo architecture. Taken from the original paper.

Mô hình này được đóng góp bởi RaushanTurganbay. Mã nguồn gốc có thể được tìm thấy tại đây.

Mẹo sử dụng

  • Mô hình được huấn luyện bằng cách lấy mẫu 4 khung hình cho mỗi video, do đó khuyến nghị lấy mẫu 4 khung hình

Các mô hình BLIP sau bản phát hành v4.46 sẽ phát ra cảnh báo về việc thêm processor.num_query_tokens = {{num_query_tokens}} và mở rộng lớp embeddings của mô hình để thêm token đặc biệt <image>. Rất khuyến nghị thêm các thuộc tính này vào processor nếu bạn sở hữu checkpoint của mô hình, hoặc mở một PR nếu checkpoint không thuộc về bạn. Việc thêm các thuộc tính này có nghĩa là BLIP sẽ thêm số lượng query tokens cần thiết cho mỗi hình ảnh và mở rộng văn bản với số lượng placeholder <image> tương ứng với số query tokens. Thông thường, con số này vào khoảng 500 tokens mỗi hình ảnh, vì vậy hãy đảm bảo rằng văn bản không bị cắt cụt, nếu không sẽ xảy ra lỗi khi gộp các embeddings. Các thuộc tính này có thể lấy từ cấu hình mô hình, dưới dạng model.config.num_query_tokens và việc mở rộng embeddings của mô hình có thể thực hiện bằng cách làm theo liên kết này.

InstructBlipVideoConfig

lớp transformers.InstructBlipVideoConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneqformer_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_query_tokens: int = 32initializer_factor: float = 1.0initializer_range: float = 0.02video_token_index: int | None = None )

Tham số

  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung thị giác.
  • qformer_config (dict, tùy chọn) — Từ điển các tùy chọn cấu hình được dùng để khởi tạo InstructBlipVideoQFormerConfig.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung văn bản.
  • num_query_tokens (int, tùy chọn, mặc định là 32) — Số lượng token truy vấn được truyền qua Transformer.
  • initializer_factor (float, tùy chọn, mặc định là 1.0) — Hệ số để khởi tạo tất cả các ma trận trọng số (nên giữ ở mức 1, được sử dụng bên trong cho việc kiểm tra khởi tạo).
  • initializer_range (float, tùy chọn, mặc định là 0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.
  • video_token_index (int, tùy chọn) — Chỉ số token video được dùng làm ký tự thay thế cho các video đầu vào.

Đây là lớp cấu hình để lưu trữ cấu hình của một InstructBlipVideoModel. Nó được sử dụng để khởi tạo một mô hình Instructblipvideo theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Salesforce/instructblip-flan-t5-xl

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

Ví dụ:

>>> from transformers import (
...     InstructBlipVideoVisionConfig,
...     InstructBlipVideoQFormerConfig,
...     OPTConfig,
...     InstructBlipVideoConfig,
...     InstructBlipVideoForConditionalGeneration,
... )

>>> # Initializing a InstructBlipVideoConfig with Salesforce/instructblip-flan-t5-xl style configuration
>>> configuration = InstructBlipVideoConfig()

>>> # Initializing a InstructBlipVideoForConditionalGeneration (with random weights) from the Salesforce/instructblip-flan-t5-xl style configuration
>>> model = InstructBlipVideoForConditionalGeneration(configuration)

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

>>> # We can also initialize a InstructBlipVideoConfig from a InstructBlipVideoVisionConfig, InstructBlipVideoQFormerConfig and any PreTrainedConfig

>>> # Initializing Instructblipvideo vision, Instructblipvideo Q-Former and language model configurations
>>> vision_config = InstructBlipVideoVisionConfig()
>>> qformer_config = InstructBlipVideoQFormerConfig()
>>> text_config = OPTConfig()

>>> config = InstructBlipVideoConfig(vision_config=vision_config, qformer_config=qformer_config, text_config=text_config)

InstructBlipVideoVisionConfig

lớp transformers.InstructBlipVideoVisionConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1408intermediate_size: int = 6144num_hidden_layers: int = 39num_attention_heads: int = 16image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 14hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06attention_dropout: float | int = 0.0initializer_range: float = 1e-10qkv_bias: bool = True )

Tham số

  • hidden_size (int, tùy chọn, mặc định là 1408) — Kích thước của các biểu diễn ẩn.
  • intermediate_size (int, tùy chọn, mặc định là 6144) — Kích thước của các biểu diễn MLP.
  • num_hidden_layers (int, tùy chọn, mặc định là 39) — Số lượng lớp ẩn trong bộ giải mã Transformer.
  • num_attention_heads (int, tùy chọn, mặc định là 16) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer.
  • image_size (Union[int, list[int], tuple[int, int]], tùy chọn, mặc định là 224) — Kích thước (độ phân giải) của mỗi hình ảnh.
  • patch_size (Union[int, list[int], tuple[int, int]], tùy chọn, mặc định là 14) — Kích thước (độ phân giải) của mỗi patch.
  • hidden_act (str, tùy chọn, mặc định là gelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ, "gelu", "relu", "silu", v.v.
  • layer_norm_eps (float, tùy chọn, mặc định là 1e-06) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization).
  • attention_dropout (Union[float, int], tùy chọn, mặc định là 0.0) — Tỷ lệ dropout cho các xác suất chú ý.
  • initializer_range (float, tùy chọn, mặc định là 1e-10) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.
  • qkv_bias (bool, tùy chọn, mặc định là True) — Có thêm bias cho queries, keys và values hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một InstructBlipVideoModel. Nó được sử dụng để khởi tạo một mô hình Instructblipvideo theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Salesforce/instructblip-flan-t5-xl

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

Ví dụ:

>>> from transformers import InstructBlipVideoVisionConfig, InstructBlipVideoVisionModel

>>> # Initializing a InstructBlipVideoVisionConfig with Salesforce/instructblip-flan-t5-xl style configuration
>>> configuration = InstructBlipVideoVisionConfig()

>>> # Initializing a InstructBlipVideoVisionModel (with random weights) from the Salesforce/instructblip-flan-t5-xl style configuration
>>> model = InstructBlipVideoVisionModel(configuration)

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

InstructBlipVideoQFormerConfig

lớp transformers.InstructBlipVideoQFormerConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0cross_attention_frequency: int = 2encoder_hidden_size: int = 1408 )

Tham số

  • vocab_size (int, tuỳ chọn, mặc định là 30522) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi input_ids.
  • hidden_size (int, tùy chọn, mặc định là 768) — Kích thước của các biểu diễn ẩn.
  • num_hidden_layers (int, tùy chọn, mặc định là 12) — Số lượng lớp ẩn trong bộ giải mã Transformer.
  • num_attention_heads (int, tùy chọn, mặc định là 12) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer.
  • intermediate_size (int, tùy chọn, mặc định là 3072) — Kích thước của các biểu diễn MLP.
  • hidden_act (str, tùy chọn, mặc định là gelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ, "gelu", "relu", "silu", v.v.
  • hidden_dropout_prob (Union[float, int], tùy chọn, mặc định là 0.1) — Xác suất dropout cho tất cả các lớp fully connected trong embeddings, encoder và pooler.
  • attention_probs_dropout_prob (Union[float, int], tùy chọn, mặc định là 0.1) — Tỷ lệ dropout cho các xác suất chú ý.
  • max_position_embeddings (int, tùy chọn, mặc định là 512) — Chiều dài tối đa của chuỗi mà mô hình này có thể được sử dụng.
  • initializer_range (float, tùy chọn, mặc định là 0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.
  • layer_norm_eps (float, tùy chọn, mặc định là 1e-12) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization).
  • pad_token_id (int, tùy chọn, mặc định là 0) — Token id được sử dụng để đệm (padding) trong từ vựng.
  • cross_attention_frequency (int, tùy chọn, mặc định là 2) — Tần suất thêm cross-attention vào các lớp Transformer.
  • encoder_hidden_size (int, tùy chọn, mặc định là 1408) — Kích thước ẩn của các trạng thái ẩn cho cross-attention.

Đây là lớp cấu hình để lưu trữ cấu hình của một InstructBlipVideoModel. Nó được sử dụng để khởi tạo một mô hình Instructblipvideo theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Salesforce/instructblip-flan-t5-xl

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

Ví dụ:

>>> from transformers import InstructBlipVideoQFormerConfig, InstructBlipVideoQFormerModel

>>> # Initializing a InstructBlipVideo Salesforce/instructblip-flan-t5-xl style configuration
>>> configuration = InstructBlipVideoQFormerConfig()

>>> # Initializing a model (with random weights) from the Salesforce/instructblip-flan-t5-xl style configuration
>>> model = InstructBlipVideoQFormerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

InstructBlipVideoProcessor

lớp transformers.InstructBlipVideoProcessor

< >

( video_processortokenizerqformer_tokenizernum_query_tokens = None**kwargs )

Tham số

  • video_processor (InstructBlipVideoVideoProcessor) — Bộ xử lý video là một đầu vào bắt buộc.
  • tokenizer (GPT2Tokenizer) — Tokenizer là một đầu vào bắt buộc.
  • qformer_tokenizer (AutoTokenizer) — Một instance của [‘PreTrainedTokenizer`]. Tokenizer của Q-Former là một đầu vào bắt buộc.
  • num_query_tokens (int, tùy chọn) — Số lượng token được Qformer sử dụng làm truy vấn, phải giống với cấu hình của mô hình.

Tạo một InstructBlipVideoProcessor bao bọc một bộ xử lý video, một tokenizer và một tokenizer qformer thành một bộ xử lý duy nhất.

InstructBlipVideoProcessor cung cấp đầy đủ các chức năng của InstructBlipVideoVideoProcessor, GPT2Tokenizer và {qformer_tokenizer_class}. Xem ~InstructBlipVideoVideoProcessor, ~GPT2Tokenizer và ~{qformer_tokenizer_class} để biết thêm thông tin.

InstructBlipVideoVideoProcessor

lớp transformers.InstructBlipVideoVideoProcessor

< >

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

Tham số

  • do_convert_rgb (bool, kwargs, tuỳ chọn, mặc định là True) — Có chuyển đổi ảnh sang RGB hay không.
  • do_resize (bool, kwargs, tuỳ chọn, mặc định là True) — 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ặc định là {'height' -- 384, 'width': 384}): Mô tả kích thước đầu vào tối đa cho mô hình.
  • default_to_square (bool, kwargs, tùy chọn, mặc định là True) — Có nên mặc định dùng ảnh vuông khi thay đổi kích thước không, nếu size là một số nguyên.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, mặc định là 3) — 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, tuỳ chọn, mặc định là True) — Có nên điều chỉnh lại tỷ lệ ảnh hay không.
  • rescale_factor (float, kwargs, optional, mặc định là 0.00392156862745098) — Hệ số rescale để rescale ảnh nếu do_rescale được đặt thành True.
  • do_normalize (bool, kwargs, tuỳ chọn, mặc định là True) — Có nên chuẩn hóa hình ảnh hay không.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, optional, mặc định là [0.48145466, 0.4578275, 0.40821073]) — 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, mặc định là [0.26862954, 0.26130258, 0.27577711]) — Độ 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_center_crop (bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không.
  • 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.
  • 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.
  • 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.
  • do_sample_frames (bool, kwargs, tuỳ chọn, mặc định là False) — Có lấy mẫu các khung hình từ video trước khi xử lý hay xử lý toàn bộ video hay không.
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — Metadata của video, chứa thông tin về tổng thời lượng, fps và tổng số khung hình. Nó sẽ được sử dụng để lấy mẫu các khung hình từ video hoặc tính toán mốc thời gian. Không truyền bất kỳ metadata nào trừ khi bạn đang cố gắng giải mã video thủ công trước khi xử lý
  • fps (Annotated[int | float | None, None], kwargs) — Số khung hình mục tiêu cần lấy mẫu mỗi giây khi do_sample_frames=True.
  • num_frames (Annotated[int | None, None], kwargs) — Số khung hình tối đa cần lấy mẫu khi do_sample_frames=True.
  • return_metadata (bool, kwargs, tuỳ chọn, mặc định là False) — Có trả về metadata của video hay không. Video metadata là một đối tượng chứa thông tin về thời lượng video, fps, backend giải mã, v.v.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Nếu được đặt, sẽ trả về tensor của một framework cụ thể. Các giá trị chấp nhận được là:
    • 'pt': Trả về các đối tượng torch.Tensor của PyTorch.
    • 'np': Trả về các đối tượng np.ndarray của NumPy.
  • **kwargs (VideosKwargs, optional) — Các tùy chọn xử lý bổ sung cho từng phương thức (text, hình ảnh, video, âm thanh). Các tham số cụ thể của model được liệt kê ở trên; xem lớp TypedDict để biết danh sách đầy đủ các đối số được hỗ trợ.

Tạo một trình xử lý video InstructBlipVideoVideoProcessor.

preprocess

< >

( videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]]]**kwargs: *<class 'transformers.processing_utils.VideosKwargs'> ) → ~image_processing_base.BatchFeature

Tham số

  • videos (Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]]) — Video cần tiền xử lý. Kỳ vọng một video đơn hoặc một lô video có giá trị pixel từ 0 đến 255. Nếu truyền vào các video có giá trị pixel từ 0 đến 1, hãy đặt do_rescale=False.
  • 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.
  • 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_center_crop (bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không.
  • 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.
  • 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.
  • 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.
  • do_sample_frames (bool, kwargs, tuỳ chọn) — Có lấy mẫu các khung hình từ video trước khi xử lý hay xử lý toàn bộ video hay không.
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — Metadata của video, chứa thông tin về tổng thời lượng, fps và tổng số khung hình. Nó sẽ được sử dụng để lấy mẫu các khung hình từ video hoặc tính toán mốc thời gian. Không truyền bất kỳ metadata nào trừ khi bạn đang cố gắng giải mã video thủ công trước khi xử lý
  • fps (Annotated[int | float | None, None], kwargs) — Số khung hình mục tiêu cần lấy mẫu mỗi giây khi do_sample_frames=True.
  • num_frames (Annotated[int | None, None], kwargs) — Số khung hình tối đa cần lấy mẫu khi do_sample_frames=True.
  • return_metadata (bool, kwargs, optional) — Có nên trả về metadata của video hay không. Video metadata là một object chứa thông tin về thời lượng video, fps, backend giải mã, v.v.
  • 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.

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.

InstructBlipVideoVisionModel

lớp transformers.InstructBlipVideoVisionModel

< >

( config: InstructBlipVideoVisionConfig )

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor có hình dạng (batch_size, num_channels, image_size, image_size), tùy chọn) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (InstructBlipVideoProcessor sử dụng image_processor_class để xử lý hình ảnh).
  • interpolate_pos_encoding (bool, tùy chọn, mặc định là False) — Có nội suy các mã vị trí được huấn luyện trước hay không.

Trả về

BaseModelOutputWithPooling hoặc tuple(torch.Tensor)

Một BaseModelOutputWithPooling hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (InstructBlipVideoConfig) và đầu vào.

Phương thức forward của InstructBlipVideoVisionModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.

  • pooler_output (torch.Tensor có hình dạng (batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

InstructBlipVideoQFormerModel

lớp transformers.InstructBlipVideoQFormerModel

< >

( config: InstructBlipVideoQFormerConfig )

Querying Transformer (Q-Former), được sử dụng trong InstructBlipVideo. Được chỉnh sửa nhẹ từ BLIP-2 vì nó cũng nhận chỉ thị (instruction) làm đầu vào.

forward

< >

( input_ids: LongTensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonequery_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có dạng (batch_size, sequence_length)) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • query_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Trạng thái ẩn (hidden states) được sử dụng trong phép tính chú ý (attention). Nếu là cross-attention, trạng thái này sẽ được dùng cho query (tức là key và value sẽ sử dụng encoder_hidden_states).
  • encoder_hidden_states (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention nếu model được cấu hình như một decoder.
  • encoder_attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm của đầu vào encoder. Mặt nạ này được sử dụng trong cross-attention nếu model được cấu hình như một decoder. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

Trả về

BaseModelOutputWithPoolingAndCrossAttentions hoặc tuple(torch.Tensor)

Một BaseModelOutputWithPoolingAndCrossAttentions hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (InstructBlipVideoConfig) và đầu vào.

Phương thức forward của InstructBlipVideoQFormerModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.

  • pooler_output (torch.Tensor có hình dạng (batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

  • cross_attentions (tuple(torch.Tensor), tùy chọn, được trả về khi output_attentions=True và config.add_cross_attention=True được truyền vào hoặc khi config.output_attentions=True) — Bộ tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.

  • past_key_values (Cache, tùy chọn, được trả về khi use_cache=True được truyền vào hoặc khi config.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.

    Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu config.is_encoder_decoder=True trong các khối cross-attention) có thể được sử dụng (xem đầu vào past_key_values) để tăng tốc độ giải mã tuần tự.

InstructBlipVideoModel

lớp transformers.InstructBlipVideoModel

< >

( config: InstructBlipVideoConfig )

Tham số

  • config (InstructBlipVideoConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.

Mô hình cơ sở InstructBlipVideo bao gồm mô hình ngôn ngữ, qformer và bộ mã hóa thị giác.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( pixel_values: Tensorqformer_input_ids: Tensorqformer_attention_mask: typing.Optional[torch.LongTensor] = Noneinput_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool = Falseuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → InstructBlipVideoForConditionalGenerationModelOutput or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor có hình dạng (batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (InstructBlipVideoProcessor sử dụng image_processor_class để xử lý hình ảnh).
  • qformer_input_ids (torch.LongTensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ vựng của Q-Former. Các token đầu vào có thể được cung cấp tùy chọn để đóng vai trò là prompt văn bản, mà mô hình Q-Former sẽ mã hóa.

    Các chỉ số có thể được lấy bằng cách sử dụng InstructBlipVideoProcessor. Xem InstructBlipVideoProcessor.__call__() để biết chi tiết.

    ID đầu vào là gì?

  • qformer_attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ số token padding. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ số token padding. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, target_sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào của decoder trong bảng từ vựng. Có thể lấy chỉ số bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. ID đầu vào của decoder là gì?

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào của bộ giải mã là gì?

  • decoder_attention_mask (torch.BoolTensor có hình dạng (batch_size, target_sequence_length), tùy chọn) — Hành vi mặc định: tạo một tensor bỏ qua các token pad trong decoder_input_ids. Mặt nạ nhân quả (causal mask) cũng sẽ được sử dụng theo mặc định. Chỉ liên quan khi sử dụng mô hình ngôn ngữ encoder-decoder (như T5).

    Chỉ liên quan trong trường hợp sử dụng mô hình ngôn ngữ encoder-decoder (như T5).

  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • interpolate_pos_encoding (bool, tùy chọn, mặc định là False) — Có nội suy các mã vị trí được huấn luyện trước hay không.
  • use_cache (bool, tùy chọn) — Nếu đặt thành True, các trạng thái key value của past_key_values sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem past_key_values).

Trả về

InstructBlipVideoForConditionalGenerationModelOutput hoặc tuple(torch.Tensor)

Một InstructBlipVideoForConditionalGenerationModelOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (InstructBlipVideoConfig) và đầu vào.

Phương thức forward của InstructBlipVideoModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor, optional, được trả về khi labels được cung cấp, torch.Tensor có hình dạng (1,)) — Mất mô hình hóa ngôn ngữ từ mô hình ngôn ngữ.
  • logits (torch.Tensor có hình dạng (batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình ngôn ngữ (language modeling head) của mô hình ngôn ngữ.
  • vision_outputs (~modeling_outputs.BaseModelOutputWithPooling, tùy chọn) — Đầu ra của bộ mã hóa thị giác.
  • qformer_outputs (~modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions, tùy chọn) — Đầu ra của Q-Former (Querying Transformer).
  • language_model_outputs (CausalLMOutputWithPast hoặc Seq2SeqLMOutput) — Đầu ra của mô hình ngôn ngữ.

InstructBlipVideoForConditionalGeneration

lớp transformers.InstructBlipVideoForConditionalGeneration

< >

( config: InstructBlipVideoConfig )

Tham số

  • config (InstructBlipVideoConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.

Mô hình InstructBlipVideo để tạo văn bản dựa trên một hình ảnh và một prompt văn bản tùy chọn. Mô hình bao gồm một bộ mã hóa thị giác, Querying Transformer (Q-Former) và một mô hình ngôn ngữ.

Bạn có thể tùy chọn truyền input_ids vào mô hình, đóng vai trò là một prompt văn bản, để mô hình ngôn ngữ tiếp tục prompt đó. Nếu không, mô hình ngôn ngữ sẽ bắt đầu tạo văn bản từ token [BOS] (beginning-of-sequence).

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( pixel_values: Tensorqformer_input_ids: Tensorqformer_attention_mask: typing.Optional[torch.LongTensor] = Noneinput_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneinterpolate_pos_encoding: bool = Falseuse_cache: bool | None = Nonemm_encoder_outputs: transformers.modeling_outputs.BaseModelOutputWithPooling | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → InstructBlipVideoForConditionalGenerationModelOutput or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor có hình dạng (batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (InstructBlipVideoProcessor sử dụng image_processor_class để xử lý hình ảnh).
  • qformer_input_ids (torch.LongTensor có shape (batch_size, sequence_length)) — Chuỗi được dùng làm prompt để đưa vào module Q-Former.
  • qformer_attention_mask (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm.
  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ số token padding. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, target_sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào của decoder trong bảng từ vựng. Có thể lấy chỉ số bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. ID đầu vào của decoder là gì?

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào của bộ giải mã là gì?

  • decoder_attention_mask (torch.LongTensor có shape (batch_size, target_sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên một số chỉ số token nhất định. Mặc định, một mặt nạ nhân quả sẽ được sử dụng để đảm bảo mô hình chỉ có thể nhìn vào các đầu vào trước đó nhằm dự đoán tương lai.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có che (masked language modeling loss). Chỉ số phải nằm trong [0, ..., config.vocab_size] hoặc -100 (xem docstring của input_ids). Các token có chỉ số được đặt thành -100 sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn nằm trong [0, ..., config.vocab_size].
  • interpolate_pos_encoding (bool, tùy chọn, mặc định là False) — Có nội suy các mã vị trí được huấn luyện trước hay không.
  • use_cache (bool, tùy chọn) — Nếu đặt thành True, các trạng thái key value của past_key_values sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem past_key_values).
  • mm_encoder_outputs (~modeling_outputs.BaseModelOutputWithPooling, tùy chọn) — Dict trong đó các khóa là các chế độ (modality) được hỗ trợ và các giá trị là kết quả mã hóa cho chế độ đó. Mỗi kết quả mã hóa là một tuple gồm (pooler_output, tùy chọn: last_hidden_states, tùy chọn: hidden_states, tùy chọn: attentions) pooler_output có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các đặc trưng đa phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.

Trả về

InstructBlipVideoForConditionalGenerationModelOutput hoặc tuple(torch.Tensor)

Một InstructBlipVideoForConditionalGenerationModelOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (InstructBlipVideoConfig) và đầu vào.

Phương thức forward của InstructBlipVideoForConditionalGeneration ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor, optional, được trả về khi labels được cung cấp, torch.Tensor có hình dạng (1,)) — Mất mô hình hóa ngôn ngữ từ mô hình ngôn ngữ.
  • logits (torch.Tensor có hình dạng (batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình ngôn ngữ (language modeling head) của mô hình ngôn ngữ.
  • vision_outputs (~modeling_outputs.BaseModelOutputWithPooling, tùy chọn) — Đầu ra của bộ mã hóa thị giác.
  • qformer_outputs (~modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions, tùy chọn) — Đầu ra của Q-Former (Querying Transformer).
  • language_model_outputs (CausalLMOutputWithPast hoặc Seq2SeqLMOutput) — Đầu ra của mô hình ngôn ngữ.

Ví dụ:

>>> from transformers import InstructBlipVideoProcessor, InstructBlipVideoForConditionalGeneration
>>> import torch
>>> from huggingface_hub import hf_hub_download
>>> import av
>>> import numpy as np

>>> 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 = InstructBlipVideoForConditionalGeneration.from_pretrained("Salesforce/instructblip-vicuna-7b", device_map="auto")
>>> processor = InstructBlipVideoProcessor.from_pretrained("Salesforce/instructblip-vicuna-7b")

>>> file_path = hf_hub_download(
...       repo_id="nielsr/video-demo", filename="eating_spaghetti.mp4", repo_type="dataset"
... )
>>> container = av.open(file_path)

>>> # sample uniformly 4 frames from the video
>>> total_frames = container.streams.video[0].frames
>>> indices = np.arange(0, total_frames, total_frames / 4).astype(int)
>>> clip = read_video_pyav(container, indices)

>>> prompt = "What is happening in the video?"
>>> inputs = processor(text=prompt, images=clip, return_tensors="pt").to(model.device)

>>> outputs = model.generate(
...     **inputs,
...     do_sample=False,
...     num_beams=5,
...     max_length=256,
...     repetition_penalty=1.5,
...     length_penalty=1.0,
... )
>>> generated_text = processor.batch_decode(outputs, skip_special_tokens=True)[0].strip()
>>> print(generated_text)
"A person is eating a bowl of pasta, and they are using a fork to eat it. The person is sitting at a table, and the plate of pasta is on the table in front"

generate

< >

( pixel_values: Tensorqformer_input_ids: typing.Optional[torch.LongTensor] = Noneqformer_attention_mask: typing.Optional[torch.LongTensor] = Noneinput_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool = False**generate_kwargs ) → captions (list)

Tham số

  • pixel_values (torch.Tensor có shape (batch_size, num_channels, height, width) hoặc — (batch_size, num_frames, num_channels, height, width)): Ảnh hoặc video đầu vào cần được xử lý.
  • qformer_input_ids (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Chuỗi được dùng làm prompt để đưa vào module Q-Former.
  • qformer_attention_mask (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm.
  • input_ids (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Chuỗi được dùng làm prompt cho quá trình sinh.
  • attention_mask (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Biểu diễn nhúng của các đầu vào. Phải là float, không phải token int.
  • interpolate_pos_encoding (bool, tùy chọn, mặc định là False) — Có nên nội suy mã hóa vị trí của các nhúng hình ảnh hay không.

Trả về

captions (list)

Một danh sách các chuỗi có độ dài batch_size * num_captions.

Ghi đè hàm generate để có thể sử dụng mô hình như một bộ tạo có điều kiện.

get_video_features

< >

( pixel_values: Tensorqformer_input_ids: LongTensorqformer_attention_mask: typing.Optional[torch.LongTensor] = Noneinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithVisionQformerOutputs or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor có hình dạng (batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào.
  • qformer_input_ids (torch.LongTensor có shape (batch_size, sequence_length)) — Chuỗi được dùng làm prompt để đưa vào module Q-Former.
  • qformer_attention_mask (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm.
  • interpolate_pos_encoding (bool, tùy chọn, mặc định là False) — Có nội suy các mã vị trí được huấn luyện trước hay không.

Trả về

BaseModelOutputWithVisionQformerOutputs hoặc tuple(torch.Tensor)

Một BaseModelOutputWithVisionQformerOutputs hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (InstructBlipVideoConfig) và đầu vào.

  • last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.

  • pooler_output (torch.Tensor có hình dạng (batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

  • vision_outputs (~modeling_outputs.BaseModelOutputWithPooling, tùy chọn) — Đầu ra của bộ mã hóa thị giác.

  • qformer_outputs (~modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions, tùy chọn) — Đầu ra của Q-Former (Querying Transformer).

Ví dụ:

>>> from PIL import Image
>>> from transformers import AutoProcessor, InstructBlipVideoForConditionalGeneration

>>> model = InstructBlipVideoForConditionalGeneration.from_pretrained("Salesforce/instructblip-flan-t5-xl")
>>> processor = AutoProcessor.from_pretrained("Salesforce/instructblip-flan-t5-xl")

>>> 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]
Update on GitHub