图像分割在计算机视觉中的应用
在计算机视觉领域,模型经常需要处理从远处检测小目标的任务,这通常因为目标距离较远而获取到的视觉数据较少,导致准确推断变得困难。为了解决这个问题,可以采用图像分割技术,将每张图像分割成更小、更易于管理的小块,以便对图像的较小部分进行放大并进行更准确的训练和推断。
关键在于确保在训练和推断过程中都使用图像分割,并且使用的图像块大小相似。如果在训练时使用图像分割,而在非分割的图像上进行推断,可能会导致模型错误地检测到错误大小的物体,从而产生误报。例如,一个训练用于从航拍照片中检测汽车的模型,如果在训练时使用了图像分割以提高准确性,但在推断时没有使用,就会注意到模型检测到的比所需更大的形状。
在推断时应用图像分割后,可以得到更好的准确性。在训练期间进行图像分割,可以在训练的生成部分使用图像分割预处理步骤,如下所示:
# 在训练期间使用图像分割的代码示例
在图像上运行推断时,可以应用图像分割。使用开源计算机视觉工具Supervision,可以使用InferenceSlicer对图像的分割部分进行推断。更多关于如何使用SAHI的信息,请参考这篇博客文章。
⚠️ 注意:本文之前的版本提到了在Hosted API中使用tile参数。Roboflow Hosted Inference API不再支持在API内作为参数的图像分割。但是,仍然可以使用Slicing Aided Hyper Inference (SAHI)。更多信息,请查看这篇博客文章!
使用图像分割可以提高小目标检测和航拍照片的准确性。虽然可能会直接将源图像分割成更小的图像,但有一些性能考虑和缺点需要注意。使用过多的图像块可能导致训练时间变长,并且在分割步骤中被切割的物体可能会对准确性产生负面影响。图像分割也可能对推断速度产生负面影响。由于图像分割会从较大的基础图像中产生多个较小的图像,如果生成了过多的图像块,这可能会降低性能。如果性能要求包括高速推断,图像分割可能不适合用例。
查看部署指南,以帮助找到适合问题的正确解决方案。如果认为图像分割可能对用例有益,建议生成多个不同大小的图像分割训练模型版本,以比较每个版本的准确性与性能,以获得最佳结果。