Transformers documentation
HGNet-V2
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.
from transformers import pipeline
pipeline = pipeline(
task="image-classification",
model="ustc-community/hgnet-v2",
device=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, HGNetV2ForImageClassification
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
model = HGNetV2ForImageClassification.from_pretrained("ustc-community/hgnet-v2", device_map="auto")
processor = AutoImageProcessor.from_pretrained("ustc-community/hgnet-v2")
inputs = processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax(dim=-1).item()
class_labels = model.config.id2label
predicted_class_label = class_labels[predicted_class_id]
print(f"The predicted class label is: {predicted_class_label}")HGNetV2Config
lớp transformers.HGNetV2Config
< source >( 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ếuTrue, 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
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BackboneOutput or tuple(torch.Tensor)
Tham số
- pixel_values (
torch.Tensorcó 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ụngimage_processor_class. Xemimage_processor_class.__call__để biết chi tiết (processor_classsử dụngimage_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. Xemhidden_statestrong 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
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đả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ềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Bộ tuple cáctorch.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ềnoutput_attentions=Truehoặc khiconfig.output_attentions=True) — Tuple củatorch.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
< source >( 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
< source >( 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.Tensorcó 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ụngimage_processor_class. Xemimage_processor_class.__call__để biết chi tiết (processor_classsử dụngimage_processor_classđể xử lý hình ảnh). - labels (
torch.LongTensorcó 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ếuconfig.num_labels == 1, loss hồi quy sẽ được tính (Mean-Square loss). Nếuconfig.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. Xemhidden_statestrong 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
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đả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.Tensorcó shape(1,), optional, được trả về khilabelsđược cung cấp) — Loss phân loại (hoặc hồi quy nếu config.num_labels==1). - logits (
torch.Tensorcó 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ề khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.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])