IoT-For-Beginners 实操:把 Custom Vision 水果品质检测器扩展为多水果分类器 📅 发布时间:2026/9/16 23:39:40 👁 浏览次数: IoT-For-Beginners 实操把 Custom Vision 水果品质检测器扩展为多水果分类器【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners在 Azure Custom Vision 上训练出能区分成熟/未成熟单类水果的图像分类器之后下一步是让它学会同时识别多种水果与蔬菜。本文以 IoT-For-Beginners 课程中Train a fruit quality detector一课的训练作业为骨架完整继承作业的目标、挑战与评估标准并借助课程仓库中的实操命令、数据组织规范和设备端调用源码说明如何为多水果尤其是外观相似的苹果与番茄扩展训练、测试与迭代优化最终获得可被 IoT 设备实际调用的多标签分类模型。作业背景从单类水果走向多类水果分类本课程第 15 课4-manufacturing/lessons/1-train-fruit-detector/README.md的核心任务是使用 Azure Custom Vision 训练一个图像分类器用于区分成熟与未成熟的水果课程示例为成熟/过熟香蕉与未熟香蕉。而本作业assignment.md在此基础上提出了一个自然的进阶要求在课程中你只使用了一种水果来训练分类器而分类器实际上可以被训练来识别多种水果——只是成功率会因水果种类以及成熟与未成熟阶段之间的差异而不同。这意味着分类器不仅仅能回答这张图是熟的还是生的还能回答这张图是苹果还是番茄、是熟的苹果还是生的番茄这类多标签问题。作业同时给出一个重要的经验性提醒对于成熟过程中会变色的水果图像分类器的效果可能不如颜色传感器因为图像分类器通常基于灰度图像工作而不是全彩色图像。这一点直接决定了后续收集训练数据与评估模型时的预期管理。图像分类器与颜色传感器的能力边界作业特别强调了一个容易被忽视的工程判断分类工具的选择取决于水果的成熟信号。如果某种水果的成熟主要体现在颜色变化如青番茄变红、青香蕉变黄那么一个简单的颜色传感器光电传感器检测色块可能比图像分类器更高效、更廉价——它在生产线上只需要判断颜色是否达标。图像分类器的优势在于能够捕捉更细微的外观差异擦伤、腐烂、形状、纹理、局部病斑等这些不是单一颜色阈值能描述的。这也是课程中光学分拣机用杠杆或气流把绿番茄拨入废料箱演进到 ML 分拣的原因。因此当作业要求用其他水果训练你的分类器看看效果如何尤其是外观相似的水果例如苹果和番茄时实际上是在训练你建立正确的预期对颜色驱动的成熟信号模型可能表现一般对形状、纹理等结构化特征驱动的类别区分模型则能发挥价值。前置回顾Custom Vision 训练资源与项目搭建要完成多水果扩展先要具备上一课搭建好的训练环境。课程 README 给出了完整的 Azure CLI 创建流程多水果训练同样依赖这两类资源1. 训练资源Custom Vision Trainingaz cognitiveservices account create --name fruit-quality-detector-training \ --resource-group fruit-quality-detector \ --kind CustomVision.Training \ --sku F0 \ --yes \ --location location2. 预测资源Custom Vision Predictionaz cognitiveservices account create --name fruit-quality-detector-prediction \ --resource-group fruit-quality-detector \ --kind CustomVision.Prediction \ --sku F0 \ --yes \ --location location要点说明location替换为创建资源组时使用的区域F0是免费层级 SKU足以完成模型创建、训练与开发用途如果你已有任一认知服务使用免费账号可用S0SKU--yes表示同意认知服务的条款与条件。随后在 CustomVision.ai 门户中创建名为fruit-quality-detector的项目选择Classification项目类型、Multiclass分类类型、Food域并把资源绑定到fruit-quality-detector-training。多水果训练数据采集、打标与组织规范课程 README 对单类水果的训练数据给出了明确规范多水果扩展时这些约束同样适用且因标签增多更需要严格遵守每类标签至少 5 张图片官方建议 30 张以上效果更佳图片应为 png 或 jpeg小于 6MBiPhone 拍摄的高分辨率 HEIC 图需转换并缩小分类器实际在227×227分辨率下训练与推理Custom Vision 虽可接收最大 10240×10240 的图片但会压缩因此被分类对象应尽量占满画面否则缩小后会小到无法辨识背景保持一致或广泛多样避免出现与标签强相关的背景物品课程引用了一个著名反例皮肤癌分类器因为癌变痣照片中都带有尺子导致模型几乎 100% 识别的是尺子而非病灶。仓库在 4-manufacturing/lessons/1-train-fruit-detector/images 下按training/ripe、training/unripe、testing/ripe、testing/unripe目录组织了 50 余张成熟/未熟香蕉图片训练集每类 25 张、测试集每类 2 张这是数据组织方式的直接范本。多水果扩展的打标策略不要只打ripe/unripe两个标签而应把种类 × 成熟度展开为独立标签。以作业建议的苹果和番茄为例可组织为标签含义示例图片apple-ripe成熟的苹果红苹果apple-unripe未成熟的苹果青苹果tomato-ripe成熟的番茄红番茄tomato-unripe未成熟的番茄绿番茄之所以强调外观相似的水果苹果与番茄同为圆形、红色/绿色可互换是因为这能最真实地检验模型是否学到了果实本身的纹理、光泽、萼片等判别特征而不是仅仅学到了红色熟的单一颜色规则。若手头没有不同成熟度的同种水果课程也允许退而求其次用两种不同种类的水果甚至猫和狗来验证训练流程。训练与快速测试概率输出才是关键数据上传打标后在 Custom Vision 门户选择Quick Training完成训练。训练完成后使用之前预留的测试图片绝不能是训练集图片进行快速测试并观察每个标签的输出概率。课程给出了一个典型结果截图展示模型对单张香蕉图输出unripe 98.9% / ripe 1.1%这样的概率分布images/banana-unripe-quick-test-prediction.png以及成熟/未熟香蕉成对预测的效果图images/bananas-ripe-vs-unripe-predictions.png。关键认知是ML 模型不给二元答案而是给概率。例如模型对一张图片预测ripe 99.7%、unripe 0.3%业务代码再取最高概率标签做决策。多水果场景下你应当关注的不只是最高概率标签还包括次高概率如果一张青苹果图片被预测为apple-unripe 52%、tomato-unripe 44%说明模型在相似外观类别间产生了混淆——这正是作业要你评估和记录的分类器在不同水果上表现如何的核心证据。设备端如何消费这些概率分类器训练好后IoT 设备端通过 Custom Vision Prediction SDK 调用模型。仓库中的真实实现位于 4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi/fruit-quality-detector/app.pyfrom azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient from msrest.authentication import ApiKeyCredentials prediction_url prediction_url prediction_key prediction key parts prediction_url.split(/) endpoint https:// parts[2] project_id parts[6] iteration_name parts[9] prediction_credentials ApiKeyCredentials(in_headers{Prediction-key: prediction_key}) predictor CustomVisionPredictionClient(endpoint, prediction_credentials) image.seek(0) results predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f{prediction.tag_name}:\t{prediction.probability * 100:.2f}%)这段代码展示了从预测 URL 解析endpoint、project_id、iteration_name再逐条打印标签名: 概率百分比的完整调用链——多水果模型发布后同一套代码即可返回所有水果标签的概率无需改动设备端逻辑只需保证新迭代已发布发布与预测 URL 的获取步骤见 4-manufacturing/lessons/2-check-fruit-from-device/README.md。评估标准从能训练到能说清表现作业提供了明确的评分矩阵这也是你自我验收多水果扩展是否合格的检查清单标准优秀合格需改进为多种水果训练分类器能够为多种水果训练分类器能够为一种额外水果训练分类器无法为更多水果训练分类器评估分类器的工作效果能够正确评价分类器在不同水果上的表现能够观察并针对表现提出建议无法评价分类器的表现注意第二行的核心动词是评价comment/observe。作业不要求分类器达到某个精度阈值而是要求你形成可复现的评估方法对每类水果分别测试若干张新图片、记录概率分布、指出哪些类别容易混淆例如苹果/番茄、并解释原因形状相似、颜色相似、训练图片不足、背景干扰等。迭代优化用预测图片重训模型如果多水果模型在某些类别上表现不佳课程 README 给出了标准优化手段——用预测图片重训每次通过门户的快速测试Quick Test做预测时图片与结果都会被存储在 Custom Vision 门户的Predictions标签页中为每张被错误分类的图片修正正确的标签将这些图片加入训练集重新训练生成新的迭代 Iteration再用新的测试图片验证。这个闭环对多水果场景尤其重要苹果与番茄这类相似外观类别的边界往往要靠模型答错的真实样本来持续纠正。改进模型的其他方向Precision、Recall、AP 指标解读与优化策略可参考课程 README 的 Review Self Study 部分。总结本作业是对图像分类实战能力的进阶检验在保留上一课 Custom Vision 完整训练链路资源创建 → 项目搭建 → 数据打标 → Quick Training → 概率测试的基础上把单一成熟/未成熟二分问题扩展为多水果 × 多成熟度的多标签问题。完成本作业后你将掌握三项可迁移能力一是为多类别组织高质量训练数据的规范二是通过概率分布而非单一答案来评估分类器真实表现的方法三是用错误预测图片重训实现模型迭代的工程闭环——这些能力将直接服务于后续课程中在 IoT 设备端调用分类器、并依据预测结果驱动执行器如 LED 指示或分拣机构的应用场景。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考