热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个基于TensorFlow的「颜值评分」开源项目:FaceRank

简评:用深度学习来评判颜值,已开源。好友@小灰灰大大的「颜值评分FaceRank」,这是基于TensorFlow的CNN模型,美不美机器说了算。我们常看到用机器学习识别字体,自动驾

简评:用深度学习来评判颜值,已开源。好友
@小灰灰 大大的「
颜值评分 FaceRank」,这是基于 TensorFlow 的 CNN 模型,美不美机器说了算。

我们常看到用机器学习识别字体,自动驾驶等项目,今天给大家推荐一个有趣的项目 FaceRank,这是个开源项目,它基于 TensorFlow CNN 模型,提供了一些图片处理的工具集,后续还会提供训练好的模型。

从此以后,让它来帮你寻找高颜值的小电影,帮你筛选附近高颜值的妹子(汉子),让它帮你给学校或者公司帅哥美女做个排行榜,让它给明星打分并且你可以自豪的说「一切都是人工智能的选择」。。。

以下是机器给苍老师的打分。

《一个基于 TensorFlow 的「颜值评分」开源项目:FaceRank》
《一个基于 TensorFlow 的「颜值评分」开源项目:FaceRank》

(机器给苍老师打了 7 分,这已经是很高的分数了,果然德艺双磬)

数据集

  • 130 张 128*128 张网络图片,图片名:1-3.jpg 表示 分值为 1 的第 3 张图。 你可以把符合这个格式的图片放在 resize_images 来训练模型。
  • find_faces_in_picture.py

find_and_save_face 基于 face_recognition 从图片中找到人脸的坐标,并保存为新图片。

from PIL import Image
import face_recognition
import os
print("h")
def find_and_save_face(web_file,face_file):
# Load the jpg file into a numpy array
image = face_recognition.load_image_file(web_file)
print(image.dtype)
# Find all the faces in the image
face_locations = face_recognition.face_locations(image)
print("I found {} face(s) in this photograph.".format(len(face_locations)))
for face_location in face_locations:
# Print the location of each face in this image
top, right, bottom, left = face_location
print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))
# You can access the actual face itself like this:
face_image = image[top:bottom, left:right]
pil_image = Image.fromarray(face_image)
pil_image.save(face_file)
print("h")
list = os.listdir("web_image/")
print(list)
for image in list:
id_tag = image.find(".")
name=image[0:id_tag]
print(name)
web_file = "./web_image/" +image
face_file="./face_image/"+name+".jpg"
im=Image.open("./web_image/"+image)
try:
find_and_save_face(web_file, face_file)
except:
print("fail")

  • 然后再用 resize 统一为 128×128 大小,为模型训练做准备。

模型

人脸打分基于 TensorFlow 的 CNN 模型 代码参考 : TensorFlow-Examples

卷积神经网络部分代码,网络结构说明:

  • 卷积层
  • 池化层
  • 卷积层
  • 池化层
  • 全链接层

# 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 out

运行

安装好 TensorFlow 之后,直接运行 train_model.py .

  • 训练模型
  • 保存模型到 model 文件夹

测试

运行完 train_model.py 之后,直接运行 run_model.py 来测试.

下载

训练好的模型下载网址: (文件较大,正在上传) http://www.tensorflownews.com/

模型效果

  • 训练过程 你可以看训练过程:Train_Result.md ,这里有损失函数和准确率变化过程。
  • 测试结果 结果并不非常好,但是增加数据集之后有所改善。

(?, 128, 128, 24)
(?, 64, 64, 24)
(?, 64, 64, 96)
(?, 32, 32, 96)
['1-1.jpg', '1-2.jpg', '10-1.jpg', '10-2.jpg', '2-1.jpg', '2-2.jpg', '3-1.jpg', '3-2.jpg', '4-1.jpg', '4-2.jpg', '5-1.jpg', '5-2.jpg', '6-1.jpg', '6-2.jpg', '7-1.jpg', '7-2.jpg', '8-1.jpg', '8-2.jpg', '9-1.jpg', '9-2.jpg']
20
(10, 128, 128, 3)
[3 2 8 6 5 8 0 4 7 7]
(10, 128, 128, 3)
[2 6 6 6 5 8 7 8 7 5]
Test Finished!

支持

  • 提交 issue
  • Github: https://github.com/fendouai/FaceRank

转载:欢迎转载,保留出处。

原文:
Github – FaceRank


推荐阅读
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 可参照github代码:https:github.comrabbitmqrabbitmq-tutorialsblobmasterjavaEmitLogTopic.ja ... [详细]
  • 使用HTML和JavaScript实现视频截图功能
    本文介绍了如何利用HTML和JavaScript实现从远程MP4、本地摄像头及本地上传的MP4文件中截取视频帧,并展示了具体的实现步骤和示例代码。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 第十九天 - 类的约束、异常处理与日志记录
    本文介绍了如何通过类的约束来确保代码的一致性,以及如何使用异常处理和日志记录来提高代码的健壮性和可维护性。具体包括抛出异常、使用抽象类和方法,以及异常处理和日志记录的详细示例。 ... [详细]
author-avatar
手机用户2502934435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有