目标
通过在Vision Board部署openMV实现垃圾分类。
一、基础设置
(一)配置摄像头
Vision Board自带摄像头,按照电路图使用瑞萨的FSP可以很方便的配置好。首先在stack中new一个Capture Engine Unit(r_ceu)。
然后如下配置:
同样配置好TF卡、RW007等设备,保存配置生成基础文件。
(二)配置openMV
直接在RT-Studio上设置好相关选项。
顺便把SDRAM等打开。保存工程,打开工程执行编译后下载到Vision Board开发板,检查下openMV是否正常运行。
看看micropython信息:
MicroPython v1.13-148-ged7ddd4 on 2020-11-03; RA8 with RT-Thread Type "help()" for more information. > >>
二、模型选择
因为时间问题,来不及自己训练模型。于是在gayhub上找了几个星比较多的模型。
当然也可以自己收集相关图像使用edgeimpulse训练模型,相关[教程在此](Open MV Cam H7 Plus | Edge Impulse Documentation)。
本次直接将labels.txt 和 rubbish.tflite拷贝到Vision Board开发板的TF卡中,edgeimpulse生成的py脚本直接用上。
三、功能实现
edgeimpulse生成的py脚本内容如下:
import sensor, image, time, os, tf sensor.reset() # Reset and initialize the sensor. sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) sensor.set_windowing((240, 240)) # Set 240x240 window. sensor.skip_frames(time=2000) # Let the camera adjust. net = "rubbish.tflite" labels = [line.rstrip('n') for line in open("labels.txt")] clock = time.clock() while(True): clock.tick() img = sensor.snapshot() # search the image... for obj in tf.classify(net, img, min_scale=1.0, scale_mul=0.8, x_overlap=0.5, y_overlap=0.5): print("**********nPredictions at [x=%d,y=%d,w=%d,h=%d]" % obj.rect()) predictions_list = list(zip(labels, obj.output())) for i in range(len(predictions_list)): print("%s = %f" % (predictions_list[i][0], predictions_list[i][1]))
四、结果输出
通过openMV连接Vision Board开发板,运行上述py脚本。
找来一个水瓶和旧电池。
结果如下,这个水瓶形状不规则,所以……
五、总结
Vision Board开发板在部署openMV的时候,240X240的图像FPS可以达到10左右,说明性能还是比较强大。
同时,因为瑞萨制程,运行案例时候,MCU发热量控制的相当不错,很是惊喜。
RT-Thread集成了openMV后,可以很方便的部署一些简单的图像识别和AI应用,背靠openMV社区,大有可为。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !