李东升,胡文泽,兰玉彬, 2,范明洪,李翠云,朱俊科
(1. 山东理工大学农业工程与食品科学学院,山东淄博,255000; 2. 山东省农业航空智能装备工程技术研究中心,山东淄博,255000)
据统计我国田园杂草有1 454种,其中对作物有严重危害的杂草有130多种[1]。杂草会和作物争夺生存资源[2],全国每年因杂草造成主要粮食作物损失约3 000 kt[3],目前解决杂草问题的方法可分为生物、物理和化学除草[4],化学除草因具有简便高效的优点被人们广泛使用,但化学除草剂的不规范使用对作物、土壤环境等也造成一定的污染。虽然现在国家高度重视农药的使用和残留问题,但是市面上依旧可能出现农药超标的现象[5],而精准农业或数字农业可以提供缓解这些问题的策略[6-7]。国内外很多学者[8]都在研究如何实现精准化,不仅仅是用量精准化还要目标精准化,因此针对杂草的识别[9]并应用于自动化精准除草是未来农业发展必须要走的一步。深度学习可在农业生产的各个方面促进生产效率。例如品种鉴定,作物部位和果实识别,作物及杂草检测与分类,作物表型及病虫害检测等都是当下研究的热门,另外动物面部、行为识别也在新兴起来可见其在农业领域的广泛应用[10-11]。本文对国内外文献中深度学习在杂草识别领域相关的应用研究进行了总结归纳,对现有技术方法进行分析,提出了一些具有实际价值的建议,为后续的研究工作提出了看法。
机器学习是机器通过大量数据寻找某种规律,不断拟合当前数据来推算出某种模型,用以预测未来数据或者分类当前数据的机器运算方法。机器学习按照目前广泛认可的分类方式,可以根据处理数据方式,训练样本及反馈方式的不同,将机器学习算法分为监督学习、无监督学习[12]和强化学习3种类型[13]。监督学习是目前主要的研究方向,常用于解决分类和回归问题,监督学习典型的算法有反向神经网络(BP)、支持向量机(SVM)、k近邻法(KNN)、朴素贝叶斯(NB)、随机森林(RF),部分深度学习算法。深度学习是人们在机器学习以及对人类神经元了解的基础上从简单的浅层神经网络(如BP神经网络)到复杂的深层神经网络(如卷积神经网络)数据处理方法,通过对采集到的大量数据进行特征学习得出高层次的特征规律从而对目标对象进行分类或预测,属于更高级的机器学习[14]。深度学习不用人工进行数据特征提取(可以提取更高维度的可以被计算机识别的特征信息),因此可以被广泛应用在不同领域。目前深度学习在计算机视觉、自然语言处理等领域展现出良好的发展前景也不断被证明优于传统的机器学习[15]。深度学习常见的网络有如:深层信念网络(DBN)、卷积神经网络(CNN)、生成式对抗网络(GAN)、胶囊网络(CapsNet)、循环神经网络(RNN)等[16-17],本节就常用于农业信息采集的前三种网络进行简单阐述。
2006年Hinton等[18]提出深度信念网络,由多层受限玻尔兹曼机(RBM)和一层分类器组合而成的一个概率生成模型,深层信念网络(DBN)实际是由多层神经元构成,所以也可称为随机神经网络。邓向武等[19]在自然背景下和不同光照条件下采集稻田的6种杂草(包括野慈姑、稗草等)图像,提取杂草图像的颜色、形状、纹理特征等共101维特征为输入特征向量,通过研究深度置信网络层数,然后与SVM,BP神经网络分类器对比,试验得出,研究改进的DBN网络模型识别率最高,而且彼此消耗的时间相差不明显。生成对抗网络(GAN)是由Goodfellow等[20]2014年基于零和博弈论提出的由生成器和判别器组成的,是在对抗训练过程中生成新模型的深度学习算法。可以根据拍摄的小样本数据进行对抗分析进而生成海量且高质量的图像数据,这样就能解决采集过程费时费力的问题。Fawakherji等[21]设计一套GAN网络,通过将获得的原图像掩膜随机生成噪声掩膜数据然后再上采样到原图像大小实现生成器生成植物图片,再插入原图形成合成图像,然后将最终生成的图片输入判别器进行判断。如图1所示,可以看到生成对抗网络生成出极为相似的图像。卷积神经网络(CNN)[22]是传统神经网络的改进。主要包含数据输入层,卷积层,激活函数层,池化层,全连接层,输出层。由于其突出的特征提取能力被广泛应用于目标检测、图像分割等领域。
图1 通过在原始图像中插入使用GAN生成的合成植物样本与原图像的不同Fig. 1 Difference between the original image and the synthetic one obtained by inserting in the original image a plant sample generated using the GAN
目标分类识别通常是对已检测到目标对象的图像进行分类,或者判断当前图像中是否存在目标,并不能反映目标的空间位置。目标检测是用来确定获取图像中的某个区域是否含有要识别的目标,并对区域内目标进行分类,输出目标的类别和区域边框,即定位过程。图像语义分割是图像中目标的像素标签化并归为一类,对每一像素的区域进行预测分类,但不能区分同一类物体,难以对同一物体进行定位。
当前针对图像信息提取的研究中诸如图像分割、目标跟踪、目标行为分析等都是以图像中的目标检测为基础的,目标检测包括分类(Classification)和定位(Location)两方面。但是因为传统检测算法的各个环节都有很难克服的问题,而随着深度学习的逐渐发展,卷积神经网络逐渐应用在目标检测领域,以卷积神经网络为基础的模型逐渐替换传统目标检测模型的方法,进入大众的视野。目前,基于卷积神经网络的目标检测算法大致可分为两种模式,即单阶段(one-stage)模式和双阶段(two-stage)模式[23]。双阶段算法检测精度较高,比较常用的检测算法主要有R-CNN[24]、Fast R-CNN[25]、Faster R-CNN[26]。单阶段算法也被称作回归分析目标检测算法。虽然精度不及Faster R-CNN,但是具有较好的实时性,比较常用的检测算法主要有YOLO[27-28]和SSD[29]。
图像分割[30-31]的过程也包括图像预处理、特征提取、特征匹配识别等过程,基于深度学习的图像分割一般可分为语义分割、实例分割和全景分割三种。在农业领域较为常用的为语义分割和实例分割。基于图像语义分割的方法来区分作物与杂草和获得杂草覆盖区域在精准除草领域越来越受欢迎[32-35]。实例分割与目标检测类似,也可分为单阶段和双阶段过程,但所阅文献中均以双阶段实例分割Mask R-CNN[36](Faster R-CNN原型,增加了一个分支用于分割任务)为主,故不过多描述。下节就国内外研究者近几年基于深度学习对主要的农作物与杂草识别的研究进展进行综述。
3.1.1 蔬菜与杂草
我国是世界蔬菜生产消耗第一大国,蔬菜已经成为我国农业种植中仅次于粮食作物的第二大农作物,解决由杂草导致的蔬菜产量下降问题十分重要[37]。
Osorio等[38]为了精确估算生菜杂草覆盖度,拍摄数据集并设计了3种分别以SVM-HOG,YOLOv3,Mask R-CNN识别检测算法为基础的杂草提取算法,将检测算法得出的被检测作物转化为二元掩模,并与NDVI背景减法器混合,以间接检测杂草获得杂草图像,然后运用经典图像处理方法计算杂草的覆盖率,试验得出每种方法较人工计算准确率都有不同程度的提高,而且指出每种检测算法的最佳使用场景,为以后探究提供了新的思路。Gao等[39]使用尼康相机在不同照明条件下拍摄甜菜和杂草(打碗花)的图像,并通过数据扩张的形式,解决收集和标签的劳动密集型和耗时问题,使用改进的YOLO-tiny目标检测网络对数据集进行测试,对比YOLOv3和传统的YOLO-tiny网络,结果表明改进的YOLO-tiny目标检测网络既能降低检测速度也能保证准确率。尚建伟等[40]以农田信息采集机器人BoniRob采集甜菜与杂草图像作为数据集,通过使用改进的Res-UNet模型进行图像分割,识别准确率达到了98.67%,高于UNet和SegNet具有较高的分割识别精度。喻刚等[41]提出将Mask R-CNN网络应用到幼苗期白菜和杂草的图像识别中,与基于OTSU阈值分割对杂草进行识别的方法对比,结果表明Mask R-CNN网络达到较好的效果有81%的合格率。Espejo-Garcia等[42]使用少量番茄与杂草(龙葵)数据集,通过使用DCGAN网络扩张数据以及迁移学习的方法对识别算法提升精度,期间设计对比试验,从GAN、迁移学习参数、迭代次数、特征提取网络等方面,不同搭配以选取最优识别算法,得出使用Imagenet预训练,GAN-Xception识别算法效果最好,测试集上的F1为99.07%。
3.1.2 油料与杂草
油菜和向日葵是我国重要的食用油来源,其中油菜居油料作物之首,是我国种植地区分布最广的油料作物。但在杂草会伴随着油菜生长一直存在,导致油菜籽产量下降约15.8%,情况严峻时可能减产一半以上[12, 43]。
张乐等[44]为自动识别自然环境下油菜田间的杂草,在采集油菜与杂草数据集后,对比其在VGG-16、ResNet-50和ResNet-101这3种特征提取网络下Faster R-CNN模型的目标检测效果,结果表明,基于VGG-16的Faster R-CNN最好,目标识别精确度可达83.90%,召回率达到78.86%,F1值达81.30%。Abdalla等[45]为在高密度杂草条件下更好的识别分割出油菜,使用便携式数码相机拍摄高密度杂草下油菜田数据集,设计用微调过的SegNet网络模型的编码器提取深度特征与使用机器学习的分类器结合的方法实现对油菜杂草的图像分割,对比几种机器学习分类器的准确率,得出使用SVM效果最好,可实现对油菜和背景的分割,结果表明最高精度可达96%。Asad等[46]开发了一种加速手动标记像素的过程的方法,使用尼康相机采集两个不同生长阶段的油菜田数据集,对比分别使用VGG16和ResNet-50作为编码器的U-Net和SegNet来训练实现杂草和油菜的分割,试验得出基于ResNet-50的SegNet模型效果最好MIOU和FWIOU分别达到了82.88%和98.69%。Partel等[47]以向日葵与杂草,胡椒与杂草(马齿苋)为数据集训练3种基于YOLOv3的目标检测网络来实现精准智能喷雾器对杂草的识别,整个喷雾系统的准确率和召回率可分别达到为95%和89%。
3.1.3 棉花与杂草
棉花是世界上重要的经济作物。但是由于棉花生产程序复杂,种植管理、控害除草复杂,生产人工成本高,导致部分地区种植意愿降低,因此深度学习解决棉花杂草问题,以提高种植意愿与棉花产量尤为重要[48]。
Espejo-Garcia等[49]将深度学习的卷积神经网络与传统机器学习的分类器结合起来分别识别作物(番茄和棉花)和杂草(龙葵和天鹅绒草),试验得出DenseNet和支持向量机结合F1值达到了99.29%。许燕等[50]针对新疆棉田杂草识别率低的问题,通过采集建立不同角度、不同自然环境和不同密集程度混合生长的棉花幼苗与杂草数据集,然后对比4种特征提取网络的Faster R-CNN模型的识别效果,最终选择VGG16为特征提取网络训练,设计最佳锚尺度,得出MAP值为91.49%,平均识别时间262 ms。为实现田间条件下快速、精准识别棉花幼苗与杂草,彭明霞等[51]设计采集小车,采用垂直向下拍摄的方式获取棉花与杂草的视频,按照每秒一帧取图片建立数据集,对比了Faster R-CNN和YOLOv3 这2种典型目标检测算法模型,最终选取优化后的Faster R-CNN进行试验,得出平均目标识别准确率达95.5%。Chen等[52]通过迁移学习建立了综合基准,用于棉花生产系统中常见杂草的多类识别。创建了棉田15类杂草数据集用于模型训练,对于训练样本较少的少数杂草类识别较差的问题,采用了加权交叉熵(WCE)损失函数,以及将基于深度学习的余弦相似度指标用于分析杂草类间的相似度,大大提高了杂草分类的准确性,对比27个(卷积神经网络)深度学习模型,得出参数优化后的ResNet-101的F1值最高达到了99.1%,其中模型中有14款超过98%。
3.2.1 水稻与杂草
我国对水稻的生产极为重视,全国以稻米为主食的人超过65%。水稻种植中盲目用药除草的情况屡次发生,不仅防治效果差,还会对水稻的生长造成一定的影响,导致水稻产量下降。
邓向武等提出了一种基于卷积神经网络(CNN)与迁移学习相结合的稻田苗期杂草识别方法采集6种稻田苗期杂草(野慈姑和稗草等)数据集,将预训练CNN图像分类模型(AlexNet、VGG16和GoogLeNet)的参数迁移到杂草识别的任务上来使用VGG16网络模型的杂草正确识别率达97.48%。彭文等[53]用CCD感光相机采集6种水稻田杂草(鬼针草、鹅肠草等),构建PFMW数据集,通过对比VGGNet、ResNet50、MobileNet等8种深度学习网络模型,再对比选取网络模型的优化器(SGD、Adam和RMS)最终VGG16-SGD模型取得了最高精度,其平均F值达到了97.7%。Huang等[54]用无人机在不同的稻田上拍摄图像建立数据集,通过对比基于对象的图像分析(OBIA)的传统机器学习的不同分类器和深度学习方法的卷积神经网络,得出深度学习方法VGGNet网络模型在准确率和效率上明显优于OBIA方法和其他深度学习卷积网络。Zhang等[55]用无人机低空飞行采集冬小麦数据,研究测试了YOLOv3和YOLOv3-tiny的性能,发现YOLOv3-tiny更适合移动设备,且MAP可到72.5%,IOU为80.12%。Kumar等[56]采集水稻与杂草数据集对比不同的ML分类器(SVM、CNN)与R-CNN和Faster R-CNN的目标检测算法,得出Faster R-CNN准确率最高达到94%。且为了降低GPU的需求,选择更加专用的加法器(adder)提高硬件性能,最后硬件部分选择FPGA芯片处理图片,既降低了延时,又缩小了占用面积。Ma等[57]使用佳能相机采集稻米杂草幼苗水稻和杂草(慈姑)数据集,在解决类别标记和类别数量不平衡问题后使用迁移学习和基于全卷积的SegNet图像分割网络来实现对杂草的识别分割,与经典语义分割模型FCN和UNet对比,平均精度为92.7%高于二者。
3.2.2 玉米与杂草
玉米是世界上分布最广泛的粮食作物之一,在我国种植产量超过水稻和小麦,位居我国三大粮食作物之首,是人类和畜禽的重要食物来源,也是重要的工业和医药原料[58],玉米的3~5叶期是除草的最佳时期。
徐艳蕾等[59]拍摄8种田间杂草(鬼针草、翅果菊等)和玉米苗期的数据集,针对复杂自然环境下杂草图像的特性构建了一种基于Xception 卷积网络的轻量卷积网络的改进杂草识别模型,相同试验条件下对比其他几种基础识别网络模型(VGG16、VGG19、ResNet50 和 Inception-V3),结果显示设计的识别模型平均测试识别准确率高达98.63%。Champl等[6]设计了一款电除草的机器人,其中识别定位杂草是采用视觉方式,通过嵌入深度学习Mask R-CNN算法,识别检测杂草,在训练两种作物(玉米和大豆)和四种杂草(黑麦草和藜草等)数据集时选定ResNet-50为特征主干网络,对输入图像大小,锚框比例等超参数进行调整来提高准确率,通过植物的重心对植物定位实现精准除草。虽然小目标杂草检测精度较低,但是也验证了实施电气化除草的可能。Mads等[60]通过自搭建卷积神经网络对包含22种(小麦、玉米、甜菜等7种作物,阔叶草、狭叶草、黎等15种)处于早期生长阶段的作物和杂草数据集对进行识别检测,模拟土壤背景上的重叠植物的自上而下图像来克服植物树叶重叠问题,最终网络能够达到86.2%的分类准确率。因叶龄是植物重要表型性状,不同叶龄杂草所需除草剂剂量不同,权龙哲等[61]采集不同天气和不同角度下的2~5叶期玉米和杂草(稗草、打碗花等)数据集,采用Mask R-CNN网络模型检测杂草,通过更换3个特征提取网络(ResNet-50、ResNet-101、MobileNet V2)、搭建多种不同尺寸区域建议框等方法提高模型精度,结果显示以ResNet-101为特征提取网络识别率最高为90.3%。Wang等[62]使用玉米和大豆生产系统中4种常见杂草(苍耳、狐尾草、红根苋菜和三裂叶豚草)数据集,研究图像分类模型和目标检测模型对数据集中杂草的识别效果,通过评估VGG16、ResNet50和InceptionV3三种不同的预训练图像分类模型得出基于pytorch框架的VGG16识别精度最高,F1值为99%。评估用于定位和识别杂草种类的YOLOv3目标检测模型,得出总体MAP得分为54.3%,红根苋菜的识别精度最高89%,由于狐尾草样本较少且难以识别,AP仅为26%。当评估由于框架选择而产生的性能差异时,得出相同条件下pytorch优于keras。
与传统的图像处理方法相比,深度学习不仅解决了复杂、低效的特征提取环节的问题,而且只需将输入图像裁剪成合适的尺寸就可用于目标识别,在极大提高识别准确率的前提下,也缩短识别时间。可应用到实际农业生产。
根据上述文献可总结,深度学习应用在杂草识别检测领域的技术任务主要有图像分类、目标检测、语义分割、实例分割。其中基于深度学习的杂草识别在分类识别任务中由于作物与杂草种类不同,以及测试数据集不同,得出的不同算法的识别精度不同,并无某一算法明显优于其他算法,但是VGGNet与ResNet算法可作为优先选择对象。在目标检测和图像分割任务中由于田间植物的小物体杂草和遮挡重叠现象和移动设备很难达到实验室设备的高算力和实时性,也由于目标检测和图像分割的表现形式不同,研究者们可从获得作物面积选择图像分割,从获得类别与位置选择目标检测,从部署移动设备选择单阶段的目标检测或实例分割,也可根据实际需要选择准确度高的Faster R-CNN,或实时性强的YOLO、SSD。研究人员对于深度学习算法技术准确率的提升手段主要有针对不同的算法模型、模型本身、迁移学习、加入注意力机制等方法。现阶段分类识别任务中在不同数据集、不同选用参数下达到的准确度不同,但是均能达到准确率94%以上,有甚者可达99%,是因为此时数据中均为单个易识别物体。而目标检测和图像分割任务中准确率普遍低于95%是因为需要得到物体所在的区域,而算法模型对数据中存在不同尺度、重叠、遮挡的物体的检测能力不同,易出现漏检错检现象。
总结上述近几年深度学习在杂草识别检测方面的文献,发现深度学习应用于杂草识别领域的研究还处于起步阶段,存在不少的问题。
1) 数据集建立费时、不通用。现阶段杂草数据集仅仅是针对一种作物生长期间生长的杂草不具备通用性,而且数据建立可能出现类别不平衡现象,杂草处于不同生长阶段存在不同的特征,拍照时的光影变化等都影响着训练最终效果。文中综述的文章中出现类间识别正确度相差较大,或出现过拟合现象等情况。
2) 田间作业环境复杂实际识别率较低。 真实田间地况复杂总会出现颠簸,大风,遮挡等情况,这些是实际应用过程中存在的必须解决的问题。
3) 识别效果与硬件好坏有关。现阶段硬件本身的算力与价格和外型挂钩,一个算法模型是否能部署在移动端不仅要求算法具有实时的检测速率,还要有较高的识别精度,因此目前实验室常使用双阶段的算法针对提高识别精度,应用中常使用单阶段算法。而硬件的好坏也影响着识别性能,例如Partel等[47]在试验中使用不同规格的GPU显卡,结果得出性能高的,在精度和召回率方面都有较大的提升。另外数据获取设备摄像机也是提高识别效果的有利工具。
现阶段存在的问题,也将会是未来研究者应用深度学习解决问题的趋势,本文提出以下几点建议,希望能为未来杂草精准识别提供些许帮助。
1) 数据集的建立。数据的采集一方面可以采取只拍一种光照条件下的杂草图像,识别时采用补光或遮光的形式来减少人工的投入,另一方面采用生成对抗网络或者Mixup、Mosaic等数据增强的方法扩增数据集,采用半监督学习的方式来解决人工标注的困难,解决整体数据建立人力、时间的投入。
2) 新算法的研究。田间杂草情况复杂要解决在遮挡、模糊、群聚等状况下仍能实现算法的快速性和有效性的问题,探究更适合的识别算法,如加入注意力机制加强特征提取,或者引入或改进视觉Transformer等算法。目前广泛用于识别检测方面的深度学习卷积神经网络算法,一定程度上网络层数越深,识别精度越高,但是也意味着算法越难部署到移动设备上,因此探究轻量化和深度化的平衡也是研究的方向。
3) 硬件的开发。图像的采集设备,数据处理设备等。在数据处理过程中,能在不占用大空间的同时实现高算力,提高硬件实力以改变算法发展受限的问题。
本文对深度学习在杂草识别领域的研究做出综述。传统的机器学习识别杂草需人为提取特征存在很多弊端,而深度学习有效避免了传统机器学习的很多问题。总结介绍了深度学习的算法模型在杂草识别领域的应用,具体对国内外基于深度学习的作物与杂草种类检测与分类研究现状进行综述,以与作物种类为线索,阐述研究人员如何针对每种作物相应时期的杂草进行识别控制。在这篇文章中,提供的分类研究总结了杂草的检测方法以及提高分类准确率的手段,发现大多数的研究应用监督学习技术,使用现有的深度学习模型;通过迁移学习可以在任何植物数据集实现更好的性能和分类精度;另外不同的深度学习模型对于不同的作物数据集有不同的表现能力;现阶段也只是通过设置不同的条件找到近似最优的参数达到最大识别准确率。
未来在杂草识别领域的一个重要的研究方向是对于数据集的处理,如何减少人工注释,解决类不平衡,扩容数据,实现简易、准确、通用。另一方向是深度学习算法模型的最优化,解决由于田间外界因素造成的视觉采集的数据模糊、光影变化,遮挡重叠等带来的识别准确率降低的问题和如何减少对硬件性能的需求问题。在深度学习杂草识别的应用方面:一是使用多种视觉设备与传感器协调作业。由中央系统调控各个设备视觉传递的数据,以获得更加精准的定位,以解决存在遮挡的行间行内杂草不能完全识别定位的问题,并且利用多传感器与机器视觉融合综合提取的多种信息,分析作物与杂草长势针对性除草。二是在达到精准识别后可以使用小型无人机搭载触杀式除草剂,使用机器人搭载激光、高压电等对杂草实现定点式物理清除。