440. iWildcam 2021 - FGVC8 | iwildcam2021-fgvc8
这个方案是基于去年参赛者的一些想法构建的,所以我希望我的方案描述对其他人也能有所帮助。
我使用了 WCS 收集的图像以及 iNat 2017/2018/2021 收集的共享类别图像,并对整个数据集应用了 CLAHE 和 Simple WB 来增强夜间图像。
我在这一组图像上应用了 Megadetector V4 推理(包括 WCS 中标记为 empty 的图像),对于 WCS 数据,我只考虑得分 ≥ 0.3 的检测结果,而对于 iNat 数据集,只考虑检测标签为 Animal 且得分 ≥ 0.95 的结果。然后,我在检测到的边界框周围使用了方形裁剪,其大小等于边界框的最大边长,尽量使动物保持在正方形中心,除非它超出了图像边界。我为每个裁剪分配了原始完整图像的图像级注释标签(物种或 empty),以创建一个 训练边界框数据集,我以分层方式将其拆分(80% 训练 - 20% 验证),并按位置对 WCS 图像进行分组。
我微调了三个带有 ImageNet 预训练权重的模型,训练在不同的图像分辨率下进行:ResNet152 (224 px)、EfficientNetB3 (300 px) 和 EfficientNetB7 (600 px)。
在训练期间,进行了非常简单的数据增强:随机旋转、随机平移、随机水平翻转和随机对比度调整。
我使用了来自 WCS/iNats 数据集的位置和年度时间信息的 sin/cos 表示来训练一个 地理先验模型,在对 WCS 测试数据进行模型推理时,我将其作为补充的先验信息。为此,我使用了 地理先验模型训练的 TF 实现。
对于 WCS 测试数据,我遵循了与上述类似的方法(CLAHE 和 Simple WB、Megadetector V4、得分 ≥ 0.3 的检测和方形图像裁剪)来创建一个 测试边界框数据集。
基于 Megadetector 预测的分类管道的主要缺点之一是它会产生大量误检,这些误检有时很难消除。当时间和位置信息可用时,解决此问题的一种方法是使用某种运动检测方案。
在我的实验中,我测试了一种称为“累积平均”的技术,用于找出图像中检测到动物但在时间上没有显示任何明显变化(移动)的区域。因此,如果检测得分 < 0.9 并且在边界框区域中通过序列帧未检测到移动,则该检测被标记为无效。为此,我受到了 MotionMeerkat 项目想法的启发,并使用了他们的一部分 代码 和参数值。
还有其他检测运动的方法似乎更有效(例如基于高斯混合的前/背景分割),但我在这些实验中没有测试它们。
以下是通过该方法正确丢弃(红色)和正确接受(绿色)的检测序列的两个示例:
我在 测试边界框数据集 上分别应用了三个分类模型的推理,将分类器的输出向量乘以每张图像的地理先验模型的输出向量,然后对三个模型的预测进行加权平均。每个模型的权重基于验证集的评估结果。
为了确定每个序列中存在的物种和个体数量,我执行了以下操作: