hardnet
HardNet 是一个基于 PyTorch 实现的深度学习模型,专门用于生成高质量的局部图像描述符(Local Descriptors)。在计算机视觉任务中,如何让算法准确识别并匹配不同视角、光照或形变下的同一图像特征点一直是个难题。HardNet 通过引入一种创新的“硬边界”损失函数(Hard Loss),迫使模型在训练时重点关注那些难以区分的相邻样本边界,从而显著提升了描述符的区分能力和鲁棒性。
这款工具特别适合计算机视觉领域的研究人员和开发者使用,尤其是那些从事图像检索、三维重建、SLAM(即时定位与地图构建)或图像拼接工作的专业人士。其核心技术亮点在于超越了传统的对比损失方法,在 HPatches 和 Oxford5k 等权威基准测试中取得了领先的匹配精度。此外,项目不仅提供了完整的训练代码和预训练模型(如推荐用于实际应用的 HardNet++),还支持将模型转换为 TorchScript 以便在 C++ 环境中高效部署,同时也保留了 Caffe 版本的使用示例,极大地方便了从学术研究到工程落地的全流程应用。
使用场景
某自动驾驶团队正在开发高精地图定位系统,需要在车辆行驶过程中,实时将摄像头捕捉的路面特征与云端存储的历史地图进行精准匹配,以确定车辆厘米级位置。
没有 hardnet 时
- 特征匹配不稳定:在光照剧烈变化(如进出隧道)或视角发生倾斜时,传统的 SIFT 或早期深度学习描述子提取的特征向量区分度不足,导致大量误匹配。
- 定位漂移严重:由于局部描述子无法有效抵抗仿射形变,车辆在快速转弯或上下坡时,系统计算出的相对位置出现明显跳变和漂移。
- 检索效率低下:为了弥补单个描述子准确率的不足,不得不增加候选匹配点的数量并依赖复杂的后处理算法,显著增加了计算延迟,难以满足实时性要求。
使用 hardnet 后
- 鲁棒性显著提升:hardnet 通过独特的“硬样本”损失函数训练,生成的描述子在强光、阴影及大角度视角变化下仍能保持极高的辨识度,大幅降低了误匹配率。
- 定位精度达到厘米级:结合 AffNet 等检测器,hardnet 能有效处理路面纹理的仿射变形,使车辆在复杂动态场景下的位姿估计平滑且精准,消除了定位跳变。
- 系统链路更精简:凭借更高的平均精度均值(mAP),系统可用更少的特征点实现同等甚至更好的检索效果,简化了后端几何验证流程,提升了整体运行帧率。
hardnet 通过极致优化局部描述子的判别能力,让机器视觉在极端环境下也能像人类一样精准“认路”,是高可靠视觉定位系统的核心基石。
运行环境要求
- 未说明
未说明
未说明

快速开始
HardNet 模型实现
在 PyTorch 中实现的 HardNet 模型,用于 NIPS 2017 论文 "努力了解邻居的边界:局部描述子学习损失"。 海报, 幻灯片
如何将 HardNet 编译为 Torchscript 以在 C++ 代码中使用示例
2025 年 4 月更新
PhotoTour 数据集已 不再可用 原始链接。我们改用 布拉格捷克理工大学的镜像。
2018 年 4 月 6 日更新
我们添加了小幅平移和旋转增强,这使得 HPatches 上的结果提升了最多 1 个 mAP 点。相关代码位于 HardNet.py 中,可通过 --augmentation=True 开启。所有权重将很快更新。基于 Brown + HPatches + PS 数据集训练的版本正在开发中,敬请期待 :)
关于 BoW 检索引擎的常见问题回复
很遗憾,该引擎属于专有技术,我们无法公开。不过您可以尝试以下两个基于 Matlab 的开源项目:
在 HPatches 上的基准测试,mAP

牛津 5k 数据集上的检索,mAP,Hessian-Affine 检测器
| 描述子 | BoW | BoW + SV | BoW + SV + QE | HQE + MA |
|---|---|---|---|---|
| TFeatLib | 46.7 | 55.6 | 72.2 | n/a |
| RootSIFT | 55.1 | 63.0 | 78.4 | 88.0 |
| L2NetLib+ | 59.8 | 67.7 | 80.4 | n/a |
| HardNetLibNIPS+ | 59.8 | 68.6 | 83.0 | 88.2 |
| HardNet++ | 60.8 | 69.6 | 84.5 | 88.3 |
| HesAffNet + HardNet++ | 68.3 | 77.8 | 89.0 | 89.5 |
需求
请使用 Python 2.7,安装 OpenCV 和 requirements.txt 中列出的其他库。
数据集与训练
下载数据集并开始学习描述子:
git clone https://github.com/DagnyT/hardnet
./code/run_me.sh
日志以 TensorBoard 格式存储在 logs/ 目录中。
预训练模型
预训练模型可在 pretrained 文件夹中找到。
第三方预训练模型
Rahul Mitra 提出了一个新的 大规模 patch PS 数据集,并在其上训练出表现更优的 HardNet。原始的 torch 格式权重可在此处获取:这里。
转换后的 PyTorch 版本在此:这里。

我应该使用哪些权重?
对于实际应用,我们推荐 HardNet++。
若需与其他基于 Liberty Brown 数据集训练的描述子进行比较,我们推荐 HardNetLib+。
若要寻找未在 HPatches 数据集上训练的最佳描述子,我们建议使用 Mitra 等人的模型,链接见上文。
使用示例
我们提供了一个使用 HardNet 描述 patch 的示例。脚本期望输入为 HPatches 格式的 patch,即灰度图像,宽度为 patch_size,高度为 n_patches * patch_size。
cd examples
python extract_hardnet_desc_from_hpatches_file.py imgs/ref.png out.txt
或使用 Caffe:
cd examples/caffe
python extract_hardnetCaffe_desc_from_hpatches_file.py ../imgs/ref.png hardnet_caffe.txt
使用 HardNet 的项目
AffNet -- 学习局部仿射形状估计器。
引用
如果您使用此代码,请引用我们:
@inproceedings{HardNet,
author = {Anastasiya Mishchuk, Dmytro Mishkin, Filip Radenovic, Jiri Matas},
title = "{努力了解邻居的边界:局部描述子学习损失}",
booktitle = {NeurIPS 会议论文集},
year = 2017,
month = dec
}
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。