共计 6310 个字符,预计需要花费 16 分钟才能阅读完成。
作者:顺达
最近夸克端智能小组在做端上的实时文档检测,即输出一张 RGB 图像,失去文档的四个角的关键点的坐标。整个 pipelines 属于关键点检测算法,因而最近对相干畛域的论文进行浏览和进行了试验尝试。
将关键点检测算法依照不同模块进行拆分,能够分成以下几个局部,每个局部都有相干的办法能够进行优化:
- 图片解决:包含数据光学加强,变换,resize,crop 等操作,裁减图片的多样性;
- 编码:指的是在训练中,如何将坐标转换成所须要的 label,用于监督模型的输入;
- 网络模型:指的是网络结构,能够有 backbone/FPN/detection head 等局部组成;
- 解码:指的是如何将模型推理的后果转换成所须要的坐标模式,如笛卡尔坐标系下的坐标。
Related Works
关键点检测中次要有两条技术计划:
- 相似人脸检测,模型输入的后果 tensor 通过 fc 层,间接失去一维的向量,通常是归一化后关键点坐标值;
- 相似人体姿势预计,模型输入的后果 tensor 通过 argmax 等形式,获取 heatmap 中相应大的坐标,最初将此坐标复原至原图坐标。
近年来,基于 heatmap 来进行关键点检测的计划居多,其次要起因是基于 heatmap 的成果要好于应用全连贯层进行回归的计划。所以,咱们采纳的计划也是基于 heatmap 的,上面是近几年的一些相干论文工作。
DSNT
[1] Nibali A , He Z , Morgan S , et al. Numerical Coordinate Regression with Convolutional Neural Networks[J]. 2018.
思路
目前,在模型输入的 heatmap 到数值坐标的转换中,有两种形式:
- 通过对 heatmap 中取 argmax,失去相应最大的点,以此来转换成数值坐标。此种形式具备较好的空间泛化性,然而因为在训练中 argmax 是不可导的,通常应用 heatmap 来迫近编码的高斯热例图,这会导致损失函数与最终评估指标的不统一。其次,在推理阶段,只应用到最大响应的坐标点来计算数值坐标,而在训练阶段,所有坐标点都对损失有奉献。第三,通过 heatmap 转换成数值坐标,是会存在理论误差上限的;
- 通过在 heatmap 后接 fc 层,转换成数值坐标。此种办法让梯度从数值坐标回传到 input 中,然而后果重大依赖与数据分布(例如在训练集中,一个物体始终呈现在坐标;而在测试集中,这个物体呈现在左边,这样就会导致预测谬误)。其次,通过 fc 转换,失落了 heatmap 的空间信息。
针对上述的两种计划,作者兼容了这两种计划的长处(端到端优化和放弃空间泛化性),提出一种可微分的形式来失去数值坐标。
具体步骤
- 模型的输入 1 KH* W 个 heatmaps,其中 K 示意关键点的数量;
- 将每个通道的 heatmap 归一化,让其值都为非负且和为 1,从而失去 norm_heatmap。这么做的目标是,应用归一化后的 heatmap 保障了预测的坐标位于 heatmap 的空间范畴之内。同时,norm_heatmap 也能够了解成二维离散概率密度函数;
- 生成 X 和 Y 矩阵,\(X_{(i,j)} = \frac{2j-(w+1)}{w} \),\(Y_{(i,j)} = \frac{2i-(h+1)}{h} \),别离示意 x 轴的索引和 y 轴的索引。能够了解成将图片的左上角缩放到 (-1,-1) 和右下角缩放到 (1,1);
- 将 X 和 Y 矩阵别离与 norm_heatmap 点乘,从而失去最终的数值坐标。这么做的起因是,norm_heatmap 示意概率密度函数,X 矩阵示意索引,两者点成示意预测 x 的均值。通过均值来示意最终的预测的坐标,这样的益处是,a)可微分;b)理论误差上限小。
损失函数 loss
dsnt 模块的损失函数由 Euclidean loss 和 JS 正则束缚组成。前者用于回归坐标,后者用于束缚生成的热力求更加靠近高斯分布。
$$
L_{euc}(u,p) = ||p-u||_2
$$
$$
L_D(Z,p) =JS(p(c)||N(p,I)))
$$
长处
- 整套模型是端到端训练的,损失函数与测试指标能对应;
- 理论误差上限很小;
- 引入 X 矩阵和 Y 矩阵,能够了解成引入先验,让模型的学习难度升高;
- 低分辨率的成果仍然不错。
毛病
在试验中,发现当关键点位于图片边缘时,预测后果不好。
DARK
[1] Zhang F , Zhu X , Dai H , et al. Distribution-Aware Coordinate Representation for Human Pose Estimation[J]. 2019.
思路
作者发现将 heatmaps 解码后果,对生成最终数值坐标存在较大影响。因而钻研了规范的坐标解码形式的有余,提出一种散布已知的解码形式和编码方式,来进步模型的最终成果。
规范的坐标解码过程是,取得模型的 heatmaps 后,通过 argmax 找到最大响应点 m 和第二大响应点 s,以此来计算最终的响应点 p :
$$
p=m+0.25\frac{s-m}{\left \| s-m \right \|_2}
$$
这个公式意味着最大响应点向第二大响应点偏移 0.25 个像素,这么做的目标是弥补量化误差。而后把响应点映射回原图:
$$
\hat{p} = \lambda p
$$
这也阐明,heatmap 中最大响应点并不是与原图的关键点准确对应,只是大略地位。
基于下面的痛点,作者基于散布已知的前提(高斯分布),提出新的解码形式,解决如何从 heatmap 中失去准确的地位,最小化量化误差。同时,提出了配套的编码方式
具体步骤
解码
假如输入的 heatmap 合乎高斯分布,那么 heatmap 就能够用上面函数示意
其中 \(\mu \)示意关键点映射到 heatmap 的地位。咱们需要求 \(\mu \)的地位,因而将函数 g 转换成最大似然函数
对 \(P(\mu) \)进行泰勒开展
其中,m 示意在热力求中最大响应的地位。而 \(\mu \)在热力求对应的是极点,存在以下性质
联合上述公式,能够失去
因而,为了失去 heatmap 中 \(\mu \)的地位,能够通过 heatmap 的一阶导数与二阶导数求得。这步的作用是通过数学的办法来阐明该挪动间隔。
后面提及了假如输入的 heatmap 合乎高斯分布,理论状况是不合乎的,理论可能是多峰,因而须要对 heatmap 进行调制,让其尽量满足这个前提。具体做法是用高斯核函数来平滑 heatmap,同时为了保障幅值统一,要进行归一化。
$$
{h}’=K\circledast h
$$
$$
{h}’=\frac{{h}’-min({h}’)}{max({h}’)-min({h}’)}*max(h)
$$
综上所述,步骤是:
- 对 heatmap 应用高斯核来调制,并且缩放;
- 求一阶导数和二阶导数,来失去 \(\mu \);
- 将 \(\mu \)映射回原图。
编码
编码指的是将关键点映射到 heatmap 上,并且生成高斯分布。
之前工作的做法是现对坐标进行下采样,而后将点进行量化(floor,ceil,round),最初应用量化后的坐标生成高斯函数。
因为量化是不可导的,存在量化误差,因而,作者提出不进行量化,应用 float 来生成高斯函数,这样就能生成无偏 heatmap。
UDP
[1] Huang J , Zhu Z , Guo F , et al. The Devil is in the Details: Delving into Unbiased Data Processing for Human Pose Estimation[J]. 2019.
思路
作者从数据处理和坐标示意下手,以此来进步性能。作者发现,目前的数据处理形式是存在偏差的,特地是 flip 时,会与原数据不对齐;其次坐标表征也存在统计误差。这两个问题独特导致后果存在偏差。因而提出了一种数据处理形式 unbiased data processing,解决图像转换和坐标转换带来的误差。
具体步骤
Unbiased Coordinate System Transformation
在测试中,通常应用翻转后的 \({k}’_{o,flip} \)与原始的 \({k}’_o \)进行叠加,来失去最终的预测后果。然而 \({k}’_o \)与 \({\hat{k}}’_o \)并不统一,存在偏差。能够看到翻转后的 heatmap 不与原来的 heatmap 对齐,会产生误差,与分辨率无关。
因而作者倡议应用 unit length 来代替图片长度:\(w=w^p-1 \)。这样翻转后的 heatmap 就对齐了。
Unbiased Keypoint Format Transformation
无偏的关键点转换形式应该是可逆的,即 \(k=Decoding(Enoding(k)) \)。因而,作者提出了两种形式:
- Combined classification and regression format
借鉴了指标检测中 anchor 的形式,假如须要预测的关键点 \(k=(m,n) \),则将其转换成如下。其中 C 示意关键点的地位范畴,X 和 Y 示意须要预测的 offset。最终解码就是在热力求 C 上取到 argmax,而后对 X 与 Y 的热力求上拿到对应地位的 offset,最初进行相加失去数值坐标。
- Classification format
与 DARK 形式统一,即应用泰勒开展来迫近实在地位。
AID
[1] Huang J , Zhu Z , Huang G , et al. AID: Pushing the Performance Boundary of Human Pose Estimation with Information Dropping Augmentation[J]. 2020.
奉献点
对于关键点检测,外观信息与束缚信息同样重要。而以往的工作通常是过拟合外观信息,而疏忽了束缚信息。因而,本文心愿通过 information drop,可了解成掩膜,来强调束缚信息。束缚信息有利于在该关键点被遮挡时,预测出其精确地位。
而以往工作没有应用到 information drop 的起因是,应用该数据加强伎俩后指标降落。作者就通过试验,发现 information drop 是有助于进步模型精度的,但须要批改响应的训练策略:
- 加倍训练次数;
- 先应用没有 mask 的来训练,失去一个比拟好的模型后,再把 mask 伎俩退出持续训练。
RSN
[1] Cai Y , Wang Z , Luo Z , et al. Learning Delicate Local Representations for Multi-Person Pose Estimation[J]. 2020.
奉献点
本文是 2019 年 coco 关键点检测冠军的计划。其本文的次要思维是,最大水平聚合具备雷同空间尺寸的特色,以此来取得丰盛的部分信息,部分信息有利于产生更加精确的地位。因而提出了 RSN 网络,如下图一所示。从图来看,即交融不同感触野特色。RSN 的输入蕴含了 low-level 精确的空间信息与 high-level 语义信息,空间信息有助于定位,语义信息有助于分类。然而这两类信息给最终预测带来的影响权重是不统一的,须要应用到 PRM 模块来均衡,RPM 模块实质就是一个通道注意力和空间注意力模块。
Lite-HRNet
[1] Yu C , Xiao B , Gao C , et al. Lite-HRNet: A Lightweight High-Resolution Network[J]. 2021.
奉献点
本文出了一个高效的高分辨率网络,是 HRNet 的轻量化版本,通过将 ShuffleNet 中的 shuffle block 引入到 HRNet 中。同时发现 shuffleNet 中大量应用了 pointwise convolution(1 1 卷积),是计算瓶颈,因而引入 contional channel weight 来取代 shuffle block 中的 1 1 卷积。网络的整体构造如下图所示。在模型中统一保留高分辨率特色,并一直交融 high-level 特色。
在后面提及到的 contional channel weight 如下所示。右边是 ShuffleNet 中的 shuffle block,右图是 contional channel weight。能够看到,采纳新模块来取代了 1 * 1 的卷积,实现跨 stage 信息交换与部分信息交换。其具体做法蕴含了 Cross-resolution weight computation 和 Spatial weight computation。这两个模块的实质是注意力机制。
试验优化后果
模型构造
本次模型借鉴了 CenterNet/RetiaFace/DBFace 中的相干工作。本次的应用了 dsnt 的计划。次要起因是:须要运行在端上,实时性是首要思考因素。dsnt 在低分辨率的劣势显著。
MobileNet v3 应用 small 版本,FPN 中应用 Nearest Upsample + conv + bn + Relu 来进行上采样。在训练时应用了 keypoints,mask 和 center 分支;而预测时,只应用到了 keypoints 分支。
优化策略
在本次试验中,应用到了以下几种优化策略:
- 应用 mask 与 center 分支来辅助学习。其中 mask 示意文档的掩膜,center 示意文档的中心点;
- 应用 deep Supervise。应用 4 倍下采样特色图与 8 倍下采样特色图来进行训练,应用雷同的 loss 函数来监督这两层;
- dsnt 中对边缘点的成果不佳,因而,对图片进行 padding,让点不再位于图片边缘;
- 数据加强策略,除了惯例的光学扰动加强外,还对图片进行 random crop、random erase 和 random flip 等操作;
- 进行 loss 函数尝试工作,对于关键点分支的 loss,尝试过 euclidean loss,l1 loss,l2 loss 和 smoothl1 loss,最终 smoothl1 loss 的成果最佳。
评估指标
- MSE
用于在训练中评估验证集的均方误差。
$$
mse = \frac{\sum |d_i – \hat{d_i}|_2^2}{N}
$$
- oks-mAP
oks 用于评估预测与实在关键点之间的类似度,mAP 的评估形式相似 coco[0.5:0.05:0.95]的评估形式,这里取 [0.99:0.001:0.999]。其中,oks 进行肯定变换,\(d_{p,i} \) 示意点的欧式间隔,$S_p$ 示意该四边形的面积。
$$
oks_{p,i} =e^{-\frac{d_{p,i}^2}{2S_p}}
$$
- 耗时
耗时指的是在红米 8 上,用 MNN 推理框架跑模型的均匀工夫。
试验后果
先构建一个 baseline,baseline 的模型为 moblieNet v3 + fpn + ssh module + keypoints 分支 + dsnt,其中,都没有应用上述优化策略,应用 4 倍下采样特色图作为输入。
在 v2 版本中替换不同的 loss 函数。
此外,还尝试过其余有效的 tricks:
- 辅助工作有利于进步模型的指标,因而还退出了 edge 的分支来辅助学习。试验下来,退出该分支反而侵害模型的指标。可能起因是 edge 是利用 gt 关键点来生成的,可能某些 edge 并不是对应文档真正的边缘;
- 现阶段是预测文档的 4 个角,因而在减少 4 个点来进行预测,别离是 4 条边的中心点,所以模型一共预测 8 个关键点。试验结果显示,指标也降落了。
Demo 演示
Demo 视频请点击此文章尾部查看。
总结
综上所述,在端上的文档关键点检测畛域中,目前尝试下来,是基于 heatmap+dsnt 的计划较优,oks-mAP 的指标有晋升空间。然而,比照应用 fc 层进行回归坐标的形式,基于 heatmap 的计划中存在一个有余是:无奈依据文档的束缚信息,来预测图片外的关键点坐标。此计划的有余,会导致文档内容的缺失,摆正成果不佳的状况。因而,后续须要补救此有余。
如何高效开发端智能算法?MNN 工作台 Python 调试详解
关注咱们,每周 3 篇挪动技术实际 & 干货给你思考!