图像模糊对深度学习模型的影响

在理想情况下,希望深度学习模型能够在最佳光照条件下进行训练和测试。然而,现实世界中的情况远比这复杂得多。为了使机器学习模型能够更好地应对现实世界的挑战,有意识地在数据集中引入缺陷是至关重要的。降低图像质量正是可以在后处理中完成的任务,而无需收集更多数据并对其进行标记的头痛问题。

模糊的影响

图像中可能会出现多种类型的缺陷,如模糊、对比度差、噪声、JPEG压缩等。在这些缺陷中,模糊可能是最具破坏性的。亚利桑那州立大学的研究人员考虑了模糊可能对图像分类的影响,特别是与其他技术相比。在他们的研究中,模糊和噪声对简单的分类任务产生了最不利的影响,这些任务涉及多种卷积神经网络架构。即使是少量的模糊(σ = 2)也会导致误分类。研究人员怀疑,模糊特别掩盖了卷积在特征抽象的早期阶段定位边缘的能力,导致网络训练初期的特征抽象不准确。

模糊的应用案例

模糊可以作为预处理技术或图像增强技术应用。如果生产中的所有图像都可能涉及模糊,那么在训练、验证和测试中的所有图像都应该在预处理中进行模糊处理。然而,更常见的情况是,只有一些图像可能存在模糊。考虑以下情况:

  • 摄像头是静止的,但它检测到的对象经常在移动;例如,摄像头正在监视交通。
  • 摄像头在移动,但它检测到的对象是静止的;例如,用户有一个移动应用程序来扫描书籍封面。
  • 摄像头及其检测到的对象都在移动;例如,无人机在风大的庄稼地上空飞行以检测。

在这些示例中,模糊是一个有用的增强步骤。也就是说,一些图像在随机数量上进行了变化,以模拟不同程度的模糊。

实现模糊

在核心上,模糊图像涉及获取邻近像素并平均它们——实际上,这减少了细节并创造了感知为模糊的效果。因此,在核心上,当实现不同程度的模糊时,正在确定要包含多少邻近像素。从单个像素测量这种扩散作为标准差,在水平(X)和垂直(Y)方向上。标准差越大,图像接收到的模糊就越多。

可以通过Wikipedia了解模糊量。像OpenCV这样的库实现了高斯滤波器,这些滤波器可以用于开源Python脚本中的高斯模糊。利用这些方法,可以在训练管道中的每张图像上添加随机数量的模糊。建议变化输入图像接收到的模糊程度,以更接近现实世界的情况。

# 示例:使用OpenCV实现高斯模糊 import cv2 image = cv2.imread('path_to_image.jpg') blurred_image = cv2.GaussianBlur(image, (21, 21), 0) cv2.imshow('Blurred Image', blurred_image) cv2.waitKey(0) cv2.destroyAllWindows()

或者,Roboflow允许轻松设置单个图像希望接收的最大高斯模糊量(比如说,n),训练集中的每个图像接收的模糊量在(0,n)之间,以均匀随机的方式进行采样。

Roboflow还记录了每张图像的变化情况,因此可以轻松地看到哪种程度的模糊可能是最具问题的。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485