(保姆级详细教学,看了包会用的)云端自动生成OpenMV神经网络模型,实现目标识别

针对openmv使用云端生成神经网络模型过程中,可能出现的报错,还有0特征点现象,所以我将手把手从一而终教会你整个流程,解决出现的报错等问题,保证能成功训练出神经网络模型,实现目标识别。

(1)准备好OpenMV4 Plus(低版本的openmv可能算力不够不支持)

(2)打开openmv软件如图所示,点击新数据集

在磁盘里创建一个新的文件夹,用来放置一会要存放的数据集:

(这里找个自己喜欢的位置存放即可)

 (3)选择之后,点击红框框起来的地方

 然后创建需要识别的对象的列表名称:(类似于这样)

(4)在列表中对所需要的识别进行拍照取样:(需要连上openmv并打开,对着你需要识别的目标点击红框进行拍照取样,可以选择拍150~200张,理论上拍照角度越多,并且保证其特征明显,这样训练出来的模型准确率越高,识别效果越好)

(5)依次对你需要识别的目标拍完照后,在浏览器上搜索Login - Edge Impulse,进行注册。

 注册完成后,点击一下头像,出现这个下拉菜单,点击红框创建新项目。

只需在方框中填入你要创建的文件名字,然后点击创建。

创建完成后会进入这个页面,点击红框keys

然后复制它的API Key

 再将你复制到的API Key输入进去,就可实现将拍摄的数据集上传到该云端。

 

 (6)接下来一步很关键,我看了很多教程包括星瞳科技,都没有人说这一步,是我自己琢磨出来的,包括有些教程最后没有出来结果,也是因为没有这一步——也就是所说的框图

在Data acquisition界面里,点击红框2:(我这里显示的是0,是因为我已经全部框完了,给每个照片都附上了标签)

 红框2里会显示你拍过的照片,需要你对你拍摄的目标画框给标签

(这个还是相对人性化的设计,框了一个之后后面AI会自动帮你框住,不过有时候不大准确需要手动调整,其他的只要不是变换识别目标时,需要重新给标签,就只需要库库点击save即可,)

 (当然,要是实在是不想点,也可以点击 upgrade plan,花费400美刀每月,即可获得全AI服务)

 画完框之后,你也可以在这里看到你的标签和里面的目标个数,你可以对里面画框不满意的选择删除或者重新画框

(7) 找到impulse design ,点击creat impulse,会进入下面这个界面:(我的impulse design下面的子列表开头是绿圈圈,是因为我已经操作过了,要是没操作过是灰圈圈)

然后点击 Add block,选第一个推荐即可

添加完之后会自动出现输出特性,对应你画框的标签,这个一定要出现的,要是没出现特征,后续操作会出错,出不来结果。如果出现了你设立的标签,点击save,进行下一步

 (8)点击image,根据你的需求选择是使用RGB还是灰度,在下方Color depth中更改即可,记得保存。默认是RGB。接着点击Generate features生成特征

 点击生成特征,出现success就说明生成好了,右边是样本特征的分布的图式。

(9)点击红框,出现下面这个界面,不需要更改model,然后点击下面的训练

训练的时候很可能会报错,比如说我上图出现了failed,它报错说我训练的时间会大于20min,这怎么办呢。1.可以更改图像的长宽大小,把它变小点,处理的就会更快一点2.减少训练周期,把数值调小一点

 通过以上两种发放,主要还是第二种,可以使得我们训练的时间在20min以内,不会报错了,我们再训练一次,出现有图框里的内容,说明成功了,我们只需要静等云端自训练即可。

训练完成之后会出现训练效果,我这个因为有的特征并不是很明显,会和别的出现相似的部分,所以训练效果才79%。

 (10)训练完成后就属于大众操作了,如图点击,可以观察到训练情况,快速找到识别困难的目标

可以选择如图点击,查找无法正确识别的原因,也可以选择删除识别不出的数据。

(11)选做,如图点击,创建版本,方便后续迭代(12)最后一步,如图点击,在方框内搜索openmv,选择之后点击build,云端会自动将训练结果转化成适用的openmv的文件。

生成的文件会自动下载下来,里面有三个,将.py文件在openmv中生成运行即可。

了解云端训练的参数,和它生成的结果,然后就可以自行对代码进行更改,比如说加串口功能等等。

如果出现报错,可以试着注释掉几行代码,可能会更适用。

