D-FINE

把 DETR 回归变细粒度,定位更准、收敛更快

D-FINE 是一个基于 DETR 的端到端目标检测模型,核心创新在于将 DETR 中的回归任务重新定义为细粒度分布细化问题。它通过引入精细的分布建模和迭代优化机制,显著提升了检测精度,尤其在边界框定位的准确性上表现突出。该模型解决了传统 DETR 在回归任务中粗粒度、收敛慢的问题,同时保持了端到端的简洁流程,无需手工设计的后处理。D-FINE 提供了完整的训练和推理代码,支持 COCO 等标准数据集,并附带预训练模型,便于研究者复现和二次开发。其技术栈基于 PyTorch,适合学术研究和工业应用中的高精度检测场景。

开源 free 计算机视觉
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 3333
维护状态 维护中
是否开源 是
定价模式 free

项目数据

分类计算机视觉
开发团队Peterande
所属国家
官网地址
定价模式free
价格说明开源项目,Apache-2.0许可证,可自由使用和部署,无付费版本。
访问状态
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型d-fine,detr,object-detection
GitHub 星标★ 3333
30天Star增速
HF 下载量
上线时间2024-08-12 00:00:00
最近更新2026-09-22 00:00:00
维护状态维护中
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-10
浏览次数3

使用教程

难度:进阶 约 15 分钟 部署方式:本地安装 8 步

环境要求

  • Linux 环境(命令使用 export 与 CUDA_VISIBLE_DEVICES)
  • 已安装 Conda,用于创建 Python 3.11.9 环境
  • NVIDIA GPU(README 示例使用 4 张卡训练)
  • 已获取 COCO2017 等数据集及对应权重文件(如 model.pth)

安装与启动步骤

  1. 1克隆项目代码

    从官方仓库拉取源码并进入项目根目录,后续命令都在该目录下执行。

    git clone https://github.com/Peterande/D-FINE.git
    cd D-FINE
  2. 2创建 Conda 环境

    按 README 指定版本创建名为 dfine 的 Python 3.11.9 环境。

    conda create -n dfine python=3.11.9
  3. 3激活环境

    切换到刚创建的环境,后续安装与训练都在此环境中进行。

    conda activate dfine
  4. 4安装依赖

    安装 requirements.txt 中列出的全部依赖,建议在项目根目录执行。

    pip install -r requirements.txt
  5. 5选择模型规格

    用环境变量指定模型规模,可选 n、s、m、l、x 五种。

    export model=l
  6. 6在 COCO2017 上训练

    使用 torchrun 启动 4 卡分布式训练并开启混合精度,端口和卡数按需调整。

    CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --master_port=7777 --nproc_per_node=4 train.py -c configs/dfine/dfine_hgnetv2_${model}_coco.yml --use-amp --seed=0
  7. 7测试/评测模型

    用 --test-only 加载已有权重做评测,-r 后换成自己的权重路径。

    CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --master_port=7777 --nproc_per_node=4 train.py -c configs/dfine/dfine_hgnetv2_${model}_coco.yml --test-only -r model.pth
  8. 8微调已有权重

    加 -t 指定预训练权重,在 COCO 或自定义数据集上继续微调。

    CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --master_port=7777 --nproc_per_node=4 train.py -c configs/dfine/dfine_hgnetv2_${model}_coco.yml --use-amp --seed=0 -t model.pth

关键配置

配置项必填说明示例
model是选择模型规模,决定使用的配置文件后缀。l
CUDA_VISIBLE_DEVICES是指定参与训练的 GPU 编号,示例为 0,1,2,3。0,1,2,3
--nproc_per_node是torchrun 每节点进程数,通常等于使用的 GPU 数量。4
--master_port否分布式训练通信端口,冲突时可更换。7777
train_dataloader.total_batch_size否dataloader.yml 中总批大小,加倍时学习率需线性缩放。64
eval_spatial_size否dfine_hgnetv2.yml 中评测输入尺寸,需与训练尺寸一致。[320, 320]

如何确认成功

训练时终端持续输出迭代日志与 loss;用 --test-only -r model.pth 能跑完并打印评测指标即正常。

常见问题

Q:只有一张显卡能跑吗?

A:README 只给出 4 卡示例,需自行让 CUDA_VISIBLE_DEVICES 中的卡数与 --nproc_per_node 保持一致,未提供单卡示例命令。

Q:想让批次更大怎么改?

A:先改 configs/dfine/include/dataloader.yml 的 total_batch_size,再按线性缩放规则同步调大配置文件中的 lr,并调整 ema 与 warmup 参数。

Q:想改输入分辨率怎么办?

A:修改 dataloader.yml 中 Resize 的 size 与 collate_fn 的 base_size,并把 dfine_hgnetv2.yml 的 eval_spatial_size 改成相同尺寸。

Q:用 Objects365 权重训自定义数据集要注意什么?

A:可选地在 src/solver/_solver.py 中修改 self.obj365_ids 为数据集对应类别 ID 以加速收敛,不修改也能正常训练。

注意事项

  • README 示例统一为 4 卡 torchrun 训练,请根据自己的硬件调整卡数与端口
  • 改动批大小后需按线性缩放规律同步调整学习率、EMA 与 warmup
  • 命令中的 model.pth 需替换为你实际的权重文件路径
  • 自定义数据集训练使用 configs/dfine/custom/ 下的配置文件

核心亮点

  • 重新定义回归任务为分布细化,边界框定位精度显著提升
  • 端到端流程简洁,无需 NMS 等后处理,推理高效
  • 在 COCO 上达到 SOTA 精度,且代码开源、预训练模型齐全

不足之处

  • 模型复杂度较高,训练资源需求大
  • 文档和社区支持尚在建设中,上手门槛略高

适用场景

  • 高精度目标检测研究,如学术实验和论文复现
  • 工业质检、自动驾驶等需要精确边界框的场景
  • 作为 DETR 系列改进的基准模型,供后续研究参考

替代项目

RT-DETR、DINO、Co-DETR

项目介绍

D-FINE 是计算机视觉领域的开源项目,由 Peterande 开发,2024 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(3,333)位列前 30%,在计算机视觉分类的 446 个项目里位列前 13%。

近 45 天,它的 GitHub 星标从 3,281 增加到 3,333,净增 52。

项目仍在小幅维护中,最近一次代码更新于 2026-09-22。Apache-2.0许可证,可自由使用和部署,无付费版本。

它主要面向的使用场景是:高精度目标检测研究,如学术实验和论文复现。同类可对比的替代方案包括 RT-DETR、DINO、Co-DETR。

上一篇:viseron

下一篇:deepdetect

同类项目推荐

modlens 开源

给纯文本编码代理装上眼睛,粘贴图片即刻获得结构化视觉证据。

The first vision plugin for DeepSeek Harness, and the vision bridge for every text-o···

★ 4019 2026-08-19
opencv 开源

开箱即用的视觉算法库,搞定图像视频处理与识别

Open Source Computer Vision Library

★ 90930 2026-08-10
OpenCVTutorials 开源

中文 OpenCV 教程,从入门到实战,边看边跑代码

OpenCV-Python4.1 中文文档

★ 1430 2026-08-20
DEIMv2 开源

用DINOv3做实时检测,又快又准,直接落地。

[DEIMv2] Real Time Object Detection Meets DINOv3

★ 2046 2026-08-14