IP Library Granted Patent US 11,488,351
Granted Patent B2
US 11,488,351 · App. 17/271,515 · Granted Nov 1, 2022

Generating synthetic images and/or training machine learning model(s) based on the synthetic images

Inventors: Stefan Hinterstoisser (Munich, DE); Hauke Heibel (Munich, DE)
Assignee: GOOGLE LLC
G06T17/00G06N20/00G06T3/40G06T3/60G06T19/20G06T2219/2016
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,488,351
App. No.
17/271,515
Granted
Nov 1, 2022
Kind
B2
Abstract

Particular techniques for generating synthetic images and/or for training machine learning model(s) based on the generated synthetic images. For example, training a machine learning model based on training instances that each include a generated synthetic image, and ground truth label(s) for the generated synthetic image. After training of the machine learning model is complete, the trained machine learning model can be deployed on one or more robots and/or one or more computing devices.

Claims (88)

1. A method implemented by one or more processors, the method comprising:

identifying a size at which to render a foreground three-dimensional (3D) object model in a foreground layer for a synthetic image;

for each of a plurality of randomly selected background 3D object models:

rendering the background 3D object model, at a corresponding background location in a background layer for the synthetic image, with a corresponding rotation, and with a corresponding size that is determined based on the size at which the foreground 3D object model is to be rendered,

wherein rendering the selected background 3D object model at the corresponding background location comprises selecting the background location based on no other background 3D object having yet been rendered at the background location, and

wherein the rendering is iteratively performed, each time for an additional one of the selected background 3D object models, until it is determined that all locations, of the background layer, have content rendered thereon;

rendering the foreground 3D object model at a foreground location in the foreground layer, the rendering of the foreground 3D object model being at the size and being at a given rotation of the foreground 3D object model;

generating the synthetic image based on fusing the background layer and the foreground layer;

assigning, to the synthetic image, a ground truth label for the rendering of the foreground 3D object model; and

providing a training instance, that includes the synthetic image paired with the ground truth label, for training of at least one machine learning model based on the training instance.

2. The method of claim 1 , further comprising:

determining, based on the size at which to render the foreground 3D object model, a range of scaling values;

wherein, for each of the selected background 3D object models, rendering the selected background 3D object model with the corresponding size comprises:

selecting, from the range of scaling values, a corresponding scaling value;

scaling the selected background 3D object model, based on the corresponding scaling value, to generate a corresponding scaled background 3D object model; and

rendering the scaled background 3D object model at the corresponding background location in the background layer.

3. The method of claim 2 , wherein determining the range of scaling values comprises:

determining a lower bound scaling value of the scaling values based on determining that the lower bound scaling value, if used to scale any one of the background 3D object models before rendering, would result in the corresponding size being at a lower percentage bound of a foreground size, wherein the foreground size is based on the size at which the foreground 3D object model is to be rendered;

determining an upper bound scaling value of the scaling values based on determining that the upper bound scaling value, if used to scale any one of the background 3D object models before rendering, would result in the corresponding sizes being at an upper percentage bound of the foreground size.

4. The method of claim 3 , wherein the lower percentage bound is between 70% and 99% and/or wherein the upper percentage bound is between 100% and 175%.

5. The method of claim 3 , wherein the foreground size is the same as the size at which to render the foreground 3D object model, or is a function of the size and of at least one additional size of at least one additional foreground 3D object model that is also rendered in the foreground layer.

6. The method of claim 2 , wherein, for each of the selected background 3D object models, selecting the corresponding scaling value comprises randomly selecting the corresponding scaling value, from amongst all scaling values within the range of scaling values.

7. The method of claim 1 , further comprising:

selecting an additional background 3D object model;

identifying a random location within a bounding area that bounds the rendering of the foreground 3D object model; and

rendering the additional background 3D object model, in the random location and in an occlusion layer of the synthetic image, rendering the additional background 3D object model comprising scaling the additional background 3D object model before rendering so as to occlude only a portion of the rendering of the foreground 3D object model;

wherein generating the synthetic image is based on fusing the background layer, the foreground layer, and the occlusion layer.

