Git项目源码:https://github.com/DaMaiGit/artifact
花絮
今天是一年一度的情人节。都说女生的梳妆台上永远缺一支口红,在这个时候,给心仪的女神送一支适合她的口红,表达自己的想念之情准没错。想到女神收到口红后欣喜的样子,还真有点小激动呢!
作为技术直男,怎样挑选色号才能不出错呢?上次送女神死亡芭比粉的翻车经历还历历在目。为此,在这段宅家的日子里,小编痛定思痛,制作出了一款口红分析神器:计算机根据女神的照片,自动识别其唇色,从而帮她挑选与唇色最匹配的口红色号。
有了这个神器,我们就能凭借珍藏的女神美照,轻松分析出她们所匹配的口红款式,进而投其所好,从此沐浴在爱情的春风里!
开始动工
口红分析神器的制作步骤主要有:
- 识别照片中嘴唇部分的颜色;
- 对比口红颜色,筛选出适合的口红款式。
识别照片中嘴唇颜色
首先我们应该让机器准确识别出照片中嘴唇的位置。Google的AI框架TensorFlow可以帮助开发者搭建训练机器学习的模型。
Google的AI框架TensorFlow能够帮助开发者搭建训练机器学习的模型。
对于入门者而言,自己使用TensorFlow去训练模型不是一蹴而就的,这里面涉及到很多深度学习以及TensorFlow的基本概念,例如张量、隐藏层、激活函数、卷积层、池化层等。
好在深度学习的应用并不难,justadudewhohacks大神的人脸识别模型框架face-api可以帮我们忙。构建于TensorFlow.js核心库之上,face-api是基于MobileNetV1的神经网络所进行的人脸样本训练。借助它,我们能够使程序快速获得人脸识别的能力。
好在深度学习的应用并不困难,这让我想起了justadudewhohacks大神的人脸识别模型框架:face-api。face-api本质上是构建于TensorFlow.js核心库之上,基于MobileNetV1的神经网络进行人脸样本的训练。总而言之,借助它,我们能够快速使我们的程序获得人脸识别的能力。
深度学习的原理
深度学习指的是通过深度神经网络训练机器,使其获得与人类相似的学习与分析能力,进而完成识别文字、图像和语音的任务。
深度学习主要包括以下三个步骤:
- 构建深度神经网络;
- 输入数据样本,获得模型并评估效果;
- 优化模型并输出。
face-api已经实现了上述三个步骤,为开发者提供了人脸识别的模型,并封装成了简易的api,使我们能在前端项目上更方便地使用人脸识别技术。如图所示,蓝色部分是face-api已经完成的任务,而我们要做的则是输入人脸图片到已经训练好的模型中,得到输出值即可,即橙色框内的部分。
face-api的使用
引入方式
方式1:
如果我们不使用打包工具的话,可以直接将github库中的dist目录下的脚本face-api.js直接导入
<script src="face-api.js"></script>
方式2:
使用npm来引入face-api库;
npm i face-api.js
初始化模型
借助不同的卷积神经网络,face-api提供了一系列模型。常用的模型如下所示:
var nets = {
ssdMobilenetv1: new SsdMobilenetv1(), // ssdMobilenetv1 目标检测
tinyFaceDetector: new TinyFaceDetector(), // 人脸识别(精简版)
tinyYolov2: new TinyYolov2(), // Yolov2 目标检测(精简版)
mtcnn: new Mtcnn(