1. 磐创AI首页
  2. Medium

我要走进森林

Västergötland落叶松林蛾害的计算机视觉检测

瑞典的森林就像瑞士的山脉,整个国家都被森林覆盖着。瑞典近70%的土地面积是森林,这并不是不必要的民族自豪感的来源。他们是少数几个能在保持伐木业成功的同时增加树木覆盖率的国家之一。

这并不是说瑞典的森林不面临挑战。与世界上许多其他地区一样,入侵的害虫可能会对北欧林地造成重大破坏。在Västergötland的西南部地区,落叶松带菌者,一种小的暗灰色的飞蛾,造成了广泛的经济损失。雌性落叶松在落叶松的针叶上产卵。然后,幼虫通过这根针的内部和邻近的针,将之前被吃掉的针的外面变成一个保护壳(因此有了“病例携带者”的称号)。

幼虫大约5毫米长(对于美国人来说,不到1/5英寸);看到幼虫的机会微乎其微。如果只有一个或几个这样的生物曾经降落在一棵树上,它们可能永远不会被注意到。落叶松是一种高大的树木,高达45米;任何大小的有机体都能对付一些微小的寄生虫。问题是,这些飞蛾的数量远远不止几只。虽然昆虫本身是不可见的,但它们造成的损害是可见的。如果这是可见的,计算机视觉模型可以学习检测到它。

瑞典林业局发布了一个数据集,其中包括Västergötland五个地区落叶松森林的无人机航拍照片。这些图像是在2019年5月27日和8月19日这两天拍摄的,覆盖了Västergötland的五个地区(Bebehojd,Ekbacka,Jallasvag,Kampe和Nordkap)。所有图像都附带由边界框坐标和标签组成的XML文件。标签指示包围在包围盒中的树是落叶松还是其他物种(最有可能是云杉,尽管只有两个包围盒标记为云杉)。5月份图像的标签还包括落叶松案例承担者造成的损害程度(如果树是落叶松)。伤害等级为健康、低伤害和高伤害。

在5月份的数据中,落叶松树木占标签树木的近80%,但仅占8月份数据的70%左右。8月份的数据包含的图像总体较少,为698张,而不是836张,但包含了1900棵不是落叶松的树木。

按位置划分,5月份图像中落叶松的百分比一直在四分之三到五分之四之间,除了坎普和埃克巴卡之外,坎佩的树木密度最高,埃克巴卡的树木密度最低。

每个地区的落叶松比例在8月份变化很大,贾拉斯瓦格下降幅度较大,其他地区的降幅较小。这可能是在两张照片之间的三个月里剔除患病树木的结果,但这似乎不太可能,因为变化百分比最高的贾拉斯瓦格和最低的坎佩拥有两棵健康落叶松的百分比最高。更有可能的是,在两次采集过程中对不同的区域进行了采样。

欧洲落叶松不是最黑暗的针叶树。即使在健康的情况下,这些树也比它们的许多邻居要轻得多,针叶略带蓝色。

随着病例携带者的侵扰开始蔓延,落叶松的外层针叶开始变成棕色。

当虫害达到高危害阶段时,树上留下的任何针叶都已经变成棕色了。

目标检测模型需要检测绿色阴影,以区分落叶松和其他品种,以及区分表征不同虫害程度的绿色阴影和棕色阴影。虽然树枝的形状和树的大小有一些微妙之处,但颜色可能是最重要的一个因素。在这个问题上,即使是一个相当简单的检测模型也应该做得很好。

设置模型

在最后的检查中,EfficientDet保持了用于单镜头目标检测的最先进的模型体系结构。EfficientDet由一系列目标检测模型组成,旨在平滑地管理大小和效率之间的权衡。最小的型号可以用于手持或远程设备,其中可能包括监控森林的无人机,而最大的型号在GPU驱动的服务器上提供更高的精度。

无人机收集的所有图像都是1500×1500。虽然均匀性值得赞赏,但尺寸对于除最大的EfficientDet型号之外的所有型号都太大了。事实上,EfficientDet模型对它们用于训练的输入大小相当挑剔。最小的D0占用512×512,次大的D1占用640×640。经验表明,不根据这些大小调整输入总是会导致性能下降。

幸运的是,裁剪和调整大小是深度学习预处理管道的标准部分。裁剪和调整大小通常伴随着一些适度的拉伸和挤压;随机的裁剪是按照4:3和3:4的比例进行的,然后重新缩放到1:1。这样的举动对这个问题的价值是值得商榷的。树木图像能被压缩成不真实的形状吗?可能不会有这些高宽比;由此产生的图像可能仍然反映了野外树木的自然外观。

用于训练的其他有用的预处理操作是翻转、水平和垂直、旋转和转置。由于颜色是如此重要的特征,而且各个类别的颜色在各个位置都相当均匀,因此几乎没有理由添加颜色增强。事实上,在现代建筑中,色彩增强通常会导致精确度略有下降。(请参阅RandAugment论文中的表5。)RandAugment

预处理验证数据是一件更简单的事情。由于图像已经是方形的,因此只需调整它们的大小以适应模型的大小即可。所有预处理操作都是使用Alumentations包完成的。Albumentations

20%的数据是随机选择的,但在五个地点分层,将等待验证。

该模型的训练参数比较规范。初始学习率为2.56e-3和权重衰减为4e-5的ADAM优化器表现良好。余弦学习率衰减规律略优于指数衰减规律;模型似乎需要一段时间才能找到其最优区域,但随后学习率需要迅速衰减。因为亚当被认为是在狭窄的山谷中找到了擎天柱,所以这种行为并不令人惊讶。焦点丢失是此EfficientDet实现的默认设置;这是幸运的,因为类之间严重不平衡。该模型针对200个历元进行训练,将三个性能最好的历元保存在验证集上。

