这是一个基于边缘的设备,帮助教育农民早期发现植物疾病,提高作物产量。
硬件:
Jetson NANO*1
树莓派V2摄像头*1
软件:
Tensorflow
Jetpack SDK
项目背景:
该项目可用于帮助小社区的农民建立知识和教育他们种植的作物,并帮助早期识别和预防常见的植物/作物疾病的传播。
如何工作的
该设备配备了一个摄像头,农民可以在那里拍摄他们的植物叶子,该设备有一个CNN分类器和一个知识库,在那里它可以提供有关作物生长的信息,并帮助预测作物的健康状况。
许多村镇没有活跃的互联网连接,因此所有的处理和数据存储都发生在边缘设备本身,设备需要便携才能在他们的领域进行和使用。
当农民捕获图像时,图像首先经过CNN分类器,并从38个类中预测出图像,然后将预测与附加数据一起显示给用户。
CNN模型
在这个项目中,使用了Plant Village数据集,它包含了38个不同类别的植物叶片图像,其中包括植物的常见病害图像。
基于这个数据集,作者决定构建一个keras CNN模型,它可以帮助将任何图像分类到38个不同的类中。CNN或卷积神经网络是一种深度学习算法,它获取输入图像并生成有助于将其与其他图像区分开来的特征集。通过这种方法,我们可以区分猫和狗的图像,或者在这种情况下,像番茄植物叶子的图像和土豆植物叶子的图像。
作者使用Keras和tensorflow作为后端来开发CNN模型,它由6个卷积层组成。使用这个模型,可以达到92%的验证精度。
在将数据提供给CNN之前,需要对数据进行预处理,这包括将数据排序为训练、测试、验证文件夹、调整数据大小和规范化数据。您应该在image_processing.py文件中找到预处理代码,它使用opencv读取和保存图像。
在预处理数据之后,现在需要用处理过的图像来训练我们的模型。py文件包含训练模型的代码,您可以根据计算机硬件指定批处理大小和epoch的数量。你可能想要在GPU上运行训练,如果你不想花很多时间来训练模型。如果您想跳过这一步,作者还提供了一个预先训练好的模型。
一旦模型被训练,您应该找到存储在模型中的训练过的模型。h5文件。要在测试图像上运行经过训练的模型,您可以使用test.py文件,并且应该看到基于所显示的植物图像的预测。
一旦您完成了对模型的培训,现在就可以将代码部署到Jetson Nano上了。