RefineDet

GitHub
1.4k 386 困难 1 次阅读 1个月前NOASSERTION图像
AI 解读 由 AI 自动生成,仅供参考

RefineDet 是一款专为物体检测任务设计的高效开源深度学习模型,由中科院团队在 2018 年 CVPR 会议上提出。它旨在解决传统检测算法中“精度”与“速度”难以兼得的痛点:两阶段方法(如 Faster R-CNN)虽然准确但推理缓慢,而单阶段方法(如 YOLO、SSD)速度快却往往牺牲了检测精度。

RefineDet 的创新之处在于其独特的“单次精炼”架构。它巧妙地结合了锚框细化模块和特征金字塔结构,通过两个紧密相连的子网络,先对初始锚框进行粗略调整,再进行精细分类与定位。这种设计使其在保持单阶段方法高效特性的同时,显著提升了检测准确率。实验数据显示,在标准的 VOC2007 测试集上,RefineDet512 版本的平均精度均值(mAP)高达 81.8%,超越了当时的主流两阶段模型,同时在泰坦 X 显卡上仍能维持每秒 24 帧的实时处理速度。

这款工具非常适合计算机视觉领域的研究人员、算法工程师以及需要部署高性能检测系统的开发者使用。如果你正在寻找一个既能满足实时性要求,又能在复杂场景下提供高精度识别结果的基线模型,RefineDet 是一个值得深入研究和应用的选择。项目基于 Caffe 框架构建,提供了完整的训练、评估代码及预训练模型,便于用户快速复现论文结果或进行二次开发。

使用场景

某智慧物流园区的技术团队正致力于升级其自动化分拣系统,需要在高速传送带上实时精准识别各类尺寸不一的包裹。

没有 RefineDet 时

  • 小件漏检率高:传统单阶段检测器(如早期 SSD)在处理远处或小型包裹时精度不足,导致部分小件货物未被识别而错分。
  • 大件定位不准:两阶段检测器虽然精度尚可,但在面对紧密堆叠的大件货物时,边界框回归不够精细,常出现框选重叠或偏移。
  • 实时性瓶颈:为了保证准确率采用复杂的两阶段模型,推理速度仅约 7 FPS,无法匹配传送带的高速流转需求,造成积压。
  • 资源消耗过大:为弥补精度缺陷被迫提升输入分辨率至 1000x600 以上,显著增加了显存占用和计算延迟。

使用 RefineDet 后

  • 大小目标兼顾:RefineDet 凭借独特的细化机制,在 320x320 分辨率下即可将 mAP 提升至 80.0%,有效解决了小包裹漏检难题。
  • 边界框更精准:通过两次渐进式回归优化,对紧密堆叠货物的定位更加严密,大幅减少了因框选不准导致的机械臂抓取失败。
  • 速度与精度双赢:在 Titan X 显卡上推理速度达到 40 FPS,既保持了单阶段模型的高效,又超越了当时主流两阶段模型的精度。
  • 部署成本降低:无需依赖超高分辨率输入即可实现 81.8% 的顶尖精度(512 输入),降低了硬件门槛并提升了系统响应速度。

RefineDet 成功打破了物体检测中“速度”与“精度”不可兼得的僵局,让高速物流分拣实现了真正的实时高精度智能化。

运行环境要求

操作系统
  • Linux
GPU

需要 NVIDIA GPU (文中测试环境为 Titan X),需支持 CUDA (具体版本取决于安装的 Caffe)

内存

未说明

依赖
notes该项目基于古老的 Caffe 框架(非 PyTorch/TensorFlow),安装难度较大,需手动编译 Caffe 并修改 Makefile.config。代码主要依赖 Python 2 或早期 Python 3 环境。需预先下载 VGG16 和 ResNet-101 的预训练模型文件。数据集需转换为 LMDB 格式方可使用。
python2.7 或 3.x (取决于 Caffe 编译配置,文中提及使用 ipython notebook)
Caffe (必须编译支持 Python 接口)
CUDA
cuDNN
OpenCV
Boost
ATLAS/OpenBLAS/MKL
glog
gflags
hdf5
lmdb
leveldb
snappy
protobuf
Cython
RefineDet hero image

快速开始

用于目标检测的单次精炼神经网络

许可证

作者:张士峰温龙银边晓雷震李斯坦

简介

我们提出了一种新颖的基于单次检测器的方法,称为RefineDet,它在准确率上优于两阶段方法,同时保持与单阶段方法相当的效率。您可以使用该代码来训练/评估RefineDet目标检测方法。更多详细信息,请参阅我们的论文

RefineDet 结构

系统 VOC2007 测试 mAP FPS (Titan X) 检测框数量 输入分辨率
Faster R-CNN (VGG16) 73.2 7 ~6000 ~1000 x 600
YOLO (GoogLeNet) 63.4 45 98 448 x 448
YOLOv2 (Darknet-19) 78.6 40 1445 544 x 544
SSD300* (VGG16) 77.2 46 8732 300 x 300
SSD512* (VGG16) 79.8 19 24564 512 x 512
RefineDet320 (VGG16) 80.0 40 6375 320 x 320
RefineDet512 (VGG16) 81.8 24 16320 512 x 512

RefineDet 在多个数据集上的结果

注意:RefineDet300+ 和 RefineDet512+ 是使用多尺度测试策略进行评估的。多尺度测试的代码也已在此仓库中发布。

引用 RefineDet

如果我们的工作对您的研究有所帮助,请在您的出版物中引用我们的论文:

