瑞典的森林到处都是。瑞典近70%的土地面积是森林,这是一种不应有的民族自豪感。他们是少数几个能够保持伐木业成功并同时增加树木覆盖率的国家之一。
这并不是说瑞典的森林没有面临挑战。与世界上许多其他地区一样,入侵性害虫会对北欧林地造成严重破坏。在V?sterg?tland西南部地区,落叶松箱蛾是一种暗灰色的小蛾,会造成广泛的经济损失。
雌性在落叶松的针叶上产卵。然后幼虫会吃掉这根针和周围的针,把之前被吃掉的针的外面变成一个保护壳(因此有了“松箱”这个绰号)。
幼虫长约5毫米;看到的机会很小。如果只有一个或几个这样的生物降落在一棵树上,它们可能永远不会被注意到。落叶松为高大乔木,高达45米;任何这种大小的有机体都能对付一些微小的寄生虫。问题是这些蛾子的数量远不止这些。虽然昆虫本身是看不见的,但它们所造成的伤害却是显而易见的。如果这是可见的,计算机视觉模型可以学会检测它。
瑞典林业局发布了一个数据集,其中包括V?sterg?tland五个地区落叶松森林的空中无人机照片。这些照片拍摄于2019年5月27日和8月19日两天,拍摄于V?sterg?tland五个地区(Bebehojd、Ekbacka、Jallasvag、Kampe和Nordkap)。
所有图像都附带由边界框坐标和标签组成的XML文件。标签指示包围在边界框中的树是落叶松还是其他树种(很可能是云杉,尽管只有两个边界框被标记为云杉)。如果这棵树是落叶松,图像的标签包括伤害程度。伤害等级为健康、低伤害和高伤害。
数据概要
在5月份的数据中,落叶松占了近80%,但在8月份的数据中,落叶松仅占70%左右。8月份的数据包含的图像总体上较少,分别为698张和836张,但包含的不是落叶松的树木多出1900棵。
按位置划分,5月份图像中落叶松的百分比始终在四分之三到五分之四之间,除了Kampe和Ekbacka,后者的树木密度最高,后者最低。
8月份,每个地区落叶松树的比例差异很大,贾拉斯瓦格和其他地方的小落叶松树的比例大幅下降。这可能是在两张照片之间的三个月内剔除病树的结果,但这似乎不太可能,因为变化百分比最高的Jallasvag和变化百分比最低的Kampe两棵健康落叶松的百分比最高。更有可能的是,在两次采集过程中对不同区域进行了采样。
欧洲落叶松不是最黑的针叶树。即使在健康的情况下,这些树也比它们的邻居轻得多,针叶略带蓝色
左图:健康落叶松树林。右图:由其他树种组成的森林区域。注意,即使是健康的落叶松也有浅色的针叶。
当带菌者开始感染时,落叶松树的外部针叶开始变成棕色。
坎佩的一个森林区域,由落叶松组成,大部分损害较低。沿着树的边缘可以看到淡淡的棕色。
当虫害达到高伤害阶段时,树木留下的针叶已经变成棕色。
坎佩的一个森林区域,由严重受感染的落叶松组成。剩下的一点绿色大部分来自落叶松周围生长的较小的植物。
目标检测模型需要检测绿色的阴影,以区分落叶松和其他品种,以及区分不同程度的侵扰的绿色和棕色阴影。虽然树枝的形状和树木的大小有微妙之处,但颜色可能是唯一最重要的因素。即使是一个相当简单的检测模型也可以很好地解决这个问题。
建立模型
最后检查,EfficientSet仍然是单镜头目标检测的最先进模型架构。
EfficientSet由一系列目标检测模型组成,旨在顺利管理大小和效率之间的权衡。最小的模型可用于手持或远程设备,其中可能包括监控森林的无人机,而最大的模型可在GPU供电的服务器上提供更高的精度。
无人机采集的所有图像均为1500x1500。虽然一致性受到赞赏,但除了最大的EfficientDet模型外,其他所有模型的尺寸都太大了。事实上,EfficientSet模型对用于训练的输入大小相当挑剔。最小的D0为512x512,下一个最大的D1为640x640。经验表明,不将输入调整到这些大小必然导致性能损失。
幸运的是,裁剪和调整大小是深度学习预处理管道的标准部分。裁剪和调整大小通常伴随一些适度的拉伸和挤压;随机裁剪的比例在4:3和3:4之间,然后重新调整为1:1。这一举措对解决这一问题的价值值得商榷。树木图像会被压缩成不切实际的形状吗?可能没有这些高宽比;由此产生的图像可能仍然反映了野生树木的自然外观。
使用从4:3延伸到1:1纵横比的树木训练图像。扭曲不足以使树看起来不现实。
用于训练的其他有用的预处理操作是翻转、水平和垂直、旋转和转置。由于颜色是一个非常重要的特征,而且各个位置的类别颜色相当同质,因此几乎没有理由添加颜色增强。事实上,在现代体系中,色彩增强通常会导致精确度略有下降。
预处理验证数据是一件简单的事情。由于图像已经是正方形,因此调整其大小以适合模型内部就足够了。所有预处理操作都使用Albumentations包完成。
20%的数据是随机选择的,但分层分布在五个地点,用于验证。
模型的训练参数相当标准。初始学习率为2.56e-3,权重衰减为4e-5的Adam优化器表现良好。余弦学习率衰减规律略优于指数衰减规律;似乎模型需要花一段时间大步寻找它的最佳区域,但随后学习率需要迅速衰减。因为adam被认为是在狭窄的山谷中找到了最佳状态,所以这种行为并不奇怪。
模型的大小,或者更准确地说,Colab的内存限制,决定了批量大小。对于EfficientDet0和EfficientDet1,批量大小为8起作用,但对于EfficientDet2,必须将其减少到4。最终结果是,从D1到D2时,精确度略有下降。
结果
总体鉴定结果良好,EfficientDet0的COCO mAP为48.6,EfficientDet1的COCO mAP为50.8。由于训练中使用的批量较小,因此EfficientDet2降至50.1。结果更实际,因为它反映了实际使用的预测,AP@50 D0为75.9,D1为79.0,D2为77.4。不同类的分数因类频率而异,低伤害最高,健康最低。
EfficientDet0的平均精度:
EfficientDet1的平均精度
EfficientDet2的平均精度
D2模型的精度下降主要是检测健康树木的能力下降。低损伤的检测略有上升,而高损伤大致保持不变。由于从D0到D1的精度确实全面提高,因此似乎没有什么理由在生产中使用D0(除非CPU限制非常严格)。D1和D2之间的选择是一种判断,但由于D1在频率较低的类上表现明显更好,因此它可能是更好的模型。
值得注意的是,当从AR@100到AR时,对高损伤的召回超过了对Other损伤的召回。
所有模型的平均召回率。
平均准确率和平均召回率是衡量模型性能的有效指标,但它们本身并不能说明模型在实践中的应用。这还需要一个项目,即阈值。简单的阈值选择是0.5,高于该阈值的所有检测都将保持,低于该阈值的所有检测都将丢弃。
在多类问题中,这个选择几乎从来都不是正确的选择。要选择最佳阈值,请找到平衡精度和召回率的阈值。F1分数适用于确定最佳阈值。
使用阈值0.0:1.0:0.01的范围计算每个阈值的F1分数。对每个类别分别计算F1,然后取平均值。对于D0模型,F1的最佳得分为0.4,D1的最佳得分为0.409。D2模型的最佳阈值为0.379。
具有代表性的图像。左是真实结果;右边是D1的检测结果。
上图为mAP56.2,略高于总mAP50.8。预测和真实结果显然是紧密相连的。最明显的差异是该预测倾向于过度计算落叶松以外的树木。
在某些情况下,不清楚模型是否检测到过多的树,或者注释器是否遗漏了一些树。左上角的三个绿色检测框应该只有两个,但右侧高伤害假阳性下方的小绿色假阳性看起来确实像一棵树,应该在地面上。因此,高伤害假阳性似乎是一棵死树或垂死树;这是不是落叶松还有待商榷。
另一个显而易见的事实是,对于图像中最常见的类别,准确度通常是最高的。一棵树的健康状况往往由它的邻居的健康状况决定,这一点也不奇怪。该模型似乎已经意识到了这一点。单个图像的类级别映射与同一图像中的类频率相关。这种相关性确实随着模型尺寸的增大而略微减小,这表明较小的模型比数据所保证的更可能“聚集”识别。
健康树百分比最高的图像。左是真实结果;右边是D1的检测结果。
上图的上半部分是聚类的一个示例。少数标记为低伤害的树木被模型归类为健康树木,或者,在两棵小树的情况下,被完全忽略。在左下角,情况正好相反;四棵健康的树被标记为低伤害。在这两种情况下,都不清楚模型或基本事实是否正确。
具有高百分比高伤害树的图像。左是真实标签;右边是D1的检测结果。
同样的情况也发生在以高伤害树为主的图像中。在上图中,如果树木附近有其他高伤害树木,则有轻微偏向于将其标记为高伤害树。左下角的低伤害树簇在具有模型预测边界框的图像中较小,左中角的一些低伤害树已被丢弃或标记为高伤害。
关注预测误差很容易;它们在视觉上总是显而易见的,但模型的准确性总体上还是不错的。在足够大的批量上训练更大的模型仍然会表现得更好,但这在Colab中目前是不可能的。
示例代码
引用
Mingxing Tan, Ruoming Pang, and Quoc V. Le. EfficientDet: Scalable and Efficient Object Detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2020.
Swedish Forest Agency (2021): Forest Damages — Larch Casebearer 1.0. National Forest Data Lab. Dataset