陈锋军 王成翰 顾梦梦 赵燕东
(1.北京林业大学工学院, 北京 100083; 2.城乡生态环境北京实验室, 北京 100083;3.德州农工大学园艺系, 大学城 77843; 4.林业装备与自动化国家林业局重点实验室, 北京 100083)
随着城市建设和环境改善等方面需求的增加,花卉苗木行业近年来取得了飞速发展。根据中国经济网数据,2016年全国苗木花卉生产面积200多万公顷,年产值达3 600多亿元[1]。苗木生产中劳动力成本最高,约占总成本的50%,降低劳动力成本是苗木企业盈利的关键因素之一。传统的苗圃库存统计均是人工计数,存在劳动成本高、效率低、人力资源浪费严重等问题,且不能保证准确率。无人机航拍自动统计苗木数量是替代人工统计的理想方法。
图1 分割算法框图Fig.1 Block diagram of segmentation algorithm
利用航拍进行苗木库存统计和计数受到很多客观条件的影响,例如成像光照变化、苗木个体之间差别、地面杂草背景干扰以及苗木之间的粘连等因素,国内尚未查到相关已解决该问题的研究文献,国外研究也处于探索阶段[2-8]。参考国内外其他领域相关文献[9],涉及的方法主要包括基于形状[10]和颜色特征[11]的方法、基于阈值分割的方法[12]和基于学习的方法[13-15]。其中基于形状、颜色和阈值的算法受人为主观因素影响大,不具有鲁棒性。深度学习算法在农业[16]和无人机[17]领域得到快速的研究和应用。美国宾夕法尼亚大学的Vijay Kumar实验室利用深度学习算法,通过无人机拍摄图像预测苹果和柑橘的产量[15]。德国波恩大学CYRILL团队,通过RGB+NIR图像和卷积神经网络(Convolutional neural network, CNN)实时区分甜菜和田间杂草[18-19]。2015年CVPR会议首次提出全卷积神经网络(Fully convolutional networks,FCN)结构用于语义分割[20]。FCN的优点是可以接受任意大小的输入图像,不要求所有训练样本和测试样本尺寸相同,避免因使用像素块引起的卷积计算问题,使运行更加高效。马树志[21]利用AlexNet框架搭建全卷积网络结构,研究分割CT影像中的肝脏。毋立芳等[22]利用FCN和深度卷积神经网络(Deep convolutional neural network, DCNN),实现毫米波雷达云图快速精确分割。王鹏等[23]利用Caffe框架、在CNN的基础上结合反卷积神经网络提出一种有效的人体图像分割方案。相比传统图像分割方法,深度学习FCN的性能更优。
本文以无人机拍摄的种植云杉为研究对象,提出一种应用FCN模型的分割算法,有效去除背景干扰,提取图像中的云杉部分,实现云杉数量自动统计。
本文提出的FCN模型对无人机航拍云杉图像进行分割的算法框图如图1所示。首先利用无人机获取云杉图像,然后将图像进行压缩预处理,构建FCN模型并对其进行训练,最终实现对图像中云杉的有效分割。
本文预处理的主要目的是减少FCN模型的计算量以及算法运行时间。无人机拍摄的云杉图像为4 000像素×3 000像素的RGB图像,如果不做压缩直接输入FCN模型,训练过程计算量大,运行时间长。参考文献[24],设定FCN模型输入图像为224像素×224像素,在保证云杉分割效果的前提下,将云杉图像从原图的4 000像素×3 000像素压缩至1 200像素×900像素,标注好云杉信息之后再压缩到224像素×224像素,作为FCN模型的输入。
CNN的主要功能是实现图像分类,由卷积层、池化层、全连接层和softmax分类器层组成[20]。FCN与CNN相比,将卷积层后的全连接层换成了卷积层,添加反卷积层连接至softmax分类器;FCN首先提取图像中的特征生成特征图,再将特征图进行反卷积操作,输出与输入图像同样大小的灰度图像;FCN通过判断图像中每一个像素的类别完成图像的语义分割。VGG16采用较小的卷积核提取图像边缘细节特征,可以通过增加卷积层的层数提高分类精度,本文以VGG16为基础构建云杉图像分割的FCN模型,如图2所示。
图2 FCN模型结构Fig.2 Fully convolutional networks architecture
其中conv、relu、pool和deconv分别表示卷积层、ReLu激活函数、池化层和反卷积层,FCN模型共有6组卷积层,每个卷积层后添加ReLu激活函数,各组卷积层之间由池化层相隔。输入为224×224×3的RGB图像,输出为224×224×1的灰度图像。
卷积层的参数以卷积核参数的形式存在,通过更新卷积核参数学习云杉图像特征,特征复杂程度随着卷积层数的增加而增加。本文FCN模型各卷积层中卷积核细节如表1所示。
表1 FCN模型各卷积层中卷积核具体情况Tab.1 Details about convolution kernel
为减少卷积层conv6_1和conv6_2过拟合现象,采用丢弃法,保持率设置为0.5,即每一次训练过程中只随机选择50%的卷积核参与训练。
为了提高训练速率和增加网络非线性能力,选择ReLu函数作为激活函数,其表达式为
a=max(0,b)
(1)
式中a——激活函数的输入
b——激活函数的输出
为了保留主要特征并减少参数数量和计算量,选用2×2的平均池化作为池化层,经池化层处理后的特征图尺寸缩小至输入图像的一半。
(2)
式中yij——池化层在(i,j)处的输出
xij——池化层在(i,j)处的输入
r——池化层输入行数
c——池化层输入列数
反卷积层操作目的是使卷积层输出图像恢复到输入图像的尺寸并增强细节信息。设置一个比反卷积层输入图像尺寸更大的矩阵,使输入图像能够均匀散布在所设置矩阵中做卷积操作。以3×3的输入矩阵为例,先将其扩充至7×7的矩阵中,再与3×3的卷积核做步长为1的卷积操作,其结果输出为5×5的矩阵,具体过程如图3所示。本文反卷积层使用特征融合技术,通过将池化层的输出和反卷积层输出求和,融合卷积层得到的精细输出和反卷积层得到的粗糙输出,以提高云杉图像分割精度。
图3 反卷积过程示例Fig.3 Deconvolutional demonstration
评价语意分割的效果有特定的标准[25],具体为像素精度(Pixel accuracy, PA)、均像素精度(Mean pixel accuracy, MPA)、均交并比(Mean intersection over union, MIoU)和频权交并比(Frequency weighted intersection over union, FWIoU)这4个评价指标。
1.3.1像素精度
像素精度为判别正确的像素数量在所有像素中所占的比值,即
(3)
式中RPA——像素精度
k——语义分割的类别,本文中k为1
pij——属于类别i被识别为类别j的像素数量
pii——判别正确的像素数量
1.3.2均像素精度
先计算每一类内像素的精度,再求得所有类别像素精度的平均值,即
(4)
式中RMPA——均像素精度
1.3.3均交并比
均交并比是语义分割的标准度量参数。计算两个集合的交集和并集的比率,语义分割中交集可以看作判别正确的像素集合,并集为判别正确的(pii)和被误判的(pij+pji)像素集合,即为真实值与预测值的比值。先计算出每一类内交并比,再求得所有类别交并比的平均值,即
(5)
式中RMIoU——均交并比
pji——属于类别j被识别为类别i的像素数量
1.3.4频权交并比
频权交并比是均交并比的一种升级形式,根据每一类出现的频率设置其权重。
(6)
式中RFWIoU——频权交并比
2017年7月18—19日在内蒙古苗圃基地(东经111°49′47″,北纬40°31′47″,海拔1 134 m)选用大疆精灵4无人机采集图像。无人机云台可控转动范围俯仰-90°~30°,角度抖动量±0.02°;镜头为FOV 94°,20 mm(35 mm格式等效);利用定点悬停的方式采集云杉图像,图像尺寸为4 000像素×3 000像素。采集时间为05:30—07:30、09:00—10:00和17:00—18:00。拍摄前确认无人机电池充电完成、无人机对应APP更新和无人机内存清空;拍摄时首先调整无人机相机镜头与地面平行,采集云杉正投影图像,采用蛇形飞行轨迹,飞行高度分别选取8、10、12、15 m和其他高度。以05:30—07:30为例,18日测量环境参数如下:光照强度42 800 lx,风速1.7 m/h,湿度68.0%,温度为27.2℃,云杉地块1面积为1 700 m2,云杉地块2面积为825 m2。考虑到图像后期拼接等操作,拍摄前在云杉种植地块铺设大小为1 m×1 m边界二维码4幅和中央区域二维码2幅。
充分考虑样本量充足和样本具有代表性两方面因素,构建的数据集分为训练集和测试集。考虑云杉图像在不同采集时间、不同采集地块和不同飞行高度下采集的情况,选择清晨、上午和中午不同拍摄时间,无人机飞行高度8 m和10 m两个地块的云杉图像300幅共计13 028株云杉组成训练集。云杉图像压缩预处理后,用Photoshop软件进行人工标注,具体步骤为:①输入压缩后大小为1 200像素×900像素的彩色图像。②灰度化输入图像。③设置云杉目标区域灰度为255,非云杉区域灰度为0。④压缩标注后图像至224像素×224像素,作为FCN模型的输入。压缩为1 200像素×900像素的彩色原图和标注后的灰度图像如图4所示。
图4 标注前后云杉图像Fig.4 Examples of unlabeled and labeled images
测试集分为3组,共选取170幅云杉图像共计7 312株云杉和90幅樟子松图像共计3 218株樟子松。随机抽取50幅云杉图像共计2 154株云杉作为测试集A组; 05:30—07:30、09:00—10:00和17:00—18:00不同时间段选取的共120幅云杉图像共计5 158株云杉组成测试集B组;同时所拍摄的樟子松图像90幅,共计3 218株樟子松组成测试集C组。测试集示例如图5所示,图像尺寸为4 000像素×3 000像素。
实验硬件配置基于Intel Xeon E2-2620 v4@2.10 GHz CPU、NVIDIAGTX 1080Ti 11 GB GPU和32 GB内存,Ubuntu 16.04操作系统下,利用Python语言编程,在Tensorflow框架下搭建基于VGG16结构的FCN模型,完成云杉图像分割的训练和测试。具体流程如图6所示。
图5 测试集示例Fig.5 Examples of test set images
图6 基于VGG16结构的FCN云杉图像分割算法流程图Fig.6 Flow chart of spruce image segmentation based on FCN with VGG16
输入训练集图像,FCN模型将分割结果与标注文件进行对比计算损失函数值,经过60 000次迭代,损失函数收敛于5.727 2×10-3,训练过程持续5.78 h。其中批大小设置为2,训练速率初值设置为1×10-4,选取Adam优化算法,利用训练好的VGG16网络模型初始化前5组卷积层。训练过程中损失函数的变化如图7所示。
图7 训练过程中损失函数变化情况Fig.7 Loss function in training process
如图7所示,前10 000次迭代过程中损失函数值迅速减小,20 000次迭代后损失函数基本收敛,损失函数值稳定在5.727 2×10-3,虽然有扰动出现,但随着迭代次数的增加,扰动的幅值逐渐减小。
2.5.1算法的效果验证
测试集中的A、B、C 3组图像分别为随机挑选的云杉图像、不同光照条件的云杉图像和同时同地采集的樟子松图像,将测试集图像输入到训练好的FCN模型中进行分割测试。PA、MPA、MIoU和FWIoU的结果如表2所示,其中MIoU作为主要评价指标。
表2 FCN模型测试结果Tab.2 Test results of FCN model
FCN模型在PA和FWIoU这 2个评价指标上对于3组测试集没有明显的差异;对于MPA和MIoU这2个评价指标,FCN模型对于云杉图像和非云杉图像测试集上表现出明显的差异,对于云杉图像MPA达到0.86,MIoU达到0.75,对于非云杉图像的樟子松测试集MPA为0.56,MIoU为0.47。测试整体的结果显示FCN模型对云杉具有较强的分割能力,对于非云杉的樟子松分割能力较差,分析原因发现测试集中虽然云杉和樟子松采集正投影图像,树冠的投影都是形状和大小近似的圆形,但是训练集中没有樟子松的训练样本,本文FCN模型不能有效分割没有经过训练的其他苗木。
图8 3种算法的分割结果Fig.8 Comparison of segmentation results by three kinds of algorithms
在晴朗天气中的清晨、上午和下午不同时段采集云杉图像的测试集B组,对于PA、MPA、MIoU和FWIoU 这4个评价指标的数值上没有明显差异,表明晴朗天气下成像光照条件对FCN模型基本没有影响。
另外,FCN模型加载过程耗时23.8 s,100幅224像素×224像素的云杉图像批量测试耗时8.5 s。平均一幅云杉图像的测试时间为0.085 s,FCN模型分割速率符合云杉计数的应用需求。
总之通过测试可知FCN模型对于云杉图像具有较好的语义分割效果,对晴朗天气成像的光照条件并不敏感,运行速率符合应用要求;但是对没有经过训练的非云杉苗木语义分割效果较差。
2.5.2与其他分割算法的比较
图像分割是由图像处理到图像分析的关键步骤,虽然已有上千种算法,但迄今为止没有任何一种通用算法能够有效地解决问题,图像分割算法都是面向特定应用具体分析的结果。为验证本文FCN模型的分割性能,选取农林业常用的基于颜色特征的阈值分割算法和K均值聚类算法进行比较。随机选取云杉图像50幅,比较本文FCN模型分割、HSV颜色空间阈值分割和K均值聚类分割3种算法,部分分割结果如图8所示。
从定性的角度比较3种分割算法,由图8可知FCN模型分割效果最好,分割后的云杉轮廓清晰,细节完整,较好地解决了粘连问题;其次为HSV颜色空间阈值分割算法,分割后的云杉轮廓比较清晰,细节有些模糊,产生了粘连问题;K均值聚类分割算法效果最差,分割后云杉粘连严重。利用PA、MPA、MIoU和FWIoU这4个评价指标定量对比3种分割算法,结果如表3所示。
表3 3种算法测试结果Tab.3 Test results of three kinds of algorithms
对3种分割算法的测试结果进行定量比较,根据PA、MPA、MIoU和FWIoU这4个语义分割结果评价指标可以得到与定性比较3种算法一样的结论:FCN模型分割效果最好,MIoU达到0.75;K均值聚类算法分割效果最差,MIoU仅为0.37,比FCN模型低了0.38。分析3种算法的分割结果,K均值聚类分割算法能够有效分割地面铺设二维码等与云杉颜色相差较大的背景,对于与云杉颜色相近的杂草和云杉成像的阴影分割效果较差,导致分割结果云杉粘连不能有效去除背景。HSV颜色空间阈值分割算法通过调整阈值范围一定程度上减轻了分割后云杉粘连问题,但是不能有效去除杂草背景。FCN模型因为卷积层云杉特征学习的强大能力和反卷积层云杉特征的融合输出能够很大程度上保证分割算法的鲁棒性,分割后的云杉轮廓清晰,细节完整,有效地去除了杂草和阴影等背景干扰。
(1)提出一种基于FCN模型的云杉图像分割算法。训练后测试FCN模型,PA和MPA的值达到0.86、MIoU的值为0.75、FWIoU的值为0.76,云杉分割后轮廓清晰、细节完整,实现了像素级精确的语义分割。通过挑选不同时段拍摄的云杉图像进行测试,结果表明,FCN模型的分割算法对晴朗天气下成像的光照条件具有良好的鲁棒性能。分割云杉图像每幅平均耗时0.085 s,完全满足云杉数量统计的应用目的,具有良好的实时性。
(2)为进一步验证FCN模型的效果,与HSV颜色空间阈值分割算法和K均值聚类分割算法进行比较。HSV颜色空间阈值分割算法分割后,云杉轮廓比较清晰,细节有些模糊,出现粘连问题,K均值聚类分割算法分割后云杉粘连问题严重;比较PA、MPA、MIoU和FWIoU这4个评价指标值,HSV颜色空间阈值分割算法比FCN模型分割算法低0.07、0.04、0.10和0.10,K均值聚类分割算法比FCN模型分割算法低0.31、0.31、0.38和0.38。对比结果表明,FCN模型效果优于HSV颜色空间阈值分割算法和K均值聚类分割算法。