Buckets:

HuggingFaceDocBuilder's picture
|
download
raw
11.6 kB

ConvNeXT

Overview

The ConvNeXT model was proposed in A ConvNet for the 2020s by Zhuang Liu, Hanzi Mao, Chao-Yuan Wu, Christoph Feichtenhofer, Trevor Darrell, Saining Xie. ConvNeXT is a pure convolutional model (ConvNet), inspired by the design of Vision Transformers, that claims to outperform them.

The abstract from the paper is the following:

The "Roaring 20s" of visual recognition began with the introduction of Vision Transformers (ViTs), which quickly superseded ConvNets as the state-of-the-art image classification model. A vanilla ViT, on the other hand, faces difficulties when applied to general computer vision tasks such as object detection and semantic segmentation. It is the hierarchical Transformers (e.g., Swin Transformers) that reintroduced several ConvNet priors, making Transformers practically viable as a generic vision backbone and demonstrating remarkable performance on a wide variety of vision tasks. However, the effectiveness of such hybrid approaches is still largely credited to the intrinsic superiority of Transformers, rather than the inherent inductive biases of convolutions. In this work, we reexamine the design spaces and test the limits of what a pure ConvNet can achieve. We gradually "modernize" a standard ResNet toward the design of a vision Transformer, and discover several key components that contribute to the performance difference along the way. The outcome of this exploration is a family of pure ConvNet models dubbed ConvNeXt. Constructed entirely from standard ConvNet modules, ConvNeXts compete favorably with Transformers in terms of accuracy and scalability, achieving 87.8% ImageNet top-1 accuracy and outperforming Swin Transformers on COCO detection and ADE20K segmentation, while maintaining the simplicity and efficiency of standard ConvNets.

ConvNeXT architecture. Taken from the original paper.

This model was contributed by nielsr. The original code can be found here.

Resources

A list of official Hugging Face and community (indicated by 🌎) resources to help you get started with ConvNeXT.

If you're interested in submitting a resource to be included here, please feel free to open a Pull Request and we'll review it! The resource should ideally demonstrate something new instead of duplicating an existing resource.

ConvNextConfig[[transformers.ConvNextConfig]]

transformers.ConvNextConfig[[transformers.ConvNextConfig]]

Source

This is the configuration class to store the configuration of a ConvNextModel. It is used to instantiate a Convnext model according to the specified arguments, defining the model architecture. Instantiating a configuration with the defaults will yield a similar configuration to that of the facebook/convnext-tiny-224

Configuration objects inherit from PreTrainedConfig and can be used to control the model outputs. Read the documentation from PreTrainedConfig for more information.

Example:

>>> from transformers import ConvNextConfig, ConvNextModel

>>> # Initializing a ConvNext convnext-tiny-224 style configuration
>>> configuration = ConvNextConfig()

>>> # Initializing a model (with random weights) from the convnext-tiny-224 style configuration
>>> model = ConvNextModel(configuration)

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

Parameters:

num_channels (int, optional, defaults to 3) : The number of input channels.

patch_size (Union[int, list[int], tuple[int, int]], optional, defaults to 4) : The size (resolution) of each patch.

num_stages (int, optional, defaults to 4) : The number of stages in the model.

hidden_sizes (Union[list[int], tuple[int, ...]], optional, defaults to (96, 192, 384, 768)) : Dimensionality (hidden size) at each stage of the model.

depths (Union[list[int], tuple[int, ...]], optional, defaults to (3, 3, 9, 3)) : Depth of each layer in the Transformer.

hidden_act (str, optional, defaults to gelu) : The non-linear activation function (function or string) in the decoder. For example, "gelu", "relu", "silu", etc.

initializer_range (float, optional, defaults to 0.02) : The standard deviation of the truncated_normal_initializer for initializing all weight matrices.

layer_norm_eps (float, optional, defaults to 1e-12) : The epsilon used by the layer normalization layers.

layer_scale_init_value (float, optional, defaults to 1e-06) : Scale to use in the self-attention layers. 0.1 for base, 1e-6 for large. Set 0 to disable layer scale.

