Transformers documentation

HGNet-V2

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 đóng góp cho Hugging Face Transformers vào ngày 2025-04-29.

HGNet-V2

HGNetV2 là một mạng nơ-ron tích chập (CNN) thế hệ mới làm khung xương (backbone), được xây dựng để đạt sự đánh đổi tối ưu giữa độ chính xác và độ trễ trên GPU NVIDIA. Dựa trên HGNet ban đầu, HGNetV2 mang lại độ chính xác cao với tốc độ suy luận nhanh và thể hiện tốt trên các tác vụ như phân loại ảnh, phát hiện đối tượng và phân đoạn, khiến nó trở thành lựa chọn thực tế cho các ứng dụng thị giác máy tính dựa trên GPU.

Bạn có thể tìm thấy tất cả các mô hình HGNet V2 gốc dưới tổ chức USTC.

Mô hình này được đóng góp bởi VladOS95-cyber. Nhấp vào các mô hình HGNet V2 ở thanh bên phải để xem thêm các ví dụ về cách áp dụng HGNet V2 cho các tác vụ thị giác máy tính khác nhau.

Ví dụ dưới đây minh họa cách phân loại một hình ảnh bằng Pipeline hoặc lớp AutoModel.

Pipeline
AutoModel
from transformers import pipeline


pipeline = pipeline(
    task="image-classification",
    model="ustc-community/hgnet-v2",
    device=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")

HGNetV2Config

lớp transformers.HGNetV2Config

< >

( 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 = Nonenum_channels: int = 3embedding_size: int = 64depths: list[int] | tuple[int, ...] = (3, 4, 6, 3)hidden_sizes: list[int] | tuple[int, ...] = (256, 512, 1024, 2048)hidden_act: str = 'relu'_out_features: list[str] | None = None_out_indices: list[int] | None = Nonestem_channels: list[int] | tuple[int, ...] = (3, 32, 48)stem_strides: Sequence = (2, 1, 1, 2, 1)stage_in_channels: list[int] | tuple[int, ...] = (48, 128, 512, 1024)stage_mid_channels: list[int] | tuple[int, ...] = (48, 96, 192, 384)stage_out_channels: list[int] | tuple[int, ...] = (128, 512, 1024, 2048)stage_num_blocks: list[int] | tuple[int, ...] = (1, 1, 3, 1)stage_downsample: list[bool] | tuple[bool, ...] = (False, True, True, True)stage_downsample_strides: Sequence = (2, 2, 2, 2)stage_light_block: list[bool] | tuple[bool, ...] = (False, False, True, True)stage_kernel_size: list[int] | tuple[int, ...] = (3, 3, 5, 5)stage_numb_of_layers: list[int] | tuple[int, ...] = (6, 6, 6, 6)use_learnable_affine_block: bool = Falseinitializer_range: float = 0.02 )

Tham số

  • num_channels (int, tùy chọn, mặc định là 3) — Số lượng kênh đầu vào.
  • embedding_size (int, tùy chọn, mặc định là 64) — Kích thước của các embedding và hidden states.
  • depths (Union[list[int], tuple[int, ...]], tùy chọn, mặc định là (3, 4, 6, 3)) — Độ sâu của từng lớp trong Transformer.
  • hidden_sizes (Union[list[int], tuple[int, ...]], tùy chọn, mặc định là (256, 512, 1024, 2048)) — Kích thước ẩn (hidden size) ở mỗi giai đoạn của mô hình.
  • hidden_act (str, tùy chọn, mặc định là relu) — 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.
  • stem_channels (list[int], tuỳ chọn, mặc định là [3, 32, 48]) — Kích thước kênh cho các lớp stem:
    • Số đầu tiên (3) là số kênh của ảnh đầu vào
    • Số thứ hai (32) là số kênh thân trung gian
    • Số thứ ba (48) là số kênh của thân đầu ra
  • stem_strides (Sequence[int | list[int] | tuple[int, ...]], tùy chọn, mặc định là (2, 1, 1, 2, 1)) — Các mẫu stride cho các lớp stem.
  • stage_in_channels (list[int], tùy chọn, mặc định là [48, 128, 512, 1024]) — Kích thước số kênh đầu vào cho mỗi giai đoạn của backbone. Tham số này xác định số kênh mà đầu vào của mỗi giai đoạn sẽ có.
  • stage_mid_channels (list[int], tùy chọn, mặc định là [48, 96, 192, 384]) — Kích thước kênh trung gian cho từng giai đoạn của backbone. Tham số này xác định số lượng kênh được sử dụng trong các lớp trung gian của mỗi giai đoạn.
  • stage_out_channels (list[int], tùy chọn, mặc định là [128, 512, 1024, 2048]) — Kích thước số kênh đầu ra cho từng giai đoạn của backbone. Tham số này xác định số kênh mà đầu ra của mỗi giai đoạn sẽ có.
  • stage_num_blocks (list[int], tùy chọn, mặc định là [1, 1, 3, 1]) — Số lượng khối được sử dụng trong mỗi giai đoạn của backbone. Tham số này kiểm soát độ sâu của mỗi giai đoạn bằng cách chỉ định số lượng khối tích chập cần xếp chồng.
  • stage_downsample (list[bool], tùy chọn, mặc định là [False, True, True, True]) — Chỉ định có giảm mẫu (downsample) các bản đồ đặc trưng ở mỗi giai đoạn hay không. Nếu True, các chiều không gian của bản đồ đặc trưng sẽ bị giảm.
  • stage_downsample_strides (Sequence[int | list[int] | tuple[int, ...]], tùy chọn, mặc định là (2, 2, 2, 2)) — Các mẫu stride cho từng lớp stage.
  • stage_light_block (list[bool], tùy chọn, mặc định là [False, False, True, True]) — Chỉ định việc có sử dụng light block ở mỗi stage hay không. Light block là một biến thể của convolutional block, có thể có ít tham số hơn.
  • stage_kernel_size (list[int], tùy chọn, mặc định là [3, 3, 5, 5]) — Kích thước kernel cho các lớp tích chập trong mỗi giai đoạn.
  • stage_numb_of_layers (list[int], tùy chọn, mặc định là [6, 6, 6, 6]) — Số lượng lớp được sử dụng trong mỗi khối của stage.
  • use_learnable_affine_block (bool, tuỳ chọn, mặc định là False) — Liệu có sử dụng Learnable Affine Blocks (LAB) trong mạng hay không. LAB thêm các tham số scale và bias có thể học được sau một số thao tác nhất định.
  • 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ố.

Đây là lớp cấu hình để lưu trữ cấu hình của một HGNetV2Backbone. Nó được sử dụng để khởi tạo một mô hình Hgnet V2 theo các đối số được chỉ định, xác định kiến trúc 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 ustc-community/dfine_x_coco

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.

HGNetV2Backbone

lớp transformers.HGNetV2Backbone

< >

( config: HGNetV2Config )

forward

< >

( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BackboneOutput 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 (processor_class sử dụng image_processor_class để xử lý hình ảnh).
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

BackboneOutput hoặc tuple(torch.Tensor)

Một BackboneOutput 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 (HGNetV2Config) và đầu vào.

Phương thức forward của HGNetV2Backbone ghi đè 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.

  • feature_maps (tuple(torch.Tensor) có hình dạng (batch_size, num_channels, height, width)) — Bản đồ đặc trưng của các giai đoạn.

  • hidden_states (tuple(torch.Tensor), tùy chọn, được trả về khi truyền output_hidden_states=True hoặc khi config.output_hidden_states=True) — Bộ tuple các torch.Tensor (một cho đầu ra của embeddings + một cho đầu ra của mỗi lớp) có shape (batch_size, sequence_length, hidden_size) hoặc (batch_size, num_channels, height, width), tùy thuộc vào backbone.

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

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi truyền output_attentions=True 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). Chỉ áp dụng nếu backbone sử dụng attention.

    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.

Ví dụ:

>>> from transformers import HGNetV2Config, HGNetV2Backbone
>>> import torch

>>> config = HGNetV2Config()
>>> model = HGNetV2Backbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 2048, 7, 7]

