RT-Threadwilliam hill官网
直播中

大菠萝Alpha

3年用户 674经验值
擅长:嵌入式技术
私信 关注
[作品]

【Vision Board创客营连载体验】基于Vision Board的垃圾分类

目标

通过在Vision Board部署openMV实现垃圾分类。

一、基础设置

(一)配置摄像头

Vision Board自带摄像头,按照威廉希尔官方网站 图使用瑞萨的FSP可以很方便的配置好。首先在stack中new一个Capture Engine Unit(r_ceu)
CEU.png

然后如下配置:

FSP.png

同样配置好TF卡、RW007等设备,保存配置生成基础文件。

(二)配置openMV

直接在RT-Studio上设置好相关选项。
openmv.png

顺便把SDRAM等打开。保存工程,打开工程执行编译后下载到Vision Board开发板,检查下openMV是否正常运行。
OP.png

看看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 = "trained.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脚本。

找来一个水瓶和旧电池。
pc.png

结果如下,这个水瓶形状不规则,所以……
RE.png

五、总结

Vision Board开发板在部署openMV的时候,240X240的图像FPS可以达到10左右,说明性能还是比较强大。
同时,因为瑞萨制程,运行案例时候,MCU发热量控制的相当不错,很是惊喜。
RT-Thread集成了openMV后,可以很方便的部署一些简单的图像识别和AI应用,背靠openMV社区,大有可为。

更多回帖

发帖
×
20
完善资料,
赚取积分