为了提高模型在小物体上的性能,我们建议使用以下技术:
-
提高图像捕获分辨率
-
提高模型的输入分辨率
-
平铺图像
-
通过扩充生成更多数据
-
自动学习模型锚
-
过滤掉多余的类
1. 提高图像捕获分辨率
非常小的物体在边界框中可能只包含几个像素——这意味着提高图像的分辨率以增加检测器可以从该小框中形成的特征的丰富度非常重要。因此,如果可能,我们建议尽可能捕获高分辨率的图像。
2. 提高模型的输入分辨率
一旦我们拥有更高分辨率的图像,我们就可以扩大模型的输入分辨率。警告:这将导致大型模型需要更长的训练时间,并且在开始部署时推断速度会更慢。我们可能需要运行实验,来找出速度与性能之间的正确权衡。
3. 平铺图像
检测小图像的另一种很好的策略是将图像平铺作为预处理步骤。平铺可以有效地将检测器放大到小物体上,但允许我们保持所需的小输入分辨率,以便能够进行快速推理。
4. 通过扩充生成更多数据
数据扩充会从我们的基本数据集生成新图像,这对于防止模型过度拟合训练集非常有用。
一些特别有用的小物体检测增强包括随机裁剪、随机旋转和镶嵌增强。
5. 自动学习模型锚
锚定框是模型学习预测的原型边界框,也就是说,锚框可以预先设置,有时对于我们的训练数据来说不是最理想的。自定义调整这些参数以适合我们即将完成的任务是很好的,YOLOv5 模型架构会根据我们的自定义数据自动为我们执行此操作,我们所要做的就是开始训练。
6. 过滤掉多余的类
类管理是提高数据集质量的一项重要技术,如果我们的一个类与另一个类明显重叠,则应从数据集中过滤该类。也许,我们认为数据集中的小对象不值得检测,因此我们可能想要将其取出。通过Roboflow Pro中的高级数据集进行状况检查,我们可以快速识别所有这些问题。
可以通过Roboflow 的本体管理工具来实现类遗漏和类重命名。
结论
正确检测小物体确实是一个挑战。
-
提高图像捕获分辨率
-
提高模型的输入分辨率
-
平铺图像
-
通过扩充生成更多数据
-
自动学习模型锚
-
过滤掉多余的类