Tensorflow Object Detection API Data Augmentation Bounding Boxes
For Object Detection via the Tensorflow API using the model_main.py, when I use i.e. random_horizontal_flip
in the data_augmentation_options
in the train_config
of my pipeline.config, are my bounding boxes also affected? This is very important, as otherwise these options are not applicable. This is the same question, but it was not properly answered.
tensorflow object-detection bounding-box data-augmentation
add a comment |
For Object Detection via the Tensorflow API using the model_main.py, when I use i.e. random_horizontal_flip
in the data_augmentation_options
in the train_config
of my pipeline.config, are my bounding boxes also affected? This is very important, as otherwise these options are not applicable. This is the same question, but it was not properly answered.
tensorflow object-detection bounding-box data-augmentation
add a comment |
For Object Detection via the Tensorflow API using the model_main.py, when I use i.e. random_horizontal_flip
in the data_augmentation_options
in the train_config
of my pipeline.config, are my bounding boxes also affected? This is very important, as otherwise these options are not applicable. This is the same question, but it was not properly answered.
tensorflow object-detection bounding-box data-augmentation
For Object Detection via the Tensorflow API using the model_main.py, when I use i.e. random_horizontal_flip
in the data_augmentation_options
in the train_config
of my pipeline.config, are my bounding boxes also affected? This is very important, as otherwise these options are not applicable. This is the same question, but it was not properly answered.
tensorflow object-detection bounding-box data-augmentation
tensorflow object-detection bounding-box data-augmentation
asked Nov 20 '18 at 9:31
Jay CarrawayJay Carraway
32
32
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Yes, the bounding boxes are affected in the same way.
Specifically for random_horizontal_flip
, you can verify it by looking at the function, which also receives boxes.
Flipping the bounding boxes is performed here.
Note not all augmentation options need bounding box altering, but those who do - alter the bounding box accordingly.
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the functionrandom_horizontal_flip
. Do you know where exactly this happens?
– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….func
is a preprocessing function (iterated over allpreprocess_options
),args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc.params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case ofrandom_horizontal_flip
there aren't interesting ones (keypoint permutation).
– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are thesepreprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as thepreprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into thetrain_and_eval_dict
and then via themodel_lib.create_train_and_eval_specs
intotrain_spec
where I suppose the information for the data augmentation is.
– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.train_spec
is then fed into thetf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.
– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The functionaugment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called bytransform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and createsdata_augmentation_fn
which is then used as part of the all transformations to the input data.
– netanel-sam
Nov 26 '18 at 9:44
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53389959%2ftensorflow-object-detection-api-data-augmentation-bounding-boxes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes, the bounding boxes are affected in the same way.
Specifically for random_horizontal_flip
, you can verify it by looking at the function, which also receives boxes.
Flipping the bounding boxes is performed here.
Note not all augmentation options need bounding box altering, but those who do - alter the bounding box accordingly.
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the functionrandom_horizontal_flip
. Do you know where exactly this happens?
– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….func
is a preprocessing function (iterated over allpreprocess_options
),args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc.params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case ofrandom_horizontal_flip
there aren't interesting ones (keypoint permutation).
– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are thesepreprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as thepreprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into thetrain_and_eval_dict
and then via themodel_lib.create_train_and_eval_specs
intotrain_spec
where I suppose the information for the data augmentation is.
– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.train_spec
is then fed into thetf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.
– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The functionaugment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called bytransform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and createsdata_augmentation_fn
which is then used as part of the all transformations to the input data.
– netanel-sam
Nov 26 '18 at 9:44
|
show 1 more comment
Yes, the bounding boxes are affected in the same way.
Specifically for random_horizontal_flip
, you can verify it by looking at the function, which also receives boxes.
Flipping the bounding boxes is performed here.
Note not all augmentation options need bounding box altering, but those who do - alter the bounding box accordingly.
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the functionrandom_horizontal_flip
. Do you know where exactly this happens?
– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….func
is a preprocessing function (iterated over allpreprocess_options
),args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc.params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case ofrandom_horizontal_flip
there aren't interesting ones (keypoint permutation).
– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are thesepreprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as thepreprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into thetrain_and_eval_dict
and then via themodel_lib.create_train_and_eval_specs
intotrain_spec
where I suppose the information for the data augmentation is.
– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.train_spec
is then fed into thetf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.
– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The functionaugment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called bytransform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and createsdata_augmentation_fn
which is then used as part of the all transformations to the input data.
– netanel-sam
Nov 26 '18 at 9:44
|
show 1 more comment
Yes, the bounding boxes are affected in the same way.
Specifically for random_horizontal_flip
, you can verify it by looking at the function, which also receives boxes.
Flipping the bounding boxes is performed here.
Note not all augmentation options need bounding box altering, but those who do - alter the bounding box accordingly.
Yes, the bounding boxes are affected in the same way.
Specifically for random_horizontal_flip
, you can verify it by looking at the function, which also receives boxes.
Flipping the bounding boxes is performed here.
Note not all augmentation options need bounding box altering, but those who do - alter the bounding box accordingly.
answered Nov 20 '18 at 12:06
netanel-samnetanel-sam
30417
30417
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the functionrandom_horizontal_flip
. Do you know where exactly this happens?
– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….func
is a preprocessing function (iterated over allpreprocess_options
),args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc.params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case ofrandom_horizontal_flip
there aren't interesting ones (keypoint permutation).
– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are thesepreprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as thepreprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into thetrain_and_eval_dict
and then via themodel_lib.create_train_and_eval_specs
intotrain_spec
where I suppose the information for the data augmentation is.
– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.train_spec
is then fed into thetf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.
– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The functionaugment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called bytransform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and createsdata_augmentation_fn
which is then used as part of the all transformations to the input data.
– netanel-sam
Nov 26 '18 at 9:44
|
show 1 more comment
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the functionrandom_horizontal_flip
. Do you know where exactly this happens?
– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….func
is a preprocessing function (iterated over allpreprocess_options
),args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc.params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case ofrandom_horizontal_flip
there aren't interesting ones (keypoint permutation).
– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are thesepreprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as thepreprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into thetrain_and_eval_dict
and then via themodel_lib.create_train_and_eval_specs
intotrain_spec
where I suppose the information for the data augmentation is.
– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.train_spec
is then fed into thetf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.
– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The functionaugment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called bytransform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and createsdata_augmentation_fn
which is then used as part of the all transformations to the input data.
– netanel-sam
Nov 26 '18 at 9:44
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the function
random_horizontal_flip
. Do you know where exactly this happens?– Jay Carraway
Nov 20 '18 at 13:17
Thank you for your answer @netanel-sam. I could also find the corresponding function in the preprocessor.py, but I was not able to find the part where this information is passed into the function
random_horizontal_flip
. Do you know where exactly this happens?– Jay Carraway
Nov 20 '18 at 13:17
It happens here: github.com/tensorflow/models/blob/master/research/….
func
is a preprocessing function (iterated over all preprocess_options
), args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc. params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case of random_horizontal_flip
there aren't interesting ones (keypoint permutation).– netanel-sam
Nov 21 '18 at 9:00
It happens here: github.com/tensorflow/models/blob/master/research/….
func
is a preprocessing function (iterated over all preprocess_options
), args
is the arguments to the preprocessing function such as image, bounding boxes, masks, etc. params
is parameters to a preprocessing function, e.g. scaling ratio, cropping parameters etc. In case of random_horizontal_flip
there aren't interesting ones (keypoint permutation).– netanel-sam
Nov 21 '18 at 9:00
Okay, and where are these
preprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as the preprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into the train_and_eval_dict
and then via the model_lib.create_train_and_eval_specs
into train_spec
where I suppose the information for the data augmentation is.– Jay Carraway
Nov 23 '18 at 9:39
Okay, and where are these
preprocess_options
defined? I can't even find the place where the preprocessor.py is called at all. I have a really hard time navigating through all these connected scripts. I did a 'usage search' with my IDE and it couldn't find any usage of the preprocessor.py as well as the preprocess
function. I could follow the path of the pipeline.config in the model_main.py and where it gets processed into the train_and_eval_dict
and then via the model_lib.create_train_and_eval_specs
into train_spec
where I suppose the information for the data augmentation is.– Jay Carraway
Nov 23 '18 at 9:39
But that's pretty much where it ends.
train_spec
is then fed into the tf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.– Jay Carraway
Nov 23 '18 at 9:40
But that's pretty much where it ends.
train_spec
is then fed into the tf.estimator.train_and_evaluate
but I cannot find anything about the preprocessing there.– Jay Carraway
Nov 23 '18 at 9:40
It is indeed hard to navigate. You should delve in inputs.py. The function
augment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called by transform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and creates data_augmentation_fn
which is then used as part of the all transformations to the input data.– netanel-sam
Nov 26 '18 at 9:44
It is indeed hard to navigate. You should delve in inputs.py. The function
augment_input_data
receives the tensor which contains the data (images, labels, etc), and the augmentation options, and then applies them in github.com/tensorflow/models/blob/master/research/…. This function is called by transform_and_pad_input_data_fn
which reads the data augmentation options right from the train config file, and creates data_augmentation_fn
which is then used as part of the all transformations to the input data.– netanel-sam
Nov 26 '18 at 9:44
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53389959%2ftensorflow-object-detection-api-data-augmentation-bounding-boxes%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown