手把手在K210上部署自己在线训练的YOLO模型

小白花了两天时间学习了一下K210,将在线训练的模型部署在K210(代码后面给出)上,能够识别卡皮巴拉水杯(没错,卡皮巴拉,情绪稳定,真的可爱!)。数据集是用K210拍摄的图片存储在SD卡中(拍照采集数据集代码后面会给出),然后传至云端训练。将过程记录作为笔记学习,希望能对大家的学习有所帮助。

本文分为在线训练部署代码两部分。

在线训练

在线训练进入MaiHub官网(需要注册账号)。

点击开始训练

如果之前没用过的话,点击新建训练

我是检测卡皮巴拉水杯,所以选的图像检测,只是想试试的小伙伴建议跟我选一样,后面给出的代码可以直接运行。

此时点击准备数据集

没使用过的伙伴直接点击创建数据集就行

新建好数据集后会发现多出了新建那个名字,选择该数据集点击确定就行。

数据集下面有采集数据和标注数据两个步骤,先点击采集数据。

采集数据下面出现5个选项,我采用的是上传图片,因为是用K210搭配摄像头拍摄的图片。然后点击选择图片,会弹出文件框,将采集的图片全选上传。

这个图片我建议用K210搭配摄像头拍摄采集,因为这样的图片更符合实际摄像头读取的图片。
采集代码如下,每按一次按键就拍摄一张图片:

import sensor, lcd, image
from Maix import GPIO
from fpioa_manager import fm
from machine import UART
import time

# 配置LED蓝、红引脚
fm.register(12, fm.fpioa.GPIO0, force=True)
fm.register(14, fm.fpioa.GPIO1, force=True)
LED_B = GPIO(GPIO.GPIO0, GPIO.OUT, value=1) # 构建LED对象
LED_R = GPIO(GPIO.GPIO1, GPIO.OUT, value=1) # 构建LED对象

# 配置按键引脚
fm.register(16, fm.fpioa.GPIO1)
KEY = GPIO(GPIO.GPIO1, GPIO.IN)

# 摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1) # 设置为后置模式

lcd.init() # LCD初始化

# clock = time.clock()

i = 0 # 图像命名索引

while True:
    # clock.tick()
    img = sensor.snapshot()  # 拍摄照片
    lcd.display(img) # 实时显示摄像头图像
    # print(clock.fps()) #打印 FPS
    if KEY.value() == 0: # 按键按下
        # 蓝灯亮提示正在拍照
        LED_B.value(0)
        print(i)
        # 拍摄并保存相关文件,按顺序命名
        file_name = "/sd/example{}.jpg".format(i)
        img.save(file_name)
        LED_B.value(1) # 蓝灯灭提示拍照完成
        i += 1 # 索引递增
        time.sleep(0.5) # 添加短暂延时,防止按键抖动
        

我拍了131张图片,前121张作为训练集,后10张作为验证集。

图片上传完成之后就标注数据

将所有的标签标注完就可以了

基本上都是默认设置,但我使用的是K210,所以部署平台是nncase,之后创建任务开始训练。

部署代码

训练完成后选择手动部署,会下载一个压缩包。压缩包解压后有3个文件如下:

一开始我是将这三个文件放在SD卡进行运行,后来老是报错运行内存不足,试了很多办法(没错,你们试过的方法我都试过,包括增大GC内存,降低分辨率等等)都没用,就自己写了个调用.kmodel的代码,可以直接运行。代码如下:
 

import sensor,lcd,time
import KPU as kpu

#设置摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
input_size = (224, 224)
sensor.set_windowing(input_size)
sensor.set_vflip(1)    #设置摄像头后置

# 新添加
input_size = (224, 224)
labels = ['卡皮巴拉']

lcd.init() #LCD初始化

clock = time.clock()

#1、从Flash加载模型。将模型烧录到开发板Flash。烧录方法参考pdf教程。
#task = kpu.load(0x300000)

#2、从SD加载模型卡上。将kmodel文件通过读卡器拷贝到SD卡。
# task = kpu.load("/sd/facedetect.kmodel")
task = kpu.load("/sd/model-110097.kmodel")
#模型描参数
# anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
anchor = [2.69, 3.02, 3.28, 2.98, 4.56, 4.03, 2.0, 1.72, 3.72, 3.66]
#初始化yolo2网络
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

