基于机器学习的甘蔗种植区域精准识别研究
作者: 胡世洋 刘威
摘要:文章探讨了机器学习在甘蔗种植区域精准识别中的应用,旨在解决传统人工识别方法耗时费力、易受主观因素影响的问题。鉴于甘蔗种植面积分散、统计易重叠的现状,文章提出利用无人机高光谱成像结合 Python 网络爬虫技术的图像采集方法,以获取高精度、多样化的图像数据。通过采用 YOLO 算法进行模型训练,实现了对甘蔗种植区域的快速识别和统计。实验结果表明,该方法能够有效识别甘蔗种植区域,为甘蔗种植户、农业管理部门及科研机构提供科学依据和技术支持,从而推动农业智能化的发展。
关键词:机器学习;甘蔗;遥感影像;目标检测;图像处理;智能农业;无人机高光谱成像;YOLO算法
中图分类号:TP319 文献标识码:A
文章编号:1009-3044(2024)31-0001-04
开放科学(资源服务)标识码(OSID) :
0 引言
随着农业现代化的不断推进,人工智能的信息技术成为提升农作物产量与质量及优化资源配置的重要途径。甘蔗作为重要的经济作物之一,其种植区域的精准识别尤为关键。然而,传统的人工识别方法存在效率低、精度不高、易受主观因素影响等问题,难以满足现代农业大规模、高效化的管理需求。因此,本文采用机器学习技术构建一种高效、可靠的甘蔗种植区域识别方法,以提高甘蔗生产的智能化水平,并推动农业产业向更加智能化、精细化方向发展[1]。
1 研究背景
本研究使用 YOLO 算法实现对甘蔗种植区域的识别和标注。YOLO(You Only Look Once) 是一种快速、高效的目标检测算法,能够通过单次前向传播完成目标检测和分类。与传统目标检测算法相比,YOLO 不需要对图像进行多次扫描,因此速度更快,更适合实时应用场景[2]。YOLO 基于 Darknet 框架开发,Darknet 为 YOLO 提供了底层支持和优化,使得YOLO 能够实现快速且准确的目标检测。这需要在实验平台上安装和配置 Darknet 环境。为了提高YOLO 算法的训练和推理速度,本研究使用 CUDA 和CUDNN 进行 GPU 加速。CUDA 是 NVIDIA 推出的一种并行计算平台,而 CUDNN 是专为深度学习设计的GPU 加速库[3]。通过 CUDA 和 CUDNN,可以充分利用 GPU 的计算能力,大幅提升 YOLO 算法的性能。
2 环境配置
实验环境所需的关键工具包括:Visual Studio、Git、CMake、vcpkg、OpenCV、Darknet、CUDA、CUDNN 等。Visual Studio 作为开发环境,负责资源包的导入和重新编译;Git 负责版本控制;CMake 管理项目依赖,确保跨平台构建的一致性;vcpkg 负责自动化构建和包管理;OpenCV 提供丰富的图像处理功能;Dark⁃net 用于实时目标检测;CUDA 加速深度学习的训练和推理过程;CUDNN 优化深度学习操作,进一步提升训练和推理效率。这些工具共同构成了深度学习开发环境的基础,从代码管理、构建优化到硬件加速和图像处理,每个工具都发挥着不可替代的作用。需要注意的是,CUDA 和 CUDNN 的兼容性直接影响到深度学习框架的安装和运行效果,因此需要特别注意版本匹配问题。安装 CUDA 时,应选择不高于显卡驱动支持版本但与深度学习框架兼容的版本。安装CUDNN 时,应在 CUDNN 的下载页面中查询每个版本支持的 CUDA 版本,选择匹配的版本下载。优先选择稳定版本而非最新版本,可以保证系统具有更好的兼容性和稳定性(详见表 1) 。
3 模型训练与评估
3.1 数据集准备
3.1.1 采集图像
甘蔗田地图像的采集是一个关键环节,它直接影响机器学习模型的训练效果和识别精度。为了实现高效、精准的图像采集,本实验结合了无人机高光谱成像技术与 Python 网络爬虫技术,两者共同构成了图像数据采集体系。无人机高光谱成像技术因其高效、灵活和非接触式的特点,广泛应用于农业遥感领域。本研究选用了具备高信噪比超高速 CCD 成像器件的无人机高光谱相机,该设备能以较高的光谱分辨率捕获甘蔗田地的图像数据。无人机能够覆盖大面积的甘蔗田地,不受地形限制,快速获取多光谱和高光谱图像。这些图像包含丰富的光谱和空间信息[4],能够精准反映甘蔗的生长状态、分布情况以及土壤、植被覆盖等环境特征。由无人机采集的图像数据可用于进一步分析甘蔗的光谱反射率、植被指数等关键参数,为机器学习模型的训练提供丰富的数据支持[5]。
与此同时,Python 网络爬虫技术也作为数据采集的重要工具。虽然无人机高光谱成像技术能直接获取现场图像数据,但结合网络爬虫技术,可以进一步拓宽数据来源,提高数据的多样性和丰富度。Python 网络爬虫能够自动化地从农业相关网站、政府数据平台、科研机构等处抓取甘蔗种植区域的分布图、历史产量数据、土壤质量报告等间接信息。这些信息虽然不直接反映甘蔗田地的实时图像,但能为机器学习模型提供背景知识和上下文信息,有助于模型更全面地理解甘蔗种植区域的特征,提高识别的准确性和鲁棒性。无人机技术保证了数据的准确性和实时性,而网络爬虫技术则增强了数据的多样性和全面性。
对采集到的甘蔗田地图像进行预处理是提高标注效率和检测精度的关键步骤,包括裁剪、缩放、去噪等操作。裁剪操作旨在去除图像中不必要的背景信息,保留甘蔗田地的核心区域,从而简化后续处理流程,提高处理效率。裁剪可以通过图像编辑软件或专业的图像处理库(如 OpenCV) 中的工具手动完成,适用于图像数量较少或边界较清晰的情况。也可利用图像识别技术来自动识别甘蔗田地的边界并进行裁剪,这通常需要通过训练一个图像分割模型来实现,该模型能够识别出图像中的甘蔗田地部分并将其与背景分离。自动裁剪方法在处理大量图像时更为高效。
缩放操作用于调整图像的大小,以满足后续处理或分析的要求。在机器学习模型的训练过程中,需要将图像缩放到固定的尺寸,以保证输入数据的一致性。等比例缩放和非等比例缩放是常见的缩放方法,通常通过图像处理软件或库中的缩放函数实现。
去噪操作旨在去除图像中的噪声,提高图像的清晰度和质量。噪声可能来源于图像采集过程中的各种干扰因素。通过对采集到的甘蔗田地图像进行裁剪、缩放和去噪等预处理,可以显著提高图像的标注效率和检测精度。这些预处理操作不仅有助于去除图像中的冗余信息和噪声干扰,还能使图像更符合后续处理(如图 1 所示)。
3.1.2 图形的标注
本研究采用 Yolo_mark 作为甘蔗田地图像的标注工具。Yolo_mark 是一个专为 YOLO 系列目标检测算法设计的图像标注工具,它允许用户通过简单的图形界面快速标注图像中的目标物体,并生成 YOLO 训练所需的标签文件。这些标签文件包含了目标物体的类别、位置以及归一化后的坐标信息。Yolo_mark 依赖于 OpenCV 库,可以在 Windows 和 Linux 系统上运行,但安装过程可能因系统而异。这里采用 Win⁃dows 系统进行安装和部署。首先,访问 Yolo_mark 的GitHub 页面,并获取 Yolo_mark 资源文件。其次,使用 Visual Studio 打开 Yolo_mark 的解决方案文件,重定目标解决方案。再次,编译项目并最终生成Yolo_mark 的可执行文件。最后,将需要标注的甘蔗田地的图片放入 Yolo_mark 指定的文件夹中,在Yolo_mark 中配置需要标注的物体类别,并设置相应的参数。利用 Yolo_mark 的可执行文件进行标注工作。标注完成后,Yolo_mark 生成包含标注信息的 txt 文件和 train.txt 文件,这些文件可用于 YOLO 模型的训练。
3.2 模型训练
获得 Yolo_mark 生成的包含标注信息的 txt 文件和 train.txt 文件后,采用 YOLO 算法对甘蔗田地图像进行训练以生成权重文件。对甘蔗田地图像的训练需要借助 CUDA、CUDNN、OpenCV 等库,并配置好深度学习框架。这里采用 Darknet 框架作为本次的深度学习框架。在训练和评估机器学习模型时,要合理划分训练集、验证集和测试集。训练集包含模型需要学习的所有特征和模式。通过在训练集上的迭代训练,模型可以逐渐优化其权重和参数,以更好地拟合数据。验证集用于评估模型的性能,以发现模型是否过拟合或欠拟合。通过性能反馈,来调整模型的参数和结构,从而提高模型的泛化能力。测试集用于最终评估模型的性能,确保模型在实际应用中具有良好的泛化能力。训练集通常占总数据集的 60%~80%,本次实验取 70%。验证集通常占总数据集的 10%~20%,本次实验取15%。测试集通常占总数据集的 10%~20%,本次实验取 15%。通过修改obj.names、obj.data、yolov3.cfg等配置文件以适应数据集的训练需求。将甘蔗田地图片数据和对应的标注信息组织到相应的文件夹中,并确保 train.txt 文件包含了所有用于训练的图片的路径,最后通过脚本调用 Darknet 的可执行文件进行训练。由于数据集大小和硬件配置不同,训练过程可能需要数小时到数天不等。在训练过程中,Darknet 会定期保存模型的权重文件,以便随时中断训练并恢复(如图 2 所示)。
3.3 模型评估
训练完成后,理论上可以使用此模型来识别甘蔗田地。但在真实应用之前,通常需要进行适当的测试和调优。因此,首先使用测试集来验证模型的性能。将待检测的图片放置在指定文件夹中,在模型配置文件内定义网络的结构和参数,并确保权重文件路径配置正确。然后,通过 Darknet 的命令行工具来加载模型。在此过程中,需要设定一个置信度阈值,用于决定哪些预测目标应被视为“可信”或“有效”的检测结果。
在目标检测任务中,模型会分析输入图片,并预测出可能存在的目标的位置(通常通过边界框给出)、类别及其预测可信度(即置信度)。置信度是一个介于 0 和 1 之间的数值,表示模型对其预测结果的自信程度。设定置信度阈值意味着指定一个数值,只有当模型对某个目标的预测置信度高于或等于此阈值时,该目标才会被视为有效监测结果,并在最终输出中包括。如果预测置信度低于阈值,则该目标通常会被忽略,因为其被认为不够可靠。此次选择 0.5 作为置信度阈值,因为在许多情况下,它被证明是一个合理的起点,能够在精确率和召回率之间提供相对平衡的折中。
在命令行中,通过 -i 参数或直接在命令末尾添加图片路径来指定待检测的图片。加载模型并输入图片后,Darknet 会自动进行前向传播,利用权重文件中的参数对图片进行目标检测。在检测过程中,模型会输出每个检测到的目标的类别、边界框等信息。Darknet 会将检测结果以文本形式输出至命令行中,同时可能在指定目录生成包含检测结果的可视化图片。在这些可视化图片中,检测到的目标将以边界框标注出来(如图 3 所示)。
为了量化目标检测的准确度,将甘蔗田地图片划分为测试集和验证集。然后对测试集中的每张图片进行目标检测,将检测结果与真实标注进行对比[6]。通过计算精确度(Precision) 、召回率(Recall) 、平均精确度均值(mAP) 等指标评估甘蔗田地识别的准确度。
精确度(Precision) 是指在所有被模型预测为正类的样本中,真正是正类的样本所占的比例[7]。计算公式如下:
Precision = TP/TP + FP (1)
式中:TP 为真阳性的样本数,FP 为假阳性的样本数。
召回率是指在所有真正的正类样本中,被模型正确预测为正类的样本所占的比例[8]。计算公式如下: