首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学会深度学习+农业,助力水培农作物(一)

在今天的文章中,我们将演示深度学习应用于水培的实际用例,水培法是一种在水溶剂中使用富含矿物质的营养液而无需土壤培养植物或农作物的方法。通过本文,您将学习如何使用Keras训练卷积神经网络(CNN),以自动对水培植物根健康进行监控和分类,而无需人工检查。

本教程的实际实验设计是由Darrah等人在他们2017年的一篇论文(Real- time Root Monitoring of Hydroponic Crop Plants: Proof ofConcept for a New Image Analysis System.)中提出的。这样的系统可以提高现有水耕农场的产量,使农场更有效和可持续运行。

如何结合深度学习、计算机视觉及水培学?

水培作物的根可以分为两类:

有根须

无根须

根须越多,代表作物的根越健康,作物吸收养分的效果就越好。

在国外的研究项目中,研究人员首先设计了一个植物根部的检测系统,用于自动采集作物的根部图像,而不必“打扰”到植物。然后利用计算机视觉技术,将根分为上面所提到的两类,这本质上其实就是一个图像分类问题。

我们首先需要获得图片,然后将图片处理成256X256像素大小的图片,处理过程为:首先将图片高度设为256像素,然后从裁剪掉图片的两边,保留中间的256像素部分。因为作物的根位于图片的中央,所以这种处理效果更好。

可以看出,计算机视觉与水培农作物的结合,其实是利用了根部图像来反映植物的健康状况,但是在计算机视觉相关的算法中,深度学习目前最为有效,接下来我们将学习如何利用深度学习对植物根图像进行分类。

项目结构

本项目结构如下图所示:

数据集分为有须根图片和无须根图片,pyimagesearch/目录是一个包含simplenet.py的Python模块。SimpleNet架构是我为根健康分类设计的Keras深度学习架构。train_network.py用于训练我们的网络,生成plot.png,即我们的训练图像。我们将逐行介绍训练代码,以便您了解它的工作原理。

利用深度学习对根健康进行分类

我们首先要安装必要的软件包:

OpenCV:任何版本都适用。记下您安装OpenCV的Python虚拟环境的名称,您将希望使用相同的环境来安装Keras和TF。

Keras和TensorFlow:请参阅使用TensorFlow后端安装Keras以开始使用。

scikit-learn:使用pip轻松安装到您的虚拟环境中:pip install scikit-learn。

imutils:我可以通过pipinstall imutils安装我的图像处理便利功能包。

matplotlib:Python的绘图工具 - pip install matplotlib。

已上都成功安装以后,就可以开始实现我们的卷积神经网络了。

打开simplenet.py文件,首先添加以下代码,用于导入所需模块:

我们通过从keras导入必要类型的神经网络层来开始我们的脚本。我们还导入了keras后端。 后端将允许我们在下一个块中动态处理不同的输入,我们然后定义SimpleNet类和构建方法:

SimpleNet类定义从第11行开始。我们唯一的方法build,在第13行定义。该函数的第一步是初始化Sequential模型(第16行)。然后我们指定inputShape,其中输入图像的大小为64×64像素(第17行)。大多数人将使用TensorFlow作为后端,假设“channels_last”最后排序。如果您使用Theano或其他“channels_first”后端,则在第20行和第21行修改inputShape。

让我们开始向网络添加层:

第一个CONV => RELU => POOL层(第24-28行)这里使用较大的过滤器尺寸来帮助检测较大的根须(或缺少根须),同时快速减少维数。我们在网络中更深入地了解每个CONV层的更多过滤器(第31-42行)。始终使用RELU激活。

在上面的每个块中,我们丢弃了25%的节点(断开随机神经元)以努力引入正则化并帮助网络更好地概括。这种方法被证明可以减少过度拟合,提高准确性,并使我们的网络能够更好地应用于不熟悉的图像。

我们的最后一个FC => RELU块以softmax分类器结束:

全连接层一般位于CNN的末端,这里我们将dropout设置为0.5。softmax分类器应用于我们的最后一个全连接层,它有2个输出对应于我们的两个类别:(1)non_hairy_root(无须根)和(2)hairy_root(有须根)。

以上我们简单了解了基于深度学习的计算机视觉技术是如何与农业中水培作物相结合的和本项目的整体框架,并学会了用keras构建CNN神经网络框架,明天的文章中我们将一起继续更深入地学习实际训练模型的构建,并进行基于深度学习的图像分类。

感谢有你,不见不散!

END

本公众号原创作品,未经授权禁止转载,特此声明,谢谢合作!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181021A1HPUP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券