近日,在 ICCV 2019 Workshop 举办的 CVWC2019 公布了最终结果,来自深兰科技北京 AI 研发中心的 DeepBlueAI 团队斩获了 Tiger Pose Detection 赛道冠军。
本文作者深兰科技北京 AI 研发中心罗志鹏。我们可以通过这篇文章来了解一下 DeepBlueAI 团队的解决方案。
1.CVWC 2019
1.1CVWC 介绍
CVWC 是顶会 ICCV 会议下的一个 Workshop, 旨在探索如何使用 CV 技术保护濒临灭绝的野生动植物,特别是针对阿穆尔虎,也称为西伯利亚虎或东北虎。阿穆尔虎种群主要集中在远东地区,特别是俄罗斯远东地区和中国东北地区。估计剩余的野生种群为 600 只,因此保护至关重要。
与往年一样,CVWC2019 分为四个赛道:Tiger Detection、Tiger Pose Detection、Tiger Re-ID with Human Alignment (Plain Re-ID)、Tiger Re-ID in the Wild,而我们队伍「DeepBlueAI」在 Tiger Pose Detection 赛道中取得了冠军的成绩。
1.2 赛题介绍
CVWC 2019 关注濒危野生动物保护问题。保护野生生物对于维持健康和平衡的生态系统以及确保我们世界的持续生物多样性至关重要。濒危物种尤其是生物多样性和环境健康的重要指标。世界各国政府以及诸如 WWF(世界野生动物基金会)之类的环境组织已经投入了许多资源和项目来保护濒临灭绝的物种。对野生动植物保护至关重要的是,监测野生动植物地理空间分布的趋势并跟踪种群。
计算机视觉技术能够从摄像机陷阱甚至无人机收集大量图像数据,并使用此图像构建从边缘到云的系统以保护野生生物;并可以应用于智能成像传感器,以捕获与野生动植物相关的图像/视频并监视野生动植物。
主办方在比赛中提供了来自中国 10 个动物园采集的 8,000 多只 92 头个体的东北虎视频片段,并对视频帧创建边界框,基于关键点的姿势和身份注释,并制定 ATRW(野外阿穆尔虎重新识别)数据集的格式。比赛选手需要对老虎的姿态关键点进行预测。
1.3 评测指标
每天,提交的姿态关键点结果将会和真实姿态关键点标注比较,并根据 mAP 和 OKS(Object Keypoint Similarity)评分:
表示 groundtruth 中每个老虎与预测的每个老虎的关键点的欧式距离;为尺度因子;为归一化因子;代表第个人是否可见;
1.4 团队成绩
1.5 题目特点以及常用方法
人体姿态检测问题现有研究比较多,但是对于老虎姿态检测比较新,与人体姿态检测不同的是,老虎的姿态关键点上半身与下半身、对阵点的设置与人体姿态检测不同。现有的高精度姿态检测模型有 CPN(Cascaded Pyramid Network)网络、MSPN 网络以及 HRNet。CPN 是采用 Top-down 自上而下的检测策略,GolbalNet 负责网络所有关键点的检测(容易检测的点),RefineNet 指的是对 GolbalNet 预测的结果进行修正的网络(困难的点误差大)。MSPN 采用多阶段的特征聚合策略以及粗到细的监督来提升精度。HRNet 通过保持搞分辨率,以及不同分辨率之间的信息流动来提升精度。
1.6 比赛数据与数据分析
本题提供主要老虎的 15 个关键点信息:
a) 关键点名称:
["left_ear","right_ear","nose","front_right_elbow","front_right_wrist","front_left_elbow","front_left_wrist","back_right_hip","back_right_knee","back_right_ankle","back_left_hip","back_left_knee","back_left_ankle","tail","neck"]
b) 关键点对:
[[1,3],[2,3],[3,15],[15,4],[15,6],[4,5],[6,7],[15,14],[14,8],[14,11],[8,9],[9,10],[11,12],[12,13]]
首先,我们观察了老虎关键点的特点,与人题关键点类比,将这个 15 个关键点分别设置权重 [1., 1., 1., 1.2, 1.2, 1.2, 1.2,1.5, 1, 1.2, 1.5, 1, 1.2, 1.5, 1.5]。
1.7.BaseLine
由于数据集较小且数据且是对野生动物的姿态估计,如果采用过于复杂的模型容易造成过拟合,或者在 OHEM 的过程中导致模型无法收敛。
对比于 MSPN 我们采用结构更加简单,更加高效的模型——HRnet 作为我们的 BaseLine,结构如下图所示:
HRnet 是并行连接高分辨率到低分辨率的子网,而不是像大多数现有解决方案那样串行连接。因此,这种方法能够保持高分辨率,而不是通过一个低到高的过程恢复分辨率,因此预测的热图可能在空间上更精确。
大多数现有的融合方案都将低层和高层的表示集合起来。相反,我们使用重复的多尺度融合,利用相同深度和相似级别的低分辨率表示来提高高分辨率表示,反之亦然,从而使得高分辨率表示对于姿态的估计也很充分。因此,HRnet 预测的热图可能更准确。
1.8 改进的 Unet Plus 网络
我们发现关键点检测在 Pipeline 上与语义分割有类似的部分,MSPN 和 CPN 均有 Top-Down 这种结构来聚合特征,减少信息丢失。因此,我们选用 Unet 作为基础结构;同时借鉴 HRNet 这种逐层保持对应分辨率,不同分辨率之间存在信息交换的结构,融合多尺度的信息, 将 Unet 原来的 Skip Connection 结构更换成部分深层信息向上流动的结构。同时对每个层次的输出,经过上采样到同一大小后进行 Concat 操作,这是借鉴 Hyper Column 模型的思想,最终的改动模型如下图所示。
1.9 实验模型
我们主要实验了 4 种模型,CPN, MSPN 与 HRNet、改进 UnetPlus 模型。
对于 HRNet 我们分别使用了一些注意力机制,第一个是 Spatial Group-wise Enhance Module:
SGE 通过在在每个 group 里生成 attention factor,这样就能得到每个 sub feature 的重要性,每个 group 也可以有针对性的学习和抑制噪声。这个 attention factor 仅由各个 group 内全局和局部特征之间的相似性来决定,SGE 显著改善了组内不同语义子特征的空间分布,并产生较大的统计方差,增强了语义区域的特征学习,压缩了噪声和干扰, 此外,SGE 非常轻量级。第二个是空间注意力机制(Spatial Attention)模块:
与通道注意力相似,给定一个 H×W×C 的特征 F,先分别进行一个通道维度的平均池化和最大池化得到两个 H×W×1 的通道描述,并将这两个描述按照通道拼接在一起。然后,经过一个 7×7 的卷积层,激活函数为 Sigmoid,得到权重系数 Ms。最后,拿权重系数和特征 F 相乘即可得到缩放后的新特征。
其次,我们尝试使用空洞卷积,去保留更多的空间信息,空洞卷积结构如下图所示:
a) 图对应 3x3 的 1-dilated conv,和普通的卷积操作一样,
(b) 图对应 3x3 的 2-dilated conv,实际的卷积 kernel size 还是 3x3,但是空洞为 1,也就是对于一个 7x7 的图像 patch,只有 9 个红色的点和 3x3 的 kernel 发生卷积操作,其余的点略过。也可以理解为 kernel 的 size 为 7x7,但是只有图中的 9 个点的权重不为 0,其余都为 0。可以看到虽然 kernel size 只有 3x3,但是这个卷积的感受野已经增大到了 7x7(如果考虑到这个 2-dilated conv 的前一层是一个 1-dilated conv 的话,那么每个红点就是 1-dilated 的卷积输出,所以感受野为 3x3,所以 1-dilated 和 2-dilated 合起来就能达到 7x7 的 conv),
(c) 图是 4-dilated conv 操作,同理跟在两个 1-dilated 和 2-dilated conv 的后面,能达到 15x15 的感受野。对比传统的 conv 操作,3 层 3x3 的卷积加起来,stride 为 1 的话,只能达到 (kernel-1)*layer+1=7 的感受野,也就是和层数 layer 成线性关系,而 dilated conv 的感受野是指数级的增长。
dilated 的好处是不做 pooling 损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。这个模块其实还有很多的使用技巧,例如最后一层不进行下采样,或者在适当的 layer 加入此模块,这里由于时间限制并没有做过多的实验,感兴趣的同学可以进一步研究。
以下为最终实验结果:
1.10 模型融合
模型融合是算法大赛中常用的提高模型精度方法,有些比赛在竞争激烈的后期用了几十甚至上百模型。我们最终选择了单模型 mAP 比较高的 HRNetW48+SGE、HRNetW48+SA、改进 Unet Plus+ResNet152 这三个模型,并在线上的结果为 0.904。
对于 Unet Plus,之所以没用更强的模型是因为 GPU 资源有限,我们在 2080ti 的 GPU 上,只能将 batch_size 参数设置为 1(batch_size_per_gpu), 如果使用更大的 batch_size 结果有望进一步提升
总结
在前期尝试过程中发现他和语义分割任务有部分相似的地方,所以就尝试将语义分割任务里有效的结构移植过来,做一些尝试,经过试验发现,一些空间信息增强模块以及深浅层信息融合模块在该任务中是能够有效提分的。
由于数据集分布的原因,之前许多在 COCO 数据集上行之有效的方法,不能在这个数据集上取得很好的效果,所以我们需要通过控制变量法,来一个一个进行实验验证。且在较轻量的数据集上,不宜使用过于复杂的算法结构,否则会引起反效果
参考文献
[1]Sun K , Xiao B , Liu D , et al. Deep High-Resolution Representation Learning for Human Pose Estimation[J]. 2019.
[2]Ronneberger O , Fischer P , Brox T . U-Net: Convolutional Networks for Biomedical Image Segmentation[J]. 2015.
[3]Li W , Wang Z , Yin B , et al. Rethinking on Multi-Stage Networks for Human Pose Estimation[J]. 2019.
[4]Chen Y , Wang Z , Peng Y , et al. Cascaded Pyramid Network for Multi-Person Pose Estimation[J]. 2017.
[5]Yu F , Koltun V . Multi-Scale Context Aggregation by Dilated Convolutions[J]. 2015.
[6]Laskar Z , Kannala J . Context Aware Query Image Representation for Particular Object Retrieval[J]. 2017.
雷锋网