APP下载

基于Yolact系列算法的果园可行驶区域快速分割

2022-09-02牟佳伟张建华

林业机械与木工设备 2022年8期
关键词:平均值实例光照

牟佳伟,冯 全*,张建华

(1.甘肃农业大学机电工程学院,甘肃 兰州,730070;2.中国农业科学院农业信息研究所,北京 100081)

可行驶区域分割技术作为果园智能无人车的一项关键技术,它能够将果园的道路区域分为可行驶区域和不可行驶区域,可为作业道路的路径规划提供信息。可行驶区域分割的主要技术依据是图像分割,目前主流的分割算法均基于卷积神经网络,如FCN[1],DeepLab系列[2-4]等,这些算法的试验结果虽然能获得高精度,但是计算复杂度高,在低计算资源的农业无人车上无法取得满意的分割速度。

农业场景中图像背景复杂、干扰因素多,为了分割农业场景下的道路,一些研究者已经应用深度学习方法做了一些工作,韩振浩[5]等提出一种基于U-Net网络的果园视觉导航路径识别方法;杨丽丽[6]等以U-Net为基本网络结构,提出三个改进方向,提高了自动驾驶农机对农田间道路的感知能力;李云伍[7]等根据丘陵山区田间道路图像特征,构建了基于空洞卷积神经网络的田间道路场景图像语义分割模型,实现了丘陵山区田间道路场景像素级的预测;宋广虎[8]等利用FCN、SegNet和U-Net三种卷积神经网络进行迁移学习,用得到的三种分割模型对不同环境下葡萄行间路径进行分割试验;吴伟斌[9]等为了将语义分割技术应用到部分果、茶园道路的像素级分割中,以PSPNet分割模型为基础进行优化,构建MS-PSPNet语义分割模型。

上述基于卷积神经网络语义分割模型的高精度,依赖于丰富的空间上下文(大感受野)和精细的空间细节(高分辨率),这两者都会产生高计算成本,无法快速实现图像分割。而适用于自动驾驶领域的分割技术必须具备实时性,这样才能对道路场景做出快速处理,避免意外的发生。近年来,实时分割方法得到了广泛的研究[10-12],其中Yolact[13]及其改进系列算法[14-15]在多个公开数据库上的精度和速度都取得了State of the Art(目前最高水平)的成绩。为了实现葡萄园无人车的自主行驶,本文采集了真实果园的道路实景图像,建立了测试数据库,采用Yolact系列的三种快速分割算法,在三种光照条件下对果园可行驶区域进行分割试验,优选出适用于果园开放条件下最优的快速道路分割方法。

1 相关模型与结构

1.1 Yolact算法介绍

Yolact是一个实时实例分割的框架,它放弃了明确的定位步骤,将实例分割分成两个并行的任务:为整个图像生成一个非定位原形掩码字典和为每个实例预测一组线性组合系数。然后,从这两个分量创建一个全图像实例分割,即对于每个实例,使用相应的预测系数把原型(Learning prototypes)进行线性组合,用预测的边界框对它们进行裁剪。通过这种方式分割,使得网络学会如何独立定位实例掩码。原型生成分支(protonet)为整个图像预测一组k个原型掩码。将protonet 实现为 FCN,其最后一层有k个通道(每个原型一个)并将其附加到backbone特征层。为了从更深的backbone 特征得到高质量的掩码,从而给小目标带来更好的性能,Yolact选择使用FPN(Feature Pyramid Networks,特征金字塔网络)。Yolact算法的网络结构如图1所示。

图1 Yolact算法的网络结构

1.2 Yolact_edge算法介绍

Yolact_edge对Yolact进行了两项改进:使用NVIDIA的TensorRT推理引擎进行优化和提出一种新颖的特征变形模块来利用视频中的时间冗余。Yolact_edge保留了大量的表达backbone,并在视频中使用时间冗余和TensorRT优化来实现快速准确的实例分割。有选择地将视频的帧分为两组:关键帧和非关键帧。模型在这两组帧中的行为仅在backbone阶段有所不同。对于关键帧,模型计算所有backbone和pyramid的特征。对于非关键帧,只计算特征的一个子集,并使用部分特征变换机制把从时间上最接近前一个的关键帧转换为其余的特征。通过这种方式,在生成准确预测和保持快速运行之间取得了平衡。

1.3 Yolact++算法介绍

2 数据采集与评价标准

2.1 图像采集与自建数据集制作

