CVPR 2017: Interspeices Knowledge Transfer for Facial KeyPoint Detection(跨物种脸部关键点检测知识迁移)

一、介绍

本文主要涉及到变换将人脸关键点检测的方法以及已有知识转移到其他动物脸部识别中,借助迁移学习避免大量收集动物脸部照片再重新建模训练的麻烦,提出了一种使动物脸部图片变型来克服结构性差异,用人脸识别网络来识别动物脸部的方法。

二、思路

​ 动物脸部识别目前存在着的问题是:

  • CNN训练需要大量数据集

  • 目前缺少大量已经标记关键节点的数据集

Solution: 迁移学习

当满足下列要求时:

  • 任务间具有相关性的

  • 存在可用以微调CNN的足够数据集

可以借助已有的Pretrained CNN,借助相对少量的数据集进行微调,使之能够实现克服缺少足够规模的数据训练新网络的困难,完成目标任务论文link

​ 目前人脸识别数据集庞大,二关于动物脸部关键节点的数据集规模也就大概1000 images,相当小,如果能采用迁移学习,可以事半功倍。

​ 但同时存在着人脸和动物脸之间有结构性差异,比如说马脸比人脸长,眼鼻的间距大,他们鼻孔间距跟脸部宽度的比例也跟人的差别很大,所以直接的迁移效果一定很差,就像本文一开始的a)图一样。

​ 本文最显著的贡献就在于提出了一个wraping network,通过对动物的图片在进出human face detection network 进行了变形和还原,从而解决了人脸和动物脸的结构差异问题。

​ 另外人脸和动物脸还存在着外观的差异,比如马的鬓毛,如猫的脸部的毛发颜色变化等等,这些可以通过微调的数据集对CNN微调以适应。

三、方法

1. Nearest neighbors with pose matching (基于pose的最近邻匹配)

​ 本步骤主要是为了给wraping network 提供训练的数据。主要思路为:以pose相近的人脸为模板,对于动物脸部图片进行图像的TPS(薄板样条法)的变换,是两者结构上输出相近。

​ 文中给出脸部距离的计算方法是通过关键点间连成的角度大小来近似的:

如下图,由于不同的pose,可能导致某些关键节点被遮挡,需要采用不同的匹配关键节点,文中给出的情况有

  • 当双眼和鼻子可视时,∠*=∠N Ec V (N:Nose Ec: the centre of the line between two eyes V: Vertical line centred at Ec)

  • 当左眼(右眼)不可见时,∠*=∠El N Ml (=∠Er N Mr )(El: left eye Ml: the left corner of mouth)

​ 当采用K=5时的k-NN实验结果如下:

​ K的数量并不是多多益善的,这要结合你使用的human face dataset,文中使用的是AFLW dataset,当K增大到一定程度的时候,会可能因为带来噪声从而是结果变差,这点再实验部分细说。

​ 值得注意的是,这pose matching 只是为wraping network提供训练数据,并不参与testing,毕竟testing的时候我们就没有做好脸部关键点标注的动物图片。

2.Interspecies face wraping network (跨物种脸部变形网络)

这个网络采用的是监督学习,输入的是input image ,输出的是变换后的图片。

​ 在这个学习之前,我们首先要利用的是动物脸部图片的关键节点和人脸的关键节点的匹配对,计算TPS函数的2*(N+3)个参数,然后进行一个TPS变换,利用源图片生成变换后的图片作为监督用的图片。

​ 关于TPS的解释,这篇blog解释的非常透彻。以下是来自该博文的部分摘要:

​ 然后我们就可以利用变换前的图片和变换后的图片对网络进行监督学习,当训练结束后,我们就可以直接输入动物脸部图片,输出变换后的图片。

​ 网络主要结构类似Localization network(定位网络),直到第五层卷积层都和Alexnet一样,然后后面接着是以1x1为过滤器的一层卷积层和两个全连接层,而且后面三层都先经过Batch Normalization处理。而前五层则是利用ImageNet预训练,后面的三层则是完全由我们的前一step中match得到的image pairs来训练。

对于每一张input image, 文中使用了TPS(薄板样条法),选择了5个关键节点,利用关键节点对从而计算出TPS的函数的参数,得到TPS变型函数,然后对输入图片进行变换得到 Ground Truth Wrapped Image。 类似下图,通过对image进行变形,使得待变换点的变换到与目标点一致:

对于变形后的图片会用padding 来使它保持原来的size。文中提出先对wraping network进行训练,然后再结合下一步的关键点预测网络一起训练效果更佳。

​ 上图,我们看到对于wraping network 的loss计算是通过计算对应的像素的位置偏差的L2范数和,即对应的关键节点的L2距离和。另外训练的时候是将K个match都用做训练,会尝试多个训练变形,多次纠正当作潜在的正确的变形,当作data augmentation,可以一定程度上提高泛化,对于特定的离群值点的敏感程度会有所下降。

3. Animal keypoint detection network (动物关键点检测网络)

​ 对于关键点的网络结构是Vanilla CNN的一种变型,如下图所示,四层卷积网络,还有两层全连接层,这两层连接层用到的tanh作为非线性的激活函数,另外再最后的三层卷积层输出都经过max-pooling。利用额外的卷积层和max-pooling能够让网络适应更大的input image。另外对于tanh作为activation function,很容易趋向饱和,也就是可能导致梯度变化太小甚至近乎于0,所以每一层之后都采用了BN。

​ 对于关键点的检测网络的损失计算,如下图所示。这里用到的使Smooth L1 loss:

​ smooth L1(x)其实就是一个对于一个折线函数在近原点处做了一个圆滑处理。

​ 这里我们注意到,它采用的一个关键点识别的网络其实层数相当浅,这是为什么呢?这主要用于fine-tune的数据量不足,这一不足导致关键节点只有5个,另外也限制网络层数的加深。

4.Final Architecture (最终结构)

​ 最终结构如上图,训练时首先预训练wraping network,然后将两个网络连在一起,然后wraping network的损失会与Keypoint detection BP传来的loss结合后再更新。

​ 文中最后还提及他们贡献了个马脸关键点数据集,这里就不说了。

四、实验

1. 对比的Baselines

​ 文中用了四种对比的baselines,包括有

  • TIF (triplet-interpolated features,三线插值特征)在倒金字塔的架构下面对于关键节点的识别、

  • BLFT 就是相对于文中结构没有wraping network,直接对人脸特征点识别网络进行微调、

  • BLTPS 相对于文中网络没有对wraping network loss的

  • SCARTCH 直接训练一个识别关键节点的网络

后面三者都是为了说明文中提出的结构的必要性,第一个当然就是为了想说明自己的结构相对于原有结构的进步。

试验中用到的5个关键节点分别是,左/右眼,左/右嘴角,还有就是鼻尖。运用的人脸的dataset就是AFLW,而动物脸就用了一个他们收集的马脸dataset,还有一个就是羊脸dataset。而评价一个关键节点的fail与否,用的是这个关键点预测与Ground truth的距离是图片超过size的10%。(这个评价标准是不是有点太宽松了),然后实验的对比结果如下:

​ 训练TPSwarping network 的时候,用的是5x5的grid of control points,然后利用的Adam优化方法。wraping network 的 Base learning rate 是0.001,但是呢,这不是一成不变的,对于预训练的网络层,只是1/10。然后整个warping network是会预训练50epochs,后25epochs的训练就会下降为1/10。

​ 然后如果整个网络一起训练(包括关键点预测网络),那么warping network 的learning rate 就是0.001,而预测网络就是0.01,并且整个网络训练150epochs,每50epochs learning rate下降为1/2,同时用了水平翻转和+-10°的旋转作data augmentation。

​ 这里羊脸和马脸的差别,明显羊脸比马脸识别好,文中说,羊脸的正面照多一些,也就是5个关键节点都同时出现的情况多,易于识别。

​ 然后各种花式吹模型。。。看看就懂了

​ 前面提到的,fine-tune训练数据当然多多益善,然后对于K-NN匹配的人脸来说却不一定,毕竟可能匹配的多了就混进噪声了,而且越多混进的match的距离就越远了,当然这个K只是针对他用的AFLW数据集而言的:

​ 利用了知识迁移,一定程度的克服了动物脸部关键点识别数据集过小的问题,也利用了人脸识别的已有网络利用相对少量的数据集得到更为优异的结果。另外,为了说明warping network的必要性,也为了说明变型越准,迁移后的识别能力越强,做了下面的对比:

五、总结