@inproceedings{zhang2018single,
  title = {Single-Shot Refinement Neural Network for Object Detection},
  author = {Zhang, Shifeng and Wen, Longyin and Bian, Xiao and Lei, Zhen and Li, Stan Z.},
  booktitle = {CVPR},
  year = {2018}
}

目录

  1. 安装
  2. 准备
  3. 训练
  4. 评估
  5. 模型

安装

  1. 获取代码。我们将克隆后的目录称为 $RefineDet_ROOT
git clone https://github.com/sfzhang15/RefineDet.git
  1. 编译代码。请按照 Caffe 安装说明 安装所有必要的软件包并完成编译。
cd $RefineDet_ROOT
# 根据您的 Caffe 安装情况修改 Makefile.config。
# 确保将 $RefineDet_ROOT/python 添加到您的 PYTHONPATH 中。
cp Makefile.config.example Makefile.config
make all -j && make py

准备

  1. 下载 全卷积缩减版(空洞)VGGNet。默认情况下,我们认为该模型存储在 $RefineDet_ROOT/models/VGGNet/

  2. 下载 ResNet-101。默认情况下,我们认为该模型存储在 $RefineDet_ROOT/models/ResNet/

  3. 按照 data/VOC0712/README.md 下载 VOC2007 和 VOC2012 数据集,并为 VOC2007 的训练和测试创建 LMDB 文件。

  4. 按照 data/VOC0712Plus/README.md 下载 VOC2007 和 VOC2012 数据集,并为 VOC2012 的训练和测试创建 LMDB 文件。

  5. 按照 data/coco/README.md 下载 MS COCO 数据集,并为 COCO 的训练和测试创建 LMDB 文件。

训练

  1. 在 PASCAL VOC 上训练您的模型。
# 这将创建模型定义文件,并将快照模型保存在:
#   - $RefineDet_ROOT/models/VGGNet/VOC0712{Plus}/refinedet_vgg16_{size}x{size}/
# 同时生成作业文件、日志文件以及 Python 脚本,存放于:
#   - $RefineDet_ROOT/jobs/VGGNet/VOC0712{Plus}/refinedet_vgg16_{size}x{size}/
python examples/refinedet/VGG16_VOC2007_320.py
python examples/refinedet/VGG16_VOC2007_512.py
python examples/refinedet/VGG16_VOC2012_320.py
python examples/refinedet/VGG16_VOC2012_512.py
  1. 在 COCO 上训练您的模型。
# 这将创建模型定义文件,并将快照模型保存在:
#   - $RefineDet_ROOT/models/{Network}/coco/refinedet_{network}_{size}x{size}/
# 同时生成作业文件、日志文件以及 Python 脚本,存放于:
#   - $RefineDet_ROOT/jobs/{Network}/coco/refinedet_{network}_{size}x{size}/
python examples/refinedet/VGG16_COCO_320.py
python examples/refinedet/VGG16_COCO_512.py
python examples/refinedet/ResNet101_COCO_320.py
python examples/refinedet/ResNet101_COCO_512.py
  1. 从 COCO 微调至 VOC(基于 VGG16)。
# 这将从预训练的 COCO 模型中提取出 VOC 模型。
ipython notebook convert_model_320.ipynb
ipython notebook convert_model_512.ipynb
# 这将创建模型定义文件,并将快照模型保存在:
#   - $RefineDet_ROOT/models/VGGNet/VOC0712{Plus}/refinedet_vgg16_{size}x{size}_ft/
# 同时生成作业文件、日志文件以及 Python 脚本,存放于:
#   - $RefineDet_ROOT/jobs/VGGNet/VOC0712{Plus}/refinedet_vgg16_{size}x{size}_ft/
python examples/refinedet/finetune_VGG16_VOC2007_320.py
python examples/refinedet/finetune_VGG16_VOC2007_512.py
python examples/refinedet/finetune_VGG16_VOC2012_320.py
python examples/refinedet/finetune_VGG16_VOC2012_512.py

评估

  1. 构建 Cython 模块。
cd $RefineDet_ROOT/test/lib
make -j
  1. test/lib/datasets/pascal_voc.py 中的 self._devkit_path 修改为您的路径。

  2. test/lib/datasets/coco.py 中的 self._data_path 修改为您的路径。

  3. 查看 test/refinedet_demo.py,了解如何使用 RefineDet 模型进行目标检测以及如何绘制检测结果。

# 对于 GPU 用户
python test/refinedet_demo.py
# 对于 CPU 用户
python test/refinedet_demo.py --gpu_id -1
  1. 通过 test/refinedet_test.py 评估训练好的模型。
# 您可以修改 refinedet_test.py 中的参数以进行不同类型的评估:
#  - single_scale: True 表示单尺度测试,False 表示多尺度测试。
#  - test_set: 'voc_2007_test', 'voc_2012_test', 'coco_2014_minival', 'coco_2015_test-dev'。
#  - voc_path: 训练好的 VOC Caffe 模型所在路径。
#  - coco_path: 训练好的 COCO Caffe 模型所在路径。
# 对于 'voc_2007_test' 和 'coco_2014_minival',将直接输出 mAP 结果。
# 对于 'voc_2012_test' 和 'coco_2015_test-dev',会保存检测结果,您需要将其提交到评估服务器以获取 mAP 结果。
python test/refinedet_test.py

模型

我们提供了从不同数据集训练得到的模型。为了帮助复现 表 1、表 2、表 4 中的结果,大多数模型都包含一个预训练的 .caffemodel 文件、多个 .prototxt 文件以及 Python 脚本。

  1. PASCAL VOC 模型(VGG-16):

  2. COCO 模型:

注意:如果您无法通过上述链接下载预训练模型,可以通过 百度网盘 下载。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|1周前
开发框架图像Agent