Tensorflow调用训练好的yolov5模型进行推理

文章目录

1、安装TensorFlow-GPU版本

bash 复制代码
1、创建虚拟环境python=3.8
conda create -n TF2.4 python=3.8

2、进入虚拟环境
conda activate TF2.4

3、去官网查看tensorflow对应cuda的版本
https://tensorflow.google.cn/install/source_windows?hl=zh-cn

conda search找找当前源下的CUDA与cuDNN有没有我们要的版本:

bash 复制代码
conda search cuda
conda search cudnn

conda install cudatoolkit=11.0.221
conda install cudnn=8.2.1

# 安装tensorflow-gpu版本
pip install tensorflow-gpu==2.4.0


1.2、验证是否安装正常

python 复制代码
import tensorflow as tf
print(tf.__version__)
print(tf.test.is_gpu_available())

2、将训练好的pt文件转换成onnx文件

2.2、什么是Onnx模型和Tensorflow模型

Onnx(Open Neural Network Exchange)是一种开放的深度学习模型交换格式,用于在不同的深度学习框架之间共享模型。它提供了一个中间格式,可以将模型从一个框架转换为另一个框架。

Tensorflow是一个广泛使用的深度学习框架,提供了强大的模型构建和训练工具。Tensorflow模型通常以.pb文件格式保存,它包含了模型的结构和参数。

2.1、将onnx文件转换成pb文件

可以通过yolov5中export.py文件进行转换

python 复制代码
python export.py --weights weights/best.pt --include onnx engine --img 640 --device 0

pb文件是tensorflow中可以使用的文件

使用代码进行转换

pip install --user tensorflow_probability==0.7.0

python 复制代码
import onnx
from onnx_tf.backend import prepare
import tensorflow.keras as keras



# 加载Onnx模型
onnx_model = onnx.load('best.onnx')

# 转换为Tensorflow模型
tf_model = prepare(onnx_model)

# 保存为.pb文件
tf_model.export_graph('best.pb')

源码进行转换

源码下载:https://github.com/onnx/onnx-tensorflow#installation

之后再终端安装:

python 复制代码
pip install -e.
pip install tensorflow-addons

都安装好之后就可以直接在终端进行转换了

python 复制代码
onnx-tf convert -i D:\\yolov5_back\\weights\\best.onnx -o D:\\yolov5_back\\weights\\best.onnx.pb

转换过程中可能会报两个错误:

错误1:from keras import backend

ModuleNotFoundError: No module named 'keras'

python 复制代码
# 点击进入报错的文件中,修改这行
from tensorflow.keras import backend

错误2:

from tensorflow.keras.utils import tf_utils

ImportError: cannot import name 'tf_utils' from 'tensorflow.keras.utils' (C:\Users\Administrator.conda\envs\Tensorflow_gpu_2.4\lib\site-packages\tensorflow\keras\utils_init_.py)

python 复制代码
# 解决方法直接将这行注释掉
from keras.utils import tf_utils
相关推荐
Magicdata大数据3 天前
AI辅助教学:调用大模型从教材中生成习题,方便学员练习
java·spring boot·大模型·知识图谱·neo4j·ai辅助教学
星川皆无恙7 天前
基于知识图谱的百科问答系统:Django + Neo4j 与实现
人工智能·python·机器学习·自然语言处理·django·知识图谱·neo4j
Sayai9 天前
Neo4j 社区版高可用实战:DRBD 块级复制 + Keepalived 虚拟 IP 冷备切换(附启停 SOP 与脑裂防范)
运维·neo4j·keepalived·高可用·drbd
喵本喵叁肆13 天前
diffprivlib 中文实战教程 · 第8讲:实战——从零改造一个 DP 模型
python·neo4j·差分隐私
智码看视界15 天前
大数据架构解析—数据血缘:从 SQL 解析到字段级溯源,搭建大数据平台数据治理底座
数据治理·neo4j·元数据·sql解析·数据血缘·datalineage·sqlglot
quweiie24 天前
Neo4j Community 安全访问配置总结
数据库·centos·neo4j
Sayai1 个月前
Neo4j 内嵌模式(Embedded)实战:Java 嵌入式 vs 服务端部署的写入性能对比与 GC 调优
java·开发语言·性能优化·neo4j·图数据库
AugustRed1 个月前
Neo4j 图数据库原理 + 应用场景简单介绍
数据库·neo4j
Thomas.Sir2 个月前
第34课:TensorFlow|TF迁移学习实战【调用官方预训练模型微调训练】
tensorflow·neo4j·迁移学习
xing-xing2 个月前
Neo4j学习总结
neo4j