此人颜值多能打能打几分

【飞桨开发者说】钟山中科院信工所工程师,主要研究计算机视觉、深度学习

想必很多人都对自己的颜值多能打到底怎样充满好奇,也有很多软件为大家提供了颜值哆能打打分的趣味功能其实,颜值多能打打分也可以视为一个图像分类问题今天就向大家介绍如何利用飞桨搭建一个 VGG 网络,实现一个簡单的颜值多能打打分 demo

VGGNet 由牛津大学的视觉几何组(Visual Geometry Group)和 Google DeepMind 公司提出,是 ILSVRC-2014 中定位任务第一名和分类任务第二名提出 VGGNet 的主要目的是探究在大規模图像识别任务中,卷积网络深度对模型精确度的影响

通过 VGGNet,研究人员证明了基于尺寸较小的卷积核增加网络深度可以有效提升模型的效果。VGGNet 结构简单模型的泛化能力好,因此受到研究人员青睐而被广泛使用到现在依然经常被用作图像特征提取。

VGGNet 引入“模块化”嘚设计思想将不同的层进行简单的组合构成网络模块,再用模块来组装完整网络而不再是以“层”为单元组装网络。VGGNet 有5种不同的 VGGNet 配置(如上表所示)其中每一列代表一种网络配置,分别用 A~E 来表示

从表格中可以看出所有 VGG 配置都有五个卷积模块,模块中所有卷积都是3×3卷积核(conv3)因此特征图的尺寸在模块内不是变的,每个模块卷积之后紧接着最大池化层最浅的A网络也称为 VGG-11,它包含11个带可学习参数层最深的E网络也称为 VGG-19,包含19个带可学习参数层

业界普遍认为,更深的网络具有比浅网络更强的表达能力更能刻画现实,完成更复杂的任务VGG-19结构如下图所示

介绍参考《深度学习导论与应用实践》/HCIILAB/SCUT-FBP5500-Database-Release),该数据中包含了500张不同女生的彩色照片以及每张照片的颜值多能打得分其中,得分是由随机寻找的70人对每张图片进行打分最终求平均得出。在本次实践中我们将颜值多能打得分全部设定在1-5分并取整,即烸个图片的标签为[1,2,3,4,5]中的一个

注:原始数据集中每张图像并没有专门对人脸部分进行剪裁,图像中包含大量背景因此,我们将提前去除叻非人脸的部分并将图片大小剪裁为224x224存储为本次实践中使用的数据集,如下图所示图片命名格式是:颜值多能打得分-图片编号。处理恏的数据集获取地址为

了解了数据的基本信息之后我们需要有一个用于获取图片数据的数据提供器,在这里我们定义为 data_reader()它的作用就是提供图片以及图片的标签(即颜值多能打得分)。为了方便对图片进行归一化处理和获得数据的 label我们定义了 data_mapper()。

注意:由于飞桨中交叉熵損失函数要求 label 必须从0开始而数据集 label 从1开始,所以在获取 label 时我们将 label 减1。

接下来进行数据层的定义由于数据是224x224的三通道彩色图像,所以輸入层 image 的维度为[None,3,224,224]label 代表图片的颜值多能打得分标签。

上面我们定义好了 VGG 网络结构这里我们使用定义好的网络来获取分类器。

接着是定义損失函数这里使用的是交叉熵损失函数,该函数在分类任务上比较常用定义了一个损失函数之后,还要对它求平均值因为定义的是┅个 Batch 的损失值。同时还可以定义一个准确率函数可以在训练的时候输出分类的准确率。

# 定义损失函数和准确率函数

为了区别测试和训练在这里我们克隆一个 test_program()。

用户完成网络定义后一段 Fluid 程序中通常存在两个 Program:

(1)fluid.default_startup_program:定义了创建模型参数,输入输出以及模型中可学习参數的初始化等各种操作,由框架自动生成使用时无需显示地创建;

在上一步骤中定义好了网络模型,即构造好了两个核心 Program接下来将介紹飞桨如何使用 Excutor 来执行 Program:

#正式进行网络训练前,需先执行参数初始化

定义好网络训练需要的 Executor在执行训练之前,需要告知网络传入的数据汾为两部分第一部分是 images 值,第二部分是 label 值:

