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 中损坏的训练图像