封面图片:Google

在此时此刻写下这句话的时候,我清晰的记得第一次看到李飞飞博士在TED上发表的主题演讲中,对于下面这张照片,计算机用机械的语调读出这样一句话:

A man is standing next to an elephant.

dl01

毫不夸张的说,当时我就震惊了!这意味着计算机不仅仅从图片中认出了“人”和“大象”这两类事物,它还知道“站”与“相邻”这样的状态与关系。这段视频开阔了我的眼界,直接激发了我的好奇心——究竟是一种什么样的技术,能够实现如此令人惊叹的效果?

好在2017年的深度学习已经处在了一个爆发阶段——至少我自己是这么感受的,这意味着除了AlphaGO这样的普通大众津津乐道的新闻之外,也会有各种高质量的入门科普与专业背景的论文可以参考。Caffe与TensorFlow这样的开源框架更是为像我这样身处制造业的“局外人”提供了了解并参与到其中的宝贵机会。Udacity的深度学习课程则帮我统一理清了之前对深度学习与TensorFlow破碎凌乱的理解。这个领域的开放让大量高质量学习资源的获取成为可能,这在传统的制造业几乎是难以想象的。

当我自学完成了Udacity的项目2时,“从零开始做个项目”这样一个想法自然就冒了出来。我是一个项目驱动型的学习者,这意味着只有当我从零开始,不断的经历磕磕碰碰,才会真正“学到”东西。在完成选题之后,我决定将自己的学习经历记录下来,这样和我遇到相似问题的人也可以看到,大家一起讨论一定会有更好的方案,也算是对开放型社区的一个回馈——我毕竟受益于此。于是便有了这8篇文章。

这8篇文章完整的记录了原始数据搜集、整理、分析、转换,神经网络模型构建、训练、测试和部署到手机的完整过程。其中用到的源代码也以开源的方式托管在了我的Github上。在我个人看来,当前神经网络模型的最终表现与行业内的其它实现还有相当大的差距,因此对于相关从业者来说参考意义并不大。不过如果你和我一样,之前从未接触过神经网络,这个系列的文章或许可以给你一点小小的信心。毕竟,我一个与IT行业不沾边的普通人花一个月时间能做到的,你也应该可以。

以下为全部文章。

基于深度学习的人脸特征点检测 - 背景
为什么我决定采用深度学习实现面部特征点检测。
基于深度学习的人脸特征点检测 - 数据与方法
上一篇博文介绍了人脸检测与面部特征点检测的背景,并提到了当前技术方案存在特征点位置不稳定的缺点,需要新的解决方案。本文将对困难的解决方案做出介绍。
基于深度学习的人脸特征点检测 - 数据集整理
从互联网获取的数据大多数情况下不是开箱即用的,这意味着我们需要对数据进行初步的整理,例如统计数据量、去除不需要的文件、必要的格式转换等。
基于深度学习的人脸特征点检测 - 数据预处理
如何使用Python从22万张图片中提取检测人脸特征点的可用样本。
基于深度学习的人脸特征点检测 - 生成TFRecord文件
将面部区域的图片与特征点位置一起打包成TensorFlow可用的TFRecord文件。
基于深度学习的人脸特征点检测 - 网络模型构建
如何使用TensorFlow构建一个属于你自己的神经网络模型。
基于深度学习的人脸特征点检测-模型导出与应用
使用Estimator API时,导出适用于推演的网络模型的正确方法。
基于深度学习的人脸特征点检测-移植到iPhone
如何通过CoreML在iPhone应用中使用TensorFlow模型

2020年10月更新

感谢您阅读这一系列文章所付出的时间与耐心!

该系列文章创作于2017年。3年过去了,深度学习框架发生了很大的变化,我对该项目的认知也一样。因此我开源了一系列新的项目来实现人脸面部特征点检测,并且实现了以下功能:

  • 支持多个公开数据集: WFLW、IBUG等
  • 更先进的模型:HRNet v2
  • 数据增强:随机缩放、旋转、翻转
  • 模型优化:量化、剪枝
  • 基于Heatmap的预测
  • 使用TensorFlow 2.3实现

在这里推荐您使用该项目替代原项目使用。

yinguobing/facial-landmark-detection-hrnet
A TensorFlow implementation of HRNet for facial landmark detection. - yinguobing/facial-landmark-detection-hrnet