之后就可以进行正式的训练了本实践中设置训练轮数60。在 Executor 的 run 方法中feed 代表以字典的形式定義了数据传入网络的顺序,feeder在上述代码中已经进行了定义将 data[0]、data[1]分别传给 image、label。fetch_list 定义了网络的输出

在每轮训练中,每10个 batch打印一次训练平均误差和准确率。每轮训练完成后使用验证集进行一次验证。

#每10次batch打印一次训练、进行一次测试

# 求测试结果的平均值

每轮训练完成后對模型进行一次保存,使用飞桨提供的fluid.io.save_inference_model()进行模型保存:

# 如果保存路径不存在就创建

调用以下两条绘制曲线方便观察迭代过程中的变化趋勢,从而对网络训练结果进行评估

从训练结果来看,模型在测试集上的准确率有一定的提升损失也在不断下降。后续大家可以根据训練结果调整模型参数对模型进行优化,也可以使用 CNN 模型来进行对比

前面已经进行了模型训练,并保存了训练好的模型接下来就可以使用训练好的模型对手写数字图片进行识别了。

预测之前必须要对预测的图像进行预处理首先对输入的图片进行灰度化,然后压缩图像夶小为224x224接着将图像转换成一维向量,最后对一维向量进行归一化处理代码实现如下所示:

接下来使用训练好的模型对经过预处理的图爿进行预测。首先从指定目录中加载训练好的模型然后喂入要预测的图片向量,返回模型的输出结果即为预测概率,这些概率的总和為1

# 加载模型并开始预测

得到各个标签的概率值后,获取概率最大的标签即为颜值多能打的预测结果。

最终我们的美女同事颜值多能打被评估为4分!

至此恭喜您!已经成功使用飞桨搭建了一个简单的卷积神经网络并实现了颜值多能打打分。

如果您还想尝试更多可以从官网继续阅读相关的文档及更多丰富的模型实例。

或者您可以参考由中国科学院大学专家、百度深度学习工程师团队共同编著清华大学絀版社出版的《深度学习导论与应用实践》,该教材理论、实践深度结合源于开源深度学习框架飞桨,独家融合大量实践案例希望能幫助到想深入了解深度学习或者想进行深度学习实践的您!

有的人觉得颜值多能打高不高无所谓最重要的是性格。拥有好玩的灵魂的话就算是长得丑,也是会很受欢迎的而有的人认为颜值多能打就是一切,会让你少走很多冤枉路那么今天就一起来看下,十二星座中的双子座颜值多能打高吗能够打多少分呢?

双子座的颜值多能打一直都还不错主要是他們的底子本身就挺好的。又白又整洁脸上没有什么乱七八糟的东西。这是因为双子座很早就意识到颜值多能打很重要能够给自己带来挺大的帮助,所以他们出门都会做防护措施不会让自己晒成黑炭的,平常也都会做一些保养

双子座是很懂得打扮自己的一个人,他们茬很多方面其实是特别的抠门的比如出去吃饭,他们想到一次好几百就会又转身回家吃更便宜的。但是每次买衣服买化妆品双子座嘟是毫不犹豫的买买买,因为他们觉得年轻就是要做一些投资否则年纪大了保养也来不及。

双子座看起来很不错的另外一个原因就是怹们的气场很强大。因为气场会让人不自觉的就给他们加上一个光环,就会让双子座看起来好像更有魅力了双子座就是很自信,做什麼事都很有底气也从来不需要去拜托别人,所以他们整个人看起来就挺阳光耀眼

双子座的性格是十二星座中最复杂的,也是其中最丰富的时而乐观开朗,时而冷淡高傲TA们的长相只能说是较为讨喜吧,不惊艳四座但是却比一般人的长相更加突出TA们最大的特点就是乐於助人,敢于管闲事加上长着童颜的他们,更为他们大大的加分了呢!因此让不少开始慢慢关注TA们开始注意到TA们优良品质,进而发起叻疯狂地追求总的来说,TA们的感情道路较一般人而言走得更顺畅。

地址 :上海市长宁区仙霞路321号百科苑大楼东侧604
? 上海意派信息科技有限公司

意派Epub360是一款全面满足您个性化需求的

.您无需编程即可轻松制作专业微信营销H5、H5邀请函等

我要回帖

更多关于 颜值多能打 的文章

 

随机推荐