立即学习:手把手带你入门深度学习之150行代码的汉字识别系统-6-部署网络到应用中-李梓佳的在线视频教程-CSDN程序员研修院
目录
一、用训练模型进行预测代码
import cv2
import tensorflow as tf
with tf.Session() as sess:
"""加载模型"""
loader = tf.train.import_meta_graph("./model/model.meta")
loader.restore(sess, './model/model')
"""开始识别"""
capture = cv2.VideoCapture(0)
while True:
ret, frame = capture.read() # 获取一帧
show_img = frame.copy() # show_img是原图像frame的拷贝
crop_img = frame[100:200, 100:200] # crop_img是在原图像frame上的部分截取
cv2.rectangle(show_img, (100, 100), (200, 200), (0, 0, 255), 5) # 在show_img上画出截取部分的框框
cv2.imshow('frame', show_img) # 显示图片show_img
k = cv2.waitKey(1) # OpenCV延迟1毫秒、同时检测是否有按键被按下(如果有键被按下时,将键值返回给q)
# 按下Q键退出
if k == ord('q'):
break
# 按下S键进行识别
elif k == ord('s'):
out = sess.run("output:0", feed_dict={"data_in:0": [crop_img]})
res = ['我', '好', '帅'][out[0]]
print("识别结果:", res)
cv2.imshow("crop", crop_img)
capture.release()
cv2.destroyAllWindows()
二、思路总结
1、模型的导入
要有一个会话sess,要构建好模型载入器,要将模型文件路径填入,恢复到会话中
2、测试图像的输入
和准备数据集时同样的方法,使用cv调用摄像头,框选部分图像,作为输入
3、根据测试图像进行预测
在会话sess中运行模型中与输出相应的"name:后缀",同时将测试图像的数据feed给模型中与输入相应的"name:后缀",得到的返回值即为输出结果。
这里需要注意的是,本质上sess读取的模型中就蕴含了原来训练时神经网络的结构,所以name要和原来训练时神经网络中变量的name相对应
三、API总结
API | 作用 | 使用示例 |
tf.train.import_meta_graph | 构建tf会话载入器 | loader = tf.train.import_meta_graph("./model/model.meta") |
*.restore | 将训练好的模型文件加载到会话中 | loader.restore(sess, './model/model') |