D-FINE

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 计算机视觉 🍴 复刻 336 🐛 待处理 166 👀 关注 44
GitHub ↗
GitHub 星标 ★ 3400
维护状态 维护中
是否开源 开源
定价模式 🏷️完全免费 开源项目,Apache-2.0许可证,可自由使用和部署,无付费版本。

项目预览

D-FINE 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类计算机视觉
开发团队Peterande
定价模式🏷️完全免费
价格说明开源项目,Apache-2.0许可证,可自由使用和部署,无付费版本。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型d-fine,detr,object-detection
GitHub 星标★ 3400
上线时间2024-08-12 00:00:00
代码更新2026-10-05
仓库体积361 KB
本站数据更新2026-11-11
维护状态维护中
收录时间2026-08-10
浏览次数5

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-10 · 当前星标 ★ 3400

技术标签

使用教程

难度:进阶 约 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

上一篇:viseron

下一篇:deepdetect

同类项目推荐

STU-Net 开源

14亿参数医学分割大模型,开箱即用提升精度

The largest pre-trained medical image segmentation model (1.4B parameters) based on ···

★ 375 2026-08-09
D-FINE 开源

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

D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement [···

★ 3400 2026-08-10
obsidian-ocr 开源

让 Obsidian 搜索穿透图片和 PDF,截图文字也能搜到

Obsidian OCR allows you to search for text in your images and pdfs

★ 305 2026-10-18
creative-matplotlib 开源

用纯 matplotlib 画出惊艳创意图形,告别枯燥图表

Creative coding scripts and outputs using vanilla matplotlib

★ 63 2026-08-09
MulimgViewer 开源

一个界面并排看多图,对比拼接不用来回切窗口

MulimgViewer is a multi-image viewer that can open multiple images in one interface,···

★ 1406 2026-10-23
DiffCut 开源

无需标注,用扩散模型特征实现零样本图像分割

[NeurIPS 2024] Official code for DiffCut: Catalyzing Zero-Shot Semantic Segmentation···

★ 53 2026-08-09
EcoDepth 开源

用扩散模型让单目深度估计更准,零样本也能测深度。

[CVPR'2024] Official implementation of the paper "ECoDepth: Effective Conditioning o···

★ 221 2026-08-09
CWR 开源

对比学习一键复原水下图像,颜色细节双提升

Code and dataset for Single Underwater Image Restoration by Contrastive Learning, IG···

★ 92 2026-08-09
TextGrabber2 开源

菜单栏一点,图片文字秒变可复制文本

Mac menu bar “Copy-to-Action” tool with support for extracting text from images.

★ 239 2026-09-30