【CanMV K230】windows部署AICube,训练模型

【CanMV K230】windows部署AICube,训练模型

  • dotnet sdk的下载链接
    • 配置环境
  • AI_Cube安装训练
    • AI_Cube安装
    • 模型训练
  • 在开发板上运行模型

请添加图片描述

B站视频链接:《K230 实战》windows系统下使用AI_Cube,训练模型


在这里插入图片描述

AI Cube 是由嘉楠科技开发的一款通用视觉 AI 计算平台,该平台能够帮助用户迅速训练 AI 模型,同时可以将训练完毕的模型轻松部署到嘉楠芯片中,如 Canaan k230。使用该平台能够以零代码成本实现项目管理、数据集拆分、数据集分布预览、模型训练评估及模型部署

dotnet sdk的下载链接

dotnet sdk的下载链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配置环境

在这里插入图片描述
在这里插入图片描述
输入sysdm.cpl,进入“高级”-“环境变量”
在这里插入图片描述
在系统变量中:点击“新建”,创建一个新的环境变量,
在这里插入图片描述

变量名为DOTNET_ROOT,变量值为.NET SDK的安装路径,一般的默认安装路径为C:\Program Files\dotnet,所以变量值一般为C:\Program Files\dotnet

在这里插入图片描述
然后,在“系统变量”中找到名为Path的变量,选择编辑
在这里插入图片描述
在这里插入图片描述
保存,确定,然后cmd输入"dotnet",如下图所示即表示成功:
在这里插入图片描述

AI_Cube安装训练

AI_Cube安装

AI_Cube的下载地址
在这里插入图片描述
在这里插入图片描述
下载该包之后,
在这里插入图片描述

在这里插入图片描述
下载该包之后,进行解压,解压后的包目录如下:
在这里插入图片描述
需要注意的是,使用AICube需要去申请许可证,一个许可证管一个月,每个月都需要重新申请,接下来讲解申请的方法:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

developersupport developersupport@canaan-creative.com

在这里插入图片描述
然后,我们需要把这个许可证复制到我们刚才下载的AI_Cube的文件夹内,具体路径如下:

D:\360安全浏览器下载\AI_Cube_V1.3_for_Windows\AI_Cube(找到自己文件夹就行)

在这里插入图片描述

在这里插入图片描述

模型训练

打开 AI Cube 后,在项目选项卡页面的右侧可以看到最近的项目和示例项目两部分,由于是
第一次打开,所以最近的项目一栏为空。AI Cube 为用户提供了 8 个示例项目分别是图像分类、目
标检测、语义分割、OCR 检测、OCR 识别、度量学习、多标签分类以及异常检测。
在这里插入图片描述
我们这里用的是图像分类:目标检测数据集格式如下
在这里插入图片描述
图像格式之前小伙伴给我尺寸了,320*240,再次感谢辽宁第五帅提供的帮助
在这里插入图片描述

小伙伴们自己做的时候,创建新项目就行
在这里插入图片描述
创建后会进入“图像”页面,我使用的是本身提供的图形分类案例。
在这里插入图片描述

我们直接训练,然后看效果

在这里插入图片描述
开始训练等着就行在这里插入图片描述
训练等待中
在这里插入图片描述
训练时间有点长(我用了大概15分钟)
在这里插入图片描述
选练完选职责评估
在这里插入图片描述
选择一个模型点击部署
在这里插入图片描述
点击后,进入之前创建的项目文件夹,可以看到:
在这里插入图片描述
注意:AI_Cube这个包的存放路径不能有中文,不然点击“部署”后不会成功。

在开发板上运行模型

在这里插入图片描述

在此处把我们训练的模型添加上

 kmodel_path="/sdcard/app/tests/ai_test_kmodel/can2_10.0s_20241022193748.kmodel"

别忘了我们训练好的kmodel文件也要放进来
在这里插入图片描述
标签名也改一下哈

 labels=["菠菜","长茄子","红苋菜","胡萝卜","西红柿","西蓝花"]
