脸型分类-Face shape classification using Inception v3
本文链接:https://blog.csdn.net/u011961856/article/details/77984667
函数解析
github 代码:https://github.com/adonistio/inception-face-shape-classifier
CLASSIFY_FACE.py
1
用于运行训练好的Inception model,对输入图像进行分类.
CLASSIFY_FACE_CONFUSION.py
1
与CLASSIFY_FACE.PY类似,但是讲述如结果和一个困惑度矩阵保存在文本文件中.
EXTRACT_FEATURES.py
1
这个脚本用于检测图像中的人脸,即bounding box,检测特征点,并提取人脸特征用于训练.
PROCESS_IMAGE.py
1
包含几个图像预处理和增强函数,例如图像平方,滤波,模糊,旋转,翻转等.
RETRAIN_CMDGEN.py
1
得到CMD窗口命令,以重新训练Inception V3 model.
RETRAIN_v2.py
1
将测试图片设置为包含所有的图像,解决了验证时的double counting 等问题.
TRAIN_CLASSIFIERS.py
1
用于训练LDA, SVM-LIN, SVM-RBF, MLP, KNN分类模型.
bottlenecks.rar
1
包含所有500张图像的bottleneck files, bottleneck files为图像的向量表示,向量为Inception model的最后一层的输出.
features.txt
1
包含LDA,SVM,KNN,MLP分类中使用的特征向量.
原理
inceptionV2网络结构:
采用inceptionV2,对图像,提取一个2048维的特征向量.由于我们需要将输入图像分为5个类别,因此需要添加网络层,网络层的输入为2048维的向量,输出为5维的特征向量.
具体为将特征向量输入一个全连接层,得到5维的特征向量,之后加一个softmax激活函数,得到输出概率:
# Add the new layer that we'll be training.
(train_step, cross_entropy, bottleneck_input, ground_truth_input,
final_tensor) = add_final_training_ops(len(image_lists.keys()),
FLAGS.final_tensor_name,
bottleneck_tensor)
1
2
3
4
5
def add_final_training_ops(class_count, final_tensor_name, bottleneck_tensor):
with tf.name_scope('input'):
bottleneck_input = tf.placeholder_with_default(
bottleneck_tensor, shape=[None, BOTTLENECK_TENSOR_SIZE],
name='BottleneckInputPlaceholder')#[batch_size,2048]
ground_truth_input = tf.placeholder(tf.float32,
[None, class_count],
name='GroundTruthInput')
# Organizing the following ops as `final_training_ops` so they're easier
# to see in TensorBoard
layer_name = 'final_training_ops'
with tf.name_scope(layer_name):
with tf.name_scope('weights'):
layer_weights = tf.Variable(tf.truncated_normal([BOTTLENECK_TENSOR_SIZE, class_count], stddev=0.001), name='final_weights')
variable_summaries(layer_weights)
with tf.name_scope('biases'):
layer_biases = tf.Variable(tf.zeros([class_count]), name='final_biases')
variable_summaries(layer_biases)
with tf.name_scope('Wx_plus_b'):
logits = tf.matmul(bottleneck_input, layer_weights) + layer_biases
tf.summary.histogram('pre_activations', logits)
final_tensor = tf.nn.softmax(logits, name=final_tensor_name)
tf.summary.histogram('activations', final_tensor)
with tf.name_scope('cross_entropy'):
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(
labels=ground_truth_input, logits=logits)
with tf.name_scope('total'):
cross_entropy_mean = tf.reduce_mean(cross_entropy)
tf.summary.scalar('cross_entropy', cross_entropy_mean)
with tf.name_scope('train'):
train_step = tf.train.GradientDescentOptimizer(FLAGS.learning_rate).minimize(
cross_entropy_mean)
return (train_step, cross_entropy_mean, bottleneck_input, ground_truth_input,
final_tensor)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
模型训练
inception模型训练函数为retrain_v2.py,训练命令为:
python retrain_v2.py –image_dir /home/qinghua/data/face_classify/celebs3_squared/
训练输入数据为,人脸图像(长度为2048的特征向量),根据inceptionv2网络计算所有的训练,验证,测试数据的特征向量(bottleneck),并将其保存在bootlneck文件假下,每个图像的特征向量对应一个文本文件,文件名为filename.txt.
label为长度为5的向量,需要训练的为添加的全连接层的权重矩阵w([2048,5]),b([5,]).
迭代4000次的结果:
脸型分类-Face shape classification using Inception v3的更多相关文章
- 源码分析——迁移学习Inception V3网络重训练实现图片分类
1. 前言 近些年来,随着以卷积神经网络(CNN)为代表的深度学习在图像识别领域的突破,越来越多的图像识别算法不断涌现.在去年,我们初步成功尝试了图像识别在测试领域的应用:将网站样式错乱问题.无线领域 ...
- 微调Inception V3网络-对Satellite分类
目录 1. 流程概述 2. 准备数据集 2.1 Satellite数据集介绍 3. Inception V3网络 4. 训练 4.1 基于Keras微调Inception V3网络 4.2 Keras ...
- 经典分类CNN模型系列其五:Inception v2与Inception v3
经典分类CNN模型系列其五:Inception v2与Inception v3 介绍 Inception v2与Inception v3被作者放在了一篇paper里面,因此我们也作为一篇blog来对其 ...
- 1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习
ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构 本文翻译自ResNet, AlexNet, VGG, Inception: Understanding va ...
- 从损失函数优化角度:讨论“线性回归(linear regression)”与”线性分类(linear classification)“的联系与区别
1. 主要观点 线性模型是线性回归和线性分类的基础 线性回归和线性分类模型的差异主要在于损失函数形式上,我们可以将其看做是线性模型在多维空间中“不同方向”和“不同位置”的两种表现形式 损失函数是一种优 ...
- 从GoogLeNet至Inception v3
从GoogLeNet至Inception v3 一.CNN发展纵览 我们先来看一张图片: 1985年,Rumelhart和Hinton等人提出了后向传播(Back Propagation,BP)算法( ...
- Inception V3 的 tensorflow 实现
tensorflow 官方给出的实现:models/inception_v3.py at master · tensorflow/models · GitHub 1. 模型结构 首先来看 Incept ...
- 网络结构解读之inception系列四:Inception V3
网络结构解读之inception系列四:Inception V3 Inception V3根据前面两篇结构的经验和新设计的结构的实验,总结了一套可借鉴的网络结构设计的原则.理解这些原则的背后隐藏的 ...
- 深度学习面试题29:GoogLeNet(Inception V3)
目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...
随机推荐
- python接口自动化13-data和json参数傻傻分不清
前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传data? 一.识别json参数 1.在前面 ...
- The Essential Burp Suite
OK we have download teh burp suite .let's begin start the tool 1.if we want to use the total mem ...
- Graphviz install the Windows for Scyther
1.在Pycharm 中使用Scyther工具的时候需要导入 graphviz 直接在 Interpreter 上安装的售后会报错,如果在 IDE上无法支架安装的库可以试图在控制台上安装,控制台上无法 ...
- jquery复杂节点获取
jquery.find方法 1 $("div").find(".1").css({"color":"red"," ...
- 如何防护DDOS攻击策略
DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略的重要部 ...
- koa2 快速开始
环境准备 Node.js简介 因为node.js v7.6.0开始完全支持async/await,不需要加flag,所以node.js环境都要7.6.0以上.Node.js 是一个基于 Chrome ...
- 讲心情 demo1
讲道理找了一个安心而又稳定的工作. 每天活闲的蛋疼, 这种对于老年人来说可能会很好,但是,对于一个24岁的人可能就是坟墓了. 么事呻吟一下. 爬虫这条路越来越远了. 写下今年计划吧..机器学习入下 ...
- 学到了林海峰,武沛齐讲的Day35 完 协程
day3 requests.get 爬网页 greenlet 协程模块 还有asy!!!模快(后续版本) day4 事件驱动 day5 基础学习 day6 基础学习 da ...
- TPCH 22条SQL语句分析
使用TPC-H进行性能测试,需要有很多工作配合才能获得较高性能,如建立索引,表数据的合理分布(使用表空间和聚簇技术)等.本文从查询优化技术的角度,对TPC-H的22条查询语句和主流数据库执行每条语句对 ...
- HTML5新增常用标签
1.header 标签定义文档的页眉(介绍信息). <body> <article> <header> <h1>What Does WWF Do?< ...