热门标签 | 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


推荐阅读
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 强人工智能时代,区块链的角色与前景
    随着强人工智能的崛起,区块链技术在新的技术生态中扮演着怎样的角色?本文探讨了区块链与强人工智能之间的互补关系及其在未来技术发展中的重要性。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 基于2-channelnetwork的图片相似度判别一、相关理论本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《LearningtoCompar ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
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社区 版权所有