8. The method of claim 1 , wherein the foreground 3D object model is selected from a corpus of foreground 3D object models, wherein the background 3D object models are randomly selected from a corpus of background 3D object models, and wherein the corpus of foreground objects and the corpus of background objects are disjoint.

9. The method of claim 1 , further comprising:

generating an additional synthetic image that includes the foreground 3D object model rendered at a smaller size than the size at which the foreground 3D object is rendered in the synthetic image, and that includes alternative background 3D object models rendered at corresponding alternative sizes determined based on the smaller size at which the foreground 3D object model is rendered in the additional synthetic image;

assigning, to the additional synthetic image, an additional ground truth label for the rendering of the foreground 3D object model in the additional synthetic image; and

providing an additional training instance, that includes the additional synthetic image paired with the additional ground truth label, for further training of the at least one machine learning model subsequent to training of the at least one machine learning model based on the training instance.

10. The method of claim 9 , further comprising:

training the machine learning model based on the training instance; and

subsequent to training the machine learning model based on the training instance:

training the machine learning model based on the additional training instance.

11. The method of claim 1 , wherein the ground truth label comprises a bounding shape for the foreground object, a six-dimensional (6D) pose for the foreground object, and/or a classification for the foreground object.

12. The method of claim 11 , wherein the ground truth label comprises the bounding shape, and wherein the bounding shape is a two-dimensional bounding box.

13. The method of claim 1 , wherein rendering the foreground 3D object model at the foreground location in the foreground layer comprises randomly selecting the foreground location.

14. A method implemented by one or more processors, the method comprising:

selecting a foreground three-dimensional (3D) object model;

generating, with the foreground 3D object model at a first scale, a plurality of first scale rotations for the foreground 3D object model;

for each of the plurality of first scale rotations for the foreground 3D object model:

rendering the foreground 3D object model, at a corresponding one of the first scale rotations and at the first scale, in a corresponding randomly selected location in a corresponding first scale foreground layer;

generating first scale synthetic images, generating each of the corresponding first scale synthetic images comprising:

fusing a corresponding one of the corresponding first scale foreground layers with a corresponding one of a plurality of disjoint first scale background layers that each comprise corresponding renderings of corresponding randomly selected background 3D object models;

generating first scale training instances that each include a corresponding one of the first scale synthetic images, and a corresponding ground truth label for the rendering of the foreground 3D object model in the corresponding one of the first scale synthetic images;

generating, with the foreground 3D object model at a second scale that is a smaller scale than the first scale, a plurality of second scale rotations for the foreground 3D object model;

for each of the plurality of second scale rotations for the foreground 3D object model:

rendering the foreground 3D object model, at a corresponding one of the second scale rotations and at the second scale, in a corresponding randomly selected location in a corresponding second scale foreground layer;

generating second scale synthetic images, generating each of the corresponding second scale synthetic images comprising:

fusing a corresponding one of the corresponding second scale foreground layers with a corresponding one of a plurality of disjoint second scale background layers that each comprise corresponding renderings of corresponding randomly selected background 3D object models;

generating second scale training instances that each include a corresponding one of the second scale synthetic images, and a corresponding ground truth label for the rendering of the foreground 3D object model in the corresponding one of the second scale synthetic images,

wherein the corresponding renderings of the corresponding randomly selected background 3D object models, in the first scale background layers, are all of a smaller size than the corresponding renderings of the corresponding randomly selected background 3D object models in the second scale background layers; and

training a machine learning model based on the first scale training instances prior to training of the machine learning model based on the second scale training instances.

15. The method of claim 14 , wherein the corresponding renderings of the corresponding randomly selected background 3D object models, in the first scale background layers, are all within a threshold percentage range of the first scale; and wherein the corresponding renderings of the corresponding randomly selected background 3D object models, in the second scale background layers, are all within a threshold percentage range of the second scale.

16. A method implemented by one or more processors, the method comprising:

identifying a size at which to render a foreground three-dimensional (3D) object model in a foreground layer for a synthetic image;

determining, based on the size at which to render the foreground 3D object model, a range of scaling values, wherein determining the range of scaling values comprises:

determining a lower bound scaling value of the scaling values based on determining that the lower bound scaling value, if used to scale any one of the background 3D object models before rendering, would result in the corresponding size being at a lower percentage bound of a foreground size, wherein the foreground size is based on the size at which the foreground 3D object model is to be rendered, and

determining an upper bound scaling value of the scaling values based on determining that the upper bound scaling value, if used to scale any one of the background 3D object models before rendering, would result in the corresponding sizes being at an upper percentage bound of the foreground size;

for each of a plurality of randomly selected background 3D object models:

rendering the background 3D object model, at a corresponding background location in a background layer for the synthetic image, with a corresponding rotation, and with a corresponding size that is determined based on the size at which the foreground 3D object model is to be rendered, wherein, for each of the selected background 3D object models, rendering the selected background 3D object model with the corresponding size comprises:

selecting, from the range of scaling values, a corresponding scaling value,

scaling the selected background 3D object model, based on the corresponding scaling value, to generate a corresponding scaled background 3D object model, and

rendering the scaled background 3D object model at the corresponding background location in the background layer;

rendering the foreground 3D object model at a foreground location in the foreground layer, the rendering of the foreground 3D object model being at the size and being at a given rotation of the foreground 3D object model;

generating the synthetic image based on fusing the background layer and the foreground layer;

assigning, to the synthetic image, a ground truth label for the rendering of the foreground 3D object model; and

providing a training instance, that includes the synthetic image paired with the ground truth label, for training of at least one machine learning model based on the training instance.

17. The method of claim 16 , wherein the lower percentage bound is between 70% and 99% and/or wherein the upper percentage bound is between 100% and 175%.

18. The method of claim 16 , wherein the foreground size is the same as the size at which to render the foreground 3D object model, or is a function of the size and of at least one additional size of at least one additional foreground 3D object model that is also rendered in the foreground layer.

19. A method implemented by one or more processors, the method comprising:

selecting a foreground three-dimensional (3D) object model;

generating, with the foreground 3D object model at a first scale, a plurality of first scale rotations for the foreground 3D object model;

for each of the plurality of first scale rotations for the foreground 3D object model:

rendering the foreground 3D object model, at a corresponding one of the first scale rotations and at the first scale, in a corresponding randomly selected location in a corresponding first scale foreground layer;

generating first scale synthetic images, generating each of the corresponding first scale synthetic images comprising:

fusing a corresponding one of the corresponding first scale foreground layers with a corresponding one of a plurality of disjoint first scale background layers that each comprise corresponding renderings of corresponding randomly selected background 3D object models;

generating first scale training instances that each include a corresponding one of the first scale synthetic images, and a corresponding ground truth label for the rendering of the foreground 3D object model in the corresponding one of the first scale synthetic images;

generating, with the foreground 3D object model at a second scale that is a smaller scale than the first scale, a plurality of second scale rotations for the foreground 3D object model;

for each of the plurality of second scale rotations for the foreground 3D object model:

rendering the foreground 3D object model, at a corresponding one of the second scale rotations and at the second scale, in a corresponding randomly selected location in a corresponding second scale foreground layer;

generating second scale synthetic images, generating each of the corresponding second scale synthetic images comprising:

fusing a corresponding one of the corresponding second scale foreground layers with a corresponding one of a plurality of disjoint second scale background layers that each comprise corresponding renderings of corresponding randomly selected background 3D object models;

generating second scale training instances that each include a corresponding one of the second scale synthetic images, and a corresponding ground truth label for the rendering of the foreground 3D object model in the corresponding one of the second scale synthetic images,

wherein the corresponding renderings of the corresponding randomly selected background 3D object models, in the first scale background layers, are all within a threshold percentage range of the first scale; and wherein the corresponding renderings of the corresponding randomly selected background 3D object models, in the second scale background layers, are all within a threshold percentage range of the second scale; and

training a machine learning model based on the first scale training instances prior to training of the machine learning model based on the second scale training instances.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2021
From: HINTERSTOISSER, STEFAN; HEIBEL, TIM
To: GOOGLE LLC
Reel/Frame 055535/0782 →
Continuity (2)
Provisional Application 62768571 · Nov 16, 2018
Related Publication 20210327127A1 · Oct 21, 2021
Cited By (1)
US 12,561,957