Tensorflow目标检测API数据增强边界框

3

使用Tensorflow API的model_main.py进行目标检测时,如果我在pipeline.config的train_config中的data_augmentation_options中使用random_horizontal_flip,那么我的边界框是否也会受到影响?这非常重要,否则这些选项就无法应用。这个链接是相同的问题,但没有得到恰当的回答。

1个回答

5
是的,边界框也会受到同样的影响。 特别是对于random_horizontal_flip,您可以通过查看函数来验证它,该函数还接收框。 翻转边界框是在这里执行的。 请注意,并非所有增强选项都需要改变边界框,但那些需要改变边界框的选项会相应地更改边界框。

感谢您的回答@netanel-sam。我也可以在preprocessor.py中找到相应的函数,但是我找不到将此信息传递到“random_horizontal_flip”函数的部分。您知道这发生在哪里吗? - Jay Carraway
1
它发生在这里:https://github.com/tensorflow/models/blob/master/research/object_detection/core/preprocessor.py#L3206。`func`是一个预处理函数(迭代所有`preprocess_options`),`args`是预处理函数的参数,例如图像、边界框、掩码等。`params`是预处理函数的参数,例如缩放比例、裁剪参数等。在`random_horizontal_flip`的情况下,没有有趣的参数(关键点排列)。 - netanel-sam
好的,那么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,这就是我想象中包含数据扩充信息的地方。 - Jay Carraway
但这基本上就是它的全部。然后将train_spec输入到tf.estimator.train_and_evaluate中,但我在那里找不到任何有关预处理的信息。 - Jay Carraway
1
确实很难去导航。你应该深入研究inputs.py文件。函数augment_input_data接收包含数据(图像、标签等)和数据增强选项的张量,然后在https://github.com/tensorflow/models/blob/master/research/object_detection/inputs.py#L290中应用它们。此函数由`transform_and_pad_input_data_fn`调用,后者直接从训练配置文件中读取数据增强选项,并创建`data_augmentation_fn`,然后将其用作输入数据的所有转换的一部分。 - netanel-sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接