Win10+GTX1650显卡下安装Tensorflow-gpu1.14的踩坑过程及训练目标检测模型

2023-05-16

Win10+GTX1650显卡下安装Tensorflow-gpu1.14的踩坑过程及训练目标检测模型

作为一个刚接触深度学习的小白,因目标检测的任务需求,在网上查阅了大量前辈写的相关blog,学到了很多东西,最后自己搭建完环境训练了模型。因为搭配环境时踩了很多坑,我将内容整理一下,方便必要时再次查看。

安装tensorflow-gpu前python、cuda、cudnn、vs的版本需要一一对应,否则可能最后会报错。我装的比较新:
anaconda3
python3.7
cuda10.1
cudnn7.6
vs2019
tensorflow-gpu 1.14

安装tensorflow object detection API

1.去anaconda官网,下载完后自带python3.73
在这里插入图片描述

2.tensorflow分cpu版和gpu版,cup版相当容易,命令行pip install tensorflow即可,安装的是tensorflow1.14,gpu版相当麻烦,先跳过。

3.安装tensorflow object detection API,先去Github上下载https://github.com/tensorflow/models

然后安装配置Protobuf,下载地址https://github.com/protocolbuffers/protobuf/releases

具体的操作参考TensorFlow学习(四)之基于win10实现官方Object Detection API 步骤及出现的坑bug解决办法博主已经写的非常详细了,感谢博主,让我受益匪浅。

4.然后测试一下官方demo,在research\object_detection文件夹下打开jupyter notebook,因为我的版本是tensorflow1.14,我会把下面的注释掉或者4前面加个1。
在这里插入图片描述
狗、人、风筝都出现了对应的框,测试成功。
在这里插入图片描述
在这里插入图片描述

搭建tensorflow-gpu环境

因为需要自己训练模型,cpu版的tensorflow可以训练,但是用它训练模型速度会慢很多,需要gpu加速。于是我卸载了cpu版的tensorflow。准备安装tensorflow-gpu。因为我电脑已经安装了最新版visual studio2019,和python3.73,因此只需要下载对应的cuda和cudnn。按照网上教程,我分别安装了CUDA10.1、10.0、9.0等多个版本和对应的cudnn,在命令行pip install tensorflow-gpu下载了安装了1.14版本,每次import tensorflow时都找不到指定模块,找了很多教程降版本也好,怎么怎么操作都无法解决。我的显卡型号是GTX1650。看了下显卡支持cuda的型号,发现支持的是CUDA10.2。CUDA10.2官网还没出。
在这里插入图片描述
然后去官网查看https://developer.nvidia.com/cuda-gpus貌似我显卡不在上面?
在这里插入图片描述

这让我这个新手一度怀疑该型号显卡不支持CUDA。但看到了一位前辈使用该显卡配置成功,又给我提供了相当关键的信息https://github.com/fo40225/tensorflow-windows-wheel
对照表格,我找到了相匹配的版本。
在这里插入图片描述

1.CUDA和cuDNN安装

点击CUDA下载10.1版本,我这好像不管下载在哪最后都在C:\Program Files\NVIDIA GPU Computing Toolkit文件夹下。安装好后我去添加环境变量,貌似已经自动添加好了。
在这里插入图片描述

点击cuDnn下载CUDA10.1对应的版本,为7.60版本。这个是深度神经网络的GPU加速库。下载需要注册,可能稍微费时一点。
在这里插入图片描述
解压后把cuDNN中bin,include,lib文件夹下的文件对应的复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1中相对应文件夹即可。
在这里插入图片描述

2.tensorflow-gpu安装

找到之前Github上的那个查版本对应的项目,下载tensorflow-windows-wheel/1.14.0/py37/GPU/下的whl文件,有sse2和avx2的,对照表格两者对应的compute capability不同,我的GPU显示计算能力7.5,可能应该选avx2吧。但我好奇的下载了sse2的。我也不知道是否有必然的联系…反正最后没什么错。
下载完成后在对应下载的文件夹下打开命令行

pip install tensorflow_gpu-1.14.0-cp37-cp37m-win_amd64.whl

之后输入import tensorflow as tf好像不再报没找到模块的错误了,太好了。在python环境中输入

import tensorflow as tf
tf.Session()

会显示一些关于我的GPU信息,算是成功了。
在这里插入图片描述

3.再次测试官方demo

这次安装完成了tensorflow-gpu1.14,基本上那些blog都是没有问题的,但是不知道为什么我在测试时出现了bug
在这里插入图片描述
调用卷积算法失败,可能是因为cuDNN没有初始化?这个bug不太好找,出现这类问题的人不多,有人说可能是tensorflow的版本过高,他们降到1.8版本就解决了这个问题,但python3.7不支持tensorflow1.8。一旦降版本可能要从头再来。后来在https://github.com/tensorflow/tensorflow/issues/24828找到了一个解决方法。在代码中前加上

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