while(True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img) #运行yolo2网络

    #识别到卡皮巴拉就画矩形表示
    if code:
        for i in code:
            print(i)
            #b = img.draw_rectangle(i.rect())
            pos = i.rect()
            img.draw_rectangle(pos)
            img.draw_string(pos[0], pos[1] + pos[3] + 5, "ka pi ba la", scale=2, color=(255, 0, 0))  # 在方框下方显示标签名字
            img.draw_string(pos[0], pos[1], "%.2f" %(i.value()), scale=2, color=(255, 0, 0), mono_space = False)

    #LCD显示
    lcd.display(img)

    print(clock.fps())   #打印FPS

代码很简单,不懂的地方可以评论交流。

运行效果如下:

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
### 回答1: k210模型训练利用mx-yolo3是一种基于k210芯片的目标检测模型训练方法,使用mx-yolo3框架进行训练。该方法可以实现高效的目标检测,适用于各种场景,如智能家居、智能安防、智能交通等。同时,该方法还可以提高模型的准确性和鲁棒性,使得模型更加稳定和可靠。 ### 回答2: K210是一种基于人工智能技术的芯片,可用于各种复杂的应用,如机器人控制、图像处理、语音识别等。而mx-yolo3则是一种基于深度学习的目标检测模型,可以快速准确地识别图像中的目标,广泛应用于物体识别和智能安防等领域。 在k210模型训练中,mx-yolo3能够帮助实现高效、准确的物体识别和检测,使得智能设备可以更加智能化地进行物体识别和控制。mx-yolo3具有多种优势,与传统的目标检测算法相比,其识别速度更快,准确度更高,对于复杂背景下的目标识别也更加优秀。 在k210模型训练中,mx-yolo3需要结合其他的工具和技术进行训练。首先需要收集大量的图像数据,进行标注和分类,以便模型能够进行深度学习训练。然后需要运用深度学习框架和技术,如keras、tensorflow等,进行模型训练和调优。 同时,对于k210模型训练中使用的mx-yolo3模型,还需要进行合理的参数设置和优化,以确保模型能够在实际应用中稳定、高效地工作。这需要不断地测试、迭代、优化,以不断提高模型的准确度和效率。 总之,k210模型训练利用mx-yolo3能够帮助我们实现高效、准确的物体检测和控制。在实际应用中,其能够帮助我们构建更加智能、高效的智能设备,以更好地服务于人类的各种需求。 ### 回答3: K210是目前市场上最先进的AI芯片之一,它的强大计算能力和高效性能使它成为最受欢迎的开发板之一。K210可在不同的应用领域中发挥出色的作用,如机器人、智能家居和自动驾驶。 MX-YOLO3是一种基于Darknet框架的Yolo对象检测器的最新版本。它是一种轻量级人工智能算法,可实现高效目标检测和跟踪,具有良好的实时性能和精度。 在实际使用K210模型训练利用MX-YOLO3时,需要遵循以下步骤: 第一步,收集训练数据。收集数据集的过程中需要确保数据集的数量足够且具有代表性,这样模型才能够得出准确的结论。 第二步,配置并安装训练环境。为了成功训练MX-YOLO3,需要使用Docker容器管理器安装CUDA和cuDNN等相关依赖项。 第三步,根据需求选择并配置算法模型。对于初学者来说,可以从预训练模型开始,然后进行调整和微调,以获得您所需的精度和性能。 第四步,通过MX-YOLO3进行训练。MX-YOLO3提供了方便和高效的训练函数,帮助快速完成训练过程,并为您生成检测模型文件和权重文件等重要参数。 第五步,测试和优化。完成训练后,您需要对模型进行测试和优化,确保检测精度和性能符合您的要求。 最后,将优化后的模型和权重文件移植到K210芯片上并进行部署即可。在实际部署过程中,您可以根据需要选择不同的调用方式,以达到最优的运行状态和输出效果。 总的来说,K210模型训练利用MX-YOLO3是一项非常有挑战性和具有挑战性的任务,需要掌握训练方法及技巧,才能够成功生成高性能的检测模型。同时,K210芯片已成为AI发展的必要组件,其优越的技术优势和应用价值也将得到进一步的发展和推广。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值