一、简介
(1)硬件准备:
K210开发板:拥有1TOPS算力,可以运行神经网络模型,同时其提供在线模型训练平台(maixhub),支持物体分类和物体识别。
(2)软件环境
Mx-yolov3:(用于在本地训练模型)
Maixpy:(用于在K210上运行脚本)
二、Mx-yolov3使用介绍
1、下载安装Mx-yolov3
2、按照要求下载安装Python3.7.4,在安装时要勾选将python添加到环境变量中的选项。
3、安装完Python后安装Python依赖库与预训练权重。
4、安装tensorflow2.0,CUDA,CUDNN
(1)按要求下载Cuda10.0和Cudnn7.6.4,安装Cuda(选择默认路径),安装完后使用下图命令验证,出现图中显示字样则安装正确。
CUDA 并不是针对于神经网络专门的 GPU 加速库,它面向各种需要并行计算的应用设计。如果希望针对于神经网络应用加速,需要额外安装cuDNN 库。需要注意的是,cuDNN 库并不是运行程序,只需要下载解压 cuDNN 文件,并配置 Path 环境变量即可。下载完成 cuDNN 文件后,解压并进入文件夹,我们将名为“cuda”的文件夹重命名为“cudnn765”,并复制此文件夹。进入 CUDA 的安装路C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0,粘贴“cudnn765”文件夹即可。
(2)安装gpu版tensorflow2.0
A.进入命令行模式
conda info -e (查看所有的虚拟环境)
conda create -n tensorflow2.0 python=3.7 (创建环境)
conda activate tensorflow2.0(进入到该虚拟环境中)
B.然后安装
pip install tensorflow-gpu==2.0
C.然后安装keras
pip install keras -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
D.测试GPU版是否能用(需进入python)
import tensorflow as tf
tensorflow_version = tf.__version__
gpu_avilable = tf.test.is_gpu_available()
print('GPU版本:',tensorflow_version,'\GPU是否可用',gpu_avilable)
显示:GPU版本: 2.0.0 \GPU是否可用 True
参考链接:https://blog.csdn.net/DK_tian/article/details/121647394
以上步骤完成后,使用本地GPU进行模型训练的环境已经搭建完成。
三、Mx-yolov3本地训练的使用
(1)使用手机拍摄一段要识别物体的视频(或者网上找一段视频,也可写脚本用k210摄像头采集),使用DataAssistant软件自动转换为图片,再通过Image_tool转换为识别需要的224*224大小的图片,打开labelimg软件对数据集进行标注。(标注时导入图片文件夹,并新建一个xml文件夹用来保存标注完产生的xml文件,图片和xml文件关系为一一对应)
(2)在Mx-yolov3中按照提示设置参数,选择训练图片地址和训练标签地址,设置训练次数,自动提取种类名称,计算锚点,完成以上步骤即可点击开始训练。
(3)模型训练中,由于采用了GPU所以训练速度较快
(4)训练完成后会产生yolov2.h5和yolov2.tflite两个文件,点击测试模型,导入.h5文件,稍等一会就可以看到测试效果。
(5)点击模型转换按钮,打开NNcase0.1_GUI版本,选择刚才训练出来的yolov2.tflite模型文件,保存地址,量化图片地址(训练图片4~5张),点击开始转换,等待一会,将看到提示模型转换成功,此时我们就得到了可以在k210上运行的.kmodel文件。
三、烧录及运行
(1)打开kflash-gui烧录软件,烧录时选择0x300000地址,将转换得到的yolov2.kmodel模型文件同样烧录到K210上,接下来写一个python脚本运行。
(2)打开maixpy,在maixpy中选择相应的开发板型号,输入脚本代码,选择串口连接开发板,即可运行查看效果。
脱机运行:将转换得到的yolov2.kmodel模型文件、模型文件文件夹内的anchor.txt文件、label.txt文件、程序文件内的物体分类脚本boot.py拷贝到sd卡即可。
四、MaixHub在线训练的使用
以上介绍的是在本地环境中进行训练,也可以到官方提供的MaixHub上进行在线训练,同时在MaixHub上也有很多别人训练完后分享的模型可以下载使用,(经实际使用发现物体分类在线训练精度高,物体识别本地训练精度高)。
(1)新建一个文件夹,加入images,xml,labels三个文件,并按要求压缩上传
(2)将文件按要求上传后,等待其训练完成即可,训练完后下载模型包
压缩包用有python脚本,kmodel文件,label文件以及模型训练结果曲线图
三种简单物体分类模型训练结果曲线图:
物体识别模型训练结果曲线图:
五、总结
经过一段时间学习,参考了许多博客文件视频教程,目前实现了对目标物数据集的采集、转换及标准,数据模型在线训练已经本地训练,脚本联机运行及脱机运行,需注意数据集的采集最好在不同环境不同背景不同角度采集多份,以提高训练完识别的准确度。
下一步打算利用k210物体识别做手眼标定,通过串口通信发送给arduino控制机械臂对目标物体进行识别抓取搬运。(目标效果视频: https://b23.tv/94tclzn)