给野生动物拍"连环画":一只猞猁如何被AI认出来 Original en chino

在捷克的森林里,红外相机已经拍了几万张猞猁的照片。生态学家面对这些照片,要回答一个看起来简单实则棘手的问题:这只猞猁,到底是不是上个月拍到的那只?

人类专家是怎么做的呢?他们盯着猞猁身上那些杂乱的斑点,寻找独一无二的排列组合,就像指纹一样。这件事做起来极其耗时,而且猞猁的身体是左右不对称的,同一只猞猁左边和右边的斑纹图案完全不同,专家甚至需要专门架设双侧相机来确认左右两张脸其实是同一个身体。

那么,能不能让计算机来干这件事?

当前方法卡在哪里

目前主流的动物身份识别思路,是把这个问题当成一个分类问题来做。给每张图片一个全局的"特征向量",然后判断这个向量和数据库里哪个个体的向量最像。这类方法的代表是MegaDescriptor和一些多物种识别模型,它们依赖一种叫全局嵌入的技术手段。

全局嵌入:把一整张图片压缩成一串数字向量,用来代表这张图的"总体特征",之后通过比较向量的相似度来判断两张图是否是同一个体。

问题在于,这种压缩方式会把图片里最关键的局部信息给"揉碎"了。论文里提到一个研究发现,视觉模型里的空间信息其实主要藏在局部的图像小块特征里,一旦经过全局池化操作被压成一个向量,这些细节就被严重稀释了。

打个比方。你要靠身份证照片认出一个人,如果把照片打成马赛克再去比对脸型轮廓,你大概能分辨男女老少,但很难认出这是张三还是李四,因为眼角的痣、嘴角的疤这些关键细节,在打码的过程里已经被抹掉了。全局嵌入做的事情,某种程度上就类似于给动物的毛皮花纹打了码,保留了大致轮廓,却丢了最具辨识度的斑点排布。

另一条路是用局部特征匹配器,比如LightGlue、RDD、LoMa这些模型。

局部特征匹配器:不是把整张图压成一个向量,而是先在图片上找出很多个"关键点",再去比较两张图里哪些关键点能够一一对应上,对应的点越多、置信度越高,就认为两张图描绘的是同一个东西。

这类方法天然更贴近专家的做法,因为专家看的就是局部的斑纹对应关系。但问题是,这些匹配器全部是在通用图像数据集上训练出来的,它们擅长认出建筑物的棱角、路标的边缘,却从没专门学过"豹子身上的花纹应该怎么对应"。

这就引出了论文的核心问题:能不能只用野生动物监测数据集里现成的身份标签,把一个通用的图像匹配器,调教成专门认动物花纹的专家?

注意这里的难点,身份标签只告诉你"这两张图是同一只动物",却完全不告诉你"图里哪个点对应哪个点"。专门做关键点级别标注的成本极高,几乎没有野生动物数据集会提供这种精细标注。这就好比老师只告诉你两次考试都是同一个学生写的,却不告诉你第一次考卷上的第3题和第二次考卷上的第7题考的是同一个知识点,你要自己去猜哪里是对应的。

WildMatch的核心思路

论文提出的方法叫WildMatch,它的巧妙之处在于,用一个还没训练过的、未经调整的通用匹配器,先去给数据"打草稿",再用身份标签把这份草稿改对。

具体来说,流程分成两步。

第一步是挖掘训练对。研究者让预训练的匹配器(没有经过任何野生动物领域的微调)去给同一个数据集里的图片打分。对每一张作为"锚点"的图片,用这个原始匹配器去找:在同一个体的其他照片里,哪几张和锚点匹配得分最高(这些被选作正样本);在不同个体的照片里,哪几张匹配得分也很高(这些被选作难负样本)。

正样本和负样本:正样本指的是确认属于同一个体、理应被匹配器判定为相似的图片对;负样本是不同个体的图片对,理应被判定为不相似。难负样本特指那些虽然是不同个体,但表面特征很接近、容易让模型"误判"的负样本,专门用来逼模型学得更精细。

这一步的精妙之处在于,它没有要求人工标出"这个点对应那个点",而是借助预训练匹配器自带的判断力,去筛出那些"有戏"的图片对,正样本是看起来确实可能存在真实对应关系的,负样本是模型容易搞混的高难度反例。

这就像一个新手摄影师拿着一堆自己拍的照片,先自己粗略分个类,再请一位摄影老师来看,老师不需要逐张照片讲解构图原理,只需要说"这几张你分对了,继续这么拍","这几张你分错了,这两张其实是同一个场景不同角度"。新手凭借老师这几句点拨,就能校正自己原本模糊的判断标准,而不需要老师把每一张照片的每一个细节都讲一遍。如果没有这个预筛选步骤会怎么样?研究者就得盲目地随机配对训练样本,大量样本根本不存在共同的可见花纹(毕竟动物两侧花纹不同,姿态角度也千差万别),模型会在大量"无效配对"里迷失,学不到真正有用的对应关系。

