K210 Mx-yolov3模型训练和物体识别

一、简介

       (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)

来源:UncleMie

物联沃分享整理
物联沃-IOTWORD物联网 » K210 Mx-yolov3模型训练和物体识别

发表评论