原标题:用Python为你的「颜值评分」,看看人工智能为你打几分?

python 评分卡模型 iv值 python评分程序_卷积

今天我们分享的Python程序,是一款用深度学习来为颜值评分的应用,在科技飞速发展的当今社会,我们可以通过机器学习实现自动驾驶、识别字体等,甚至连谷歌研发的Alphago都可以向人类的围棋事业发出挑战。所以,今天码趣君给大家推荐一款有趣的小项目——FaceRank。

python 评分卡模型 iv值 python评分程序_tensorflow_02

FaceRank

提供了图片处理的工具集,它是基于TensorFlow的CCN模型。有了这个模型,只要给它一张照片,它就能帮我们来筛选高颜值的小姐姐(小哥哥),还可以在校园校草校花的评比中,作出可靠的参考预测。当你想给明星的颜值打个分时,你可以将这个工作交给FaceRank,这时你可以告诉别人,这是人工智能打出的分数,很客观的呦!

TensorFlow

python 评分卡模型 iv值 python评分程序_python 评分卡模型 iv值_03

是谷歌研发的第二代人工智能学习系统,是将复杂的数据结构传输至人工智能神经网中,进行分析和处理的一套系统。它可用于语音识别或图像识别等多项机器深度学习领域,可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。

什么是开源项目?

开源项目指源码被公众使用的软件,并且软件的使用、修改和发行不受许可证的限制。

下载

Tensorflow

安装:pip install tensorflow

简介:Tensorflow 是谷歌的机器学习框架,FaceRank 使用了基于它的 CNN 模型。

face_recognition

安装:pip install face_recognition

简介:这个库在项目中,用来从图片中截出人脸,并保存为新文件,方便生成数据集。

这个库比较难装,如果直接安装失败,建议使用 docker。

数据集

1. 我们现在需要130张128*128的随意的图片

2. 要注意图片的命名:图片名:1-3.jpg,表示分值为1的第3张图片。

3. 请将符合上述名格式的图片放在resize_images中,目的是训练模型。

4. find_faces_in_picture.py这个函数,运用find_and_save_face就如翻译一样,是从图片中找到人脸的坐标(关键是坐标),并且保存为新图片。

5. 用resize将图片统一为128*128的大小,为之后的模型训练打下坚实的基础。

人脸打分的基础是 TensorFlow 中的CNN 模型

网络结构

而下列代码的网络结构是:

卷积层

池化层

卷积层

池化层

全链接层

卷积层:在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 与g经过翻转和平移的重叠部分的面积。

池化层:池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果CNN网络中前几层的卷积层参数量占比小,计算量占比大;而后面的全连接层正好相反,大部分CNN网络都具有这个特点。因此我们在进行计算加速优化时,重点放在卷积层;进行参数优化、权值裁剪时,重点放在全连接层。

以下代码为卷积神经网络部分代码:

# Create model
def conv_net(x, weights, biases, dropout):
# Reshape input picture
x = tf.reshape(x, shape=[-1, 128, 128, 3])
# Convolution Layer(卷积层)
conv1 = conv2d(x, weights['wc1'], biases['bc1'])
print(conv1.shape)
# Max Pooling (down-sampling)(池化层)
conv1 = maxpool2d(conv1, k=2)
print(conv1.shape)
# Convolution Layer(卷积层)
conv2 = conv2d(conv1, weights['wc2'], biases['bc2'])
print(conv2.shape)
# Max Pooling (down-sampling) (池化层)
conv2 = maxpool2d(conv2, k=2)
print(conv2.shape)
# Fully connected layer(全链接层)
# Reshape conv2 output to fit fully connected layer input
fc1 = tf.reshape(conv2, [-1, weights['wd1'].get_shape().as_list()[0]])
fc1 = tf.add(tf.matmul(fc1, weights['wd1']), biases['bd1'])
fc1 = tf.nn.relu(fc1)
# Apply Dropout
fc1 = tf.nn.dropout(fc1, dropout)
# Output, class prediction
out = tf.add(tf.matmul(fc1, weights['out']), biases['out'])
return ou

训练

一切都准备好了,可以直接运行 train_model.py

这部分内容在 Github 有比较详细说明:

可以参考:https://github.com/fendouai/FaceRank/

测试

运行完 train_model.py 之后,可以通过运行 run_model.py 来测试模型是否完整,也可以在这个过程中查找漏洞.

模型使用

FaceRank在训练之后,可以直接运行。因为FaceRank具有模型保存功能,所以非常的智能。

run_model.py :可以成函数或者类库使用,很方便。

以上是今天给大家带来的小项目,这个项目是以Python为基础的编程,如果感兴趣的小伙伴们可以尝试一下。Python语言具有简洁、易读、易操作特征,可以快速呈现效果,利于激发青少年学习动力和信心;同时,Python也被称为“胶水语言”,具有扩展性,能够把其他语言制作的模块轻松地进行链接。