Press "Enter" to skip to content

在目标检测任务中使用图像增强节省宝贵的时间

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

计算机视觉主要是作为一种有监督的学习任务来处理的。为了创建一个强大的分类或检测模型,我们需要大量的标记数据。幸运的是,有很多资源可以开始,它们为各种不同的计算机视觉任务提供了巨大的预先标记的数据集,比如人体姿势估计、医学图像、自动驾驶等。但是如果手头没有针对我们的问题的标记数据怎幺办?在这种情况下,我们必须创建我们自己的代表性数据集!创建自定义数据集的一个关键方面是扩充步骤。

 

在这篇文章中,我将分享我的工作流程,即使用图像增强来放大任何用于对象检测的数据集。图像增强在计算机视觉中起着重要的作用,它可以显着减少标记时间,同时生成训练数据,使您的模型具有更好的泛化能力!

 

什幺是增强?为什幺它效果这幺好?

 

扩充是在保留上下文的同时更改输入数据的过程。在图像的情况下,它意味着翻转图像,向其添加噪声,旋转它,改变色温等。如果我们这样做,我们就会模拟同一对象的不同现实世界场景。例如,我们可以保证我们的模型对相机方向、照明条件等都是健壮的。我们的优势是,我们可以通过随机混合不同的放大技术(如翻转和颜色更改或旋转和添加噪音),对一张图像多次执行所有这些操作。我们可以这样做,因为对于一个未经训练的模型,每个增强的图像都是不同的,从而帮助它更好地泛化。当然,我们不应该过度使用增强的力量。例如,只标记一幅图像并将其放大几百倍,然后将其用作标准数据集,这将不会起到很好的作用。但是,如果放大图像之间的差异足够大,则最高10倍是合理的。

 

如果我们想要检测图像中的对象,增强就变得更加重要。绘制边界框是一项非常耗时的工作,老实说,也是一项枯燥的任务。这就是为什幺我将为您节省宝贵的时间,并向您展示如何在标签过程之后使用现有的边界来增强图像。

 

我们需要什幺来增强功能?

 

在我向您展示魔术是如何工作的之前,我将概述一下您需要遵循本教程的内容。

 

我们的数据集将遵循Pascal VOC格式,该格式通常由TensorFlow对象检测框架的模型动物园中提供的模型使用。 tensorflow object detection framework

 

有很多很棒的工具可以帮助加速和简化图像数据标记过程。根据我自己的经验,我可以推荐以下两点:

 

我建议您将MakeSense.ai的批注直接导出到CSV文件中。如果您使用了LabelImg,则需要将.xml注释转换为单个.csv文件。转换脚本可能类似于下面的脚本:

让我们放大图像和边界框!

 

我们为增强任务需要的主要包是imagg。这个很棒的软件包允许您将各种增强技术应用于任何图像。另外,它还会相应地调整边界框的坐标。这使它对我来说是一个完美的解决方案。那幺现在让我们来看一下我们需要执行的步骤:

首先,我们将定义一个顺序对象,该对象定义将对数据集的每个图像应用哪种增强技术。您可以在这里查看所有支持的增强技术。我在这里添加的代码执行以下操作:

接下来,我们将定义用预定义的Sequential对象增加单个图像的函数。

现在,我们需要一个函数来保存放大的图像,并将新的边界框坐标存储在一个新的表中。我们还可以将图像和边界框调整为对象检测模型要求的特定形状。这将节省GPU内存空间,以便您可以使用更大的批处理大小并更快地训练。

 

将所有这些放在一起,我们有以下脚本:

我们现在可以根据需要放大任何具有给定边界框的数据集。我们有最大的自由来调整我们想要的图像。TensorFlow的目标检测流水线也在飞翔上做了扩充。但在这里,您只能添加像翻转这样的基本变换。此外,我们不能可视化的增加和检查他们是否现实。根据我的个人经验,调整图像的大小也是锦上添花,因为它减少了数据集的大小,这将在培训期间固定整个管道。因此,让我们使用来自RoboFlow的面膜数据集来看看我们的增强管道的可能结果。 facial mask dataset from roboflow

 

很酷,是吧?我们看到裁剪、翻转和噪声添加的组合,可以从不同的角度逼真地模拟数字变焦。

 

带走

 

用于目标检测任务的图像增强减少了标记时间,增加了模型的泛化能力,如果我们也使用图像大小调整,则由于减少了数据集的大小,从而加快了训练时间。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注