第二步是对比式微调。拿到这些挖出来的正负样本对之后,用一种叫三元组损失的训练目标,去微调匹配器里负责"判断对应关系"的那个模块。

三元组损失:一种常见的训练目标,核心思想是让"锚点和正样本的相似度"比"锚点和负样本的相似度"高出一个固定的安全间隔,直到模型稳定地把正样本排在负样本前面为止。

论文还做了一个关键的工程处理。正常推理时,匹配器只会保留那些"互相选中对方"且置信度超过阈值的关键点对,这个筛选过程是离散的、不可微分的,没法直接用来做梯度训练。于是研究者设计了一个放松版的评分公式,对每个关键点,直接取它在另一张图里得分最高的那个候选点的置信度,然后对两张图对称平均,这样就算原本的筛选机制一个对应点都没留下,训练信号依然存在,不会出现"无路可走"的情况。

匹配器的"大脑"和"眼睛"该调哪个

一个局部特征匹配器其实包含两部分,一部分是探测器和描述器,负责在图片里找出关键点、给每个关键点生成一串描述它长相的向量,这部分可以理解为"眼睛"。另一部分是匹配模块,负责拿着两张图的关键点描述,去判断哪些点该互相配对,这部分可以理解为"大脑"。

研究者做了个对照实验,分别只微调眼睛、只微调大脑、两者都调,结果相当清晰。只调眼睛(描述器分支)的话,效果反而变差了,平衡后的准确率从31.3%掉到了28.6%。而只调大脑(匹配模块)的话,准确率涨到了34.7%,提升了3.4个百分点,训练成本却只要5.1个GPU小时,比调描述器省了十几倍的算力。

为什么会这样?描述器原本是为了"几何上的可重复性"训练出来的,它的任务是在不同光照角度下依然认出同一个物理点。如果强行用身份标签去调描述器,等于让它放弃原本练就的几何稳定性,去迁就一个它并不擅长的任务,反而学坏了。而匹配模块原本干的事情,就是判断"这两个点该不该配对",这恰好和身份标签想传达的信息高度一致,调起来事半功倍。

这让我想到一个很朴素的道理:改造一个系统时,改哪个零件,要看这个零件原本的职责和你想要的新目标是否天然契合。如果一个厨师本来擅长刀工,你非要重新训练他去研究火候,刀工说不定还退步了;但如果你只是教他"这道菜该配哪种食材",这恰好是他原本就在做的判断类工作,教起来自然事半功倍。如果论文没有做这组对照实验,直接选择微调全部模块,虽然准确率能再涨一点点(到34.9%),但训练成本暴涨到84个GPU小时,付出16倍以上的代价只换来不到1个百分点的提升,显然不划算。

和直接做身份分类相比,谁更聪明

还有一个很自然的问题:既然有身份标签,干嘛不直接拿它去训练一个分类器,让模型直接学会认出"这是第几号动物"?

论文也做了这个对照。用MegaDescriptor这个全局编码器去接一个身份分类头,训练了10个GPU小时之后,分类器的top-5准确率才勉强追上没有经过任何微调的原始匹配器,平衡后的top-1准确率还不到20%。而WildMatch在只训练5个GPU小时之后,准确率已经从31%爬到35%。

差距从哪来?分类器需要给数据库里每一个个体都学一套专属参数,这意味着训练过程会被拍摄次数多的"网红"个体主导,那些只被拍到一两次的稀有个体几乎学不到东西。而WildMatch训练的是图片对之间的关系,不依赖具体是哪个个体,模型学的是一种更通用的"怎么判断两张图是否同一个个体"的能力。

更关键的是,分类器学的是一张"封闭名单",只要数据库里来了一个新个体,整个分类器就得推倒重来。这就好比你养了一个保安,专门记住了小区里现有的100户业主的脸,第101户业主刚搬进来,保安完全不认识,你只能把保安送回去重新培训一遍。而WildMatch训练出来的匹配器,认的不是具体哪张脸属于谁,它学会的是"怎么比对两张脸是否相似"这件事本身,第101户业主搬进来,不需要重新培训,直接拿现成的本事去比对就行。

为了验证这一点,论文专门设计了一个开放世界测试,用44只在训练阶段完全没出现过的猞猁做测试对象。结果显示,微调过的匹配器在这些"陌生面孔"上依然比原始匹配器表现更好,top-5准确率从40.4%提升到46.1%,这说明WildMatch学到的不是死记硬背训练集里的身份,而是一种可以迁移的、关于"花纹怎样算匹配"的通用判断力。

