4.7 KiB
从物联网设备调用对象检测器 - 虚拟物联网硬件和树莓派
一旦你的对象检测器发布后,就可以从物联网设备中使用它。
复制图像分类器项目
你的库存检测器的大部分内容与之前课程中创建的图像分类器相同。
任务 - 复制图像分类器项目
-
创建一个名为
stock-counter
的文件夹,如果你使用的是虚拟物联网设备,可以在你的电脑上创建;如果你使用的是树莓派,则在树莓派上创建。如果使用虚拟物联网设备,请确保设置虚拟环境。 -
设置摄像头硬件。
- 如果你使用的是树莓派,需要安装 PiCamera。你可能还需要将摄像头固定在一个位置,例如,将电缆挂在一个盒子或罐子上,或者用双面胶将摄像头固定在一个盒子上。
- 如果你使用的是虚拟物联网设备,则需要安装 CounterFit 和 CounterFit PyCamera shim。如果你打算使用静态图像,请捕获一些对象检测器尚未见过的图像;如果你打算使用网络摄像头,请确保摄像头的位置能够看到你要检测的库存。
-
复制制造项目第 2 课中的步骤,从摄像头捕获图像。
-
复制制造项目第 2 课中的步骤,调用图像分类器。大部分代码将被重用来检测对象。
将代码从分类器更改为图像检测器
用于分类图像的代码与用于检测对象的代码非常相似。主要区别在于调用 Custom Vision SDK 的方法以及调用的结果。
任务 - 将代码从分类器更改为图像检测器
-
删除用于分类图像和处理预测的三行代码:
results = predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
删除这三行代码。
-
添加以下代码以检测图像中的对象:
results = predictor.detect_image(project_id, iteration_name, image) threshold = 0.3 predictions = list(prediction for prediction in results.predictions if prediction.probability > threshold) for prediction in predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
这段代码调用预测器的
detect_image
方法来运行对象检测器。然后收集所有概率高于阈值的预测,并将它们打印到控制台。与图像分类器每个标签只返回一个结果不同,对象检测器会返回多个结果,因此需要过滤掉概率较低的结果。
-
运行这段代码,它将捕获一张图像,发送到对象检测器,并打印出检测到的对象。如果你使用的是虚拟物联网设备,请确保在 CounterFit 中设置了合适的图像,或者选择了网络摄像头。如果你使用的是树莓派,请确保摄像头对准了货架上的物品。
pi@raspberrypi:~/stock-counter $ python3 app.py tomato paste: 34.13% tomato paste: 33.95% tomato paste: 35.05% tomato paste: 32.80%
💁 你可能需要调整
threshold
的值以适应你的图像。你将能够在 Custom Vision 的 Predictions 标签中看到拍摄的图像和这些预测值。
💁 你可以在 code-detect/pi 或 code-detect/virtual-iot-device 文件夹中找到这段代码。
😀 你的库存计数程序成功了!
免责声明:
本文档使用AI翻译服务 Co-op Translator 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而引起的任何误解或误读不承担责任。