Multi-animal DeepLabCut
DeepLabCut:用迁移学习实现动物姿态估计 奠定了单动物无标记姿态估计的基础。但许多生物学问题——从育儿行为到鱼群游动、狨猴社交——都要求同时追踪多个个体的姿态。这引入了三个新的挑战:遮挡、身份混淆、外观相似。#Lauer et al., 2022
在人类姿态估计中,人的身体结构相对统一,多人大致等大、可区分。动物则不同:同笼小鼠外观几乎一样;鱼群个体密度高且频繁交叉;狨猴会相互梳理毛发导致严重遮挡。因此,直接把 OpenPose 或单动物 DeepLabCut 搬到多动物场景,会面临关键点该分给谁、个体在遮挡后如何重新识别、轨迹如何跨时间连续三个正交难题。
Lauer 等人把多动物姿态跟踪形式化为一个时空域数据分配问题(data assignment problem):先在每帧内把检测到的关键点分配给正确个体(assembly),再在帧间把这些个体关联成连续轨迹(tracking)。这正是 DeepLabCut 2.2 版本要解决的核心问题。#Lauer et al., 2022
Pose Estimation
与单动物版本类似,网络为每个用户定义的关键点输出 score map 和位置细化场。但多动物版本需要同时检测画面中所有个体的同名关键点,因此 score map 上会出现多个峰值,而不是一个。
Assembly
Assembly 是把分散的关键点组合成完整个体的过程。Lauer 等人采用Part Affinity Fields (PAFs),这是 Cao 等人在 OpenPose 中提出的技术。PAF 对每一对关键点(例如左肩与左肘)输出一个二维向量场,指示两点应属于同一个体的概率和方向。#Cao et al., 2017
Tracking
一旦每帧内的关键点被组装成个体,还需要在帧间建立对应关系。论文把 tracking 拆成两步:局部 tracker(基于 SORT 的 box/ellipse 跟踪)和全局 tracklet stitching(基于 min-cost flow 的网络流优化)。#Lauer et al., 2022
为什么拆成三个步骤?
把 pose、assembly、tracking 分开,让每一步都可以独立优化,并且可以用不同的监督信号:pose 用关键点标注,assembly 用 PAF 关联,tracking 用 ID 一致性。这种分而治之的策略是 DeepLabCut 2.2 工程上可落地的关键。
四个 benchmark 数据集
为了验证方法,论文发布了四个难度递增的数据集:三只小鼠开放场、育儿小鼠、成对狨猴、鱼群。每个数据集都包含人工标注的关键点和身份标签,用于比较不同方法在 assembly 和 tracking 上的表现。论文把这些数据集开放为社区基准:benchmark.deeplabcut.org。#Lauer et al., 2022
| 数据集 | 动物数 | 帧数 | 主要挑战 | ||
|---|---|---|---|---|---|
| Tri-mouse | 3 | 161 | 112 / 49 | 12 | 频繁交互、遮挡 |
| Parenting | 1 母 + 2 pup | 542 | 379 / 163 | 5 pup + 12 adult | 尺度差异、外观相似 |
| Marmosets | 2 | 7,600 | 5,316 / 2,278 | 15 | 长时视频、社交行为 |
| Fish | 14 | 100 | 70 / 30 | 5–6 | 高密度、外观高度相似 |
整体架构
DeepLabCut 2.2 的核心网络是 DLCRNet_ms5(multi-scale, 5-stage)。它在 ResNet 骨干基础上增加了多尺度融合模块:把 conv2、conv3 的高分辨率特征与 conv5 的低分辨率特征融合,再经过多 stage decoder 同时输出 score map、PAF 和 animal identity。#Lauer et al., 2022
数据驱动的 PAF 图选择
传统 PAF 方法需要用户手动定义 skeleton(哪些关键点之间有连接)。动物种类繁多,手动定义既繁琐又不一定最优。Lauer 等人提出了数据驱动的 PAF 图选择:#Lauer et al., 2022
flowchart TD
A[完全图 PAF 训练] --> B{计算每条边的 auROC}
B --> C[按区分度排序]
C --> D[最大生成树保留核心边]
D --> E[剪枝低区分边 约25%]
E --> F[得到数据驱动 skeleton]
- 先训练网络预测所有可能的边(完全图)的 PAF。
- 在训练集上计算每条边的 discriminability(用 auROC 衡量)。
- 按 auROC 排序,用最大生成树保留最有信息量的边,再剪枝掉约 25% 的低区分边。
这个流程避免了手工 skeleton 设计,同时在实验中证明比固定 skeleton 提升 15-20 mAP。
个体 Assembly 算法
Assembly 在数学上是一个组合优化问题:给定一组关键点候选和边权重,找出一个最优的个体划分。这个问题是 NP-hard 的,但论文采用了一种贪心 + 可训练 affinity 成本的近似策略:先按边权重构建强连接,再用全局信息解决局部歧义。对于视频序列,还可以利用帧间 affinity 成本作为正则化。#Lauer et al., 2022
PAF 的 affinity 成本定义为沿候选点连线的向量场积分:
其中 $\gamma_{ij}$ 是连接关键点 $i$ 和 $j$ 的线段,$\mathbf{P}_{ij}$ 是 PAF 向量场。如果 $i$ 和 $j$ 确实属于同一个体,沿线方向的 PAF 向量应与连线方向一致,积分值接近 1;否则接近 0。
训练配置披露表
| 配置项 | 披露状态 | 值 / 说明 |
|---|---|---|
| 训练数据 | 已披露 | Tri-mouse 161 / Parenting 542 / Marmoset 7,600 / Fish 100 帧 |
| 训练硬件 | 部分披露 | 未明确 GPU 型号;速度测试用 i9-10900X |
| 优化器 | 已披露 | Adam |
| 学习率 | 已披露 | DLC schedule:1e-4 → 5e-5 → 1e-5 |
| Batch size | 已披露 | 8 |
| 训练步数 | 已披露 | Tri-mouse/Parenting/Fish 60k;Marmoset 200k |
| 训练时长 | 未披露 | 原文未给出 |
| 模型参数量 | 已披露 | DLCRNet_ms5 + ResNet-50/EfficientNet 骨干 |
| 精度格式 | 未披露 | 原文未给出 |
| Checkpoint 策略 | 已披露 | 保存多个 snapshot,选验证集 mAP 最高 |
多任务损失
网络同时有三个输出头:关键点 score map、PAF 和动物身份。因此总损失是三项损失的加权:
论文没有明确给出 $\lambda_{\text{PAF}}$ 和 $\lambda_{\text{ID}}$ 的具体数值,这是复现时的一个关键缺失细节。ID 损失采用标准的分类交叉熵,让网络从姿态张量预测每个个体属于哪只动物。#Lauer et al., 2022
数据增强
训练时使用了旋转、随机裁剪、运动模糊、关键点感知裁剪等增强。由于多动物场景 ROI 尺寸差异更大,batch size 提高到 8(相对于单动物版的 1),但仍保持变尺寸输入的兼容性。
从检测到的关键点到连续轨迹
推理阶段,DLCRNet 先输出每帧的 score map、PAF 和 ID 特征,然后按以下顺序处理:#Lauer et al., 2022
- 关键点检测:从 score map 中提取所有局部最大值,用位置细化场得到亚像素坐标。
- Assembly:基于数据驱动选择的 PAF 图,把关键点组装成个体。
- 局部跟踪:用 SORT 风格的 box tracker 或 ellipse tracker 在相邻帧间建立短轨迹(tracklets)。
- 全局拼接:把短 tracklets 通过 min-cost flow 网络流优化,连接成完整轨迹。
- ID 重识别:当个体因遮挡消失再出现时,用 Transformer 提取的 ID 特征进行 re-identification。
Tracklet Stitching:网络流优化
局部跟踪只考虑相邻帧,容易在遮挡或快速运动时产生 ID 切换。论文把 tracklet 拼接建模为有向无环图上的最小费用流问题:每个 tracklet 是图中的一个节点,边表示两个 tracklet 能否由同一个个体产生,边成本 $w_e$ 综合了运动连续性、空间距离、形状相似性和动态相似性。网络流的目标是从源点到汇点找到总成本最小的边集合:#Lauer et al., 2022
其中 $\delta^+(v)$ 和 $\delta^-(v)$ 分别表示节点 $v$ 的出边和入边。这个约束保证每个 tracklet 最多有一个前驱和一个后继,从而得到一组不重叠、时序连贯的完整轨迹。论文用 NetworkX 求解这个整数规划问题。
ReID Transformer
当动物被遮挡、离开视野或外观变化导致时间跟踪失败时,需要用外观/姿态特征重新识别。论文设计了一个小型 Transformer,输入每个 tracklet 的姿态坐标张量,输出 128 维身份嵌入。训练时采用 triplet loss,使同一动物的嵌入距离近、不同动物的嵌入距离远。#Lauer et al., 2022
Triplet loss 的形式为:
其中 $f_a$、$f_p$、$f_n$ 分别是 anchor、positive、negative 三个 tracklet 经 Transformer 提取的 128 维嵌入,$d(\cdot,\cdot)$ 是 cosine 距离,$\alpha$ 是 margin。这种基于姿态的身份嵌入在 marmoset 数据集上表现稳定:从头部附近的 99.2% 到远端的 95.1%,模型能从姿态张量隐式学到动物身份特征。
主实验结果
论文在四个数据集上评估了关键点检测、assembly 和 tracking。核心指标是 mAP(mean Average Precision,用于检测与 assembly)和 MOTA(Multiple Object Tracking Accuracy,用于跟踪)。DLCRNet_ms5 在几乎所有 benchmark 上都达到了 SOTA,并且超过了同期 SLEAP、AlphaTracker 和 MARS 等竞品。#Lauer et al., 2022
关键点检测的 median error(像素)为:tri-mouse 2.65 / parenting 5.25 / marmoset 4.59 / fish 2.72。PCK 指标显示约 93.6 ± 6.9% 的关键点落在阈值范围内。这些数据说明 DLCRNet_ms5 在不同物种、不同密度场景下都保持了较高精度。
Baseline 对比
论文与 MMPose 提供的 ResNet-AE、HRNet-AE 等 bottom-up 方法进行了系统对比。在 tri-mouse 和 marmoset 数据集上,DLCRNet_ms5 显著优于这些基线(例如 tri-mouse 上 p = 8.8e-08),说明数据驱动的 PAF 图选择和 multi-scale fusion 设计对动物场景有明确增益。
| 方法 | 核心思路 | tri-mouse mAP | marmoset mAP | 与 DLC 2.2 关系 |
|---|---|---|---|---|
| DLCRNet_ms5 | multi-scale + data-driven PAF | SOTA | SOTA | 本文方法 |
| ResNet-AE (MMPose) | associative embedding | 显著低 (p=8.8e-08) | 显著低 (p=3.8e-11) | strong baseline |
| HRNet-AE (MMPose) | 高分辨率 AE | 显著低 | 显著低 | strong baseline |
| SLEAP | bottom-up + top-down + active learning | competitor | competitor | 同期姊妹工作 |
跟踪:Ellipse vs Box
在 ellipse tracker 与 box tracker 的 head-to-head 对比中,ellipse tracker 达到 MOTA = 0.97(接近完美),box tracker 为 0.78;ellipse 同时把 false negative 数量减少了 92%。这一对比说明为什么需要用参数化几何形状而非 bounding box:box 对单点 outlier 检测非常敏感,ellipse 通过协方差建模自然吸收了错误关键点。#Lauer et al., 2022
数据驱动的 PAF 图选择相比手工 skeleton 有显著优势。在 marmoset 数据集上,剪枝约 25% 的低区分边后,mAP 反而提升约 15-20 点。这说明不是边越多越好,真正重要的是保留那些有区分性的连接。
与 idtracker.ai 的对比
idtracker.ai 是一个基于纯外观的跟踪工具,不依赖姿态。论文在 tri-mouse 和 marmoset 数据上直接对比,结果显示 idtracker.ai 在这些场景下表现很差,MOTA 甚至出现负值。在 tri-mouse 上,DLCRNet 与 idtracker.ai 的对比达到 T = -11.03, p = 0.0008, d = 5.52;在 marmoset 上为 T = -8.43, p = 0.0018, d = 4.22。这说明仅靠外观在动物外观相似时不够,姿态信息对 tracking 至关重要。#Lauer et al., 2022
失败案例
论文也展示了一些局限:#Lauer et al., 2022
- 域外泛化:在 marmoset 的域外测试集上,mAP 下降约 0.25,说明模型对训练分布外数据敏感。
- 高密度鱼群:14 条鱼密集游动时,assembly 和 tracking 仍然困难。
- pup label 一致性: parenting 数据集中幼鼠尺寸小、运动快,人工标注一致性本身较低,限制了模型上限。
与同期工作的关系
2022 年是多动物姿态估计工具爆发的年份。DeepLabCut 2.2 与 SLEAP 几乎同期发表在 Nature Methods,两者被称为“双子锚”。SLEAP 也支持 bottom-up 和 top-down 两种范式,并强调 active learning 工作流;DeepLabCut 2.2 则强调 PAF-based assembly + network-flow tracking + identity transformer 的组合。#Pereira et al., 2022 #Lauer et al., 2022
| 工具 | 年份 | 核心思路 | 与 DLC 2.2 的关系 |
|---|---|---|---|
| SLEAP | 2022 | bottom-up + top-down,30+ 模型 | 同期姊妹工作,最直接 competitor |
| AlphaTracker | 2022 | 检测 + 跟踪一体化 | 同期 multi-animal 工具 |
| MARS | 2021 | 社交行为专用 pipeline | 更早的行为分析工具 |
| idtracker.ai | 2020 | 纯外观跟踪 | 本文 head-to-head 击败的 baseline |
社区影响与开源生态
DeepLabCut 的 GitHub 仓库截至 2026 年 7 月已获得超过 5,700 个 star(SLEAP 约 600),约为 9.5 倍。围绕它形成了丰富的生态:3D 扩展(3D-MuPPET)、实时版本(DeepLabCut-Live!)、行为分析(DeepLabStream)、大模型预训练(SuperAnimal)以及基于姿态的行为理解(AmadeusGPT)。#Lauer et al., 2022
四个 benchmark 数据集均已在 Zenodo 开放:Tri-mouse(10.5281/zenodo.5851157)、Parenting(10.5281/zenodo.5851109)、Marmoset(10.5281/zenodo.5849371)、Fish(10.5281/zenodo.5849286)。论文配套复现仓库:DeepLabCut/maDLC_NatureMethods2022。
局限与展望
尽管 DeepLabCut 2.2 在多动物场景上取得了突破,仍有明确局限:身份识别依赖外观差异,当动物完全无法区分时仍会失败;3D 姿态跟踪仍需要额外相机标定;GUI 安装和 CUDA 环境对新用户仍有门槛。后续工作正在从 foundation model 预训练、无监督学习和 3D 多视角方向推进。
关键收获
- 问题分解:把多动物跟踪拆成 pose + assembly + tracking,让每一步可独立优化。
- 数据驱动 assembly:用 auROC 和最大生成树自动选择 PAF 图,避免手工 skeleton。
- 全局跟踪:min-cost flow 把局部 tracklets 拼接成全局最优轨迹,显著减少 ID 切换。
- 姿态辅助 ReID:Transformer 从姿态张量学习身份嵌入,在遮挡后重新关联个体。
- 开放 benchmark:四个数据集为后续算法提供了公平比较的基础。
参考来源
- Lauer, J. et al. (2022). Multi-animal pose estimation, identification and tracking with DeepLabCut. Nature Methods, 19, 496–504. 10.1038/s41592-022-01443-0; bioRxiv preprint 10.1101/2021.04.30.442096
- Mathis, A. et al. (2018). DeepLabCut: markerless pose estimation of user-defined body parts with deep learning. Nature Neuroscience, 21, 1281–1289. 10.1038/s41593-018-0209-y
- Cao, Z. et al. (2017). Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields. CVPR. arXiv:1611.08050
- Pereira, T. D. et al. (2022). SLEAP: A deep learning system for multi-animal pose tracking. Nature Methods, 19, 459–464. 10.1038/s41592-022-01426-1