一个模型通吃万物关键点:百万实例库,22 个测试集里 17 个超 90%

GKDT: General Keypoint Detection Transformer

Changsheng Lu, Yuxin Chen, Haokun Gui, Rong Wang, Jie Yang, Harry Yang, Anton van den Hengel, Jiaya Jia

ECCV 2026

cs.CV

2026-07-01

把 29 个数据集的 130 万实例统一标注,训出单一关键点检测模型 GKDT,22 个测试集里 17 个超 90% PCK,逼近专用专家模型。

这篇在解决什么

关键点检测(keypoint detection,在物体上标出有语义的关节点或标志点)传统上是个「一类一模型」的活:人体姿态有人体模型,人脸有人脸模型,动物、手、衣物、X 光片各有一套专用网络。代价很直接,每换一个物种或一类物体,就要重新标注、重新训练,模型之间完全没法迁移。一个学过人体结构的模型,面对鱼或沙发这种解剖结构完全不同的东西,基本束手无策。

论文要回答的问题是:能不能用一个模型,靠提示(给张样例图、写句话,或两者都给)就检测任意物体的关键点,包括训练时没见过的新类别。

方法

GKDT 建在视觉基础模型 DINOv3 上。核心是一个「核生成」(kernel generation)transformer,思路来自一个观察:专用模型里那组卷积权重,本质上就起着关键点原型(keypoint prototype)的作用,和图像特征做相似度匹配就能定位。论文反过来想,如果能从提示里学出这种原型,就不需要为每个类别单独训权重。

流程分四步。先从样例图的高斯热力图里抽「视觉关键点原型」,从关键点的文字描述里抽「文本原型」;再让核生成 transformer 通过自注意力和交叉注意力,把这两组原型转成一组卷积核;最后用这些核对查询图的特征做卷积,直接出热力图定位。整个过程是非参数的,没有为某个具体类别学专属参数。

两个训练技巧支撑泛化。「混合模态提示训练」让每个训练片段随机选用视觉、文本或两者作为提示,模拟真实使用时用户提示方式不一致的情况。「动态重要性采样」处理长尾:MegaKPT 里头部类别(人体、动物)样本远多于尾部,采样时判断当前抽到的类是否属于头部,属于就抽走不再放回,逐步把分布拉平,同时一个尾部样本都不丢。

结果

论文配套发布数据集 MegaKPT:从 29 个已有数据集汇总,统一成 COCO 格式,含 935,343 张图、1,348,228 个实例、1,587 个类别、740 种关键点,横跨人体姿态、人脸、动物、昆虫、家具、车辆、衣物和医学影像等十类。它也是第一个给医学影像(头颅侧位片、手部 X 光)配专家级关键点文字描述的数据集。

性能上,22 个测试集里 17 个在双模态提示下超过 90% [email protected]。对照基线包括 DINOv3、CapeFormer、OpenKD、X-Pose:

测试集OpenKDGKDT
醋蝇(双模态)95.9798.79
手部 X 光(零样本)85.3199.60
头颅侧位片99.1899.49

在 COCO 多人姿态上,加强版 GKDT-H† 拿到 78.1 AP,已经追上专用模型 ViTPose-H 的 79.1。一个通用模型能逼近专门为单一任务训练的专家。训练用 16 张 H800,跑 20 个 epoch。

为什么重要

关键点检测是姿态估计、动作识别、医疗影像分析等一堆任务的公共底座,而大部分团队还在为各自的物体类别各自造轮子。GKDT 给出了一条用统一模型加提示覆盖长尾类别的路子,对那些标注样本少、又想快速上线的场景特别实在。配套的 MegaKPT 也补了一个空白:之前没有一个同时覆盖这么广类别、还带文字描述的统一基准。

局限与存疑

论文没有写专门的「局限」小节。从正文能看出来的问题有几条。多物体场景是两阶段的,得先靠外部检测器(如 Grounding DINO)出框再逐个检测,性能被检测器质量卡住,论文自己用不同质量的框跑出了明显不同的结果。「17 个超 90%」的成绩只对双模态提示成立,纯文本提示在医学类之外的一些集上明显更弱。训练要 16 张 H800,对个人或小团队不算轻量。论文对失败案例和不同骨架大小的影响讨论得也偏少。

术语

原文与代码

社区讨论

相关论文

全部论文解读