使用 Azure Custom Vision 训练水果质量检测图像分类器:IoT 农产品分拣实战指南

使用 Azure Custom Vision 训练水果质量检测图像分类器:IoT 农产品分拣实战指南 使用 Azure Custom Vision 训练水果质量检测图像分类器IoT 农产品分拣实战指南【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南以本仓库制造Manufacturing章节第一课为核心系统讲解如何利用机器学习图像分类技术区分成熟与未成熟水果并手把手带你使用 Azure Custom Vision 完成数据集准备、模型训练、测试与迭代重训练的全流程。读完本文你将掌握图像分类与迁移学习的基本原理能够熟练创建 Custom Vision 训练/预测资源、配置图像分类项目并产出一个可被后续 IoT 设备课程直接调用的水果质量检测模型。为什么需要 AI 来分拣农产品养活全球人口并不容易尤其是要以所有人都负担得起的价格做到这一点。在农业成本中劳动力占据相当大的比例因此农民越来越依赖自动化与 IoT 工具来压缩人工成本。手工采摘劳动强度大正在被机械取代尤其是在较发达国家。但机械化收割有一个代价——在收获的同时分拣食物的能力变弱了。并非所有作物都会均匀成熟。以番茄为例当大多数果实已经可以采摘时藤蔓上可能仍有未成熟的青果。虽然提前采收会造成浪费但对农民来说用机器一次性收完、之后再剔除未熟果品反而更便宜、更容易。自动化收割的普及把农产品分拣从田间转移到了工厂。食物沿长长的传送带行进由成组的人手工挑拣、移除不达标的果实。机械让采收变便宜了但人工分拣仍然是一笔成本。第一代自动分拣机使用光学传感器检测颜色再驱动执行机构杠杆或压缩空气把青番茄弹入废料箱红番茄则继续在传送带网络上通行。这类设备可以内置于收割机也可以部署在加工厂。最新一代分拣机则利用 AI 与 ML训练好的模型不仅能依据青 vs 红这类明显色差判断好坏还能捕捉疾病或瘀伤导致的细微外观差异。延伸思考要让光学传感器在工厂或田间正常工作需要什么样的环境条件如稳定的光照这正是后续引入 ML 模型的原因之一——模型对光照、角度等干扰的鲁棒性更强。图像分类与机器学习传统编程如何被反转传统编程的模式是输入数据 → 套用算法 → 得到输出。例如在前一个项目中输入 GPS 坐标和地理围栏geofence套用 Azure Maps 提供的算法就能得到点在围栏内/外的结果——数据越多输出越多。机器学习把这一过程反转了你从数据和已知输出出发让算法从数据中学习。学习完成后得到的产物被称为机器学习模型ML model此后给它新的输入数据它就能产生新的输出。训练training算法从数据中学习的过程训练数据training data输入及其已知输出的集合预测prediction模型基于新输入产出的结果。以香蕉为例把数百万张未熟香蕉图片作为输入、输出标签设为unripe再拿数百万张熟香蕉图片、标签设为ripeML 算法据此创建模型。此后给模型一张新香蕉图片它就能预测这张图属于ripe还是unripe。需要特别注意的是ML 模型给出的不是二值答案而是概率。例如模型可能对一张香蕉图预测ripe概率 99.7%、unripe概率 0.3%代码再选取概率最高的类别作为最终判定。下图展示了成熟与未熟香蕉的预测概率分布这种输入带标签图片、按标签对新图片分类的模型被称为图像分类器image classifier。说明这是对机器学习的简化描述。现实中还存在无监督学习等不需要标签输出的训练范式。若想系统入门 ML可以学习微软的《Machine Learning for Beginners》24 课课程。迁移学习用小数据集训练高精度分类器要从零训练一个优秀的图像分类器理论上需要数百万张图片。但实践中存在一条捷径迁移学习transfer learning——把已在海量图片上训练好的现有模型的认知迁移到一个基于新数据训练的模型上。一个图像分类器在被训练识别广泛多样的图片后其内部特征对形状、颜色、图案的识别能力已经很强。迁移学习让模型复用识别图像局部的能力再去识别全新的图片类别。这就像儿童形状书一旦认识了半圆、矩形、三角形就能根据组合方式认出帆船或猫——图像分类器识别形状而迁移学习教会它什么组合构成一艘船、一只猫或一根熟香蕉。同时应了解训练这类模型需要大量算力通常依赖GPU游戏主机中让画面惊艳的同类硬件。通过云服务你可以在需要时按需租用带 GPU 的高性能计算资源用完即止这正是本课采用云服务训练模型的原因。认识 Azure Custom VisionCustom Vision 是微软 Azure 提供的云端图像分类器训练工具其核心卖点是只用少量图片即可训练出可用的分类器。你可以通过 Web 门户、Web API 或 SDK 上传图片并为每张图片指定一个表示其分类的标签tag然后训练模型、测试效果满意后即可发布可通过 Web API 或 SDK 访问的模型版本。最少每个分类 5 张图片即可训练但图片越多效果越好官方建议至少达到每分类 30 张以获得更可靠的结果。Custom Vision 隶属于微软的Cognitive Services系列 AI 工具。该系列包含语音识别与翻译、语言理解、图像分析等能力大多数以无需训练即可用或少量训练即可定制的方式提供并在 Azure 上设有免费层。免费层的配额足以完成模型创建、训练以及后续开发调试具体配额限制可查阅 Custom Vision 官方Limits and quotas文档不同区域与账号的免费额度可能不同。在仓库配套的英文原版课程中Custom Vision 是整条制造学习路径的第一环本课训练模型 → 第 2 课从 IoT 设备调用模型 → 第 3 课将检测器部署到边缘设备 → 第 4 课用传感器触发检测。实战第一步创建 Cognitive Services 资源使用 Custom Vision 前需要在 Azure 中通过Azure CLI创建两个 Cognitive Services 资源一个用于 Custom Vision训练一个用于 Custom Vision预测。创建资源组为该项目创建一个名为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参数说明参数值说明--namefruit-quality-detector-training训练资源名称--resource-groupfruit-quality-detector资源组名称--kindCustomVision.Training资源类型Custom Vision 训练--skuF0定价层F0为免费层--yes—同意 Cognitive Services 的条款与条件--locationlocation替换为你创建资源组时使用的区域创建免费预测资源az cognitiveservices account create --name fruit-quality-detector-prediction \ --resource-group fruit-quality-detector \ --kind CustomVision.Prediction \ --sku F0 \ --yes \ --location location该命令会创建名为fruit-quality-detector-prediction的预测资源使用免费层F0。location同样替换为资源组所在区域。提示如果你已有的 Azure 免费账号正在使用任何一项 Cognitive Services 服务则请改用S0SKU付费层以避免免费层冲突。实战第二步创建图像分类项目打开 Custom Vision 门户CustomVision.ai使用与 Azure 账号关联的 Microsoft 账号登录。创建新项目Custom Vision 的 Web 界面可能随版本更新而变化具体以门户实际布局为准项目名称fruit-quality-detector资源选择上一步创建的fruit-quality-detector-training训练资源项目类型Project TypesClassification分类分类类型Classification TypesMulticlass多类每张图只属于一个类别域DomainsFood食品域针对食物图像优化。创建完成后建议花一点时间熟悉 Custom Vision 门户中与图像分类器相关的界面布局。实战第三步收集并上传训练图片训练图像分类器需要多张好与坏的水果图片分别打上标签。本课以**成熟香蕉ripe与过熟/未熟香蕉unripe**为例——不过分类器可以学习任意类别如果没有不同品质的水果用两种不同的水果甚至猫和狗的照片也行。图片拍摄与选择要点主体纯净理想情况下每张图只呈现水果本身背景保持统一或者覆盖足够多样的背景。切记不要出现只有熟果或未熟果背景里才有的特定物品。警惕背景误导曾有一个皮肤癌分类器用正常痣和癌变痣训练而所有癌变样本旁边都放了尺子量尺寸——结果模型对识别图片中的尺子几乎 100% 准确而非识别癌变痣。这个反例说明分类器可能偷懒地依据背景学习务必保持各标签背景的一致性。分辨率与构图图像分类器在极低分辨率下运行。Custom Vision 可接收最大10240×10240的训练/预测图片但模型实际以227×227训练和推理。大图会被压缩到该尺寸因此被分类的主体应占据画面的大部分面积否则在缩小后的图中可能过小。格式与体积图片应为PNG 或 JPEG单张小于6MB。iPhone 拍摄的高分辨率 HEIC 图片需要先转换、必要时缩小尺寸。图片数量规划以香蕉为例取2 根熟香蕉从不同角度各拍若干张至少7 张5 张训练、2 张测试越多越好对2 根未熟香蕉重复同样流程。最终至少应拥有用途熟ripe未熟unripe合计训练≥ 5≥ 5≥ 10测试224训练与测试图片应是同一主体的不同照片图片越多越好且熟/未熟数量应大致均衡。仓库佐证本课英文原版目录 images 下按training/ripe、training/unripe、testing/ripe、testing/unripe分好了类别的香蕉样例图片训练集每类约 25 张、测试集每类 2 张如果你手头没有合适的水果可直接使用这些示例图完成整个流程。上传并打标签在 Custom Vision 门户中按上传并打标签流程上传训练图片将熟果图片打上标签ripe未熟果图片打上标签unripe。上传对话框会展示两类香蕉图片的标签情况。实战第四步训练图像分类器上传完带标签的训练图片后在门户中触发训练。训练类型选择Quick Training快速训练随后模型开始训练通常需要几分钟完成。等待期间没有其他操作——当然如果你打算把演示用的水果吃掉请务必先把测试图片留足。实战第五步测试图像分类器训练完成后用新图片即之前专门留出的测试图片绝不能使用训练过的图片测试分类效果在 Custom Vision 门户中按测试你的模型流程上传一张测试图片观察返回的各类别概率。把所有测试图片都试一遍观察概率分布是否与直觉一致。实战第六步重新训练迭代改进模型测试结果可能不符合预期这是正常的。图像分类器本质上是基于图片的某些特征与某标签匹配的概率做预测它并不真正理解图片内容——它不知道什么是香蕉也不知道香蕉与船的差异。改进模型的方式是用预测出错的图片重新训练。使用快速测试Quick Test做预测时图片与预测结果会被门户保存这些图片可直接用于重训练按使用预测图片进行训练流程为每张预测错误的图片指定正确的标签用修正后的数据重新训练模型再用新的图片测试迭代后的效果。在训练完成时Custom Vision 会给出Precision精确率、Recall召回率与 AP平均精确率三项评估指标。它们分别衡量预测为该类的结果中真正正确的比例该类的真实样本中被正确找出的比例以及综合评分可作为判断模型质量与是否需要继续迭代的依据。延伸挑战与课后作业挑战模型会对奇怪输入给出什么预测试想用一张草莓照片喂给只训练过香蕉的模型或者上传充气香蕉、穿香蕉服的人、甚至辛普森一家的黄色卡通角色——模型会给出怎样的概率亲手试一下观察并解释预测结果能帮你直观理解分类器依据概率与特征学习、而非理解语义这一本质。课后作业训练多水果分类器英文原版课程配套作业 assignment.md 要求本课只用了单一水果香蕉区分成熟/未熟而一个分类器完全可以识别多种水果成功率取决于水果种类及其成熟前后的差异。例如对于成熟时变色的水果图像分类器可能不如颜色传感器有效因为模型通常在灰度/低分辨率图像上工作。建议用外观相似的多种水果如苹果和番茄扩展训练观察分类效果。作业评分标准Rubric标准优秀合格待改进为多种水果训练分类器能为多种水果完成训练能为一种额外水果完成训练无法为更多水果训练判断分类器效果能正确评价不同水果上的表现能观察并提出改进建议无法评价效果关键要点回顾问题背景机械化收割把农产品分拣压力转移到了工厂而第一代光学分拣机只能靠颜色做粗粒度判断ML 图像分类器可以捕捉疾病、瘀伤等细微差异。核心概念训练training、训练数据training data、模型model、预测prediction模型输出的是概率而非二值结果。关键方法迁移学习让少量图片即可完成高可用分类器训练。实操链路创建CustomVision.Training与CustomVision.Prediction两个认知服务资源 → 门户中创建Classification/Multiclass/Food域的项目 → 收集并上传带ripe/unripe标签的图片 → Quick Training → 用测试图片验证概率 → 用预测失败的图片修正标签后重训练。完成本课训练出的模型正是后续从 IoT 设备检测水果质量第 2 课、在边缘运行水果检测器第 3 课与传感器触发检测第 4 课三节课的输入基础。整套制造章节的背景动机可参阅 4-manufacturing/README.md若后续不再使用本课创建的云资源记得按仓库根目录的 clean-up.md 清理项目避免产生不必要的费用。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考