# ext-XEduHub **Repository Path**: hduzn/ext-xedu-hub ## Basic Information - **Project Name**: ext-XEduHub - **Description**: XEduHub作为一个深度学习工具库,集成了许多深度学习领域优质的SOTA模型 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-11-17 - **Last Updated**: 2024-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XEduHub XEduHub作为一个深度学习工具库,集成了许多深度学习领域优质的SOTA模型,本仓库为XEduHub的Mind+图形化用户库。 - 更多功能说明请参考:[XEduHub官方文档](https://xedu.readthedocs.io/zh/master/xedu_hub/introduction.html#mind-xeduhub) ![](./python/_images/featured.png) # 机器学习图像分类案例之手势识别 ## 1、流程 - 1、使用浦育的在线可视化工具训练模型得到模型文件 - 2、使用浦育的在线算力将上一步得到的模型文件转换为.onnx格式的通用模型 - 3、在Mind+中使用xedu-hub图形化扩展进行推理 得到结果 ## 2、训练模型 - 打开浦育网站,点击”AI体验“,打开”图像分类“: https://www.openinnolab.org.cn/pjlab/aifrontlab ![image-20240527161220730](手势识别.assets/image-20240527161220730.png) - 打开摄像头采集图像,或上传提前准备好的图片到不同分类下 - 数据采集完成后,点击训练,训练完毕后测试效果 - 效果测试正常后,下载模型,得到model.zip压缩包,解压得到.json和.bin模型文件 ![image-20240527153020180](手势识别.assets/image-20240527153020180.png) ![image-20240527153103755](手势识别.assets/image-20240527153103755.png) ## 3、转换为通用模型 - 打开网址:https://www.openinnolab.org.cn/pjlab/project?id=647dc2a0d6c5dc73107c7449&sc=630d8bd4bba1fd64f1f0a5dc#public - 点击网页右上角“克隆”按钮,将此模板项目克隆到个人账号下的项目 ![image-20240527153138202](手势识别.assets/image-20240527153138202.png) - 将克隆后的项目文件夹中的mode.json,model.onnx,model.weights.bin三个文件依次删除 ![image-20240527153318261](手势识别.assets/image-20240527153318261.png) - 将上一步训练模型得到的model.zip解压得到的model.json和model.weights.bin两个文件上传到平台目录中 ![image-20240527153252779](手势识别.assets/image-20240527153252779.png) - 双击main.ipynb,然后点击“连接”按钮,选择“CPU版“,等待启动完成 ![image-20240527153406255](手势识别.assets/image-20240527153406255.png) - 显示”服务已连接“时,点击“运行所有”按钮,程序就会将刚才上传的模型文件转换为onnx ![image-20240527153456777](手势识别.assets/image-20240527153456777.png) - 等待几分钟运行结束提示已经转换为onnx模型,回到项目文件列表,点击刷新列表按钮,即可得到转换后的model.onnx文件,点击下载按钮将文件下载到电脑上。 ![image-20240527153609153](手势识别.assets/image-20240527153609153.png) ## 4、在Mind+ 行空板上进行推理 ### 4.1、在行空板上安装xedu库 **注:此步骤是将xedu的python库装到行空板上,不是装电脑上,因此需要在所有行空板上执行一次且只需要一次即可,跟使用的电脑没有关系。** - 联网。由于代码在行空板上运行,因此需要在行空板上安装xedu库,因此需要让行空板先连接WiFI可以上网,行空板联网教程:https://www.unihiker.com.cn/wiki/webmenu ![image-20240527164751077](手势识别.assets/image-20240527164751077.png) - 打开Mind+,保证右上角Python模式,左上角为“模块”界面,点击左下角“扩展”,在“官方库”中加载”行空板“ ![image-20240527160859232](手势识别.assets/image-20240527160859232.png) ![image-20240529202331713](手势识别.assets/image-20240529202331713.png) - 行空板通过USB线连接电脑,待行空板开机准备完成后,点击菜单中的“连接远程设备”,连接行空板,直到连接成功(终端后面显示“行空板”说明连接成功) > 注意:行空板开机之后需要约40秒才能连接,如果遇到连接 出现问题,查看官方文档常见问题按提示解决( [https://www.unihiker.com.cn/wiki/FAQ)](https://www.unihiker.com.cn/wiki/FAQ) ![image-20240529200638136](手势识别.assets/image-20240529200638136.png) - 切换到“代码”版块,保证当前Mind+已经连接到行空板(终端后面显示”行空板“),然后点击“库管理”,窗口左上角应该显示“行空板”,如果没有显示则回到上一步先连接行空板。 ![image-20240531151907564](手势识别.assets/image-20240531151907564.png) ![image-20240531152124664](手势识别.assets/image-20240531152124664.png) - 在PIP模式中输入```xedu-python```,选择“清华大学”源,后点击运行,此时将通过网络将xedu库安装到当前连接的行空板上,等待运行结束(提示“命令运行完成”)之后返回“模块”编程界面。 > 注意: > > 1、需要保证此窗口左上角显示“行空板”,如果没有显示,说明上一步连接行空板未成功,此时安装则是将库安装到了电脑而非行空板。 > > 2、如果下方窗口显示多行Requirement alread satisfied:xxxx,说明库已经被安装了,无需安装。 > > 3、下方窗口以WARNING开头的一行提示是警告,不是错误,不需要管。 > > 4、如果下方窗口显示多行Warning: Retrying.................[Errno -3]......,说明未按照上一步正确让行空板连接WiFi,没有连接WiFi无法安装库,回到4.1操作。 > > ![image-20240531151407404](手势识别.assets/image-20240531151407404.png) ![image-20240531171833049](手势识别.assets/image-20240531171833049.png) ### 4.2、在Mind+中加载xedu积木用户库 **注:此步骤是将xedu库的图形化积木库装到电脑上,因此只要需要用Mind+编写xedu的程序的时候就需要操作。** - 在用户库中搜索xeduhub,加载XEduHub库,加载后返回,可以在积木区看到。 > 注: > > 1、用户库会保存到Mind+的项目文件(.mp)中,因此如果打开了一个含有xeduhub库的项目文件,则会自动从项目文件中加载到Mind+,无需去用户库搜索。 > > 2、如果弹出提示要安装依赖库,由于4.1已经安装到行空板了,因此此处点击”取消“即可。 > > ![image-20240531155458003](手势识别.assets/image-20240531155458003.png) ![image-20240527164855434](手势识别.assets/image-20240527164855434.png) ![image-20240529195843379](手势识别.assets/image-20240529195843379.png) ### 4.3、加载模型 - 复制onnx模型文件到项目中,此处同时复制了一张测试用的图片,方便接下来的案例演示 ![image-20240527160259151](手势识别.assets/image-20240527160259151.png) ### 4.4、编写程序运行 #### 4.4.1、编写程序-图片推理 - 编写 程序如下,使用xeduhub扩展,使用MMEdu模型,使用自定义模型,文件名填写上一步上传的模型文件名 - 使用上一步上传的测试图片作为待检测图片 - 创建一个变量,按照”训练模型”时的顺序输入标签编号对应的名称 - 从推理结果中提取“标签”的序号,然后从列表中取出对应的值 > 注:如果运行程序提示ModuleNotFoundError: No module named 'XEdu',说明xedu库未正确安装或当前未连接行空板,重复按本文4.1章节操作解决。 > > ![image-20240531151431312](手势识别.assets/image-20240531151431312.png) ![image-20240527160659897](手势识别.assets/image-20240527160659897.png) #### 4.4.2、编写程序-行空板屏幕显示 - 将结果显示到行空板屏幕上的程序及效果: ![image-20240527174053748](手势识别.assets/image-20240527174053748.png) #### 4.4.3、编写程序-摄像头实时识别 - 使用摄像头识别的程序,注意需要先将摄像头插到行空板USB口上,并尽量保持摄像头背景不发生变化 - 扩展中添加OpenCV扩展 - 编写程序,打开摄像头,从摄像头中抓取图片,然后给xedu推理,最后用unihiker显示到屏幕上 ![image-20240527180703114](手势识别.assets/image-20240527180703114.png) ## 5、常见问题 ## 5.1、运行程序时提示ModuleNotFoundError: No module named 'XEdu'怎么办? 解决方法:说明当前连接的行空板上xedu库未正确安装或当前未连接行空板,回到本文4.1章节操作解决。 ![image-20240531151431312](手势识别.assets/image-20240531151431312.png) ## 5.2、安装库时提示Warning: Retrying.................[Errno -3]......怎么办? 解决方法:说明行空板未连接WiFi,没有连接WiFi无法安装库,回到本文4.1章节操作。 ![image-20240531151407404](手势识别.assets/image-20240531151407404.png) ## 5.3、安装库时提示Requirement alread satisfied:xxxx怎么办? 解决方法:说明当前库已经被安装了,无需重新安装,关闭窗口即可。 ![image-20240531160149806](手势识别.assets/image-20240531160149806.png) ## 5.4、安装库时提示WARNING:You are using pip version....怎么办? 解决方法:WARNING开头的提示语都是警告,不是报错,不用管。 ![image-20240531160149806](手势识别.assets/image-20240531160149806.png) ## 5.5、安装库时提示ReadTimeoutError:HTTPSConnectionPool...Read timed out.怎么办? 解决方法:网络连接不通畅,可以切换此窗口右上角源后再次尝试。 ![image-20240531171927383](手势识别.assets/image-20240531171927383.png) ## 5.6 在行空板上使用关键点识别出现 【段错误(Segmentation fault)】怎么办? 解决方法:由于行空板上的python3.7版本安装依赖不同,回到本文4.1章节操作,安装指定版本依赖。 - pip install onnx==1.13.0 - pip install onnxruntime==1.13.1 ![image_20240722164414](手势识别.assets/image_20240722164414.png) ## 6、其他出错怎么办? - Python中,如果出错,则会在“终端”中打印信息,因此,排查错误主要依耐“终端”输出的信息 - 可以将出错信息复制关键词 ,在行空板官方文档中搜索查找是否有对应解决方案:[行空板官方文档](https://www.unihiker.com.cn/wiki/FAQ) - 可以将“自动生成”的代码和“终端”输出的信息,发给各种大语言模型分析问题,例如chatGPT、文心一言、讯飞星火等 - 加入行空板官方群查找解决办法 # Python模式 # 积木 ![](./python/_images/blocks.png) ## 示例一 - 图片推理 ![](./python/_images/example.png) ## 示例二 - 摄像头视频流推理 ![](./python/_images/example2.png) ## 示例三——图像分类手势识别 - [**【点击此处查看详细图文教程】**](示例/手势识别.md) ![](./示例/手势识别.assets/image-20240527180703114.png) # 支持列表 |主板型号|实时模式|ArduinoC|MicroPython|Python|备注| |-----|-----|:-----:|-----|-----|-----| |UNO|||||| |Micro:Bit|||||| |mpython|||||| |Nano|||||| |Leonardo|||||| |Mega2560|||||| |firebeetleesp32|||||| |telloesp32|||||| |行空板||||√|| |PC||||√|| # 其他 ## 测试所用的依耐库版本 需要在库管理中先安装以下Python库(如果使用行空板,则需要先让行空板联网,然后Mind+连接行空板,再安装以下Python库),再加载图形化用户库。 ```bash "xedu-python": "0.1.6", "rapidocr_onnxruntime": "1.3.7", "joblib":"1.4.2", "scikit-learn":"1.3.2" ``` # 更新日志 V0.0.1 基础功能完成 V0.0.2 增加异常抛出问题 V0.0.3 调整积木逻辑 V0.0.4 调整积木逻辑,优化输入框,补足所有模型 V0.0.5 拆分初始化积木 V0.0.6 去除默认输出图片,调整原始输出积木,增加保存图片积木 V0.0.7 增加原始输出积木取值积木 V0.0.8 推理完成中增加wf对象判断生成代码 V0.0.9 调整初始化代码生成位置 V0.1.0 去除config中的依耐库,需要手动加载