HGNetV2ForImageClassification

lớp transformers.HGNetV2ForImageClassification

< >

( config: HGNetV2Config )

Tham số

  • config (HGNetV2Config) — 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 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ố của mô hình.

Mô hình HGNetV2 với đầu phân loại hình ảnh phía trên (một lớp tuyến tính phía trên các đặc trưng đã được pool), ví dụ cho ImageNet.

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: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention 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 (processor_class sử dụng image_processor_class để xử lý hình ảnh).
  • labels (torch.LongTensor có shape (batch_size,), tùy chọn) — Nhãn để tính loss phân loại/hồi quy ảnh. Các chỉ số phải nằm trong [0, ..., config.num_labels - 1]. Nếu config.num_labels == 1, loss hồi quy sẽ được tính (Mean-Square loss). Nếu config.num_labels > 1, loss phân loại sẽ được tính (Cross-Entropy).
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

ImageClassifierOutputWithNoAttention hoặc tuple(torch.Tensor)

Một ImageClassifierOutputWithNoAttention 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 (HGNetV2Config) và đầu vào.

Phương thức forward của HGNetV2ForImageClassification 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 có shape (1,), optional, được trả về khi labels được cung cấp) — Loss phân loại (hoặc hồi quy nếu config.num_labels==1).
  • logits (torch.Tensor có hình dạng (batch_size, config.num_labels)) — Điểm phân loại (hoặc hồi quy nếu config.num_labels==1) (trước SoftMax).
  • 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) — 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 giai đoạn) có hình dạng (batch_size, num_channels, height, width). Hidden-states (còn được gọi là feature maps) của mô hình tại đầu ra của mỗi giai đoạn.

Ví dụ:

>>> import torch
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import HGNetV2ForImageClassification, AutoImageProcessor
>>> from PIL import Image

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> model = HGNetV2ForImageClassification.from_pretrained("ustc-community/hgnet-v2")
>>> processor = AutoImageProcessor.from_pretrained("ustc-community/hgnet-v2")

>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)
>>> outputs.logits.shape
torch.Size([1, 2])
Update on GitHub