从您的IoT设备调用对象检测器 - 虚拟IoT硬件和Raspberry Pi 一旦您的对象检测器发布,就可以从您的IoT设备使用它。 复制图像分类器项目 大部分的库存检测器与您在之前的课程中创建的图像分类器相同。 任务 - 复制图像分类器项目 在您的计算机上创建一个名为 的文件夹(如果您正在使用虚拟IoT设备),或者在您的Raspberry Pi上创建。如果您正在使用虚拟IoT设备,请确保设置了一个虚拟环境。 设置相机硬件。 如果您使用的是Raspberry Pi,您需要安装PiCamera。您可能还想将相机固定在一个位置,例如,通过将电缆悬挂在盒子或罐子上,或者使用双面胶带将相机固定在盒子上。
一旦您的对象检测器发布,就可以从您的IoT设备使用它。
大部分的库存检测器与您在之前的课程中创建的图像分类器相同。
在您的计算机上创建一个名为stock-counter的文件夹(如果您正在使用虚拟IoT设备),或者在您的Raspberry Pi上创建。如果您正在使用虚拟IoT设备,请确保设置了一个虚拟环境。
设置相机硬件。
重复制造项目第2课中的步骤以从相机捕获图像。
重复制造项目第2课中的步骤以调用图像分类器。这部分代码的大部分将被重用于检测对象。
用于分类图像的代码与用于检测对象的代码非常相似。主要区别在于自定义视觉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方法以运行对象检测器。然后收集所有概率高于阈值的预测,并将其打印到控制台。
与每次仅返回一个标签结果的图像分类器不同,对象检测器将返回多个结果,因此需要过滤掉概率较低的结果。
运行此代码,它将捕获一张图像,发送给对象检测器,并打印出检测到的对象。如果您使用的是虚拟IoT设备,请确保在CounterFit中设置了适当的图像,或者选择了我们的网络摄像头。如果您使用的是Raspberry Pi,请确保相机指向货架上的物品。
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的预测选项卡中查看所拍摄的图像以及这些值。

您可以在code-detect/pi或code-detect/virtual-iot-device文件夹中找到此代码。
您的库存计数程序成功了!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。