You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/zh/5-retail/lessons/2-check-stock-device/single-board-computer-objec...

4.7 KiB

从物联网设备调用对象检测器 - 虚拟物联网硬件和树莓派

一旦你的对象检测器发布后,就可以从物联网设备中使用它。

复制图像分类器项目

你的库存检测器的大部分内容与之前课程中创建的图像分类器相同。

任务 - 复制图像分类器项目

  1. 创建一个名为 stock-counter 的文件夹,如果你使用的是虚拟物联网设备,可以在你的电脑上创建;如果你使用的是树莓派,则在树莓派上创建。如果使用虚拟物联网设备,请确保设置虚拟环境。

  2. 设置摄像头硬件。

    • 如果你使用的是树莓派,需要安装 PiCamera。你可能还需要将摄像头固定在一个位置例如将电缆挂在一个盒子或罐子上或者用双面胶将摄像头固定在一个盒子上。
    • 如果你使用的是虚拟物联网设备,则需要安装 CounterFit 和 CounterFit PyCamera shim。如果你打算使用静态图像请捕获一些对象检测器尚未见过的图像如果你打算使用网络摄像头请确保摄像头的位置能够看到你要检测的库存。
  3. 复制制造项目第 2 课中的步骤,从摄像头捕获图像。

  4. 复制制造项目第 2 课中的步骤,调用图像分类器。大部分代码将被重用来检测对象。

将代码从分类器更改为图像检测器

用于分类图像的代码与用于检测对象的代码非常相似。主要区别在于调用 Custom Vision SDK 的方法以及调用的结果。

任务 - 将代码从分类器更改为图像检测器

  1. 删除用于分类图像和处理预测的三行代码:

    results = predictor.classify_image(project_id, iteration_name, image)
    
    for prediction in results.predictions:
        print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
    

    删除这三行代码。

  2. 添加以下代码以检测图像中的对象:

    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 方法来运行对象检测器。然后收集所有概率高于阈值的预测,并将它们打印到控制台。

    与图像分类器每个标签只返回一个结果不同,对象检测器会返回多个结果,因此需要过滤掉概率较低的结果。

  3. 运行这段代码,它将捕获一张图像,发送到对象检测器,并打印出检测到的对象。如果你使用的是虚拟物联网设备,请确保在 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 标签中看到拍摄的图像和这些预测值。

    货架上有 4 罐番茄酱,预测结果为 35.8%、33.5%、25.7% 和 16.6%

💁 你可以在 code-detect/picode-detect/virtual-iot-device 文件夹中找到这段代码。

😀 你的库存计数程序成功了!

免责声明
本文档使用AI翻译服务 Co-op Translator 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而引起的任何误解或误读不承担责任。