果园场景图像的采集于2020年7月在甘肃农业大学葡萄园中完成,图像采集时对葡萄园内数条田埂的周围环境依据晴天和阴天的条件,分光照状态(普通光照、强光照、弱光照)进行视频采集,其中:普通光照为晴天上午8:00~11:00和下午15:00~18:00时段以及阴天中午11:00~14:00时段的自然光照,强光照为晴天中午11:00~15:00时段的自然光照,弱光照为阴天上午8:00~11:00和下午15:00~18:00时段的自然光照。通过人工遥控无人车行走,无人车处于正常工作状态。利用车顶双目摄像机的左目进行数据采集,拍摄方向为无人车正前方,摄像机距离地面0.5 m,无人车行进速度约为1.1 m/s,摄像机采集的图像分辨率为1 280×720,采集帧率约为60 f/s。之后将视频文件按帧率为10张/s进行图像拆分,剔除冗余重复的图片后,得到2 400张图片。在训练和测试前进行预处理,将输入图像统一转换为550×550的分辨率大小。

将采集到的2 400张图片使用Labelme标注软件对果园可行驶区域进行标注,标注类别为road(道路),将随机选取图片作为数据集制作的原则,按照光照强度分为三组,分别是普通光照组、强光照组和弱光照组,每组按照5∶2∶1的原则将每组的图片分为训练集、验证集、测试集,即三种光照组中,每组有500张图片用作训练集,200张图片用作验证集,100张图片用作测试集。共得到1 500张训练图片,600张验证图片以及300张测试图片。

2.2 评价指标

本文对该试验结果的评价指标从分割精度和速度出发。

2.2.1 分割精度AP

AP(Average Precision,平均精度)为主流目标检测模型的评价指标,因为Yolact系列算法是实例分割算法,需要先检测再进行分割,故以此为分割精度的指标。本文采用的AP评价指标为MS COCO数据集的评价格式,即在多个IoU(Intersection over Union,交并比)的阈值情况(0.5∶0.95,步长为0.05,总共10个阈值)下计算平均值,因为只有road这一个类别,因此AP和mAP的值相等。计算公式:

式中:Ri与Pi为P-R曲线上的取值点,i∈{0,0.01,0.02,…,0.99,1.00}。

以单个类别召回率为横轴,单个类别识别精度为纵轴,即可绘制P-R曲线。P为精度,计算公式:

式中:TP为实际是正样本,并且正确识别为正样本的情况;FP为实际是负样本,但是错误识别成正样本的情况。

R为召回率,计算公式:

式中:FN为实际是正样本,但是错误识别成负样本的情况。

2.2.2 分割速度FPS

FPS(Frames Per Second)为每秒处理的帧数,主要用来考察实时性。FPS越高,算法的实时性越好。

2.2.3 综合评分

本文采用打分制来评价三种网络模型在精度和速度方面的综合表现,具体是将归一化处理和加权系数结合起来进行打分。

首先对三种分割模型试验结果的精度(或速度)的平均值进行归一化处理:

式中:i=1,2,3分别表示Yolact、Yolact_edge和Yolact++;Ai为i算法的原始精度平均值,Si为i算法的原始速度平均值;Am为三种算法中的最大精度平均值,Sm为三种算法中的最大速度平均值;ai为i算法的精度平均值归一化结果;si为i算法的速度平均值归一化结果。

然后计算加权得分:

Zi=w1ai+w2si

式中:i的定义同上;Zi为i算法的综合得分;ai、si的定义同上;w1、w2为上述两项的加权系数,其和为1。

在农业场景下进行无人车自动驾驶过程中,在满足一定精度要求的同时对分割速度的要求更高,本文根据重要程度对所有检测项加权系数做出如下赋值:w1为0.4,w2为0.6。

3 试验结果与分析

3.1 试验及参数设置

试验的硬件环境为:CPU为英特尔Xeon Silver 4110 2.1 GHz/8-Core,GPU为NVIDIA Tesla K40,内存为48 GB。软件环境为:操作系统Ubuntu 18.04,编程语言python 3.7,GPU加速工具CUDA 10.0以及cuDNN 7.6。

训练时,三种分割模型的backbone均设置为ResNet101-FPN,batch_size设为8,最大迭代次数设置为20 000,每10 000次保存一次训练模型,初始学习率为1e-3,学习率衰减系数为5e-4,最大图片尺寸为550×550。score_threshold设置为0.15。

3.2 试验结果对比

在自建数据集上进行了对比试验,三种光照下三种模型的试验结果和综合得分情况见表1。

