使用迁移学习做动物脸部识别
前言
前段时间,JD搞了个猪脸识别的比赛,大家都看得沸沸扬扬,但是这个其实是一个很不错的AI+畜牧业的应用,比如在养牛行业。大家知道吗?牛其实不愿意看到人类的,他们会视人类为捕食者,因此养牛场的工作人员会给牛群带来紧张情绪。那么我们就把农场的管理交给人工智能吧。
人工智能通过农场的摄像装置获得牛脸以及身体状况的照片,进而通过深度学习对牛的情绪和健康状况进行分析,然后帮助农场主判断出那些牛生病了,生了什么病,那些牛没有吃饱,甚至那些牛到了发情期。除了摄像装置对牛进行“牛脸”识别,还可以配合上可穿戴的智能设备,这会让农场主更好的管理农场。这些数据上传到云服务器上,用自己开发的算法通过机器学习让这些海量的原始数据变成直观的图表和信息发送到客户那里。这些信息包括奶牛的健康分析、发情期探测和预测、喂养状况、位置服务等。
技术
以上主要就是动物脸部识别的重要性和应用价值,接下来我们看看那实现这样的动物脸部识别,未来动物脸部识别和人脸识别一样,技术上,有什么好的方法呢?
大部分的AI工作者可能第一反应,最简单的方法当然是把人脸的模型finetune到动物脸,这个是一种方法,除此之外,我们看到今年CVPR17有另外一篇论文也非常有趣的实现了这个动物脸部识别的算法(http://web.cs.ucdavis.edu/~yjlee/projects/interspecies_cvpr2017.pdf)。
原文用的方法主要是使用迁移学习的方法,而不是简单的把已有的人脸模型进行finetune,那怎么迁移呢?
整个方法用到的动物是horse,然后全论文的核心其实是,人脸的特征和动物脸部的特征本身的差异很大,但是当动物的脸部做了一个变形warping之后,就会和人脸比较相似了,所以,我们要找到一个warping network.
首先,先找到人脸和动物脸pose相似的图片,然后,找到动物中的和人脸相似的部位作为关键点,接着训练获得一个warped network,得到了warped network之后,把原来的动物脸图片做变换,最后才是使用人脸的pretrain network去finetune动物脸检测的模型。
实验数据集
该论文下,作者自己在Google和Flicker里面搜索“horse face”,"horse head","horse",另外还从PASCAL VOC2012和ImageNet里面选取了horse的图片,一共获得了3717的数据,其中3531 for training, 186 for testing. 每张图都把horse的脸部的左眼、右眼、鼻子、左嘴角和右嘴角标记出来。
编者总结
详细的方法细节可以参考论文,编者只是把大概的意思表达出来,因为其实该论文用了是一个很基本的迁移学习方法,找到了人脸和马脸相似性最大的一个映射空间,然后使得人脸的训练数据可以被有效的利用起来训练马脸。
论文链接
Interspecies Knowledge Transfer for Facial Keypoint Detection
http://web.cs.ucdavis.edu/~yjlee/projects/interspecies_cvpr2017.pdf
互动
动物脸的识别在AI+畜牧业中会有什么好的应用呢? 欢迎大家在本篇文章下开脑洞积极留言讨论,我们会邀请罗总在本篇文章下和大家一起交流。2018 让我们一起来探讨算法的工程化。