参考链接: 咸鱼K210体验笔记—模型训练咸鱼箘的博客-CSDN博客k210模型训练
目录
(1). 安装Anaconda3
安装时记得勾选 【Add Anaconda3 to the PATH environment variable】
(2). 下载工具
下载此工程:mirrors / TonyZ1Min / yolo-for-k210 · GitCode
下载ncc工具箱:网盘下载:百度网盘 请输入提取码 提取码:z9fr
将[train_ann.zip]、[train_img.zip]、[ncc_0.1_win.zip]放置在工程根目录,解压到当前文件夹。
(3). 准备环境
1. 打开Anaconda命令行,进入工程根目录
点击开始菜单里的Anaconda
再点击这个命令行工具
##要进入到所下载工程的目录下进行操作!
执行底下操作前,最好先换成国内的镜像源。
中国地区建议先给Anaconda和pip换源
参考:pip/anaconda修改镜像源,加快python模块安装速度_木盏的博客-CSDN博客_python切换镜像源
国内源: 新版ubuntu要求使用https源,要注意。 清华:Simple Index 阿里云:Simple Index 中国科技大学 Simple Index 华中科技大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:Simple Index
pip换源:
<span style="background-color:#333333"><span style="color:#f3b3f8">cd</span> 工程根目录 <span style="color:#f3b3f8">mkdir</span> pip <span style="color:#f3b3f8">cd</span> pip <span style="color:#f3b3f8">cd</span>.>pip.ini</span>
上面命令一句一句输入。然后打开工程很目录中的pip.ini文件,在里面黏贴以下内容:
<span style="background-color:#333333">[global] index-url <span style="color:#b8bfc6">=</span> https://pypi.mirrors.ustc.edu.cn/simple/</span>
尝试用pip下载,出现底下字样,换源成功!
没出现上述字样也可以先跳过,可能也换源成功了!!!
Anaconda换源:
<span style="background-color:#333333">conda config <span style="color:#7575e4">--add</span> channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config <span style="color:#7575e4">--set</span> show_channel_urls <span style="color:#f3b3f8">yes</span></span>
上面命令一句一句输入。
尝试用conda下载一个模块,出现底下字样,换源成功!
没出现上述字样也可以先跳过,可能也换源成功了!!!
2. 新建环境:
务必先在命令窗口输入Python查看电脑安装的Python版本。
命令窗口打开方式:win+r -> 输入cmd。
<span style="background-color:#333333">conda create <span style="color:#7575e4">-n</span> yolo <span style="color:#8d8df0">python</span><span style="color:#b8bfc6">=</span><span style="color:#64ab8f">3</span>.7</span>
##可以根据自己需求更改指令:
yolo是创建的环境名,多个环境之间互不影响;
python=3.7,可以根据自己下载的版本,自行更改。
如果安装了多个Python版本,环境名和Python版本可以随意组合。
输入y等待下载完成
3. 激活环境:
<span style="background-color:#333333">conda activate yolo</span>
4. 安装必要软件包
<span style="background-color:#333333">pip install <span style="color:#7575e4">-r</span> requirements.txt</span>
#如果时间有点长,请耐心等待。
(4). 修改参数
在[configs.json]中修改网络类型,lable标签(如raccoon)和其他参数,注意存放图片(train_img)和存放注释(train_ann)的文件夹名称。
#如果都和下载的工程一样就不用改。
(5). 导入图片
把要训练的图片放入train_img
放入的图片要是224×224的,否则可能训练模型失败!!!!!!!!
1. 打开labelimg.exe
2. 切换目录
Open Dir —> 选择存放图片的文件夹(train_img)
Change Save Dir —> 选择存放注释文件夹(train_ann)
3. 框选图片
Create RectBox —> 框选要标注的物体并输入lable,和上文configs中的相同(如Target)
Save保存后点击下一个(Next Image)
会自动生成标注的目标位置的xml文件保存在注释文件夹中
(6). 开始训练
1. 训练前先换成国内的镜像源。
<span style="background-color:#333333">pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/</span>
\1. pip install 表示通过pip 来安装某种包。
\2. xxx 表示你要安装的包名,比如pipenv,jupyter等等。
\3. -i Simple Index 表示将镜像地址切换为国内,这里切换到了清华。
常用的镜像地址有:
1)Simple Index 阿里云
2)Simple Index 中国科技大学
\3) Simple Index 豆瓣
\4) Simple Index 清华大学
\5) Simple Index 中国科学技术大学
2. 输入命令
<span style="background-color:#333333">python train.py <span style="color:#7575e4">-c</span> configs.json</span>
训练图片越多训练模型越久。
3. 训练成功
等待训练结束,会出现时间命名的文件夹,里面的tflite文件就是训练好的模型。
重命名(如:test.tflite)并复制到工程根目录
(7). 转换kmodel
输入命令
<span style="background-color:#333333">ncc_0.1_win\ncc kmodel.tflite test.kmodel -i tflite -o k210model --dataset train_img</span>
\1. kmodel.tflite:输入文件名称。
\2. test.kmodel: 输出文件名称。
转换完成根目录会出现test.kmodel,即可烧录进k210中运行
烧录kmodel时,要从0x300000开始下载。
测试程序
<span style="background-color:#333333"><span style="color:#b8bfc6">import sensor,image,lcd,time import KPU as kpu lcd.init(freq=15000000) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_windowing((224, 224)) sensor.set_brightness(2) sensor.run(1) clock = time.clock() classes = ['class_1'] task = kpu.load(0x300000) anchor = (1, 1.2, 2, 3, 4, 3, 6, 4, 5, 6.5) a = kpu.init_yolo2(task, 0.17, 0.3, 5, anchor) while(True): clock.tick() img = sensor.snapshot() code = kpu.run_yolo2(task, img) print(clock.fps()) if code: for i in code: a=img.draw_rectangle(i.rect()) a = lcd.display(img) print(i.classid(),i.value()) for i in code: lcd.draw_string(i.x(), i.y(), classes[i.classid()], lcd.RED, lcd.WHITE) lcd.draw_string(i.x(), i.y()+12, '%f1.3'%i.value(), lcd.RED, lcd.WHITE) else: a = lcd.display(img) a = kpu.deinit(task)</span></span>