DeepLabCut
在神经科学和动物行为学实验中,量化行为是理解脑—行为关系的核心环节。传统上,研究者必须在动物身上贴上反光标记或穿戴传感器,才能追踪身体关键部位的运动轨迹。这些侵入式方法不仅昂贵、费时,还可能干扰动物的自然行为,甚至对小型模式动物(如果蝇、幼鼠)根本不可行。#Mathis et al., 2018
计算机视觉领域已经在人类姿态估计上取得了长足进步,尤其是基于深度卷积网络的方法。然而,这些方法通常依赖大规模标注数据集:例如 MPII Human Pose 数据集包含约 25,000 张标注图像。对于神经科学实验室来说,为每种新物种、每个新行为重新收集并标注如此规模的数据集,成本几乎不可接受。因此,一个关键的科学问题浮现:能否把从人类姿态估计中学到的知识迁移到动物身上,并且只需要极少量的新标注?
DeepLabCut 正是为回答这个问题而生。它的核心主张是:利用 ImageNet 预训练的深度残差网络(ResNet)作为通用视觉特征提取器,再在 50-200 帧目标动物视频上微调,即可得到用户自定义关键部位的姿态估计器,精度接近人类标注者。#Mathis et al., 2018
DeeperCut 的遗产
DeepLabCut 的方法论血脉可以直接追溯到 Insafutdinov 等人在 ECCV 2016 提出的 DeeperCut。DeeperCut 解决的是“多人姿态估计”问题:先检测所有身体部位候选点,再通过整数线性规划(ILP)把候选点聚类成不同的人。它使用 ImageNet 预训练的 ResNet 作为骨干,并引入了 image-conditioned pairwise 项,大幅提升了精度和速度。#Insafutdinov et al., 2016
Mathis 等人发现,DeeperCut 中负责“为每个身体部位生成热图”的特征检测子模块已经足够强大。如果研究场景只涉及单只动物,那么就可以把多人聚类、图割推理等复杂模块全部砍掉,只保留这个子模块。这个“剪枝”操作是 DeepLabCut 的关键 Insight:把为人类多人场景设计的模型,迁移到结构更简单但数据稀缺的动物场景。
为什么迁移有效?
迁移学习在这里成立的原因有三层:#Mathis et al., 2018
迁移学习成立的三层直觉
- 底层特征共享:ImageNet 预训练让 ResNet 学到边缘、纹理、角点等通用视觉特征,这些特征对人类、小鼠、果蝇都部分适用。
- 中层语义迁移:MPII 等人类姿态数据集让网络学到了“肢体关节出现在哪里”的局部空间先验,这些先验与四肢动物结构有重叠。
- 顶层任务微调:只需替换最后的 readout 层,用少量动物帧标注即可把通用特征映射到具体物种的关键部位。
整体 Pipeline
DeepLabCut 的推理流程非常简洁:输入一张图像 → 由 ResNet 骨干提取多尺度特征 → 通过 deconvolutional 层上采样 → 为每个用户定义的身体部位输出一张 score map → 在 score map 上取局部最大值并做亚像素细化 → 得到最终坐标。#Mathis et al., 2018
这里有一个关键设计选择:与 DeepPose 等直接回归 $(x,y)$ 坐标的方法不同,DeepLabCut 选择输出整个空间概率分布(score map)。这种表示的好处是:首先,它把坐标估计变成了逐像素的分类问题,能够利用 ResNet 强大的空间特征;其次,它为亚像素定位提供了基础——即使真实位置落在下采样网格之间,仍可通过邻域响应插值得到更高精度;第三,score map 的峰值幅度和宽度天然可以作为置信度指标,便于后续人工复核。#Mathis et al., 2018
从 DeeperCut 到 DeepLabCut 的 5 处微调
| 组件 | DeeperCut | DeepLabCut | 动机 |
|---|---|---|---|
| 任务范围 | 多人姿态估计 | 单动物姿态估计 | 去掉多人聚类,简化问题 |
| 输出头 | 多人部位候选 + pairwise | 每部位 score map | 直接回归用户定义部位 |
| 训练数据 | 大规模人类数据集(MPII) | 50-200 帧动物视频 | 降低标注成本 |
| 骨干 | ResNet | ResNet(ImageNet 预训练) | 保持通用视觉特征 |
| 损失 | 多任务损失 | per-pixel BCE | 匹配 score map 监督 |
Score Map 的构造
对于用户定义的 $K$ 个身体部位,网络为每个部位 $k$ 输出一张 score map $S_k$。训练目标是一张二值化的“软盘”标签 $T_k(i,j)$:以真实标注点为中心、半径 $\varepsilon$ 内的像素标记为 1,其余为 0。论文中使用 $\varepsilon = 17$ 像素,这个盘状标签让网络在位置不确定时仍能获得稳定梯度。#Mathis et al., 2018
形式化地,对于部位 $k$ 在像素 $(i,j)$ 上的目标标签为:
其中 $(x_k, y_k)$ 是部位 $k$ 的真实标注坐标。训练时最小化每个像素上的二元交叉熵:
推理时,对 $S_k$ 取局部最大值位置,并通过周围像素的质心做亚像素偏移修正,得到比原始下采样网格更精细的坐标估计。
与已有方法的技术定位
| 维度 | DeepLabCut | DeeperCut | OpenPose/CPM | DeepPose |
|---|---|---|---|---|
| 核心表示 | 单动物部位 score map | 多人部位候选 + pairwise | PAF / 序列置信图 | 直接回归坐标 |
| 训练目标 | per-pixel BCE | 多任务 + ILP | PAF + heatmap | L2 回归 |
| 数据需求 | 50-200 帧 | 25,000 帧级 | 大规模人体 | 大规模人体 |
| 适用场景 | 单动物、小样本 | 多人姿态 | 多人实时 | 人体姿态 |
训练配置披露表
| 配置项 | 披露状态 | 值 / 说明 |
|---|---|---|
| 训练数据 | 已披露 | Mouse trail-tracking 1,080 帧;Mouse reaching 159 帧;Drosophila egg-laying 589 帧 |
| 训练硬件 | 已披露 | 1× NVIDIA GTX 1080 Ti |
| 优化器 | 已披露 | SGD,momentum 0.9 |
| 学习率 | 已披露 | 初始 1e-4,后期 5e-5 |
| Batch size | 已披露 | 1(支持变尺寸 ROI) |
| 训练步数 | 已披露 | ~500,000 iterations |
| 训练时长 | 已披露 | 约 24 小时单卡 |
| 模型参数量 | 已披露 | ResNet-50 骨干 + 可训练 readout 层 |
| 精度格式 | 未披露 | 原文未给出 |
| Checkpoint 策略 | 已披露 | 每 50,000 iter 保存 snapshot,用验证误差选择最佳 |
Batch=1 不是 bug,是 feature
很多深度学习从业者看到 batch=1 会觉得这是工程上的妥协,但在 DeepLabCut 的场景里它是有意设计。原因有三:#Mathis et al., 2018
为什么 batch=1
- 变尺寸输入:不同实验拍摄的 ROI 尺寸差异很大,固定 batch 会强迫裁剪或填充,破坏图像内容。
- 记忆 footprint:ResNet-101 全分辨率图像已经很大,batch=1 让单卡也能训练。
- 过拟合风险:训练样本极少,batch=1 配合 heavy augmentation 相当于在线生成多样化样本。
数据增强与模型深度消融
论文对比了三档数据增强:基础 rescaling(50-150%)、加入旋转(±8°)、以及加入旋转 + subimage(±10° + 14 倍 subimage)。有趣的是,更强的增强并未一致优于基础增强,说明 ResNet 预训练特征本身已经非常鲁棒,过度增强反而可能破坏小样本下的稳定性。
这种“增强饱和”现象对实际使用很有启发:在迁移学习 + 小样本场景下,数据增强不是越多越好,而应与预训练模型已经编码的分布相匹配。过多的几何变换会让网络偏离它已经熟悉的人类/动物关节空间先验,从而需要更多标注才能重新收敛。论文因此建议从基础 rescaling 开始,仅在验证误差较高时逐步加入旋转等更强变换。#Mathis et al., 2018
在模型深度上,论文尝试了 ResNet-50、ResNet-101 和 ResNet-101ws(with intermediate supervision)。结果发现 101 系列相比 ResNet-50 没有显著提升,这暗示在迁移学习框架下,骨干深度带来的边际收益有限,数据效率和任务适配更为重要。对于资源有限的实验室,ResNet-50 提供了一个性价比极高的默认选择。#Mathis et al., 2018
训练完成后,网络对输入图像输出每个部位的 score map $S_k$。推理分为两步:#Mathis et al., 2018
局部最大值定位
首先在 $S_k$ 上找到局部最大值点 $p^* = \arg\max_{p} S_k(p)$。由于网络输出相对于输入有下采样 stride $\lambda$(例如 8),直接取 $p^*$ 只能得到网格级别的坐标,精度有限。
亚像素细化
为获得更高精度,论文对 score map 的局部邻域做加权平均。设 $(L_x, L_y)$ 为位置细化场,则最终坐标估计为:
这个细化操作让 DeepLabCut 能够输出亚像素精度的关键部位坐标,从而在少量训练数据下仍达到接近人类标注者的 RMSE。
失败检测
论文还提出了一种简单的质量监控机制:如果某个部位 score map 的峰值幅度过低或峰宽过大,则该帧可能被标记为“低置信度”,需要人工复核。这对于实际实验非常重要——因为姿态估计器会犯错,研究者必须知道什么时候不该信任它。
三数据集与实验配置
论文在三个数据集上验证:mouse odor trail-tracking(1,080 帧,标注 snout、ears、tail base)、mouse reaching(159 帧,标注前肢关节)和 Drosophila egg-laying(589 帧,标注 12 个身体部位)。每个数据集都包含两个人类标注者的结果,用来建立人类基准变异性。#Mathis et al., 2018
核心结果:数据效率
论文最引人注目的结果是:只用少量标注帧(~100-200),DeepLabCut 在 trail-tracking 任务上的测试误差就能接近人类标注者之间的差异。具体而言,在 snout、ears、tail base 等身体部位上,DLC 的 RMSE 落在人类标注者一致性的 95% 置信区间内。#Mathis et al., 2018
失败案例
论文坦诚地展示了几个局限:#Mathis et al., 2018
- 方法假设单只动物,未处理多动物场景或严重遮挡,这是后续工作的重点。
- 未显式利用时序信息,单帧推理可能在不连续帧之间出现抖动。
- 在 Drosophila egg-laying 数据中,腹部后段 A3–A6 等关键点靠近身体对称区域,网络偶尔会在这些局部外观相似的部位产生混淆。
引用网络:从 ImageNet 到 DeepLabCut
DeepLabCut 的方法血统可以概括为一条清晰的因果链:ImageNet(数据)→ ResNet(可训练架构)→ MPII(人类姿态标注)→ DeepCut/DeeperCut(多人姿态解法)→ DeepLabCut(迁移到动物 + 小样本)。它不是凭空发明网络,而是把最强的多人姿态估计子模块精确剪枝到动物行为学的需求上。#Insafutdinov et al., 2016 #He et al., 2016 #Krizhevsky et al., 2012 #Andriluka et al., 2014
flowchart LR
A["ImageNet 数据集"] --> B["AlexNet 2012\n预训练范式"]
B --> C["ResNet 2016\n可深训练骨干"]
C --> D["MPII 人类姿态\n25K 标注"]
D --> E["DeepCut/DeeperCut\n多人姿态估计"]
E --> F["DeepLabCut 2018\n单动物 + 小样本"]
影响与局限
自 2018 年发表以来,DeepLabCut 已成为动物行为学领域的事实标准工具,GitHub 仓库 star 数超过 5,700,衍生出了 3D 扩展、实时版本、多动物版本等后续工作。它真正改变的不是计算机视觉的技术上限,而是让神经科学实验室能够以可承受的标注成本,对自然行为进行量化分析。#Nath et al., 2019 #Lauer et al., 2022
然而,它的局限也很明确:单动物假设、无时序建模、对遮挡敏感。这些局限正是 2022 年多动物版本 DeepLabCut 要解决的问题。
关键收获
- 迁移学习:ImageNet + ResNet 预训练特征可以跨越物种,把小样本动物姿态估计变成可行任务。
- 精确剪枝:DeepLabCut 的成功在于识别出 DeeperCut 中可迁移的“单动物子模块”,而非重新设计网络。
- 数据效率:50-200 帧标注即可达到人类精度,这是动物行为实验的“门槛突破”。
- 评价分离:训练 loss(BCE)与评估指标(RMSE vs 人类)必须分开,用 snapshot 选择最佳模型。
参考来源
- 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
- Insafutdinov, E. et al. (2016). DeeperCut: A Deeper, Stronger, and Faster Multi-Person Pose Estimation Model. ECCV. arXiv:1605.03170
- He, K. et al. (2016). Deep Residual Learning for Image Recognition. CVPR. arXiv:1512.03385
- Krizhevsky, A. et al. (2012). ImageNet Classification with Deep Convolutional Neural Networks. NIPS. NeurIPS 2012
- Andriluka, M. et al. (2014). 2D Human Pose Estimation: New Benchmark and State of the Art Analysis. CVPR. MPII Human Pose
- Nath, T. et al. (2019). Using DeepLabCut for 3D markerless pose estimation across species and behaviors. Nature Protocols, 14, 2152–2176. 10.1038/s41596-019-0177-0
- 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