> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# RF-DETR模型微调指南
- URL: https://www.hubwiz.com/blog/rf-detr-fine-tuning-guide/
- Published: 2025-03-22T17:14:32.000Z
- Updated: 2026-10-13T16:13:16.000Z
- Author: admin
- Tags: MODEL-ZOO, RF-DETR, #Import 2026-10-14 14:41

RF-DETR于2025年3月19日发布，是由Roboflow开发的一种基于Transformer的物体检测模型架构。

RF-DETR在COCO和新推出的RF100-VL数据集上实现了最先进的性能，超越了LW-DETR和YOLOv11等模型。RF100-VL是一个基准测试，旨在验证检测能力模型在各种领域的泛化能力。

通过将分辨率扩展到728，RF-DETR在NVIDIA T4 GPU上达到了60.5 mAP，速度为25 FPS，成为第一个在Microsoft COCO基准测试中突破60mAP障碍的实时模型。该模型在NVIDIA T4上也达到了25 FPS。

[RF-DETR按照Apache 2.0许可证授权](https://github.com/roboflow/rf-detr?ref=blog.roboflow.com)，允许免费商业使用。

![](https://www.hubwiz.com/blog/content/images/2025/03/image-428.png)

**RF-DETR在RF100-VL上的评估表现**

![](https://www.hubwiz.com/blog/content/images/2025/03/image-429.png)

**RF-DETR在Microsoft COCO上的评估表现**

在这篇指南中，我们将介绍如何在自定义数据集上训练一个RF-DETR模型。我们将以识别麻将牌为例进行训练，这是一个涉及多个不同类别的任务。

以下是我们将要训练的模型的结果示例（右侧），以及真实标签（左侧）：

![](https://www.hubwiz.com/blog/content/images/2025/03/image-430.png)

我们的模型结果几乎与真实标签一致，这是对RF-DETR预测质量的一个证明。

不多说了，让我们开始吧！

💡你可以使用我们的[Colab训练笔记本](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-rf-detr-on-detection-dataset.ipynb?ref=blog.roboflow.com)跟随本指南。我们建议使用A100进行训练。

## 1、准备数据集

首先，我们需要准备一个数据集。在这个指南中，我们将使用一个[麻将牌识别数据集](https://universe.roboflow.com/rf-100-vl/mahjong-vtacs-mexax-m4vyu-sjtd?ref=blog.roboflow.com)，这是RF100-VL基准测试中的一个数据集之一。该数据集包含超过2000张麻将牌图像，并且是根据Apache 2.0许可证授权的。

你可以在Roboflow Universe上的麻将牌页面下载数据集。在下面的训练部分中，我们将展示如何直接将数据集下载到Colab笔记本中。

你可以使用任何数据集跟随本指南，但为了使用RF-DETR模型进行训练，你需要一个COCO JSON格式的数据集。

如果你需要标注数据集，可以使用[Roboflow Annotate](https://roboflow.com/annotate?ref=blog.roboflow.com)，这是我们功能齐全、基于Web的标注工具。Annotate配备了一系列工具来加速标注过程，包括一套AI辅助标注工具。

如果需要将数据集转换为COCO JSON格式，可以将其上传到Roboflow并导出为COCO JSON格式。

## 2、在设备上训练

我们准备了一个[Colab笔记本](https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/how-to-finetune-rf-detr-on-detection-dataset.ipynb?ref=blog.roboflow.com)，你可以用它跟随本指南。我们的Colab笔记本从尝试使用基础COCO权重的RF-DETR到训练和运行微调模型的推理，涵盖了所有内容。

我们建议使用NVIDIA A100 GPU来微调RF-DETR。

### 2.1 安装RF-DETR SDK

首先，我们需要安装RF-DETR SDK。你可以使用以下命令安装SDK：

```
!pip install -q rfdetr

```

此外，运行nvidia-smi以确保你有可用的GPU。输出应该显示你的GPU，如下所示：

![](https://www.hubwiz.com/blog/content/images/2025/03/image-431.png)

### 2.2 下载数据集

接下来，我们需要将数据集下载到我们的训练环境中。我们可以直接从Roboflow下载麻将数据集。

首先，在环境变量ROBOFLOW\_API\_KEY中设置你的Roboflow API密钥。[了解如何获取你的Roboflow API密钥](https://docs.roboflow.com/api-reference/authentication?ref=blog.roboflow.com)。

然后，运行以下代码：

```
from roboflow import download_dataset

dataset = download_dataset("https://universe.roboflow.com/rf-100-vl/mahjong-vtacs-mexax-m4vyu-sjtd/dataset/2", "coco")

```

你可以把上面的数据集URL换成Roboflow Universe上的50万个数据集中的任意一个。

### 2.3 启动RF-DETR训练任务

在我们的训练环境中有了标注数据集后，我们现在可以开始微调模型了。

要微调模型，我们可以使用以下代码：

```
from rfdetr import RFDETRBase

model = RFDETRBase()
history = []

def callback2(data):
	history.append(data)

model.callbacks["on_fit_epoch_end"].append(callback2)

model.train(dataset_dir=dataset.location, epochs=15, batch_size=16, lr=1e-4)
```

在这里，我们加载了RF-DETR基础模型，然后传入我们下载的数据集的位置。在这个指南中，我们将训练15个epochs，并使用一个batch size为16。这个batch size是针对A100优化的。

当你运行代码时，你会看到显示进度的消息，如下所示：

![](https://www.hubwiz.com/blog/content/images/2025/03/image-432.png)

训练模型所需的时间取决于你的数据集大小和指定的epochs数量。在我们的测试中，在A100 GPU上使用15个epochs训练一个包含2000张图像的模型大约需要一个小时。

我们建议至少训练50个epochs以获得生产模型。

一旦模型训练完成，模型权重和相关元数据将保存在一个名为output的目录中。

### 2.4 查看模型评估指标

你可以通过绘制RF-DETR训练例程保存的数据来查看模型指标。

你可以使用以下代码绘制损失：

```
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame(history)

plt.figure(figsize=(12, 8))

plt.plot(
	df['epoch'],
	df['train_loss'],
	label='Training Loss',
	marker='o',
	linestyle='-'
)

plt.plot(
	df['epoch'],
	df['test_loss'],
	label='Validation Loss',
	marker='o',
	linestyle='--'
)

plt.title('Train/Validation Loss over Epochs')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.grid(True)

plt.show()
```

这将返回一个图表，显示每轮的损失。损失应该随着时间推移而减少。

![](https://www.hubwiz.com/blog/content/images/2025/03/image-433.png)

我们的训练笔记本还展示了如何计算每个epoch的AP。

## 3、测试你的RF-DETR模型

有了训练好的模型后，下一步是在示例图像上进行推理。

为了从我们的测试集中加载数据并可视化示例图像上的预测结果，我们将使用监督Python包。监督提供了构建计算机视觉应用程序的各种工具，包括数据加载器和注释器。

让我们加载我们的测试集：

```
import supervision as sv

ds = sv.DetectionDataset.from_coco(
	images_directory_path=f"{dataset.location}/test",
	annotations_path=f"{dataset.location}/test/_annotations.coco.json",
)
```

接下来，让我们从我们的测试集中加载一张随机图像，并比较地面真实值与我们模型的结果：

```
path, image, annotations = ds[4]

from rfdetr import RFDETRBase
from rfdetr.util.coco_classes import COCO_CLASSES
import supervision as sv
import numpy as np
from PIL import Image

image = Image.open(path)

detections = model.predict(image, threshold=0.5)

text_scale = sv.calculate_optimal_text_scale(resolution_wh=image.size)
thickness = sv.calculate_optimal_line_thickness(resolution_wh=image.size)

bbox_annotator = sv.BoxAnnotator(thickness=thickness)
label_annotator = sv.LabelAnnotator(
	text_color=sv.Color.BLACK,
	text_scale=text_scale,
	text_thickness=thickness,
	smart_position=True)

annotations_labels = [
	f"{ds.classes[class_id]}"
	for class_id
	in annotations.class_id
]

detections_labels = [
	f"{ds.classes[class_id]} {confidence:.2f}"
	for class_id, confidence
	in zip(detections.class_id, detections.confidence)
]

annotation_image = image.copy()
annotation_image = bbox_annotator.annotate(annotation_image, annotations)
annotation_image = label_annotator.annotate(annotation_image, annotations, annotations_labels)

detections_image = image.copy()
detections_image = bbox_annotator.annotate(detections_image, detections)
detections_image = label_annotator.annotate(detections_image, detections, detections_labels)

sv.plot_images_grid(images=[annotation_image, detections_image], grid_size=(1, 2), titles=["Annotation", "Detection"])
```

上述代码加载了一张随机图像，用我们微调的模型进行推理，然后在同一张图像上并排绘制地面真实值注释和模型结果。

以下是结果：

![](https://www.hubwiz.com/blog/content/images/2025/03/image-434.png)

RF-DETR成功识别了各种麻将牌。虽然有些牌被遗漏了，但可以通过增加模型训练的epochs数量来解决这个问题。

现在你已经可视化了模型的结果，下一步是考虑模型部署。除了提供强大的准确性外，RF-DETR模型在NVIDIA T4上还可以达到25 FPS。这使得它们非常适合用于边缘部署环境。

我们还将推出在[Roboflow Inference](https://inference.roboflow.com/?ref=blog.roboflow.com)中部署RF-DETR的支持，这是我们开源的计算机视觉推理服务器。这将伴随着[Roboflow Workflows](https://blog.roboflow.com/workflows/?ref=hubwiz.com)中的支持，这是我们的视觉AI应用程序构建器。这将在未来几天内宣布。

## 4、结束语

RF-DETR是由Roboflow开发的一种新的实时计算机视觉模型架构。该模型是第一个在Microsoft COCO基准测试中超过60 mAP的对象检测模型。此外，该模型在NVIDIA T4上运行速度约为25 FPS。

在这篇指南中，我们介绍了如何在自定义数据集上训练RF-DETR模型。我们从Roboflow Universe下载了一个开源对象检测数据集，训练了模型15个epochs，绘制了训练图，并可视化了模型的结果。

---

原文链接：[How to Train RF-DETR on a Custom Dataset](https://blog.roboflow.com/train-rf-detr-on-a-custom-dataset/?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处

> **这是「本地 & 自托管 LLM」专题的一部分。**完整地图见：[本地 & 自托管 LLM 完全指南](https://www.hubwiz.com/blog/local-llm-stack/)