这段意思应该是给GPU分配动态内存

训练模型

训练模性的步骤一般是:

1.准备大量所需的图像,并分成训练集和测试集,比例我选的是7:3
2.用LabelImg软件标注图像中所需识别的目标,生成xml格式文件。该软件开源在Github上
3.用脚本将xml格式文件转化成csv格式
4.再用python脚本将csv转化成tensorflow可以读取的record格式
5.设置配置文件,在object_detection\samples\configs下有很多种类可供选择,但需修改部分代码
6.创建pbtxt格式的文本文件,需要写上检测的类别
7.启动object_detection文件夹下自带的model_main.py开始训练
8.运行自带的python export_inference_graph.py将model.ckpt文件,生成模型
9.利用该模型进行训练

这方面主要参考了这篇博文Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型这位博主非常用心,讲的非常详细。甚至出了教学视频,使我很快掌握了模型训练的方法。

稍有不同的是我上文中提到我出现了无法调用卷积的bug,所以我在model_main.py中加入了GPU内存分配的代码。
在这里插入图片描述

另外,由于项目的局限性,数据集只有收集到数百张,若是从头开始训练,数据集较少,大概率无法收敛。我下载了一些训练好的网络做fineturn。由于最近刚看完SSD算法的论文,对它感情比较深,于是在Tensorflow detection model zoo
下载了ssd_inception_v2_coco模型。用ssd算法在inception v2网络训练coco数据集生成的模型。

在这里插入图片描述
config格式的配置文件在samples文件夹下找到对应的模型。需要修改下几个地方:
将类别改为具体定义的种类
在这里插入图片描述

fineturn部分地址修改为刚下载模型的model.ckpt文件所在地
在这里插入图片描述
修改地址到对应的record文件和pbtxt文本文件中
在这里插入图片描述
然后可以开始按照上面的步骤开始训练了。以下是训练界面,显示训练步数,损失函数等。每隔一定步数会保存一次model.ckpt
在这里插入图片描述

打开可视化界面,下图是step=13K时部分截取界面。
在这里插入图片描述
最后进行预测时,效果还是不错的,几乎可以正确识别大部分异常处,关于项目的预测结果图就不放了,放一张使用以上同样方法训练出的模型预测图,数据集是网上直接下载来的。

可以看到框的位置和类别判断的较为准确,但是后面的人被车门挡住后却无法识别出来 。从总体来看效果还是不错的。
在这里插入图片描述

以上是我这个初学者所遇到的坑,感谢之前的博主们所做的贡献,让我可以事半功倍。第一次写blog,如有错误,请多多担待,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win10+GTX1650显卡下安装Tensorflow-gpu1.14的踩坑过程及训练目标检测模型 的相关文章

随机推荐

  • ubuntu18.04 ros 安装 gazebo9

    三 Gazebo安装 如果前面安装ros 的时候安装了gazebo 这里进行卸载 xff08 1 xff09 sudo apt get remove gazebo xff08 2 xff09 sudo apt get remove libg
  • CMake 常用总结一:CMake 单个文件目录

    引言 CMake 实践帮助我们对 CMake 有一个系统全面的了解 xff0c 并且有大量示例以供参考 xff0c 至少在实际项目中可以让我们有能力看懂并修改项目中现有的 CMake 阅读完 CMake 实践文档 xff0c 认为自己的任务
  • 面试(opencv)

    作者 xff1a 孙兔子 xff08 本人 xff09 链接 xff1a 面试题 xff08 opencv xff09 讨论帖 牛客网 来源 xff1a 牛客网 12 xff09 形态学梯度 复制代码 1 2 3 4 5 6 7 8 9 1
  • mysql锁系列之MDL元数据锁之一

    基础材料 xff1a centos7 5 mysql 5 7 24 当mysql运行一条SQL语句时 xff0c 在你预期的时间内 xff0c 没有完成时 xff0c 我们都会登陆到mysql数据库上想查看是不是出了什么问题 xff0c 通
  • 【转】TCP 网络状态图详解

    http blog csdn net wenqian1991 article details 40110703 在前面 xff0c 已经介绍了TCP协议的三路握手和四次挥手 如下图所示 xff0c TCP通信过程包括三个步骤 xff1a 建
  • Ubuntu2018安装Gazebo9

    很高兴大家可以阅读我的文章 xff0c 不胜荣幸 xff0c 希望我的经验能够给大家带来些许益处 xff01 Ubuntu2018安装Gazebo9 或许看到这篇文章的你是第一次接触到Gazebo xff0c 我也是 我写这篇文章的目的就是
  • 树莓派串口配置(c++)

    文章目录 前言一 wiringPi库是什么 xff1f 二 使用步骤1 安装库和接口介绍2 C 43 43 串口配置 总结注意点 xff1a 前言 最近做项目 xff0c 在树莓派上用到串口来实现通信功能 所以用c 43 43 写了个串口的
  • 不带头结点的单链表的实现

    不带头结点的单链表的实现 单链表是一种链式存取的数据结构 xff0c 用一组地址任意的存储单元存放线性表中的数据元素 链表中的数据是以结点来表示的 xff0c 每个结点的构成 xff1a 元素 数据元素的映象 43 指针 指示后继元素存储位
  • 顺序队列和链队列

    顺序队列和链队列 队列的定义 xff1a 队列是一种特殊的线性表 xff0c 是一种先进先出 xff08 FIFO xff09 的数据结构 它只允许在表的前端 xff08 front xff09 进行删除操作 xff0c 而在表的后端 xf
  • c++类模板

    类模板 什么是类模板 xff1f 模板的目的就是为了淡化数据类型的要求 xff0c 作出通用数据类型的模板 类中的成员变量和成员函数都牵涉到了数据类型 在成员函数 成员变量以及基类中包含有类型参数的类称为类模板 和函数模板一样 xff0c
  • 4G虚拟地址空间

    虚拟地址空间分布 对于每一个进程都会对应一个虚拟地址空间 xff0c 对于32位的操作系统 xff08 其指令的位数最大为32位 xff0c 因此地址码最多32位 xff09 xff0c 虚拟地址空间的大小为2 32 B即0 4GB的虚拟地
  • 编译链接原理

    编译链接原理 编译阶段一共分为3部 xff1a 预编译阶段 xff0c 编译阶段 xff0c 和汇编阶段 我们先来看第一阶段 xff1a 预编译 将源代码文件 c和相关的头文件 h等 预编译成一个 i文件 gcc E hello c o h
  • Windows环境下 sphereface人脸识别模型配置caffe(一)

    本教程是在windows环境下进行 xff0c 默认caffe xff08 微软版 xff09 你已经在电脑上成功配置 sphereface人脸识别开放源码 xff1a https github com wy1iu sphereface c
  • RS422串口测试工装研究

    1 设备组成 ETst USB系统主要由硬件部分与软件部分组成 硬件部分包括1553B板卡 RS232 422 485板卡 CAN总线板卡 AD采集板卡 DA转换板卡 DI DO板卡等 所有硬件板卡均采用USB的接口形式 xff0c 从而灵
  • mysql锁系列之MDL元数据锁之三

    基础材料 xff1a centos7 5 mysql 5 7 24 前一篇说明了元数据锁的相关加锁顺序 xff0c 今天再结合online DDL更深入的研究一下这个加锁顺序究竟如何 这里先简单说明一下online DDL锁升降级的过程 x
  • 【记录】MPU6050原理快速入门(附手册)

    目录 MPU6050 MPU6050主要参数 MPU6050通信接口 MPU6050电路 向MPU6050的一个寄存器写一个字节的数据 从MPU6050的一个寄存器读一个字节的数据 MPU6050 MPU6050是一个运动处理传感器 xff
  • 关于写论文的小技巧[一]:公式编号

    论文公式怎么编号对齐 用的是word自带的公式 xff0c 编辑好公式之后如下图所示 xff1a 在公式框内容 xff0c 公式末尾出加上 xff08 1 xff09 xff0c 这里1就是你想要编辑的公式序号 xff0c 然后将光标跳到最
  • 步进电机和伺服电机有什么区别?

    步进电机和伺服电机二者都是控制电机 xff0c 都能精确控制速度 但是二者控制速度的原理不同 xff1a 伺服电机是闭环控制 xff08 通过编码器反馈等完成 xff09 xff0c 即 xff1a 会实时测定电机的速度后自动加以调整 xf
  • C# FTP上传和下载文件操作

    目录 1 初始化FTP2 上传文件3 下载文件4 代码描述 我们使用C 需要通过FTP访问服务器时 xff0c 那么上位机就要作为客户端 xff0c 通过连接FTP服务来上传下载文件 这里用实际代码和简要的文字描述一下 1 初始化FTP 见
  • Win10+GTX1650显卡下安装Tensorflow-gpu1.14的踩坑过程及训练目标检测模型

    Win10 43 GTX1650显卡下安装Tensorflow gpu1 14的踩坑过程及训练目标检测模型 作为一个刚接触深度学习的小白 xff0c 因目标检测的任务需求 xff0c 在网上查阅了大量前辈写的相关blog xff0c 学到了