from libs.PipeLine import PipeLine, ScopedTiming
from libs.AIBase import AIBase
from libs.AI2D import Ai2d
import os
import ujson
from media.media import *
from time import *
import nncase_runtime as nn
import ulab.numpy as np
import time
import utime
import image
import random
import gc
import sys# 自定义分类任务类
class ClassificationApp(AIBase):def __init__(self,kmodel_path,labels,model_input_size=[224,224],confidence_threshold=0.7,rgb888p_size=[224,224],display_size=[1920,1080],debug_mode=0):super().__init__(kmodel_path,model_input_size,rgb888p_size,debug_mode)self.kmodel_path=kmodel_path# 分类标签self.labels=labels# 模型输入分辨率self.model_input_size=model_input_size# 分类阈值self.confidence_threshold=confidence_threshold# sensor给到AI的图像分辨率,宽16字节对齐self.rgb888p_size=[ALIGN_UP(rgb888p_size[0],16),rgb888p_size[1]]# 显示分辨率,宽16字节对齐self.display_size=[ALIGN_UP(display_size[0],16),display_size[1]]self.debug_mode=debug_mode# Ai2d实例,用于实现模型预处理self.ai2d=Ai2d(debug_mode)# 设置Ai2d的输入输出格式和类型self.ai2d.set_ai2d_dtype(nn.ai2d_format.NCHW_FMT,nn.ai2d_format.NCHW_FMT,np.uint8, np.uint8)# 配置预处理操作,这里使用了resize,Ai2d支持crop/shift/pad/resize/affine,具体代码请打开/sdcard/app/libs/AI2D.py查看def config_preprocess(self,input_image_size=None):with ScopedTiming("set preprocess config",self.debug_mode > 0):# 初始化ai2d预处理配置,默认为sensor给到AI的尺寸,您可以通过设置input_image_size自行修改输入尺寸ai2d_input_size=input_image_size if input_image_size else self.rgb888p_sizeself.ai2d.resize(nn.interp_method.tf_bilinear, nn.interp_mode.half_pixel)# build参数包含输入shape和输出shapeself.ai2d.build([1,3,ai2d_input_size[1],ai2d_input_size[0]],[1,3,self.model_input_size[1],self.model_input_size[0]])# 自定义当前任务的后处理,results是模型输出的array列表def postprocess(self,results):with ScopedTiming("postprocess",self.debug_mode > 0):softmax_res=self.softmax(results[0][0])res_idx=np.argmax(softmax_res)gc.collect()# 如果类别分数大于阈值,返回当前类别和分数if softmax_res[res_idx]>self.confidence_threshold:return self.labels[res_idx],softmax_res[res_idx]else:return "", 0.0# 将结果绘制到屏幕上def draw_result(self,pl,res,score):with ScopedTiming("draw result",self.debug_mode > 0):if res!="":pl.osd_img.clear()mes=res+" "+str(round(score,3))pl.osd_img.draw_string_advanced(5,5,32,mes,color=(0,255,0))else:pl.osd_img.clear()# softmax函数def softmax(self,x):exp_x = np.exp(x - np.max(x))return exp_x / np.sum(exp_x)if __name__=="__main__":# 添加显示模式,支持"hdmi"和"lcd"display_mode="hdmi"if display_mode=="hdmi":display_size=[1920,1080]else:display_size=[800,480]# 模型路径,需要用户自行拷贝到开发板的目录下kmodel_path="/sdcard/app/tests/ai_test_kmodel/can2_10.0s_20241022193748.kmodel"# 根据数据集设置,在线训练平台和AICube部署包的deploy_config.json文件中包含该字段labels=["菠菜","长茄子","红苋菜","胡萝卜","西红柿","西蓝花"]# 初始化PipeLinepl=PipeLine(rgb888p_size=[1280,720],display_size=display_size,display_mode=display_mode)pl.create()# 初始化自定义分类器cls=ClassificationApp(kmodel_path,labels,rgb888p_size=[1280,720],display_size=display_size,debug_mode=0)# 配置分类任务的预处理cls.config_preprocess()try:while True:os.exitpoint()with ScopedTiming("total",1):# 获取当前帧数据img=pl.get_frame()# 推理当前帧res,score=cls.run(img)# 绘制结果到PipeLine的osd图像cls.draw_result(pl,res,score)# 显示当前的绘制结果pl.show_image()gc.collect()except Exception as e:sys.print_exception(e)finally:cls.deinit()pl.destroy()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3984.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

力扣每日一题 超级饮料的最大强化能量 动态规划(dp)

来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。 你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到…

RK3568平台开发系列讲解(字符设备驱动篇)注册字符设备

🚀返回专栏总目录 文章目录 一、字符设备初始化二、字符设备的注册和注销沉淀、分享、成长,让自己和他人都能有所收获!😄 📢注册字符设备可以分为两个步骤: 字符设备初始化字符设备的添加一、字符设备初始化 字符设备初始化所用到的函数为 cdev_init(…),在对该函数讲…

在 Scnet 上微调 Stable Diffusion 3 模型

1 AI 算力反馈 1.1 运行的商品名称 我运行的商品为 Stable Diffusion 3 文本到图像高质量生成AI绘画推理服务,运行的环境为 异构加速卡AI 64G。具体创建流程如下: 1.1.1 购买模型服务 首先购买一下模型服务,这样我们就不需要再从 Hugging…

ffmpeg命令——从wireshark包中的rtp包中分离h264

ffmpeg命令——从wireshark包中的rtp包中分离h264 过滤 RTP打开wireshark的RTP 播放器选中流并导出荷载使用 ffmpeg 命令行分离出 h264 过滤 RTP 打开wireshark的RTP 播放器 选中流并导出荷载 使用 ffmpeg 命令行分离出 h264 ffmpeg -i test.raw -vcodec copy -an -f h264 tes…

机器学习(二)——线性回归模型、多分类学习(附核心思想和Python实现源码)

目录 关于1. 基本形式2. 线性回归2.1 单变量线性回归2.2 多元线性回归2.2 对数线性回归 3. 对数几率回归4. 线性判别分析5. 多分类学习5.1 拆分策略 6. 类别不平衡问题X 案例代码X.1 源码X.2 数据集(糖尿病数据集)X.3 模型效果 关于 本文是基于西瓜书&a…

