Path: blob/master/site/zh-cn/hub/tutorials/cropnet_on_device.ipynb
25118 views
Copyright 2021 The TensorFlow Hub Authors.
Licensed under the Apache License, Version 2.0 (the "License");
微调用于植物病害检测的模型
本笔记本展示如何使用 TFDS 的数据集或您自己的农作物病害检测数据集微调 TensorFlow Hub 中的 CropNet 模型。
您将:
加载 TFDS 木薯数据集或您自己的数据
使用未知(负)示例丰富数据,以获得更稳健的模型
对数据应用图像增强
加载并微调 TF Hub 中的 CropNet 模型
导出一个 TFLite 模型,可以直接使用 Task Library、MLKit 或 TFLite 将其部署在您的应用上。
导入和依赖项
在开始之前,您需要安装一些必需的依赖项(如 Model Maker)和最新版本的 TensorFlow 数据集。
加载用于微调的 TFDS 数据集
我们使用 TFDS 公开可用的木薯叶病害数据集。
可视化训练分割的样本
让我们看几个来自数据集的示例,其中包括图像样本的类别 id 和类别名称以及它们的标签。
从 TFDS 数据集添加图像以用作未知示例
向训练数据集添加额外的未知(负)示例,并为它们分配一个新的未知类别标签号。目标是建立一个模型,当在实践中使用(例如在现场)时,如果看到意外情况,它可以选择预测“未知”。
下面是一个将用于对其他未知图像进行采样的数据集列表。它包括 3 个完全不同的数据集以增加多样性。其中之一是豆叶病害数据集,因此该模型可接触到除木薯以外的病害植物。
UNKNOWN 数据集也加载自 TFDS。
应用增强
为了使所有图像更具多样性,您将应用一些增强,如以下方面的更改:
亮度
对比度
饱和度
色相
剪裁
这些类型的增强有助于使模型更加稳健,以适应图像输入的变化。
为了应用增强,它使用 Dataset 类中的 map
方法。
将数据包装成 Model Maker 友好的格式
要将这些数据集与 Model Maker 一起使用,它们需要处于 ImageClassifierDataLoader 类中。
要微调模型,您将使用 Model Maker。这使得整体解决方案更容易,因为在训练模型之后,它也会将其转换为 TFLite。
Model Maker 将进行最佳的转换,并提供所有必要的信息,以便以后在设备上轻松部署模型。
模型规范是您告诉 Model Maker 您想使用哪个基础模型的方式。
此处一个重要细节是设置 train_whole_model
,它将使基础模型在训练期间得到微调。这会使过程变慢,但最终模型具有更高的准确性。设置 shuffle
将确保模型以随机的 shuffle 顺序看到数据,这是模型学习的最佳实践。
使用测试分割评估模型
要更好地理解微调模型,最好分析混淆矩阵。这将显示一个类别被预测为另一个类别的频率。
使用未知测试数据评估模型
在此评估中,我们希望模型的准确度近乎为 1。用于测试模型的所有图像都与常规数据集无关,因此我们希望模型能够预测“未知”类别标签。
打印混淆矩阵。
将模型导出为 TFLite 和 SavedModel
现在我们可以导出 TFLite 和 SavedModel 格式的训练后模型,以在设备上部署并用于 TensorFlow 中的推理。
后续步骤
您刚刚训练的模型可以在移动设备上使用,甚至可以在现场部署!
要下载模型,请点击 colab 左侧“文件”菜单的文件夹图标,然后选择下载选项。
这里使用的相同技术可应用于其他植物病害任务,这些任务可能更适合您的用例或任何其他类型的图像分类任务。如果您想要跟进并在 Android 应用上进行部署,您可以继续阅读此 Android 快速入门指南。