Transformers documentation
HGNet-V2
Este modelo fue aportado a Hugging Face Transformers el 2025-04-29.
HGNet-V2
HGNetV2 es un backbone de red neuronal convolucional (CNN) de próxima generación diseñado para lograr el mejor equilibrio entre precisión y latencia en GPUs de NVIDIA. Basándose en el HGNet original, HGNetV2 ofrece alta precisión con velocidades de inferencia rápidas y rinde de forma destacada en tareas como clasificación de imágenes, detección de objetos y segmentación, lo que lo convierte en una opción práctica para aplicaciones de visión por computadora basadas en GPU.
Puedes encontrar todos los modelos originales de HGNet V2 bajo la organización USTC.
Este modelo fue aportado por VladOS95-cyber. Haz clic en los modelos HGNet V2 de la barra lateral derecha para ver más ejemplos de cómo aplicar HGNet V2 a diferentes tareas de visión por computadora.
El siguiente ejemplo demuestra cómo clasificar una imagen con Pipeline o la clase 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
clase 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 )
Parámetros
- num_channels (
int, opcional, valor predeterminado3) — El número de canales de entrada. - embedding_size (
int, opcional, valor predeterminado64) — Dimensionalidad de los embeddings y los estados ocultos. - depths (
Union[list[int], tuple[int, ...]], opcional, valor predeterminado(3, 4, 6, 3)) — Profundidad de cada capa en el Transformer. - hidden_sizes (
Union[list[int], tuple[int, ...]], opcional, valor predeterminado(256, 512, 1024, 2048)) — Dimensionalidad (tamaño oculto) en cada etapa del modelo. - hidden_act (
str, opcional, valor predeterminadorelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - stem_channels (
list[int], opcional, por defecto[3, 32, 48]) — Dimensiones de los canales para las capas del tallo:- El primer número (3) son los canales de la imagen de entrada
- El segundo número (32) son los canales intermedios del tallo
- El tercer número (48) son los canales del tallo de salida
- stem_strides (
Sequence[int | list[int] | tuple[int, ...]], opcional, valor predeterminado(2, 1, 1, 2, 1)) — Patrones de paso para las capas del tallo. - stage_in_channels (
list[int], opcional, valor predeterminado[48, 128, 512, 1024]) — Dimensiones de los canales de entrada para cada etapa del backbone. Esto define cuántos canales tendrá la entrada de cada etapa. - stage_mid_channels (
list[int], opcional, valor predeterminado[48, 96, 192, 384]) — Dimensiones de los canales intermedios para cada etapa del backbone. Esto define el número de canales utilizados en las capas intermedias de cada etapa. - stage_out_channels (
list[int], opcional, valor predeterminado[128, 512, 1024, 2048]) — Dimensiones de los canales de salida para cada etapa del backbone. Esto define cuántos canales tendrá la salida de cada etapa. - stage_num_blocks (
list[int], opcional, valor predeterminado[1, 1, 3, 1]) — Número de bloques que se usarán en cada etapa del backbone. Esto controla la profundidad de cada etapa especificando cuántos bloques convolucionales apilar. - stage_downsample (
list[bool], opcional, valor predeterminado[False, True, True, True]) — Indica si se debe reducir la resolución de los mapas de características en cada etapa. Si esTrue, las dimensiones espaciales de los mapas de características se reducirán. - stage_downsample_strides (
Sequence[int | list[int] | tuple[int, ...]], opcional, valor predeterminado(2, 2, 2, 2)) — Patrones de paso para cada capa de etapa. - stage_light_block (
list[bool], opcional, valor predeterminado[False, False, True, True]) — Indica si se deben usar bloques ligeros en cada etapa. Los bloques ligeros son una variante de los bloques convolucionales que pueden tener menos parámetros. - stage_kernel_size (
list[int], opcional, valor predeterminado[3, 3, 5, 5]) — Tamaños de kernel para las capas convolucionales de cada etapa. - stage_numb_of_layers (
list[int], opcional, valor predeterminado[6, 6, 6, 6]) — Número de capas que se usarán en cada bloque de la etapa. - use_learnable_affine_block (
bool, opcional, valor predeterminadoFalse) — Si se deben usar Learnable Affine Blocks (LAB) en la red. LAB añade parámetros de escala y sesgo aprendibles después de ciertas operaciones. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
Esta es la clase de configuración para almacenar la configuración de un HGNetV2Backbone. Se utiliza para instanciar un modelo Hgnet V2 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de ustc-community/dfine_x_coco
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
HGNetV2Backbone
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BackboneOutput or tuple(torch.Tensor)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (processor_classutilizaimage_processor_classpara procesar las imágenes). - output_hidden_states (
bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consultehidden_statesen los tensores devueltos para obtener más detalles. - return_dict (
bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.
Devuelve
BackboneOutput o tuple(torch.Tensor)
Un BackboneOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (HGNetV2Config) y las entradas.
El método forward de HGNetV2Backbone sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
feature_maps (
tuple(torch.Tensor)de forma(batch_size, num_channels, height, width)) — Mapas de características de las etapas.hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de los embeddings + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size)o(batch_size, num_channels, height, width), según el backbone.Estados ocultos del modelo en la salida de cada etapa más las salidas de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length). Solo aplicable si el backbone usa atención.Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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
clase transformers.HGNetV2ForImageClassification
< source >( config: HGNetV2Config )
Parámetros
- config (HGNetV2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Modelo HGNetV2 con una cabeza de clasificación de imágenes en la parte superior (una capa lineal sobre las características agrupadas), por ejemplo, para ImageNet.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
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)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (processor_classutilizaimage_processor_classpara procesar las imágenes). - labels (
torch.LongTensorde forma(batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación/regresión de imágenes. Los índices deben estar en[0, ..., config.num_labels - 1]. Siconfig.num_labels == 1se calcula una pérdida de regresión (pérdida de error cuadrático medio), siconfig.num_labels > 1se calcula una pérdida de clasificación (entropía cruzada). - output_hidden_states (
bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consultehidden_statesen los tensores devueltos para obtener más detalles. - return_dict (
bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.
Devuelve
ImageClassifierOutputWithNoAttention o tuple(torch.Tensor)
Un ImageClassifierOutputWithNoAttention o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (HGNetV2Config) y las entradas.
El método forward de HGNetV2ForImageClassification reemplaza el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
- loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de clasificación (o de regresión si config.num_labels==1). - logits (
torch.Tensorde forma(batch_size, config.num_labels)) — Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax). - hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustación, + una para la salida de cada etapa) de forma(batch_size, num_channels, height, width). Estados ocultos (también llamados mapas de características) del modelo en la salida de cada etapa.
Ejemplos:
>>> 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])