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中的pydoc模块和distutils模块
Apr 13 Python
python实现爬虫下载美女图片
Jul 14 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
分享8个非常流行的 Python 可视化工具包
Jun 05 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
用Python提取PDF表格的方法
Apr 11 Python
Python中zipfile压缩包模块的使用
May 14 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
淘宝搜索框效果实现分析
2011/03/05 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
跟老齐学Python之模块的加载
2014/10/24 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
分析经典Python开发工程师面试题
2019/04/08 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Pandas之缺失数据的实现
2021/01/06 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
物业管理毕业生个人的求职信
2013/11/30 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
关于感谢信的范文
2015/01/23 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL
MySQL分布式恢复进阶
2022/07/23 MySQL