<think>好的,我现在需要帮助用户了解如何在OpenMV上部署YOLOv3或YOLOv5模型。首先,我得回顾一下已有的信息。用户提供的引用中提到了YOLOv5的获取、OpenVINO的转换流程以及环境配置,还有相关的GitHub仓库。不过,OpenMV和OpenVINO是不同的平台,可能需要不同的步骤。 首先,我需要确认OpenMV的硬件和软件限制。OpenMV摄像头通常资源有限,处理能力较弱,内存和存储空间也不大。直接部署YOLO这样的深度学习模型可能面临挑战,因为YOLO模型通常需要较高的计算资源。 接下来,用户提到的引用主要涉及OpenVINO,这是Intel的工具,用于优化和部署模型到Intel硬件上。而OpenMV是基于ARM Cortex-M处理器的,可能需要不同的优化方法,比如模型量化、剪枝或者转换为适合微控制器的格式,如TensorFlow Lite Micro。 然后,我需要考虑模型转换步骤。YOLOv5通常是PyTorch模型,需要转换为OpenMV支持的格式。可能需要先将模型转换为ONNX,再转换为TensorFlow Lite,并进行量化以减少模型大小和计算需求。不过,TensorFlow Lite是否支持OpenMV呢?需要查证OpenMV的文档是否支持TFLite模型推理。 另外,用户提供的GitHub仓库是关于OpenVINO和YOLOv5的,可能不直接适用于OpenMV。可能需要寻找专门针对OpenMV的YOLO部署案例或教程。如果现有资料不足,可能需要建议用户考虑其他嵌入式平台,如树莓派,或者使用OpenMV配合外部计算单元(如Kendryte K210)来运行模型。 此外,模型优化是关键。YOLOv5有不同的版本,如nano(YOLOv5n)可能更适合资源受限的设备。需要建议用户选择轻量模型,并进行适当裁剪,减少输入分辨率,以降低计算负担。 最后,集成到OpenMV的步骤可能涉及编写MicroPython脚本,调用模型进行推理。需要确保OpenMV的固件支持所需的算子,或者使用预编译的库。如果OpenMV本身不支持,可能需要使用其H7型号或其他更高性能的版本,或者考虑硬件扩展。 总结步骤可能括:1. 选择或训练轻量YOLO模型;2. 转换模型OpenMV兼容格式;3. 优化模型以适应资源限制;4. 编写推理代码并部署到OpenMV。同时,需要提醒用户注意性能瓶颈和可能的准确率下降,建议结合实际应用场景调整模型参数。</think>### 如何在OpenMV上部署YOLOv3/YOLOv5模型? #### 1. **可行性分析** OpenMV摄像头基于微控制器(如STM32),资源有限(内存通常为1MB以下,主频约几百MHz)。直接部署YOLO等复杂模型需满足以下条件: - **模型轻量化**:需使用轻量版本(如YOLOv5n)或剪枝量化后的模型[^2]。 - **框架支持**:OpenMV支持MicroPython,但原生不支持TensorFlow/PyTorch,需依赖预编译的轻量推理引擎(如TensorFlow Lite Micro)[^3]。 #### 2. **部署步骤** ##### (1) 模型转换与优化 1. **导出为ONNX格式**:将YOLO模型(PyTorch)转换为ONNX: ```python torch.onnx.export(model, input_tensor, "yolov5n.onnx") ``` 2. **转换为TensorFlow Lite**:使用工具(如`onnx-tf`)将ONNX转为TFLite: ```bash onnx-tf convert -i yolov5n.onnx -o yolov5n.tflite ``` 3. **量化压缩**:采用8位整数量化减少模型体积: ```python converter = tf.lite.TFLiteConverter.from_keras_model(model) converter.optimizations = [tf.lite.Optimize.DEFAULT] tflite_quant_model = converter.convert() ``` ##### (2) OpenMV环境配置 - **固件要求**:确保OpenMV固件版本支持TFLite(需H7或更高性能型号)[^4]。 - **依赖库加载**:将转换后的`.tflite`模型和标签文件存入OpenMV的SD卡。 ##### (3) 推理代码实现 ```python import tf, sensor, image # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) # 加载模型 net = tf.load("yolov5n_quant.tflite") labels = ['cat', 'dog', 'car'] # 自定义标签 while True: img = sensor.snapshot() detections = net.detect(img, threshold=0.5) for d in detections: img.draw_rectangle(d.rect(), color=(255,0,0)) img.draw_string(d.x(), d.y(), labels[d.class_id()]) ``` #### 3. **性能优化建议** - **输入分辨率**:降低模型输入尺寸(如从640x640改为128x128)。 - **算子裁剪**:移除YOLO中非必要的层(如Focus层)。 - **硬件加速**:外接Kendryte K210等AI协处理器分担计算任务。 #### 4. **限制与替代方案** - **实时性**:OpenMV直接推理YOLOv5n帧率可能低于1 FPS,建议: - 改用MobileNet-SSD等更轻量模型。 - 通过WiFi将图像传输至服务器处理[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值