Tensorflow Object Detection API Data Augmentation Bounding Boxes












0















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.










share|improve this question



























    0















    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.










    share|improve this question

























      0












      0








      0


      0






      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.










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 9:31









      Jay CarrawayJay Carraway

      32




      32
























          1 Answer
          1






          active

          oldest

          votes


















          0














          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.






          share|improve this answer
























          • 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













          • 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_evaluatebut 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











          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
          });


          }
          });














          draft saved

          draft discarded


















          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









          0














          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.






          share|improve this answer
























          • 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













          • 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_evaluatebut 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
















          0














          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.






          share|improve this answer
























          • 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













          • 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_evaluatebut 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














          0












          0








          0







          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.






          share|improve this answer













          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.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          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 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













          • 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_evaluatebut 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



















          • 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













          • 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_evaluatebut 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

















          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_evaluatebut 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_evaluatebut 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


















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

          Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

          A Topological Invariant for $pi_3(U(n))$