表1 三种光照下三种模型的试验结果及综合得分情况

从表1中的AP精度项可以得出以下结论:

在普通光照和强光照下,Yolact++略优于其他两者,其中:在普通光照下,分别比Yolact、Yolact_edge超出0.44%和0.24%;在强光照下,分别比Yolact、Yolact_edge超出0.84%和0.52%。在弱光照下,Yolact_edge要优于其他两者,比Yolact超出0.68%,比Yolact++超出1.48%。

从平均值来看,Yolact_edge的精度最高,为90.95%,分别比Yolact、Yolact++超出0.4%和0.24%,由此可以看出这三种算法在平均精度方面相差不大。

从表1中的FPS速度项可以得出以下结论:

在三种光照下,Yolact_edge均要优于其他两者,其中,在普通光照下,分别比Yolact、Yoalct++超出0.9个fps和1.86个fps;在强光照下,分别比Yolact、Yolact++超出0.91个fps和1.86个fps;在弱光照下,分别比Yolact、Yolact++超出0.9个fps和1.86个fps。

从平均值来看,Yolact_edge的速度最快,为6.95 fps,分别比Yolact、Yolact++超出0.9个fps和1.86个fps,由此可以看出Yolact_edge在速度方面的优越性。同时可以看出不论在哪种光照状态下,各个算法的分割速度相对稳定。

从表1中的综合得分情况可以得出以下结论:在三种算法中,Yolact_edge的原始精度平均值和原始速度平均值最大,因此分别作为精度平均值和速度平均值的归一化条件。Yolact_edge的综合得分第一,Yolact第二,Yolact++第三。由此可得,相较于其他两种算法,Yolact_edge的综合表现最优,在精度和速度方面具有更好的平衡性。

不同光照下三种算法的分割效果实例如图2所示。

图2 不同光照下三种算法的分割效果实例

3.3 试验结果分析

从上述试验结果看出,Yolact_edge相比Yolact和Yolact++在三种光照状态下均具有竞争力,原因如下:首先利用TensorRT推理引擎将网络参数量减少以提升速度,同时平衡精度和速度;其次利用时间冗余以及转换和传播特征,使得深度学习网络复杂的主干特征计算不需要在每一帧上完全计算,节省了推理时间。因此,Yolact_edge无论是在精度、速度,还是平均值和综合得分都占有优势。

Yolact在精度和速度方面是三种算法中比较折中的一种,但有一个问题是由Yolact的掩码生成算法造成的,就是“泄露”问题。网络利用了组装后裁剪的掩码,并且不尝试抑制裁剪区域外的噪声,当边界框准确时,此方法效果较好,但若是边界框不准确,则噪声可能会渗入实例掩码,从裁剪区域外部产生一些“泄露”。“泄露”情况如图3所示。

图3 “泄露”情况(蓝色区域)

Yolact++对Yolact进行了改进,主要是Yolact++模型通过引入更多anchor覆盖更多的尺寸,并在backbone中应用可变形卷积以获得更好的特征采样,在一定程度上解决了定位失败的问题;再者,Yolact++模型通过轻量级掩码错误加权方案部分缓解了泄露问题,具体表现为错误掩码将被忽略或排名低于更高质量的掩码。

4 结束语

果园里的可行驶区域分割对农业无人车的应用意义重大,现阶段尚未有成熟的技术,能够完全支持农业无人车在果园这种复杂环境下自动分割检测道路,自然条件下不断变化的光照和复杂的地面情况,对在果园图像中精确快速地分割可行驶区域影响较大。本文把优秀的快速分割Yolact系列算法应用到智能果园无人车上,对其完成可行驶区域分割任务的性能进行了测试。在三种光照状态下对Yolact、Yolact_edge和Yolact++进行对比实验,得出Yolact_edge在精度和速度方面较为优异,是综合得分最高的算法,适合在果园这种复杂场景下进行可行驶区域快速分割作业。未来工作是要把算法进行优化和工程化出来,提高分割速度并部署在边缘设备上,使其能够在实际场景中进行应用。

猜你喜欢

平均值实例光照
肉种鸡的光照不应性对养殖生产的不良影响分析
隐蔽的力量
巧用1mol物质作标准 快速确定混合物组成
水禽舍的光照及其控制
变力做功时运用F=F1+F2/2的条件
蛋鸭的光照管理
平面图形中构造调和平均值几例
完形填空Ⅱ
完形填空Ⅰ
2007/2008年度桑蚕干茧质量分析报告