--- pipeline_tag: object-detection license: apache-2.0 base_model: Roboflow/rf-detr-base library_name: kerasformers tags: - keras - kerasformers - rf-detr - detr - object-detection - arxiv:2511.09554 - pytorch - jax - tf --- ## ***See [our collection](https://huggingface.co/collections/kerasformers/rf-detr-6a69d4fc463069d0af85320b) for all versions of RF-DETR.*** # Run RF-DETR with Keras 3: JAX, PyTorch, or TensorFlow [![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-black?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-RF--DETR-blue)](https://imvision12.github.io/KerasFormers/rf_detr/) [![Collection](https://img.shields.io/badge/HF-RF--DETR%20collection-yellow)](https://huggingface.co/collections/kerasformers/rf-detr-6a69d4fc463069d0af85320b) # kerasformers/rfdetr-base Paper: [RF-DETR: Neural Architecture Search for Real-Time Detection Transformers (arXiv:2511.09554)](https://arxiv.org/abs/2511.09554) · [HF Papers](https://huggingface.co/papers/2511.09554) RF-DETR is Roboflow's real-time DETR, built on a windowed DINOv2 backbone with a lightweight deformable decoder. Configurations came out of a neural architecture search, so variants differ in resolution, patch size, window count, and decoder depth. Instance-segmentation checkpoints add a mask head. For more details on the model, please go to Roboflow's original [model card](https://huggingface.co/Roboflow/rf-detr-base). Pure-**Keras 3** conversion of [`Roboflow/rf-detr-base`](https://huggingface.co/Roboflow/rf-detr-base) for [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on **TensorFlow / Torch / JAX**. This is an **object detection** checkpoint (`RFDETRDetect`): each query predicts a class and box. ## ✨ Quick start ```python import os os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow" from PIL import Image from kerasformers.models.rf_detr import RFDETRDetect, RFDETRImageProcessor model = RFDETRDetect.from_weights("kerasformers/rfdetr-base") processor = RFDETRImageProcessor.from_weights("kerasformers/rfdetr-base") image = Image.open("your_image.jpg").convert("RGB") inputs = processor(image) output = model(inputs["pixel_values"], training=False) results = processor.post_process_object_detection( output, threshold=0.5, target_sizes=[(image.height, image.width)] )[0] for score, name, box in zip( results["scores"], results["label_names"], results["boxes"] ): print(f"{name}: {float(score):.3f} {box}") ``` Load any RF-DETR variant the same way with `from_weights("kerasformers/")` (use `RFDETRDetect` for this repo): | Variant | Hub | Task | |---|---|---| | `rfdetr-nano` | [`kerasformers/rfdetr-nano`](https://huggingface.co/kerasformers/rfdetr-nano) | object detection | | `rfdetr-small` | [`kerasformers/rfdetr-small`](https://huggingface.co/kerasformers/rfdetr-small) | object detection | | `rfdetr-medium` | [`kerasformers/rfdetr-medium`](https://huggingface.co/kerasformers/rfdetr-medium) | object detection | | `rfdetr-base` | [`kerasformers/rfdetr-base`](https://huggingface.co/kerasformers/rfdetr-base) | object detection | | `rfdetr-large` | [`kerasformers/rfdetr-large`](https://huggingface.co/kerasformers/rfdetr-large) | object detection | | `rfdetr-seg-preview` | [`kerasformers/rfdetr-seg-preview`](https://huggingface.co/kerasformers/rfdetr-seg-preview) | instance segmentation | | `rfdetr-seg-nano` | [`kerasformers/rfdetr-seg-nano`](https://huggingface.co/kerasformers/rfdetr-seg-nano) | instance segmentation | | `rfdetr-seg-small` | [`kerasformers/rfdetr-seg-small`](https://huggingface.co/kerasformers/rfdetr-seg-small) | instance segmentation | | `rfdetr-seg-medium` | [`kerasformers/rfdetr-seg-medium`](https://huggingface.co/kerasformers/rfdetr-seg-medium) | instance segmentation | | `rfdetr-seg-large` | [`kerasformers/rfdetr-seg-large`](https://huggingface.co/kerasformers/rfdetr-seg-large) | instance segmentation | | `rfdetr-seg-xlarge` | [`kerasformers/rfdetr-seg-xlarge`](https://huggingface.co/kerasformers/rfdetr-seg-xlarge) | instance segmentation | | `rfdetr-seg-xxlarge` | [`kerasformers/rfdetr-seg-xxlarge`](https://huggingface.co/kerasformers/rfdetr-seg-xxlarge) | instance segmentation | ## Tips - Set `KERAS_BACKEND` **before** importing Keras / kerasformers. - Prefer `RFDETRImageProcessor.from_weights(...)` so the processor resolution matches the variant (bare constructor defaults to base's 560). - Detection: `RFDETRDetect` + `post_process_object_detection`. - Segmentation: `RFDETRInstanceSegment` + `post_process_instance_segmentation`. - See [RF-DETR docs](https://imvision12.github.io/KerasFormers/rf_detr/) and [Loading Weights](https://imvision12.github.io/KerasFormers/loading_weights/). - Community / upstream safetensors still work via the `hf:` prefix, e.g. `RFDETRDetect.from_weights("hf:Roboflow/rf-detr-base")`. ## Special Thanks A huge thank you to the Roboflow RF-DETR authors for creating and releasing these models. License: Apache 2.0.