【机器学习】22. 聚类cluster - K-means

聚类cluster - K-means 1. 定义2. 测量数据点之间的相似性3. Centroid and medoid4. Cluster之间距离的测量方式5. 聚类算法的类别6. K-mean7. 如何解决中心初始化带来的影响8. K-means问题:处理空集群9. 离群值的问题10. Bisecting K-means(二分K-means…

【python_pandas_将列表按照某几列进行分组,再求和,按照原列表的字段顺序返回】

说明: 1、按照[“行描述”,”‘公司代码’, ‘科目代码’, ‘预算项目代码’] 进行分组。 2、对“贷方”列进行求和。 3、最后按照之前的表头顺序进行排序,返回结果列表。 #-*- coding:utf-8-*import pandas as pd def consolidate_salary_provisions(l…

【Vue框架】基础语法练习(1)

其实更多知识点已经在Vue.js官网十分清楚了,大家也可以去官网进行更细节的学习 https://cn.vuejs.org/ 说明:目前最新是Vue3版本的,但是Vue2已经深得人心,所以就是可以支持二者合用。它们最大的区别就是Vue3是组合式API&#xf…

公司如何防止员工泄密?十佳措施拒绝泄密,公司防泄密刻不容缓! (2024最强科普)

如何有效防止员工泄露机密? 作为公司的经营者,您是否意识到了商业秘密的重要性?您是否已经知道应该采取什么样的措施才能保护好自己的商业秘密? 员工的泄密行为不仅可能造成重大的经济损失,还会对企业的声誉造成严重…

[大模型]视频生成-Sora简析

参考资料: Sora技术报告https://openai.com/index/video-generation-models-as-world-simulators/4分钟详细揭密!Sora视频生成模型原理https://www.bilibili.com/video/BV1AW421K7Ut 一、概述 相较于Gen-2、Stable Diffusion、Pika等生成模型的前辈&am…

linux中级(防火墙firewalld)

一。firewalld与iptables区别1.firewalld可以动态修改单条规则,不需要像iptables那样,修改规则后必须全部刷新才可生效。firewalld默认动作是拒绝,则每个服务都需要去设置才能放行,而iptables里默认是每个服务是允许,需…

【C/C++】memcpy函数的使用

零.导言 当我们学习了strcpy和strncpy函数后,也许会疑惑整形数组要如何拷贝,而今天我将讲解的memcpy函数便可以拷贝整形数组。 一.memcpy函数的使用 memcpy函数是一种C语言内存函数,可以按字节拷贝任意类型的数组,比如整形数组。 …

软件测试用例设计:从功能测试到边界值分析

功能测试介绍 功能测试是软件测试的一种重要方式,通过对软件的功能进行测试,来验证软件是否满足需求规格说明书中的各项功能要求。例如,对于一个简单的计算器软件,功能测试的用例可能包括加减乘除等基本运算,以及各种特…

[论文阅读]BERT-based Lexical Substitution

BERT-based Lexical Substitution 基于BERT的词汇替换 ACL2019 BERT-based Lexical Substitution - ACL Anthology 以前关于词汇替换的研究倾向于通过从词汇资源(例如 WordNet)中找到目标词的同义词来获得替代候选词,然后根据其上下文对候…

【Java SE 】特殊报错机制 ---> 异常 !

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 异常概念 1.1 算术异常 1.2. 空指针异常 1.3 数组越界异常 2. 异常的分类 2.1 编译时产生的异常 2.2 运行时产生的异常 3. 如何处理异常 3.1 异常…

使用kettle同步数据流程

使用kettle同步数据流程 一.Kettle软件安装(解压即可使用) 1.windows安装解压 pdi-ce-8.2.0.0-342.zip,点Spoon.bat启动kettle 2.Linux安装 把data-integration目录所有文件上传到服务器 二.安装数据库驱动把需要的…

两级运放的电路版图设计

电路版图文件PDK,88出,点击此处获取,24h秒发 PDF文件免费,已绑定 《集成电路版图设计课程》 课程设计(大作业)报告 2023 - 2024 学年第 1 学期 题 目 CMOS运算放大器的电路设计 专 业 …

Windows不支持配置NFS?还有什么注意事项?

我们前面介绍了如果配置Windows Server的NFS共享(Windows Server2012 R2搭建NFS服务器),也介绍了Linux如何配置NFS共享(CentOS 7搭建NFS服务器)。但是,我最近发现一个问题,那就是桌面版的Window…

解锁测试能力密码:直击三问,成就卓越测试

在测试人眼中真的是“万物皆可测”,不管是物体(铅笔,桌子)、终端(手机,电脑)、软件代码、硬件设备等等。那是因为在底层逻辑中,我们搞清楚了其核心本质,总结起来有三个方…

AutoCAD2021

链接: https://pan.baidu.com/s/1GG93ZFRfV_30xTWtDiv3Ew 提取码: dx8i 简介:一键安装,已经破解。支持W7-w10-w11系统64位