目標
通過在Vision Board部署openMV實現(xiàn)垃圾分類。
一、基礎(chǔ)設(shè)置
(一)配置攝像頭
Vision Board自帶攝像頭,按照電路圖使用瑞薩的FSP可以很方便的配置好。首先在stack中new一個Capture Engine Unit(r_ceu)。
然后如下配置:
同樣配置好TF卡、RW007等設(shè)備,保存配置生成基礎(chǔ)文件。
(二)配置openMV
直接在RT-Studio上設(shè)置好相關(guān)選項。
順便把SDRAM等打開。保存工程,打開工程執(zhí)行編譯后下載到Vision Board開發(fā)板,檢查下openMV是否正常運行。
MicroPython v1.13-148-ged7ddd4 on 2020-11-03; RA8 with RT-Thread Type "help()" for more information. >>>
二、模型選擇
因為時間問題,來不及自己訓練模型。于是在gayhub上找了幾個星比較多的模型。
當然也可以自己收集相關(guān)圖像使用edgeimpulse訓練模型,相關(guān)[教程在此](Open MV Cam H7 Plus | Edge Impulse Documentation)。
本次直接將labels.txt 和 rubbish.tflite拷貝到Vision Board開發(fā)板的TF卡中,edgeimpulse生成的py腳本直接用上。
三、功能實現(xiàn)
edgeimpulse生成的py腳本內(nèi)容如下:
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]))
四、結(jié)果輸出
通過openMV連接Vision Board開發(fā)板,運行上述py腳本。
找來一個水瓶和舊電池。
結(jié)果如下,這個水瓶形狀不規(guī)則,所以……
五、總結(jié)
Vision Board開發(fā)板在部署openMV的時候,240X240的圖像FPS可以達到10左右,說明性能還是比較強大。
同時,因為瑞薩制程,運行案例時候,MCU發(fā)熱量控制的相當不錯,很是驚喜。
RT-Thread集成了openMV后,可以很方便的部署一些簡單的圖像識別和AI應(yīng)用,背靠openMV社區(qū),大有可為。
審核編輯 黃宇
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
模型
+關(guān)注
關(guān)注
1文章
3226瀏覽量
48806 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1285瀏覽量
40079 -
openMV
+關(guān)注
關(guān)注
3文章
39瀏覽量
9810
發(fā)布評論請先 登錄
相關(guān)推薦
評論