tflite对象检测中的Raspberry Pi GPIO引脚问题

问题描述 投票:0回答:1

我已经成功地训练了我的自定义模型,并将其用于对象检测。但是,关于自定义模型上的if-else条件,我遇到了一个小问题。在训练有素的模型中,我只有一个对象/类,当检测到我想使一个gpio引脚变为高电平(LED),并且从网络摄像头馈送中删除该对象时,该引脚应变为低电平。当我运行代码时,如果检测到完美,该引脚确实会变为高电平,但是即使我从网络摄像头Feed中删除了该对象,该引脚也会保持高电平。我使用了以下if-else条件:

if (object_name == labels[int(classes[i])]) and (scores[i]) >= 0.95):
GPIO.output(13, GPIO.HIGH)
else:
GPIO.output(13, GPIO.LOW)

我正在使用Edje Electronics的tflite对象检测代码中的代码:

https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi/blob/master/TFLite_detection_webcam.py

对象检测代码中有两个循环一个 用于网络摄像头,并且 [[第二个 用于在检测到对象时创建边界框。如果在second循环后尝试将gpio引脚设为LOW,则LED指示灯不会点亮。

python raspberry-pi3 tf-lite
1个回答
0
投票
很难看到它的确切原因而没有看到您的代码,但是根据您链接的示例代码,听起来您正在执行以下操作:

# First loop for webcam frame while True: # ... # Second loop for detection / drawing bounding box for i in range(len(scores)): if <your match condition>: GPIO.output(13, GPIO.HIGH) else: GPIO.output(13, GPIO.LOW) # ...

如果这是您的代码,那么您正在做的是始终根据scores列表中的最后一项来打开/关闭LED,这可能不是您想要的。我建议修改代码,如下所示:

# First loop for webcam frame while True: # ... found_match = False # Second loop for i in range(len(scores)): if <your match condition>: found_match = True # ... # Outside the second loop GPIO.output(13, found_match)

这将使您的LED仅在根据您的匹配条件检测到至少一个物体时打开,否则关闭。

如果这不是您的问题,请使用完整的代码更新您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.