模型的大小,或者更准确地说,Colab的内存限制,决定了批量大小。批大小8对于EfficientDet0和EfficientDet1有效,但是对于EfficientDet2必须将其减少到4。最终结果是从D1转到D2时精度略有下降。

结果

整体识别结果较好,EfficientDet0的可可图为48.6,EfficientDet1的可可图为50.8。EfficientDet2的这一值下降到50.1,因为训练中使用的批大小更小。由于AP@50反映了实际使用的预测,因此它越实用,则D0的AP@50为75.9,D1的AP@50为79.0,D2的AP@50为77.4。不同班级的分数随着班级频率的不同而不同,最高的是低伤害,最低的是健康。

D2模型精度的下降主要是检测健康树木能力的下降。检测到的低伤害略有上升,而高伤害大致保持不变。健康班也表现出从D0到D1的最大进步。由于从D0到D1的精度确实全面提高,因此似乎没有什么理由在生产中使用D0(除非CPU约束非常严格)。D1和D2之间的选择是一个判断,但由于D1在频率较低的类上表现明显更好,它可能是更好的模型。

回忆是非常好的。考虑到每幅图像大量的地面实况观测,平均65次,像AR@1和AR@10这样的传统测量没有多大意义。AR@100和所有检测的总平均召回率都是有用的指标。再说一次,D1是性能最好的模型。

有趣的是,当从AR@100移动到AR时,高伤害召回优先于其他召回。由于另一个类别与其他三个类别最容易区分,通常是较深的绿色阴影,因此其他类别检测的级别可能高于两者都出现的图像中的高损坏级别。

平均精确度和平均召回率是模型性能的有效衡量标准,但它们本身并不能说明模型如何在实践中使用。要做到这一点,还需要一项,那就是门槛。天真的阈值选择将是0.5,所有高于该阈值的检测将被保留,低于该阈值的所有检测将被丢弃。在多类问题中,天真的选择几乎从来都不是正确的选择。要选择最佳阈值,请找到平衡精确度和查全率的阈值。没有明显的理由让其中一个优先于另一个;F1分数适合于确定最佳阈值。

使用阈值范围0.0:1.0:0.01计算每个阈值的F1分数。对每一类分别计算F1,然后求平均值。对于D0模型,最佳F1得分出现在0.4%,而对于D1,最佳得分出现在0.409。D2模型具有最佳阈值0.379。

上图为地图56.2,略高于整体地图50.8。预测和地面事实显然是非常紧密地结合在一起的。最明显的差异是预测有过多计算落叶松以外的树木的趋势。在某些情况下,不清楚模型是否检测到太多树,或者注释器是否遗漏了一些树。左上角的三个绿色检测框应该只有两个,但是右侧High Damage假阳性下面的小绿色假阳性看起来确实像一棵应该在地下的树。就这一点而言,高损害假阳性似乎是一棵枯死或垂死的树;它是否是一棵落叶松值得商榷。

当模型落叶松树的检测结果与地面实况数据的损坏程度不匹配时,该树通常表现为边缘情况。由模型标记为高损害的低损害树通常比标记为低损害的低损害树看起来更差。同样,被标记为低伤害的高伤害树往往是同类中看起来最健康的。上面图像中被模型标记为健康的一棵树可能是图像中最好看的落叶松。在不更多地了解基本事实注释过程的情况下,可以说的内容是有限的,但这不是模型第一次超越人工注释人员。很明显,模型在三个落叶松类之间确定的阈值与人类注释员的阈值略有不同。

另一个显而易见的事实是,对于图像中最常见的类别,准确率通常是最高的。一棵树的健康通常取决于它的邻居的健康,这一点也就不足为奇了。模特们似乎已经注意到了这一点。单个图像的类级映射与同一图像中的类频率相关。相关性确实随着模型大小而略有降低(除了主要的低损害类别),这表明较小的模型比数据保证更有可能“聚集”标识。

上图的上半部分是群集的示例。少数几棵标记为低损害的树被模型归类为健康的,或者在两棵小树的情况下,完全被忽略。在左下角,情况正好相反;四棵健康的树被标记为低损害。在这两种情况下,都不清楚模型或基本事实是正确的。

在以高伤害树为主的图像中也是如此。在上面的图像中,如果附近有其他高伤害树,那么给树贴上高伤害标签是有一点偏差的。在带有模型预测边界框的图像中,左下角的低伤害树簇较小,左中角的一些低伤害树已全部被丢弃或标记为高阻尼。

很容易将重点放在预测误差上;它们在视觉上总是显而易见的,但模型的准确性总体上仍然很好。在足够大的批量上训练的更大的模型仍然会表现得更好,但目前使用Colab不可能做到这一点。考虑到可用的工具,这种模式算是成功的。

示例代码

用于培训EfficientDet1模型的笔记本。A notebook for training the EfficientDet1 model

包含用于生成预测的代码的笔记本。(只供解释之用。)A notebook containing code for generating predictions

包含评估代码的笔记本。(只供解释之用。)A notebook containing the code for evaluation

训练模型的代码可以由任何用户运行。预测和评估的代码需要调整一些引用以指向用户生成的模型和输出文件。

参考文献

谭明兴,庞若明,郭文乐。EfficientDet:可伸缩、高效的目标检测。2020年IEEE计算机视觉和模式识别会议论文集。

瑞典林业局(2021年):森林破坏-落叶松案例承担者1.0。国家森林数据实验室。数据集。National Forest Data Lab

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/09/16/%e6%88%91%e8%a6%81%e8%b5%b0%e8%bf%9b%e6%a3%ae%e6%9e%97/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息