edge lmpulse建立的模型部署到OPEN MV H7 PLUS信号传递问题
-
import sensor, image, time import network, usocket, ujson from servo import Servos from machine import I2C, Pin i2c = I2C(sda=Pin('P5'), scl=Pin('P4')) # 初始化摄像头和PWM输出口 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) tim = pyb.Timer(4, freq=50) channel = tim.channel(1, pyb.Timer.PWM, pin=P5.Pin.board.PA10) # 加载模型和标签 model_path = "/trained_model/ei_image_classification" labels_path = "/trained_model/labels.txt" with open(labels_path, "r") as f: labels = [line.strip() for line in f.readlines()] # 加载模型到OpenMV中 net = tf.load(model_path, load_to_fb=True) # 设置舵机初始位置 channel.pulse_width_percent(5) # 识别循环 while(True): img = sensor.snapshot() # 对图像进行预处理以及模型推理 input_tensor = tf.keras.preprocessing.image.img_to_array(img) input_tensor = np.expand_dims(input_tensor, axis=0) input_tensor /= 255. output_tensor = net(input_tensor).numpy()[0] for i, label in enumerate(labels): if label == "shouji" and output_tensor[i] > 0.6: # 控制舵机旋转180度 channel.pulse_width_percent(10) time.sleep(1) channel.pulse_width_percent(5)
在做垃圾分拣项目——智能家电垃圾桶通过OPENMV 识别到物品,控制1号舵机旋转垃圾桶,控制2号舵机旋转控制托盘。
遇到的问题:我想知道edge lmpulse建立的模型部署到OPEN MV H7 PLUS识别到标签数据,怎么控制ST90S舵机旋转一定角度;
求具体代码,万分感谢!
-
你看一下shuji是第几个标签,然后shuji_index就是几。(从0开始数)
import sensor, image, time import network, usocket, ujson from servo import Servos s1 = Servo(1) # P7 s2 = Servo(2) # P8 # 初始化摄像头和PWM输出口 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) net = None labels = None try: # load the model, alloc the model file on the heap if we have at least 64K free after loading net = tf.load("trained.tflite", load_to_fb=uos.stat('trained.tflite')[6] > (gc.mem_free() - (64*1024))) except Exception as e: print(e) raise Exception('Failed to load "trained.tflite", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')') try: labels = [line.rstrip('\n') for line in open("labels.txt")] except Exception as e: raise Exception('Failed to load "labels.txt", did you copy the .tflite and labels.txt file onto the mass-storage device? (' + str(e) + ')') s1.angle(0) clock = time.clock() shuji_index = 0 while(True): img = sensor.snapshot() for obj in net.classify(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()) img.draw_rectangle(obj.rect()) if obj.output()[shuji_index] > 0.6: s1.angle(180) else: s1.angle(0) time.sleep(1)
-
@kidswong999
我用的官方配的舵机扩展版。这种情况怎么搞。
-
@kidswong999 你这个OPENMV 用的传感器扩展板吗,如果用扩展版怎么搞
-
@nga5 不同的问题单独发帖子。
-
@kidswong999 在 edge lmpulse建立的模型部署到OPEN MV H7 PLUS信号传递问题 中说:
s1 = Servo(1) # P7
s2 = Servo(2) # P8
你这个是定义到open mv 上的吗。还是说舵机扩展版上的
-
@kidswong999 只需要改标签对吧,其他的不用动
-
@nga5 Servo(1)是OpenMV上P7引脚连接的舵机,Servo(2)是OpenMV上P8引脚连接的舵机,
-
@kidswong999 edge lmpulse建立的模型是通过你给的代码直接到进去的吗,没看到模型导入的代码,只看到了标签的
-
tf.load("trained.tflite", 这里是导入模型
-
@kidswong999 为什么我的显示伺服未定义,我需要怎么办
-
为什么报错,求解答
-
@kidswong999 为什么显示未定义
-
@nga5 我上面的代码只是演示,你需要自己编写调试代码。