换一个匹配器行不行

为了证明这套方法不是只对某一个特定模型管用,研究者还拿了另一款架构、训练数据都不同的匹配器RDD做了重复实验。结果同样是微调之后的版本全面超过原始版本,只是在候选名单特别长的时候优势会缩小一些,研究者分析这是因为训练时选的负样本大多是难负样本,模型见过的"容易的候选项"相对较少,所以候选名单一拉长,这部分没练过的简单样本反而拖了后腿。这倒是提醒了一件事:训练数据的构成方式,会直接决定模型在哪些场景下更稳,哪些场景下还有盲区。

实验覆盖的范围和结果

研究者在八个公开的野生动物身份识别数据集上做了测试,涵盖了黑斑羚、鬣狗、豹子、海星、鲸鲨、海龟、火蜥蜴和欧亚猞猁,物种跨度很大,图像质量也参差不齐,论文里专门展示了曝光过度、细节不足、空画面、图像损坏、模糊这几类常见的脏数据样本,而且没有做任何数据清洗,直接拿这些真实世界里会遇到的"烂图"去测试。

核心的评价指标是top-5准确率,也就是模型给出的前五个候选个体里,有没有包含正确答案,这个指标贴近实际使用场景,因为最终还是要靠专家从候选名单里做最后确认。另外还用了平衡top-1准确率,把常见个体和稀有个体一视同仁地平均计算,避免被"网红"个体的高准确率掩盖了稀有个体上的糟糕表现。

结果显示,在几乎所有数据集、所有候选名单长度设置下,WildMatch微调过的匹配器都超过了原始匹配器,也超过了此前的代表性方法WildFusion。WildFusion是一种把全局相似度和预训练局部匹配器分数融合起来的方法,可以理解为前面提到的两条路线的拼接版,但它用的局部匹配器依然是没有做领域适配的通用版本。而且论文提到一个很直观的效率对比:要达到WildMatch微调版在某个候选名单长度下的准确率,原始匹配器往往需要把候选名单拉长两到五倍才能追上,这意味着同样的识别精度,WildMatch能省下更多计算资源去扫描更少的候选图片。

论文还给出了几张可视化的匹配结果图,每张图里展示的是同一个体两张照片之间连线最紧密的十组对应点。鬣狗和豹子身上的斑点被准确地连成一条条线,黑斑羚身上的条纹、火蜥蜴皮肤上的黄色斑块也都能看到清晰的对应关系。这种可解释性其实很有价值,因为它意味着专家不只是看到一个相似度分数就被迫相信,而是可以亲眼看到"模型认为这几个斑点对上了",再自己判断这个对应关系合不合理。在物种保护这种一旦认错个体就会影响种群数量估计的场景里,这种可追溯、可核查的判断依据,比一个黑箱打分要可靠得多。

这件研究让我重新想了一下"弱监督"这个词的分量。很多人以为弱监督就是"凑合着用不够精细的标签",但WildMatch展示的是另一种可能:用一个已经具备一定能力的旧模型,去把粗糙的标签转化成更精细的训练信号。这其实是一种"借力"的思路,先用现成的工具生成一份不完美的草稿,再用真正可靠的信息去修正这份草稿,而不是从零开始硬啃。这种思路或许在很多标注成本高昂的领域都有迁移价值,不只是野生动物识别这一件事。

还有一点让我觉得挺有意思的,论文里提到的双侧不对称问题,其实暴露了一个很容易被忽视的假设:我们默认"同一个身份的两张照片应该长得像",但现实世界里经常不是这样,猞猁的左脸和右脸花纹完全不同,这意味着单纯的身份标签其实包含了大量的噪声假设,而这篇论文的挖掘策略恰恰是在想办法从这堆噪声里筛出真正靠谱的信息对。这种"标签本身不完全可信,需要再加工"的处境,大概在很多实际场景的机器学习任务里都存在,只是常常被忽略了。

Q&A

Q1:WildMatch是什么?

A:WildMatch是一种只用动物身份标签(不需要关键点或几何对应标注)就能把通用图像匹配器调教成野生动物专用识别工具的弱监督训练方法。

Q2:WildMatch比直接做身份分类好在哪里?

A:分类器需要给每个个体学专属参数,训练慢且认不出新个体;WildMatch学的是图片对之间的匹配关系,训练更快,还能迁移到从没见过的个体身上。

Q3:WildMatch应该调整匹配器的哪个部分?

A:实验显示只调整负责判断对应关系的匹配模块效果最好,调整负责提取特征的描述器分支反而会让准确率下降。

作者声明:作品含AI生成内容
举报/反馈
Compartir en: Weibo Qzone
¿Interesado en colaborar a partir de este artículo?
Le responderemos dentro de 1 día hábil
Dejar un mensaje