​ 这篇paper比较创新的地方在于运用了迁移学习解决动物脸部关键识别方面遇到的数据集小的问题,联通了一个hot topic 或者说是 mature topic和一个相对冷门的topic,利用迁移提供了一个相对从头收集数据训练来说的一个捷径。提出了将训练数据变型以适应人脸识别网络的新奇思路,开拓了知识迁移的方法。

CVPR 2017:Interspeices Knowledge Transfer for Facial KeyPoint Detection(跨物种脸部关键点检测知识迁移)相关推荐

  1. 【论文翻译】UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation

    UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation UniT:任意样本量的目标检测和分割的统 ...

  2. Contour Knowledge Transfer for Salient Object Detection

    Contour Knowledge Transfer for Salient Object Detection 摘要 1 Introduction 2 Related Work 3 Approach ...

  3. learnOpenCv】Facial Landmark Detection:人脸特征点检测的一些应用

    目前在计算机视觉领域,人脸方向的研究非常之多.人脸分析最常见的应用是人脸识别,但是如果我们想要验证图像中一个人的身份,需要先知道这个图像中人脸的位置.因此,人脸检测(在图像中定位人脸,并返回一个包含人 ...

  4. (十一:2020.08.28)CVPR 2017 追踪之论文纲要(译)

    CVPR 2017 追踪之论文纲要(修正于2020.08.28) 讲在前面 论文目录 讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自 ...

  5. CVPR 2017 paper

    参考链接 CVPR 2017 open access Paperlist Graph-Structured Representations for Visual Question Answering ...

  6. CVPR 2017论文集锦(论文分类)—— 附录部分翻译

    作为计算机视觉领域的三大顶级会议之一,CVPR 2017 又收录了很多优秀的文章.具体可参见 CVPR 的论文官网:http://www.cvpapers.com/cvpr2017.html Mach ...

  7. Group Knowledge Transfer: Federated Learning of Large CNNs at the Edge部分阅读

    Group Knowledge Transfer: Federated Learning of Large CNNs at the Edge 组知识转移:边缘大型cnn的联合学习 Abstract 通 ...

  8. Facial Landmark Detection(人脸特征点检测)

    原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸 ...

  9. 人脸关键点: DCNN-Deep Convolutional Network Cascade for Facial Point Detection

    近期学习关键点检测相关内容,基于CNN的方法已经替代以往经典的方法(ASM,AAM等),于是乎得看看CNN是如何应用到关键点检测上的. 创新点: 1.将CNN应用到人脸关键点检测当中 2.提出级联CN ...

最新文章

  1. 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
  2. 免费教材丨第58期:机器学习相关汇总资料大放送(中)
  3. 静态路由协议的默认管理距离是_距离矢量路由选择协议
  4. 为表增加字段与拷贝数据到另一个表
  5. 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
  6. kotlin访问控制符可见性
  7. 十六、Python操作excel(.xlsx)封装类MyPyExce
  8. ethers.js-5-Utilities
  9. Tensorflow Auto-encoder + VAE 实战
  10. 如何去掉 WinCE 4.2 的桌面墙纸
  11. java利用复循环洗牌算法_实现不重复取数两种算法(洗牌算法)
  12. 计算机网络基础实验报告--利用数据包嗅探器Wireshark捕获数据包实验
  13. C语言编程实现Euclid GCD算法 作业
  14. C语言实现英寸单位与厘米的转换(两种方法)特简单!!!
  15. C++复习炒剩饭(1)心一意
  16. html ifrme 选择器,html中iframe/css样式设置,id,class选择器的使用规则等学习2019.9.2 08:00...
  17. C语言变量的存储方式和生存期
  18. IT痴汉的工作现状14-段子
  19. 4月10日服务器例行维护公告,4月10日服务器例行维护公告
  20. 北大igem生物计算机,喜讯|北京大学iGEM团队在国际大赛中取得金牌

热门文章

  1. java网课|Map线程
  2. golang 实现数据结构-顺序表
  3. 网站域名备案查询方法,批量查询网站域名备案的教程
  4. zcmu1275: Seeding
  5. 2023计算机毕业设计SSM最新选题之java住宅小区停车管理系统494ak
  6. 电阻、电容和电感的选型及作用
  7. 2022年新一代最强开源UI自动化测试神器 ——Playwright(三)
  8. 在Android手机或平板电脑上启用开发者模式选项
  9. OpenCV打开摄像头并显示图像(C++、Python)
  10. 光猫桥接后宽带降速问题解决