
使用 Azure Custom Vision 训练水果品质检测图像分类器IoT-For-Beginners 制造与加工篇实战指南【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners导读本篇文章对应开源课程IoT-For-Beginners制造与加工篇4-manufacturing的第一课训练一个水果品质检测器。文章以微软 Azure Custom Vision 云服务为主线系统讲解如何利用机器学习图像分类技术用一小批成熟/未成熟水果照片训练出可区分果实好坏的模型并完成创建资源、上传打标、训练、测试与重训的完整闭环。读完本文你将掌握从零训练一个可被 IoT 设备通过 Web API 调用的图像分类器的全流程并理解其背后的迁移学习与预测概率原理。本文主体依据课程英文原文与捷克语翻译版整理4-manufacturing/lessons/1-train-fruit-detector/README.md及其翻译translations/cs/4-manufacturing/lessons/1-train-fruit-detector/README.md并结合仓库内的后续课程与示例代码进行纵深补充。背景AI/ML 如何进入农产品分拣流水线养活全球人口是一项高成本工程其中最大的成本之一是人力。因此农民越来越多地转向自动化与 IoT 工具来压缩劳动力开支。人工采摘既费时又繁重在发达国家正逐步被机械取代但机械采摘带来一个副作用——采摘过程中的分拣能力下降。并非所有作物都会均匀成熟。以番茄为例当藤上大部分果实已可收获时仍可能有部分果实是绿色的。虽然提前采收是一种浪费但对农民而言用机器一次收完、之后再剔除未成熟果实往往更便宜也更简单。自动采摘的普及把分拣环节从田间转移到了工厂食物在长长的传送带上行进由人工挑出不符合质量标准的果实。尽管机械让采摘更便宜人工分拣仍是成本。下一阶段的演进是让机器来分拣——第一代分拣机使用光学传感器检测颜色驱动执行机构杠杆或气流把绿色番茄弹入废料箱红色番茄则继续沿传送带网络前进。最新一代分拣机则利用 AI 与机器学习模型被训练用于区分好果实与坏果实不仅能识别绿番茄 vs 红番茄这类明显的颜色差异还能捕捉暗示病害或碰伤bruising的细微外观差异。这正是本课训练的水果品质检测器要解决的问题场景。机器学习图像分类的核心原理先回顾传统编程与机器学习的本质区别。传统编程是输入数据 → 套用算法 → 得到输出。例如在运输篇课程中把 GPS 坐标与地理围栏交给 Azure Maps 提供的算法得到点在内/外的结果——数据越多输出越多。机器学习则把这个过程倒过来从数据和已知输出出发算法从数据中学习产出被称为机器学习模型machine learning model简称模型的训练结果之后把新数据交给模型就能得到新输出。 机器学习算法从数据中学习的过程叫训练training输入与已知输出合称训练数据training data。例如给模型几百万张未成熟香蕉图片作为输入训练数据、输出标记为unripe再给几百万张成熟香蕉图片、输出标记为ripeML 算法就会基于这些数据建立模型。此后给它一张新的香蕉图片它就能预测新图属于成熟还是未成熟。 ML 模型的输出结果称为预测prediction。关键点在于ML 模型并不返回二值答案而是返回概率。例如模型看到一张香蕉图预测ripe概率 99.7%、unripe概率 0.3%代码再选取最高概率项判定该香蕉为成熟。用于识别图像的这类 ML 模型被称为图像分类器image classifier——给它带标签labelled的图片它就能基于这些标签对新图片进行分类。 这是对 ML 的简化表述。现实中还有不需要标签输出的训练方式如无监督学习。课程还推荐了《ML for Beginners》24 课学习路径可在原文档中查看对应链接。迁移学习用少量图片训练分类器要成功训练一个图像分类器理论上需要数百万张图片。但实际上一旦你拥有了一个在数百万甚至数十亿张各类图片上训练好的分类器就可以借助迁移学习transfer learning用一小批新图片对它进行再训练并获得出色的效果。 迁移学习就是把已有 ML 模型学到的知识迁移到基于新数据建立的新模型上。一个在广泛图片上训练过的分类器其内部机制非常擅长识别形状、颜色和模式迁移学习让模型把识别图像局部的已有能力用来识别新的图像。可以把它想象成儿童形状书一旦认识了半圆、长方形和三角形就能根据这些形状的组合识别出帆船或猫——图像分类器识别形状迁移学习则教会它什么组合构成一艘船、一只猫或一根成熟的香蕉。这类训练模型通常需要大量算力一般依赖 GPUGraphics Processing Units图形处理器——与让游戏画面出色的同一类硬件。通过云计算你可以按需租用配备 GPU 的高性能计算时间只在需要时获取算力。认识 Azure Custom VisionCustom Vision是微软提供的一项云端图像分类器训练工具允许仅用少量图片训练分类器。你可以通过 Web 门户、Web API 或 SDK 上传图片并为每张图片打上代表其分类的标签tag然后训练模型、测试效果满意后可发布模型的版本供 Web API 或 SDK 调用。 每个分类只需 5 张图片即可训练 Custom Vision 模型但图片越多效果越好每个分类至少 30 张图片能获得更理想的结果。Custom Vision 隶属于微软名为Cognitive Services认知服务的 AI 工具套件。这些 AI 工具既可开箱即用也可配合少量训练涵盖语音识别与翻译、语言理解、图像分析等能力并以 Azure 服务的形式提供免费层。 免费层足够完成创建模型→训练→用于开发调试的全流程。免费层的具体配额与限制原文档引用了微软官方《Custom Vision 限制与配额》页面建议以官方最新说明为准。任务一创建认知服务资源使用 Custom Vision 前需要先用 Azure CLI 在 Azure 中创建两个认知服务资源一个用于 Custom Vision 训练Training一个用于 Custom Vision 预测Prediction。为该项目创建名为fruit-quality-detector的资源组Resource Group。运行以下命令创建免费的 Custom Vision 训练资源az cognitiveservices account create --name fruit-quality-detector-training \ --resource-group fruit-quality-detector \ --kind CustomVision.Training \ --sku F0 \ --yes \ --location location其中location替换为创建资源组时使用的区域。该命令会在资源组中创建名为fruit-quality-detector-training的 Custom Vision 训练资源使用F0SKU免费层--yes表示同意认知服务的条款与条件。 如果你已有任一认知服务占用免费账户请改用S0SKU。运行以下命令创建免费的 Custom Vision 预测资源az cognitiveservices account create --name fruit-quality-detector-prediction \ --resource-group fruit-quality-detector \ --kind CustomVision.Prediction \ --sku F0 \ --yes \ --location location同样替换location。该命令创建名为fruit-quality-detector-prediction的预测资源使用F0SKU免费层--yes表示同意条款。两个资源分开创建的原因在于 Custom Vision 的训练与推理/预测是两个独立服务形态训练端负责跑训练任务预测端负责承载已发布模型供外部应用实时调用后文发布与调用一节会用到预测资源。任务二创建图像分类项目打开 Custom Vision 门户并登录你用于 Azure 账户的 Microsoft 账户。按官方《构建分类器快速入门》中创建新项目的指引新建 Custom Vision 项目门户 UI 可能变化官方文档始终是最新参考将项目命名为fruit-quality-detector。创建项目时务必选择此前创建的fruit-quality-detector-training资源并配置项目类型Classification分类分类类型Multiclass多分类域DomainFood食物✅ 可以花点时间熟悉 Custom Vision 门户中图像分类器的各项界面元素。任务三训练你的图像分类项目训练分类器需要多张好/坏品质的水果照片例如成熟与过熟overripe的香蕉。 这类分类器能对任何物体分类手边没有不同品质的水果时用两种不同的水果、甚至猫和狗都可以数据收集的要点构图与背景理想情况下每张图片只包含果实本身背景应保持一致或具有足够多样性。务必避免背景中出现与成熟/未成熟相关的特异性元素。背景陷阱警示不要为每个标签准备与该分类对象无关的特有背景或道具否则分类器可能只是按背景分类。原文档举了一个真实案例某皮肤癌分类器用正常痣与癌变痣训练而癌变痣照片中都放着用于量尺寸的尺子结果该分类器几乎 100% 准确识别的是图片里的尺子而非癌变痣。分辨率约束图像分类器以极低分辨率运行。Custom Vision 可接受最大 10240×10240 的训练与预测图片但模型实际在227×227的尺寸上训练和运行大图会被缩小到这个尺寸。因此被分类对象必须在图中占据足够大的面积否则在缩小后的图上可能过小。数量与格式每个标签至少 5 张图片用于训练越多越好另外还需若干张测试图片。以香蕉为例取 2 根成熟香蕉从几个不同角度各拍若干张至少 7 张5 张训练、2 张测试未成熟香蕉重复同样流程。最终至少应有 10 张训练图成熟、未成熟各 ≥5和 4 张测试图成熟、未成熟各 2。图片应为 png 或 jpeg 格式、小于 6MBiPhone 拍摄的高分辨率 HEIC 图片需要转换并可能缩小。成熟与未成熟图片数量应大致均衡。 如果你手头没有成熟和未成熟两种状态的果实可以使用不同种类的水果或任意两个手边可用的物体。仓库的4-manufacturing/lessons/1-train-fruit-detector/images目录下提供了成熟/未成熟香蕉的示例图片其中training/ripe、training/unripe各约 25 张训练样例testing/ripe、testing/unripe各 2 张测试样例可直接取用。具体操作步骤按官方《构建分类器快速入门》中上传并标记图片的指引上传训练图片将成熟水果标记为ripe未成熟水果标记为unripe。按官方快速入门中训练分类器的指引在已上传图片上训练分类器。训练类型选择Quick Training快速训练。随后分类器开始训练通常需要几分钟完成。 如果在训练期间决定把水果吃掉请先确保留有足够的测试图片测试你的图像分类器训练完成后可以给分类器一张新图片来检验其表现。按官方《测试你的模型》文档操作使用此前专门留出的测试图片——不要使用任何训练过的图片。把手上所有测试图片都试一遍观察各标签的概率分布。预测以概率形式输出代码侧取最高概率标签作为最终判定。重新训练你的图像分类器测试时分类器可能给出不符合预期的结果。要理解原因图像分类器基于图片特定特征与某标签匹配的概率来做预测它并不真正理解图片内容——它不知道什么是香蕉也不理解什么让香蕉成为香蕉而非帆船。因此可以用它判错的图片来改进模型。每次用快速测试Quick Test做预测时图片与结果都会被保存下来对应 Custom Vision 门户的Predictions预测标签页这些图片可用于重新训练模型。按官方文档中将预测图片用于训练的指引为每张预测错误的图片打上正确标签后重新训练模型。重训完成后再用新的图片测试效果。在 Custom Vision 中每次训练都会产生一个新的迭代iteration如 Iteration 1、Iteration 2……迭代机制用于跟踪不同数据集上训练出的模型版本快速测试时可通过下拉框选择迭代便于跨版本对比结果。从模型到 IoT 设备与下一课的衔接本课训练出的模型会在下一课4-manufacturing/lessons/2-check-fruit-from-device/README.md中被 IoT 设备实际调用。从仓库源码可以清楚看到这条消费链路模型需先发布Publish迭代发布时指定本课创建的fruit-quality-detector-prediction预测资源随后门户会给出形如https://location.api.cognitive.microsoft.com/customvision/v3.0/Prediction/id/classify/iterations/Iteration2/image的预测 URL 以及必须随请求携带的Prediction-Key——只有通过该密钥校验的应用才能调用模型其余请求会被拒绝。IoT 侧调用可参考4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi/fruit-quality-detector/app.py与code-classify/virtual-iot-device/fruit-quality-detector/app.py它们使用 Custom Vision 的 Python SDKCustomVisionPredictionClient先从预测 URL 中解析出 endpoint、项目 ID 与已发布迭代名再用Prediction-Key包装成凭据创建预测客户端最终把摄像头捕获的图片发送到云端完成分类。也就是说本课训练的fruit-quality-detector模型正是后续 IoT 端到端检测流程的大脑。评估指标、挑战与作业评估指标训练完成后门户会展示Precision精确率、Recall召回率和APAverage Precision平均精确率等指标用于量化模型质量官方《评估分类器》文档对这些指标有详细解释。 挑战想一想——如果用一张草莓图片、一张充气香蕉、一个穿香蕉套装的人甚至黄色卡通角色例如辛普森一家的人物去测试这个只见过真实香蕉的模型会发生什么试着用图像搜索找些图片来预测并观察结果。作业将分类器扩展训练到多种水果与蔬菜评估其在外观相似水果如苹果与番茄上的表现。可参考本课的作业说明4-manufacturing/lessons/1-train-fruit-detector/assignment.md评分标准涵盖能否为多种水果完成训练与能否正确评价分类器在不同水果上的表现。注意以颜色变化作为成熟标志的水果图像分类器可能不如颜色传感器有效因为分类器通常基于灰度图像运行而非全彩图像。小结与资源清理本课完成了水果品质检测器的训练闭环从理解 ML 图像分类与迁移学习的原理到用 Azure CLI 创建训练/预测双资源再到门户中建项目Classification/Multiclass/Food、收集与上传打标图片、Quick Training 训练、测试、用错误样本重训。这套能力随后将支撑 IoT 设备端拍照→云端分类→判定果实品质的实时质检应用见制造篇其余三课。本课及后续课程会使用部分云资源。如果不想继续完成制造篇的后续课程建议按仓库根目录的 clean-up.md 清理相关 Azure 资源避免产生不必要的费用。制造篇整体脉络与四课之间的依赖关系可参见 4-manufacturing/README.md。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考