Tensorflow 对象检测 API 数据增强边界框

Posted

技术标签:

【中文标题】Tensorflow 对象检测 API 数据增强边界框【英文标题】:Tensorflow Object Detection API Data Augmentation Bounding Boxes 【发布时间】:2019-04-22 17:13:19 【问题描述】:

对于使用 model_main.py 通过 Tensorflow API 进行对象检测,当我在 pipeline.config 的 data_augmentation_options 中使用 random_horizontal_flip 时,我的边界框是否也会受到影响?这非常重要,否则这些选项将不适用。 This 是同一个问题,但没有正确回答。

【问题讨论】:

【参考方案1】:

是的,边界框以同样的方式受到影响。 专门针对random_horizontal_flip,您可以通过查看function 来验证它,该function 也接收框。 翻转边界框是在here 执行的。 请注意,并非所有增强选项都需要更改边界框,但那些需要 - 相应地更改边界框。

【讨论】:

感谢您的回答@netanel-sam。我也可以在 preprocessor.py 中找到相应的函数,但我无法找到将此信息传递到函数 random_horizontal_flip 的部分。你知道这到底发生在哪里吗? 它发生在这里:github.com/tensorflow/models/blob/master/research/…。 func 是一个预处理函数(迭代所有preprocess_options),args 是预处理函数的参数,例如图像、边界框、掩码等。params 是预处理函数的参数,例如缩放比例、裁剪参数等。在random_horizontal_flip 的情况下,没有有趣的(关键点排列)。 好的,这些preprocess_options 是在哪里定义的?我什至找不到调用 preprocessor.py 的地方。我很难浏览所有这些连接的脚本。我用我的 IDE 进行了“用法搜索”,它找不到 preprocessor.py 以及 preprocess 函数的任何用法。我可以按照 model_main.py 中 pipeline.config 的路径,并将其处理为train_and_eval_dict,然后通过model_lib.create_train_and_eval_specs 进入train_spec,我认为数据增强的信息是。 但这几乎就是它的结尾。然后将train_spec 输入tf.estimator.train_and_evaluate,但我在那里找不到任何关于预处理的信息。 确实很难导航。你应该深入研究inputs.py。函数augment_input_data 接收包含数据(图像、标签等)和增强选项的张量,然后将它们应用到github.com/tensorflow/models/blob/master/research/…。此函数由transform_and_pad_input_data_fn 调用,它直接从训练配置文件中读取数据增强选项,并创建data_augmentation_fn,然后将其用作对输入数据的所有转换的一部分。

以上是关于Tensorflow 对象检测 API 数据增强边界框的主要内容,如果未能解决你的问题,请参考以下文章

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

Tensorflow 对象检测 API:TensorBoard 中损坏的训练图像

可视化增强的火车图像 [tensorflow object detection api]

具有奇怪检测结果的 TensorFlow 对象检测 api

Tensorflow 对象检测 API 中的过拟合

Tensorflow 对象检测 API - 验证丢失行为