K210学习笔记(十二)——MaixHub本地训练模型(Windows)

文章目录

  • 前言
  • 一、环境配置
  • 1.安装python3.8
  • 2.安装pip
  • 3.安装CUDA10.1
  • 4.安装CUDNN
  • 5.tensorflow安装
  • 6.MaixHub本地训练代码下载
  • 二、本地训练使用步骤
  • 1.安装依赖
  • 2.数据集准备
  • 3.开始训练
  • 三、训练中可能出现的问题
  • 1.版本错误![在这里插入图片描述](https://i3.wp.com/img-blog.csdnimg.cn/56d6a41017934c5a9e554c7269d69400.png#pic_center)
  • 2.显存不足![在这里插入图片描述](https://i3.wp.com/img-blog.csdnimg.cn/cddd91a37fee491c9bd6eb8c26ea88d3.png”#3_127″>3.训练完成后没有生成压缩包
  • 4.判断是否在用GPU进行训练
  • 5.训练中出现Internal: no kernel image is available for execution on the device
  • 6.出现failed: TrainFailReason.ERROR_PARAM, datasets not valid: datasets format error: datasets error, not support format, please check
  • 总结

  • 前言

    MaixHub虽然可以在线训练模型,但是数据集限制大小为20M以下,而且大多数时候都需要排队才能训练模型,这可能就不能满足我们对模型的需求,所以我在Windows系统下搭建环境,本地训练模型。对于本地训练的纯小白来说,虽然MaixHub本地训练不需要虚拟机,但是还是要严格按照教程的步骤一步步来。不然很容易出错。

    一、环境配置

    1.安装python3.8

    这里推荐安装python3.8,由于python3.9有一些不知名问题导致了环境可能会配置失败。点击下载python3.8。双击打开python3.8安装包,勾选如图所示,然后Install Now即可。
    安装完成后win+r打开命令窗口,输入Python检测是否安装成功,显示这个则是安装成功。

    2.安装pip

    因为在安装python3.8时已经默认安装pip了,所以这里不需要在另外安装pip,可以通过 pip list来查看python上安装了的包。这个警告是提醒当前pip不是最新版,可以不用管它。

    3.安装CUDA10.1

    打开cuda10.1下载的链接,选择对应的系统版本和下载方式

    下载好的安装包,直接打开,然后一直点下一步就好了。
    注意:如果电脑其它版本的CUDA,可以参考这个方法来选择指定CUDA《windows一个显卡配置多个CUDA版本》
    安装完成后可以在系统变量中是否已经包含这两个路径。

    4.安装CUDNN

    点击这里进入到cudnn的下载官网,选择cudnn v7.6.5.32 for cuda 10.1的版本进行下载,
    下载之后会得到一个cudnn-10.1-windows10-x64-v7.6.5.32.zip的压缩包,将其解压。得到三个文件夹
    都复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1文件下面。这时CUDA的环境已经配置好了。

    5.tensorflow安装

    tensorflow-gpu 2.3.0版本对于cuda版本有点严格,cuda版本必须是10.1版本,cudnn是 10.1 V7.**版本,不然是不能使用GPU进行训练。
    win+r,输入cmd,打开命令行输入

    pip install tensorflow-gpu==2.3.0
    

    如果下载的很慢,请输入

    pip install tensorflow-gpu==2.3.0 -i https://pypi.mirrors.ustc.edu.cn/simple
    

    6.MaixHub本地训练代码下载

    这里下载本地训练代码,进入连接之后,可以通过git命令进行下载,或者是点击Download ZIP进行下载压缩包。将压缩包解压,任何位置都都可以,只要你记得解压到哪里了。然后下载 ncc-win7-x86_64 并解压,就会得到一个叫ncc-win7-x86_64的文件夹,将这个文件夹名字修改为ncc_v0.1。再将这个文件夹的复制到maix_train/tools/ncc文件夹下面。(如果没有ncc这个文件夹就创建一个,路径一定要对的上)

    ncc路径创建

    二、本地训练使用步骤

    1.安装依赖

    打开解压后得到的文件夹,打开里面的 requirements.txt 文件,将里面的 tensorflow>=2.3.1 删除,保存关闭。
    win+r,输入cmd,进入文件夹保存路径后输入

    pip install -r requirements.txt
    

    如果下载速度很慢的话,可以使用中科大源来进行下

    pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    

    2.数据集准备

    数据集的准备和MaixHub在线训练差不多,具体可以看《K210学习笔记(十一)——MaixHub在线训练模型(在线炼丹)》

    3.开始训练

    先进行初始化

    python train.py init
    

    将数据集放到本地训练源码中的datasets文件夹中,
    分类训练输入

    python train.py -t classifier -z datasets/test_classifier_datasets.zip train
    

    如果是没有压缩的文件夹,则输入

    python train.py -t classifier -d datasets/test_classifier_datasets train
    

    目标检测输入

    python train.py -t detector -z datasets/test_detector_xml_format.zip train
    

    注意:这里输入的命令中,在datasets/后面加的是你自己的所制作的数据集名字。
    像我的数据集名字为datasets.zip,则我开始目标检测训练代码为:

    python train.py -t detector -z datasets/datasets.zip train
    

    输入代码后就可以开始训练了。训练完之后就会得到一个out的文件夹,里面的文件就是训练之后得到的模型。

    三、训练中可能出现的问题

    1.版本错误

    这是包的版本对应不上导致的,下载对应版本的即可,比如:

    pip install numpy==1.19.0
    pip install tifffile==2021.6.14
    pip install imageio==2.9.0
    

    2.显存不足

    出现这个报错

    2022-04-21 16:50:38,364 – [ERROR]: failed: TrainFailReason.ERROR_INTERNAL, error occurred when train, error: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

    原因是因为显存不足引起,可以直接在文件中加入如下代码,让tensorflow自动进行显存分配(本人电脑太拉了,就报这个错)
    在D:\maix_train\maix\train\classifier(训练代码存放路径)中的__init__.py中找到
    在import语句后加入代码:

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

    在D:\maix_train\maix\train\detector中的__init__.py中找到
    在import语句后加入代码:

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

    再次运行训练任务,问题解决。

    3.训练完成后没有生成压缩包

    这个原因是因为,maix_train/tools/ncc/ncc_v0.1路径没有设置好,或者下载的不是ncc-win7-x86_64。

    4.判断是否在用GPU进行训练

    1.启动训练的查看是否出现答应出这些信息,并都是和下图框出来的一样的

    如果没有,则说明你的前面的cuda和cudnn环境没有安装好,请将所有关于英伟达的软件驱动进行卸载,是卸载!!!不是将文件删除。然后再重新进行cuda和cudnn的环境配置。

    2.在任务管理器中查看,GPU 的显存有没有被使用到,而不是看显卡的利用率

    3.训练刚开始出现的 no GPU,will use CPU 只是一个提示信息而已,并不是没有使用到
    4.看看笔记本有没有起飞(手动狗头)。

    5.训练中出现Internal: no kernel image is available for execution on the device

    环境需要重新安装,tensorflow安装版本没有对上

    6.出现failed: TrainFailReason.ERROR_PARAM, datasets not valid: datasets format error: datasets error, not support format, please check

    这种就是没有严格的安装数据集要求来进行制作,检查你的文件夹名字,就可以解决的了,特别是images这个文件夹,容易少了个s。


    总结

    MaixHub本地训练如果不严格按照步骤进行的话,还是很容易出错的,比如我在安装CUDA的时候就卡了很久,原因是我更改了安装路径,导致安装路径被电脑自动删除了,第n次之后一直点下一步就没有这个问题了。学到这里对MAIX BIT(K210)已经有了初步的了解,用来比赛、做毕设应该是没有任何问题了,后面再更新MAIX BIT(K210)的学习笔记,可能就是MaixHub本地训练模型(Linux)和一些用k210进行实战的项目(奈何学生党一个,没有票子去买配件)。

    来源:纸箱里的猫咪

    物联沃分享整理
    物联沃-IOTWORD物联网 » K210学习笔记(十二)——MaixHub本地训练模型(Windows)

    发表回复