tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)


Posted in Python onJune 30, 2020

1.0tensorflow的安装

1.1安装python

python下载 需要python3.x<=3.7
https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe

tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)

安装时勾选Add Python 3.7 to PATH,把python添加到环境变量。

1.2安装tensorflow

打开命令行,执行

pip install tensorflow==2.1.0

tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)

pip 会安装tensorflow和一些其他的依赖

1.3安装vc++2015-2019redist…

tensorflow的另一个依赖(很多tensorflow安装失败的原因就是这个没安装)
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

1.4安装CUDA和CUDNN

cuda: https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
cudnn: https://developer.nvidia.com/rdp/cudnn-download(需要注册nvidia账号)
cudnn下载后是个压缩文件,要把他解压出来放在CUDA里,如下图

tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)

高版本CUDA缺失cudart64_101.dll,下载后放在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin里
https://cn.dll-files.com/cudart64_101.dll.html

2.0CASIA实战

2.1CASIA数据集

tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)

可以从网上下载casia数据集,
这里以casia数据集为例,现实中可以使用自己需要的数据集。

2.2数据集的处理

建立data和test两个文件夹,把casia复制到里面
目录是这样的./data/000/000_0.bmp
data.py处理数据,其实就是遍历,匹配,删除

import os 
data = './data'
dirs = os.listdir(data) 
for dir in dirs:
 for file in os.listdir(data + '/' + dir):
  if file.endswith("4.bmp"):
   os.remove(data + '/' + dir + '/' + file)
test = './test'
tdirs = os.listdir(test)
for dir in tdirs:
 for file in os.listdir(test + '/' + dir):
  if file.endswith("0.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("1.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("2.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("3.bmp"):
   os.remove(test + '/' + dir + '/' + file)

2.3训练代码

casia.py

import os
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
/*我直接建立了个0000,1111,...这样的数组作为标签*/
#data标签
arr = []
for i in range(100):
 for j in range(4):
  arr.append(i)
arr = np.array(arr)
#test标签
tarr = []
for i in range(100):
 tarr.append(i)
tarr = np.array(tarr)

#训练集
pwd='./data'
dirs = os.listdir(pwd)
imgs = []

for dir in dirs:
 for file in os.listdir(pwd + '/' + dir):
  image = tf.io.read_file(pwd + '/' + dir + '/' + file)
  img = tf.image.decode_bmp(image,channels=3)
  imgs.append(img)
print("[*]训练集加载完毕")
print(imgs[0].shape)
#验证集(测试集)
tpwd='./test'
tdirs = os.listdir(tpwd)
timgs = []
for tdir in tdirs:
 for tfile in os.listdir(tpwd + '/' + tdir):
  timage = tf.io.read_file(tpwd + '/' + tdir + '/' + tfile)
  timg = tf.image.decode_bmp(timage,channels=3)
  timgs.append(timg)
print("[*]验证集加载完毕")
print(timgs[0].shape)
#神经网络模型
model = Sequential([
 Conv2D(16, (3,3), padding='same', activation='relu',input_shape=(480,640,3)),
 MaxPooling2D(),
 Conv2D(64, (3,3), padding='same', activation='relu'),
 MaxPooling2D(),
 Conv2D(128, (3,3), padding='same', activation='relu'),
 MaxPooling2D(),
 Flatten(),
 Dense(128, activation='relu'),
 Dense(100, activation='softmax'),
])
model.summary()//打印神经网络模型
#优化器
model.compile(optimizer=tf.keras.optimizers.Adam(),
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
#训练
ds = tf.data.Dataset.from_tensor_slices((imgs,arr))
ds = ds.batch(16)
ds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
model.fit(ds,epochs=20)
tds = tf.data.Dataset.from_tensor_slices((timgs,tarr))
tds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
model.evaluate(tds, verbose=2)
#保存
tf.saved_model.save(model, "./tmp/")

2.4训练与验证

在命令行运行 python casia.py进行训练
predict.py

import os
import tensorflow as tf
import numpy as np
/*这里显卡内存不够了*/
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
/*显卡内存*/

model_path = './tmp' //加载模型
test_path = "./test/002/002_4.bmp"//这里就是个栗子
model = tf.keras.models.load_model(model_path, custom_objects=None, compile=True)

image = tf.io.read_file(test_path)
img = tf.image.decode_bmp(image,channels=3)
img = img[tf.newaxis, ...]
res = model.predict(
 img, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
 workers=1, use_multiprocessing=False
)
pred = tf.argmax(res, axis=1)
print (pred[0])
print (res[0,pred[0]])

总结

到此这篇关于tensorflow 2.1.0 安装与实战(CASIA FACE v5)的文章就介绍到这了,更多相关tensorflow 2.1.0 安装内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在matplotlib的图中设置中文标签的方法
Dec 13 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
python重要函数eval多种用法解析
Jan 14 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
python 最简单的实现适配器设计模式的示例
Jun 30 #Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 #Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 #Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 #Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 #Python
Tensorflow全局设置可见GPU编号操作
Jun 30 #Python
Python logging模块异步线程写日志实现过程解析
Jun 30 #Python
You might like
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
Vue组件库发布到npm详解
2018/02/17 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
处理Python中的URLError异常的方法
2015/04/30 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
Python----数据预处理代码实例
2019/03/20 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
上课看小说检讨书
2014/02/22 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS