Tensorflow 对象检测 API 的数据增强是不是会产生比原始样本更多的样本?
Posted
技术标签:
【中文标题】Tensorflow 对象检测 API 的数据增强是不是会产生比原始样本更多的样本?【英文标题】:Do data augmentations by Tensorflow Object Detection API result in more samples than original?Tensorflow 对象检测 API 的数据增强是否会产生比原始样本更多的样本? 【发布时间】:2019-05-14 03:27:53 【问题描述】:假设我的原始原始数据集有 100 张图像。我应用了random_horizontal_flip
数据增强,默认情况下水平翻转的概率为 50%。所以只是为了举例,假设它翻转了 100 张图像中的 50 张。所以,
-
这是否意味着我的算法现在将使用 150 个图像(100 个原始版本和 50 个翻转版本)进行训练,还是意味着它仍将使用 100 个图像进行训练,但其中 50 个将是原始图像的翻转版本?
问题 #1 的答案是否可以推广到 Tensorflow 对象检测 API 提供的所有数据增强选项?
我阅读了尽可能多的官方文档,并查看了preprocessor code,但找不到我的答案。
【问题讨论】:
如果是随机翻转,有 50% 的机会,这意味着你的数据集最终会翻倍,因为每张图像在多次迭代后至少会翻转一次。 @Richard_wth 有道理,非常感谢。 【参考方案1】:默认的增强概率为 50%,独立应用于每个图像。训练模型/算法的图像数量取决于 epoch 的数量。
假设您的批量大小为 1,并且 epoch 总数为 100: 您的算法将在 100 张图像上进行训练,其中 50 张将是原始图像的翻转版本。在这种情况下,模型将看不到原始的 50 张图像,因为您的 epoch 太低了。
假设您的批量大小为 1,并且 epoch 总数为 200: 您的算法将在 200 张图像上进行训练,其中 100 张将是原始图像的翻转版本。
因此,只要您的 epoch 大小不限制您的数据集,以 50% 的概率,您将看到一种效果,就好像您通过翻转每个项目使数据集翻倍一样。
除了水平翻转之外,如果您还添加垂直翻转 (random_vertical_flip
),您的数据集将增加三倍。
【讨论】:
以上是关于Tensorflow 对象检测 API 的数据增强是不是会产生比原始样本更多的样本?的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow 对象检测 api:如何使用 imgaug 进行增强?
Tensorflow 对象检测 API:TensorBoard 中损坏的训练图像