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 相关文章推荐
跟老齐学Python之print详解
Sep 28 Python
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
Python 依赖库太多了该如何管理
Nov 08 Python
python如何获取网络数据
Apr 11 Python
python pygame入门教程
Jun 01 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
js实现计算器功能
2020/08/10 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
ktv收银员岗位职责
2013/12/16 职场文书
生产部管理制度
2014/01/31 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
个人安全承诺书
2014/05/22 职场文书
英语感谢信范文
2015/01/20 职场文书
投标邀请书范本
2015/02/02 职场文书
小学推普周活动总结
2015/05/07 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
MySQL存储过程及语法详解
2022/08/05 MySQL