MaixHub虽然可以在线训练模型,但是数据集限制大小为20M以下,而且大多数时候都需要排队才能训练模型,这可能就不能满足我们对模型的需求,所以我在Windows系统下搭建环境,本地训练模型。对于本地训练的纯小白来说,虽然MaixHub本地训练不需要虚拟机,但是还是要严格按照教程的步骤一步步来。不然很容易出错。
这里推荐安装python3.8,由于python3.9有一些不知名问题导致了环境可能会配置失败。点击下载python3.8。双击打开python3.8安装包,勾选如图所示,然后Install Now即可。
安装完成后win+r打开命令窗口,输入Python检测是否安装成功,显示这个则是安装成功。
因为在安装python3.8时已经默认安装pip了,所以这里不需要在另外安装pip,可以通过 pip list来查看python上安装了的包。这个警告是提醒当前pip不是最新版,可以不用管它。
打开cuda10.1下载的链接,选择对应的系统版本和下载方式
下载好的安装包,直接打开,然后一直点下一步就好了。
注意:如果电脑其它版本的CUDA,可以参考这个方法来选择指定CUDA《windows一个显卡配置多个CUDA版本》
安装完成后可以在系统变量中是否已经包含这两个路径。
点击这里进入到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的环境已经配置好了。
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
到这里下载本地训练代码,进入连接之后,可以通过git命令进行下载,或者是点击Download ZIP进行下载压缩包。将压缩包解压,任何位置都都可以,只要你记得解压到哪里了。然后下载 ncc-win7-x86_64 并解压,就会得到一个叫ncc-win7-x86_64的文件夹,将这个文件夹名字修改为ncc_v0.1。再将这个文件夹的复制到maix_train/tools/ncc文件夹下面。(如果没有ncc这个文件夹就创建一个,路径一定要对的上)
ncc路径创建
打开解压后得到的文件夹,打开里面的 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/
数据集的准备和MaixHub在线训练差不多,具体可以看《K210学习笔记(十一)——MaixHub在线训练模型(在线炼丹)》
先进行初始化
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的文件夹,里面的文件就是训练之后得到的模型。
这是包的版本对应不上导致的,下载对应版本的即可,比如:
pip install numpy==1.19.0
pip install tifffile==2021.6.14
pip install imageio==2.9.0
出现这个报错
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)
再次运行训练任务,问题解决。
这个原因是因为,maix_train/tools/ncc/ncc_v0.1路径没有设置好,或者下载的不是ncc-win7-x86_64。
1.启动训练的查看是否出现答应出这些信息,并都是和下图框出来的一样的
如果没有,则说明你的前面的cuda和cudnn环境没有安装好,请将所有关于英伟达的软件驱动进行卸载,是卸载!!!不是将文件删除。然后再重新进行cuda和cudnn的环境配置。
2.在任务管理器中查看,GPU 的显存有没有被使用到,而不是看显卡的利用率
3.训练刚开始出现的 no GPU,will use CPU 只是一个提示信息而已,并不是没有使用到
4.看看笔记本有没有起飞(手动狗头)。
环境需要重新安装,tensorflow安装版本没有对上
这种就是没有严格的安装数据集要求来进行制作,检查你的文件夹名字,就可以解决的了,特别是images这个文件夹,容易少了个s。
MaixHub本地训练如果不严格按照步骤进行的话,还是很容易出错的,比如我在安装CUDA的时候就卡了很久,原因是我更改了安装路径,导致安装路径被电脑自动删除了,第n次之后一直点下一步就没有这个问题了。学到这里对MAIX BIT(K210)已经有了初步的了解,用来比赛、做毕设应该是没有任何问题了,后面再更新MAIX BIT(K210)的学习笔记,可能就是MaixHub本地训练模型(Linux)和一些用k210进行实战的项目(奈何学生党一个,没有票子去买配件)。