drop_path_rate (Union[float, int], optional, defaults to 0.0) : Drop path rate for the patch fusion.

image_size (Union[int, list[int], tuple[int, int]], optional, defaults to 224) : The size (resolution) of each image.

ConvNextImageProcessor[[transformers.ConvNextImageProcessor]]

transformers.ConvNextImageProcessor[[transformers.ConvNextImageProcessor]]

Source

Constructs a ConvNextImageProcessor image processor.

preprocesstransformers.ConvNextImageProcessor.preprocesshttps://github.com/huggingface/transformers/blob/vr_42227/src/transformers/image_processing_utils.py#L382[{"name": "images", "val": ": typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]"}, {"name": "*args", "val": ""}, {"name": "**kwargs", "val": ": typing_extensions.Unpack[transformers.processing_utils.ImagesKwargs]"}]- images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) -- Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, set do_rescale=False.

  • return_tensors (str or TensorType, optional) -- Returns stacked tensors if set to 'pt', otherwise returns a list of tensors.
  • **kwargs (ImagesKwargs, optional) -- Additional image preprocessing options. Model-specific kwargs are listed above; see the TypedDict class for the complete list of supported arguments.0~image_processing_base.BatchFeature- data (dict) -- Dictionary of lists/arrays/tensors returned by the call method ('pixel_values', etc.).
  • tensor_type (Union[None, str, TensorType], optional) -- You can give a tensor_type here to convert the lists of integers in PyTorch/Numpy Tensors at initialization.

Parameters:

crop_pct (float, kwargs, optional, defaults to self.crop_pct) : Percentage of the image to crop. Only has an effect if size 1a classification loss is computed (Cross-Entropy).0[ImageClassifierOutputWithNoAttention](/docs/transformers/pr_42227/en/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) ortuple(torch.FloatTensor)A [ImageClassifierOutputWithNoAttention](/docs/transformers/pr_42227/en/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) or a tuple of torch.FloatTensor(ifreturn_dict=Falseis passed or whenconfig.return_dict=False) comprising various elements depending on the configuration ([ConvNextConfig](/docs/transformers/pr_42227/en/model_doc/convnext#transformers.ConvNextConfig)) and inputs. The [ConvNextForImageClassification](/docs/transformers/pr_42227/en/model_doc/convnext#transformers.ConvNextForImageClassification) forward method, overrides the call` special method.

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the pre and post processing steps while the latter silently ignores them.

  • loss (torch.FloatTensor of shape (1,), optional, returned when labels is provided) -- Classification (or regression if config.num_labels==1) loss.
  • logits (torch.FloatTensor of shape (batch_size, config.num_labels)) -- Classification (or regression if config.num_labels==1) scores (before SoftMax).
  • hidden_states (tuple(torch.FloatTensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) -- Tuple of torch.FloatTensor (one for the output of the embeddings, if the model has an embedding layer, + one for the output of each stage) of shape (batch_size, num_channels, height, width). Hidden-states (also called feature maps) of the model at the output of each stage.

Example:

>>> from transformers import AutoImageProcessor, ConvNextForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnext-tiny-224")
>>> model = ConvNextForImageClassification.from_pretrained("facebook/convnext-tiny-224")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...

Parameters:

config (ConvNextForImageClassification) : Model configuration class with all the parameters of the model. Initializing with a config file does not load the weights associated with the model, only the configuration. Check out the from_pretrained() method to load the model weights.

Returns:

[ImageClassifierOutputWithNoAttention](/docs/transformers/pr_42227/en/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) or tuple(torch.FloatTensor)``

A ImageClassifierOutputWithNoAttention or a tuple of torch.FloatTensor (if return_dict=False is passed or when config.return_dict=False) comprising various elements depending on the configuration (ConvNextConfig) and inputs.

Xet Storage Details

Size:
11.6 kB
·
Xet hash:
c85bbf3c4cb30af7d6dd47e9fc5dc7db0c8c25c0d4a6320b08fc35949a315774

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.