资讯动态

可迁移的互动性知识:HOI检测中先问‘有没有交互‘再答‘是什么交互‘

发布时间:2026/10/15 23:55:53 来源:尧图企业网站定制
这篇论文笔记的主角是一篇关于人-物交互检测HOI Detection的工作。标题里最抓我的不是Detection而是Transferable Interactiveness Knowledge——可迁移的互动性知识。说实话我第一次看到这个短语时愣了一下什么叫互动性知识为什么它可以迁移带着这两个问题把论文反复读了几遍我决定把完整的阅读思路整理下来。这篇笔记适合正在入门HOI检测、对关系建模感兴趣、或者想了解怎么把抽象先验做成可验证实验的同学阅读读完你大概率会和我一样对人-物交互检测这件事的看法发生一点小变化。1. 在谁和谁发生了什么背后还藏着一层容易被忽略的先验1.1 HOI检测任务到底是什么人-物交互检测英文 Human-Object Interaction Detection核心任务可以用一个三元组概括给定一张图输出人, 物体, 交互动作。比如人, 马, 骑马、人, 杯子, 拿起、人, 手机, 看。它和目标检测的区别在于不仅要框出人和物体还要判断人和物体之间发生了什么关系。这个任务真正难在哪里我经常和身边同学说难点其实是组合爆炸。假设检测器能稳定给出80类物体框再加上可能出现的上百个动作动词理论上可组成几千上万种HOI组合。但现实中一张图里人和物体大多是不交互的。站在路边的人和路灯不交互电梯间里两个人和同一个按钮也不一定有交互。真正的交互样本在整个图像空间里非常稀疏。传统做法通常会把人、物体分别检测出来然后把所有人和所有物体两两配对送进一个分类器判断动作。问题是一个画面里如果有5个人、8个物体那就是40个pair里面真正发生交互的可能只有两三个。模型要在海量负样本里找出正样本还要在极长的类别尾巴上做动作分类效果自然容易被拖垮。在这个背景下这篇论文给了我一个很不一样的思路与其直接让模型回答具体是什么交互不如先让它回答这两个东西之间到底有没有发生交互。1.2 互动性知识与可迁移性的提出动机互动性在这里是一个二分类概念一个human-object pair要么是互动的interactive要么不是non-interactive。论文把它叫做 interactiveness也就是中文语境里的互动性或交互性。我理解的论文核心动机是这样的判断有没有交互这件事比判断具体是什么交互要通用得多。比如我见过人骑马的图片能判断出人和马之间存在互动那么当看到一张人骑摩托车的图片时即使我从没见过骑摩托车这个动作标注也能很自然地猜到人和摩托车之间存在某种互动。因为人与大型可骑乘物体之间产生接触、姿态配合这个模式是跨类别共享的。这就是标题里可迁移的含义。细粒度的动词分类器一旦遇到没见过的动词输出空间里根本没有这个类别模型只能束手无策。但互动性二分类器不一样它依赖的不是某个动词长什么样而是人和物体在空间、姿态、上下文上是否构成一种动态关系。这种知识可以在不同动词、甚至不同HOI类别之间迁移。读到这里时我想起一个生活里的类比一个人能看出这两个人在聊天还是只是碰巧站在同一部电梯里靠的是一种关系层面的直觉而如果要你说出他们具体在聊什么话题那就需要更多背景信息。前者更容易跨场景泛化后者则高度依赖领域数据。这篇论文想抓住的正是前者的本质。2. 两步走的设计先问有没有交互再答是什么交互2.1 框架总览与交互性网络的位置整篇论文的模型骨架如果让我用一句话概括就是在现有检测结果之上加了一个互动性门控再把通过门控的pair送去做细粒度动作分类。更具体地说框架大致分为三层最底层是视觉特征提取器和一个人/物检测器负责从图像中拿出所有候选的人和物体框中间层是交互性网络Interactiveness Network对每个(human, object)候选对输出一个0到1的互动性得分顶层是交互分类分支只在互动性得分足够高的候选对上进行动词预测。我第一次读到这里时有一个疑问为什么不直接训练一个端到端的HOI分类器非要额外插一个二分类分支论文给出的理由其实很实在HOI分类器的输出空间巨大且长尾严重而互动性二分类的输出空间只有两个值。与其让模型从几千类里硬选不如让它在第一步先做一个简单的判断题——这两者有没有关系——如果判断为没有就直接把该候选过滤掉或降权。在实际推理中论文的思路通常可以这样理解对每一个候选pair先算互动性概率再用这个概率去乘动作分类器的得分最终输出带权重的HOI预测。这样做等于让互动性得分当了门控和权重的双重角色。2.2 训练阶段的损失拆解如果把训练流程拆成伪代码大概长这样。这部分是我根据论文思路和常见实现做的合理还原细节以原文为准# 伪代码交互性网络 交互分类器的训练流程 def train_step(image, detections, hois): features backbone(image) pairs generate_human_object_pairs(detections) # 所有人和物的候选对 # 第一步互动性二分类 inter_logits interactiveness_net(features, pairs) inter_loss binary_cross_entropy( inter_logits, hois.interactiveness_label # 1表示交互0表示不交互 ) # 第二步仅对交互正样本做动作分类 interactive_pairs pairs[hois.interactiveness_label 1] action_logits action_net(features, interactive_pairs) action_loss cross_entropy( action_logits, hois.action_label # 具体动词 ) loss inter_loss action_loss loss.backward()这里最关键的细节是交互性网络必须看到所有pair而不只是正样本。我一开始也觉得动作分类只对正样本训练很自然但交互性网络如果不在大量负样本上做过充分训练推理时它会分不清有接触但没动作和没接触也没动作之间的边界。论文这一步拆解最大的好处是交互性网络承担了大部分负样本过滤工作动作分类器则可以在一个相对干净的输入空间里做细粒度识别。两个子任务的难度都被降低了整体效果反而更容易做上去。2.3 为什么这种拆法能保住迁移能力关于迁移我一直提醒自己不要把它理解成一个玄学词汇。论文里的迁移是有明确载体的载体就是互动性网络本身。因为互动性网络不依赖具体动词标签它只学习人和物体之间的互动模式。举个例子训练数据里有骑马但没有骑摩托。常规动作分类器根本不会输出骑摩托这个概率但互动性网络在见过足够多人骑在物体上、身体姿态前倾、手部与物体接触的训练样本之后遇到人骑摩托的候选对会给出一个较高的互动性得分。这个得分本身虽然没有解决具体动作是什么的问题但至少把正确的人和物体从大量无关配对中捞了出来。这其实是一种很巧妙的任务降维不对未知类别做直接预测而是先用一个通用关系判断器框定搜索范围。论文后面设计的实验也基本是围绕这个点展开的。3. 不谈实验的论文笔记都是耍流氓unseen类别怎么测3.1 评测协议把部分动词从训练中摘出去这篇论文里让我印象最深的设置是它设计了一个动词不可见的评测协议。传统HOI实验是随机划分训练集和测试集所有HOI类别在训练里都至少出现过。但在这种设置下模型只是记住了见过哪些类别并不代表它学会了迁移。论文的做法大致是把动作动词集合切分成两部分一部分作为可见动词保留在训练里另一部分作为不可见动词从训练样本中彻底摘除。比如训练时只给骑马、看书、拿杯子测试时却要求模型检测出骑摩托、看电视、拖地这类它从没见过的交互。这样一来模型在测试阶段面对不可见动词时无法从见过这个类别中获得帮助唯一能依靠的泛化信号就是互动性知识。我第一次看到这个设置时觉得有点反常常规分类器遇到这种任务输出空间里根本没有不可见动词的节点怎么算分数但论文要验证的正是即使最终动作名称猜不准模型能不能靠着互动性知识先把这里可能存在交互的人和物找出来如果这一步成立迁移就是有效的。3.2 数据集、指标与公开结果的整体印象这篇论文的实验主要在公开的HOI基准上做包括 HICO-DET 和 V-COCO。前者规模较大后者更偏向真实动作场景。评估指标沿用HOI领域通用的mAP也就是对检测框、类别、动作同时做匹配后计算平均精度。由于我没有把论文里每一张表的原始数字背下来这里不打算一句一句报数。但如果用表格概括论文呈现的效果大概是这样的评测设置不引入互动性知识的基线引入互动性知识的方法全量类别训练动作分类器直接硬扛长尾类别容易丢互动性门控先过滤负样本常见类别和长尾类别都有改善不可见动词训练很难对未见过动词做出有效输出依靠互动性得分仍能召回大量正确的人和物再配合已知动作映射这种情况下数字层面的直接对比并不是最重要的。真正让我觉得有价值的是变化趋势每当把不可见动词的难度拉高论文方法相对基线的优势就越明显。这说明互动性知识真正发挥作用的地方恰恰是常规监督信号失效的场景。3.3 我如何看待这个结果很多人看论文只看mAP涨了多少点我更喜欢看涨在哪里。这篇论文的增益不是来自把网络加深也不是来自某种花哨的特征融合而是来自任务重定义。它把从一堆类别里挑一个改成了先判断有没有关系再判断什么关系。这一点对工程实践有直接启发。实际业务里我们经常遇到标注数据不足但类别很多的情况。与其逼着模型记住几百个类别不如先训练一个稳健的关系判断器把它放在前面当漏斗后面再挂具体分类器。这样即使后续新增类别前序模型也不必全部重训只需要更换或扩充后端的动作分类部分即可。4. 复现这份工作需要注意的三个暗坑论文读起来顺畅真正动手复现就是另一回事了。我在复现这类HOI方法时踩过几个坑写下来供准备跑实验的同学参考。4.1 候选对生成质量决定交互性网络的天花板这是我最想强调的一点。交互性网络再准也只在检测器给出的候选框内做判断。如果目标检测器漏掉了画面里的某个人或者把关键物体框偏了一半那后面的交互性判断根本无从谈起。我的建议是在复现初期不要用太强的检测器过滤策略。宁可让模型多输出一些低置信度的框把召回率拉高再让交互性网络去决定哪些pair值得保留。很多复现效果差问题往往不是出在HOI模型本身而是出在候选框的召回率上。检测器的召回率直接决定了这个方法的天花板。4.2 交互性网络的正负样本比例非常失衡HOI数据里真实的interactive pair占比通常很低。如果直接用原始比例训练交互性网络模型很容易学到躺平把所有pair都预测成非交互损失也不高因为负样本占多数。我实测下来比较有效的做法有两个一是对交互性分支使用focal loss或OHEM一类的困难样本挖掘让模型别被海量简单负样本带偏二是训练结束后单独在验证集上搜索交互性阈值不要默认取0.5有些场景0.3甚至0.2的阈值反而更合适。这个阈值选择看似微小但对最终mAP的影响有时候比换一个更大的backbone还明显。4.3 显存与速度避免逐pair重复过网络HOI候选对的数量很容易膨胀。一张图塞进5个检测框配对组合可能就是几十对如果检测结果再多一点逐pair提取特征再分类的写法会让显存瞬间吃紧。工程上比较聪明的做法是共享特征先为整张图提取一次特征图然后对每个pair做RoI特征抽取或特征对齐不要再让每个pair单独过一遍backbone。推理时也要提前做NMS和置信度过滤把候选pair数量控制在合理范围。很多复现版本跑不动不是显卡太小而是特征重算太浪费。5. 读完这篇论文我对HOI研究的三点新理解5.1 关系建模可以拆成关系存在性和关系语义两层以前我总把HOI检测看成一个大号的细粒度分类问题。这篇论文让我意识到人和物体之间的关系其实包含两个层面第一层是有没有关系第二层是是什么关系。前者更基础、更通用也更适合做迁移后者更精细、更依赖数据。把两层拆开建模既降低了训练难度也给了模型一条在未知类别上依然有效的推理路径。这种拆解思路并不只适用于HOI检测。我后来在看一些视频动作识别、场景图生成的工作时也会下意识地问一句这个任务里有没有一个类似互动性的底层先验答案是很多任务都有只不过很少有人愿意把它单独拎出来作为一个可训练的模块。5.2 零样本HOI研究的起点可以追溯到这种不可见类别评测这篇论文提出的不可见动词评测思路在后续很多HOI研究中反复出现。零样本HOI检测、少样本HOI检测追根溯源都离不开这样一个设定训练阶段故意隐藏某些类别测试阶段再看模型能泛化多少。对刚接触这个方向的读者我建议把这篇论文当作理解后续一系列工作的地基。需要注意的是不可见类别设置本身也有多种变体有的藏动词有的藏物体有的藏整个HOI组合。不同隐藏粒度对应不同的难度也对应不同的迁移信号来源。读后续论文时先搞清楚它用的是哪种协议再对比方法思路会清晰很多。5.3 这篇论文的写法也值得学习如果抛开技术本身这篇论文在表达上有一个很聪明的做法它把一个抽象概念可迁移的互动性知识和一组具体实验设置不可见动词评测绑定在一起。概念因为有了可测量的实验协议而变得实在实验因为有了明确的概念牵引而显得有深度。我写论文笔记时也学了这个习惯先问你这个核心概念到底在解决哪个测量指标再问如果公平地验证它需要设计什么样的实验。想清楚这两点论文的框架基本就立住了。我个人读完最大的体会是很多人做HOI检测只盯着动作分类准不准但这篇论文提醒我判断人和物有没有关系本身就是一个有价值、可迁移、甚至比动作分类更本质的能力。回到开头那个问题——什么叫可迁移的互动性知识简单说就是让模型先学会识别互动关系这个通用技能再靠这个技能去应对那些从没见过的具体交互。如果以后再遇到类似任务我也打算先问一句能不能先做一个关系存在性的判断器把问题拆细一点再打这个思路比任何具体网络结构都更值得带走。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