--- pipeline_tag: image-classification license: apache-2.0 base_model: facebook/regnet-x-320 library_name: zeromodels tags: - keras - zeromodels - image-classification - regnet - backbone - arxiv:2003.13678 - pytorch - jax - tf --- ## ***See [our collection](https://huggingface.co/collections/zeromodels/regnet-6a9270a4e723a861ea988d0b) for all versions of RegNet.*** # Run RegNet with Keras 3: JAX, PyTorch, or TensorFlow [![GitHub](https://img.shields.io/badge/GitHub-ZeroModels-black?logo=github)](https://github.com/IMvision12/ZeroModels) [![Docs](https://img.shields.io/badge/Docs-RegNet-blue)](https://imvision12.github.io/ZeroModels/regnet/) [![Collection](https://img.shields.io/badge/HF-RegNet%20collection-yellow)](https://huggingface.co/collections/zeromodels/regnet-6a9270a4e723a861ea988d0b) # zeromodels/regnet-x-320 Paper: [Designing Network Design Spaces (arXiv:2003.13678)](https://arxiv.org/abs/2003.13678) · [HF Papers](https://huggingface.co/papers/2003.13678) RegNet is a family of ConvNets whose per-stage widths and depths follow a simple quantized-linear rule. This is the **X** variant: a 3x3 stride-2 stem then four stages of `1x1 -> 3x3 grouped -> [SE] -> 1x1` residual blocks. Use as an ImageNet classifier or a 4-stage backbone. For more details on the model, please go to the upstream [model card](https://huggingface.co/facebook/regnet-x-320). Pure-**Keras 3** conversion of [`facebook/regnet-x-320`](https://huggingface.co/facebook/regnet-x-320) for [zeromodels](https://github.com/IMvision12/ZeroModels). One implementation runs unmodified on **TensorFlow / Torch / JAX**. This is an **image-classification / backbone** checkpoint (`RegNetImageClassify` / `RegNetModel`). ## ✨ Quick start ```python import os os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow" from PIL import Image import numpy as np from zeromodels.models.regnet import RegNetImageClassify, RegNetModel model = RegNetImageClassify.from_weights("zeromodels/regnet-x-320") backbone = RegNetModel.from_weights("zeromodels/regnet-x-320", as_backbone=True) image = Image.open("your_image.jpg").convert("RGB") image = image.resize((224, 224)) x = np.asarray(image, dtype="float32")[None] # (1, H, W, 3) print(model(x).shape) # (1, num_classes) feats = backbone(x) print(len(feats), [tuple(f.shape) for f in feats]) ``` Load any RegNet variant the same way with `from_weights("zeromodels/")`: | Variant | Hub | |---|---| | `regnet-x-002` | [`zeromodels/regnet-x-002`](https://huggingface.co/zeromodels/regnet-x-002) | | `regnet-x-004` | [`zeromodels/regnet-x-004`](https://huggingface.co/zeromodels/regnet-x-004) | | `regnet-x-006` | [`zeromodels/regnet-x-006`](https://huggingface.co/zeromodels/regnet-x-006) | | `regnet-x-008` | [`zeromodels/regnet-x-008`](https://huggingface.co/zeromodels/regnet-x-008) | | `regnet-x-016` | [`zeromodels/regnet-x-016`](https://huggingface.co/zeromodels/regnet-x-016) | | `regnet-x-032` | [`zeromodels/regnet-x-032`](https://huggingface.co/zeromodels/regnet-x-032) | | `regnet-x-040` | [`zeromodels/regnet-x-040`](https://huggingface.co/zeromodels/regnet-x-040) | | `regnet-x-064` | [`zeromodels/regnet-x-064`](https://huggingface.co/zeromodels/regnet-x-064) | | `regnet-x-080` | [`zeromodels/regnet-x-080`](https://huggingface.co/zeromodels/regnet-x-080) | | `regnet-x-120` | [`zeromodels/regnet-x-120`](https://huggingface.co/zeromodels/regnet-x-120) | | `regnet-x-160` | [`zeromodels/regnet-x-160`](https://huggingface.co/zeromodels/regnet-x-160) | | `regnet-x-320` | [`zeromodels/regnet-x-320`](https://huggingface.co/zeromodels/regnet-x-320) | | `regnet-y-002` | [`zeromodels/regnet-y-002`](https://huggingface.co/zeromodels/regnet-y-002) | | `regnet-y-004` | [`zeromodels/regnet-y-004`](https://huggingface.co/zeromodels/regnet-y-004) | | `regnet-y-006` | [`zeromodels/regnet-y-006`](https://huggingface.co/zeromodels/regnet-y-006) | | `regnet-y-008` | [`zeromodels/regnet-y-008`](https://huggingface.co/zeromodels/regnet-y-008) | | `regnet-y-016` | [`zeromodels/regnet-y-016`](https://huggingface.co/zeromodels/regnet-y-016) | | `regnet-y-032` | [`zeromodels/regnet-y-032`](https://huggingface.co/zeromodels/regnet-y-032) | | `regnet-y-040` | [`zeromodels/regnet-y-040`](https://huggingface.co/zeromodels/regnet-y-040) | | `regnet-y-064` | [`zeromodels/regnet-y-064`](https://huggingface.co/zeromodels/regnet-y-064) | | `regnet-y-080` | [`zeromodels/regnet-y-080`](https://huggingface.co/zeromodels/regnet-y-080) | | `regnet-y-120` | [`zeromodels/regnet-y-120`](https://huggingface.co/zeromodels/regnet-y-120) | | `regnet-y-160` | [`zeromodels/regnet-y-160`](https://huggingface.co/zeromodels/regnet-y-160) | | `regnet-y-320` | [`zeromodels/regnet-y-320`](https://huggingface.co/zeromodels/regnet-y-320) | ## Tips - Set `KERAS_BACKEND` **before** importing Keras / zeromodels. - `RegNetImageClassify` returns class logits; `RegNetModel` returns features (`as_backbone=True` for multi-scale stages at strides 4, 8, 16, 32). - Normalization is baked in (`include_normalization=True`): pass raw `[0, 255]` pixels. - Both `channels_last` and `channels_first` are supported (bit-exact); set the format before building. - See [docs](https://imvision12.github.io/ZeroModels/regnet/) and [Loading Weights](https://imvision12.github.io/ZeroModels/loading_weights/). - Upstream checkpoints: `RegNetImageClassify.from_weights("hf:facebook/regnet-x-320")`. ## Special Thanks A huge thank you to the RegNet authors and the transformers / Hub communities for creating and releasing these models. License: see YAML `license` (matches the upstream checkpoint: apache-2.0).