Tensorflow 对象检测 api:如何使用 imgaug 进行增强?

Posted

技术标签:

【中文标题】Tensorflow 对象检测 api:如何使用 imgaug 进行增强?【英文标题】:Tensorflow object detection api: how to use imgaug for augmentation? 【发布时间】:2020-01-15 13:46:44 【问题描述】:

我一直在使用imgaug 手动滚动增强器,因为我真的很喜欢options that are not available in the tf object detection api 中的一些。例如,我使用运动模糊是因为我的很多数据都包含快速移动的模糊对象。

如何最好地将我的增强序列与 api 集成以进行即时训练?

例如,假设我有一个增强器:

aug = iaa.SomeOf((0, 2), 
                 [iaa.Fliplr(0.5), iaa.Flipud(0.5), iaa.Affine(rotate=(-10, 10))])

有没有办法配置对象检测 api 来处理这个问题?

我目前正在做的是使用 imgaug 来生成(增强的)训练数据,然后从这个增强管道的每次迭代中创建 tfrecord 文件。这是非常低效的,因为我在训练期间将大量数据保存到磁盘而不是即时运行增强。

【问题讨论】:

原则上你可以修改预处理函数来添加你想要的转换,但问题是库在 NumPy 中实现了增强,而 TF 对象检测 API 中的增强是在 TensorFlow 中实现的。所以你必须使用tf.py_func之类的东西,这可能不是很有效。 坦率地说,如果有人有使用 tf.py_func 的解决方案,那就太好了。这会比我现在做的更有效率。我一直在看preprocessing.py 模块,也许这就是推动这个的地方。, 您希望进行哪些增强操作?是否可以在 TF 中实现它们? 其中一个重要的就是运动模糊,其他的大部分都是相当标准的。我想一个新问题是如何以与对象检测 api 集成的方式在 TF 中实现一个?我认为它在preprocessing.py。坦率地说,我希望将 imgaug 与 TF api 集成起来很简单,以为我只是错过了一些标准技巧。 一种方法是生成一个只有 imgaug 的新数据集并关闭 tf 的在线训练增强 【参考方案1】:

有人为此做了一个回购:https://github.com/JinLuckyboy/TensorFlowObjectDetectionAPI-with-imgaug

对不起,这不是一个代码答案,我还没有真正研究过,所以我不会将此标记为正式回答。如果我有机会测试它,我会告诉人们。

【讨论】:

以上是关于Tensorflow 对象检测 api:如何使用 imgaug 进行增强?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tensorflow 对象检测 api 中评估预训练模型

Tensorflow 对象检测 api:如何使用 imgaug 进行增强?

如何使用 Tensorflow 2 对象检测 API 恢复微调模型以进行测试?

如何在 Tensorflow 对象检测 API 中查找边界框坐标

如何从代码运行 tensorflow 对象检测 api (model_main_tf2)?

如何在 iOS 中运行 Tensorflow 对象检测 API 模型?