[机器学习]前端机器学习:识别人脸,并在脸颊上画草莓
本文插图
作者 | 前端开发劝退师
责编 | 夕颜
出品 | CSDN(ID:CSDNnews)
本文插图
最终结果
本文插图
本文插图
本文插图
在线体验:http://www.caomage.com/index
急性子想直接食用的点这个:源码地址 https://github.com/usecodelee/mldrawberry
本文插图
原理
要在用户上传的人脸上画草莓 , 会面临几个问题:
- 在哪儿画?
- 画多大?
- 草莓的角度和脸的角度是否一致?
1. 前端的机器学习
提起前端的机器学习 , 首先想到的就是Google的TensorFlow:
TensorFlow 是一个端到端开源机器学习平台 。 它拥有一个包含各种工具、库和社区资源的全面灵活生态系统 , 可以让研究人员推动机器学习领域的先进技术的发展 , 并让开发者轻松地构建和部署由机器学习提供支持的应用 。
有兴趣的可以去TensorFlow官网看看 , 有很多好玩的东西 。
当然 , 我们仅仅是使用人脸识别 , 那有人已经在TensorFlow的基础上封装了专门针对人脸识别的库 face-api.js
2. 基本原理
我只是大体说一下 , 我只是一个感兴趣的可以去看看具体的内容 。
第一步:找出所有的面孔
解决方案HOG(Histogram of Oriented Gradients)方向梯度直方图 , 一种能够检测物体轮廓的算法 。
第二步:脸部的不同姿势
使用由瓦希德·卡奇米(Vahid Kazemi)和约瑟菲娜·沙利文(Josephine Sullivan)在 2014 年发明的一种面部特征点估计(face landmark estimation)算法 。
这一算法的基本思路是找到68个人脸上普遍存在的点(称为特征点 ,landmark):
本文插图
其中:
下巴轮廓17个点 [0-16]
左眉毛5个点 [17-21]
右眉毛5个点 [22-26]
鼻梁4个点 [27-30]
鼻尖5个点 [31-35]
左眼6个点 [36-41]
右眼6个点 [42-47]
外嘴唇12个点 [48-59]
内嘴唇8个点 [60-67]
有了这68个点 , 我们就可以轻松的知道眉毛、眼睛、鼻子和嘴巴的位置信息了 , 根据这些位置信息 , 我们经过一些简单的计算就可以得出开始提到的这几个问题的答案:
- 在哪儿画?
- 画多大?
- 草莓的角度和脸的角度是否一致?
本文插图
基于vue-cli搞一个
有了face-api.js我们就可以动手开始搞了 。 大体上分为4步:
- 使用vue-cli脚手架搭建项目
- 使用face-api.js检测人脸图片 , 获取检测结果
- 计算(草莓大小、位置、旋转角度等)
- 画草莓
使用vue-cli快速创建一个项目
2. 使用face-api.js检测人脸图片 , 获取检测结果
推荐阅读
- 功能:能解决孩子的学习问题吗?牛听听儿童智能熏教机体验!
- 机器人:青岛造运输机器人打败五家外企 成功进驻世界最大中转枢纽港
- 每日经济新闻咨询@联邦学习成人工智能新贵 腾讯安全:技术服务能力才是重点
- 「时间」iPhone se2这机器放在现在这个时间,真的有点奇怪
- #科技如梦#iPhone se2这机器放在现在这个时间,真的有点奇怪
- 【大数据】干货满满!2020版好程序员新电商大数据平台全套学习资料
- ##QQ 发布 8.3.3正式版:新增学习模式、分享屏幕等多个功能!
- [简科技简哥]QQ 发布 8.3.3正式版:新增学习模式、分享屏幕等多个功能!
- 『孩子』担心开学后孩子学习有问题?你需要TCL 85X6C电视来救场
- [机器人]从昆虫身上找灵感,研发人员用3D打印批量制造机器人群 | 硬科技