IP Library › Granted Patent US 11,887,310
Granted Patent B2
US 11,887,310 · App. 17/078,086 · Granted Jan 30, 2024

Interactive image segmentation

Inventors: Vignesh Jagadeesh (San Jose, CA); Atila Orhon (Santa Clara, CA)
Assignee: Apple Inc.
G06T7/11G06F17/18G06N3/047G06N20/00G06T7/10G06V10/763G06V10/7715G06V10/82
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,887,310
App. No.
17/078,086
Granted
Jan 30, 2024
Kind
B2
Abstract

A first subset of pixels of an image may be labeled with an object identifier based on user interactions with the image. Pixel data representing the pixels of the image may be passed through an embedding neural network model to generate pixel embedding vectors. A prototype embedding vector associated with the object identifier may be generated based pixel embedding vectors corresponding to the first subset of pixels. For each pixel of a second subset of pixels of the image, a probability that the pixel should be labeled with the object identifier may be determined based on the prototype embedding vector and pixel embedding vectors corresponding to the second subset of pixels. Pixels of the second subset of pixels may be labeled with the object identifier based on the determined probabilities, and the pixels in the image may be segmented based on the pixels labeled with the object identifier.

Claims (91)

1. A method, comprising:

labeling a first subset of pixels of an image with a first object identifier based on labeling information associated with the image;

passing pixel data representing the pixels of the image through an embedding neural network model comprising learned parameters to generate a plurality of pixel embedding vectors corresponding to the pixels of the image;

generating a first embedding vector associated with the first object identifier based on pixel embedding vectors corresponding to the first subset of pixels;

for each pixel of a second subset of pixels of the image, determining a probability that the pixel should be labeled with the first object identifier based on the first subset of the pixels wherein the probability for each pixel of the second subset of pixels is determined based on the first embedding vector and pixel embedding vectors corresponding to the second subset of pixels;

labeling one or more pixels in the second subset of pixels with the first object identifier based on the determined probabilities; and

segmenting the pixels in the image into a plurality of segments based on the pixels of the image labeled with the first object identifier.

2. The method of claim 1 , wherein the labeling information comprises user contact points with a graphical user interface displaying the image, and

wherein the first subset of pixels corresponds to pixels in the displayed image coincident with the user contact points.

3. The method of claim 1 , wherein the learned parameters of the embedding neural network model comprise meta-learned initialized parameters, and wherein the first embedding vector is a first prototype embedding vector.

4. The method of claim 3 , wherein generating the first prototype embedding vector associated with the first object identifier comprises:

generating an initial prototype embedding vector based on the pixel embedding vectors corresponding to the first subset of pixels; and

updating the initial prototype embedding vector based on the pixel embedding vectors corresponding to the second subset of pixels to generate the first prototype embedding vector.

5. The method of claim 4 , further comprising:

updating the parameters of the embedding neural network model based on a loss function associated with the determined probabilities for the second subset of pixels;

passing the pixel data through the embedding neural network model with the updated parameters; and

repeating the steps of generating a first prototype embedding vector, and determining a probability for each pixel of the second subset of pixels,

wherein the one or more pixels in the second subset of pixels are labeled with the first object identifier after the repeating of the steps.

6. The method of claim 3 , further comprising:

labeling a third subset of the pixels with a second object identifier based on the labeling information associated with the image;

generating a second prototype embedding vector associated with the second object identifier based on pixel embedding vectors corresponding to the third subset of pixels; and

for each pixel of a second subset of pixels of the image, determining a probability that the pixel should be labeled with the second object identifier based on the second prototype embedding vector and the embedded vectors corresponding to the second subset of the pixels,

wherein the one or more pixels in the second subset pixels are labeled with either the first object identifier or the second object identifier based on the determined probabilities, and

wherein the pixels in the image are segmented into the plurality of segments based on the pixels in the image labeled with the first object identifier and the second object identifier.

7. The method of claim 1 , further comprising:

for each of a first number of loops:

selecting a labeled image from a set of training images;

designating a first subset of pixels of the selected training image and a second subset of pixels of the selected training image, wherein labels associated with the second subset of pixels are hidden;

passing pixel data representing the pixels of the training image through the embedding neural network model to generate a plurality of pixel embedding vectors corresponding to the pixels of the training image;

generating a training prototype embedding vector associated with a training label associated with the first subset of pixels based on pixel embedding vectors corresponding to the first subset of pixels of the training image;

for each pixel of the second subset of pixels, determining a probability that the pixel should be labeled with the training label based on the training prototype embedding vector;

updating the parameters of the embedding neural network model based on the determined probabilities; and

repeating the selecting, designating, passing, generating, determining, and updating steps above for a second number of loops; and

generating the initialized parameters for the embedding neural network model based on a set of parameters updated in each of the first number of loops.

8. The method of claim 7 , wherein for each loop of the first number of loops a percentage of the total number of pixels of the selected training image designated for the first subset of pixels is different from a percentage applied during another loop of the first number of loops.

9. A system, comprising:

a processor; and

a memory device containing instructions which, when executed by the processor, cause the processor to:

receive user interaction data comprising user contact points with a graphical user interface displaying an image;

label a first subset of pixels of the image with an object identifier, wherein the first subset of pixels correspond to pixels in the displayed image coincident with the user contact points;

pass pixel data representing pixels of the image through an embedding neural network model comprising meta-learned initialized parameters to generate a plurality of pixel embedding vectors corresponding to the pixels of the image;

generate a prototype embedding vector associated with the object identifier based on pixel embedding vectors corresponding to the first subset of pixels;

for each pixel of a second subset of pixels of the image, determine a probability that the pixel should be labeled with the object identifier based on the prototype embedding vector and pixel embedding vectors corresponding to the second subset of pixels;

label one or more pixels in the second subset of pixel embedding vectors with the object identifier based on the determined probabilities; and

segment the pixels in the image into a plurality of segments based on the pixels of the image labeled with the object identifier.

10. The system of claim 9 , wherein to generate the prototype embedding vector the instructions, when executed by the processor, cause the processor to:

generate an initial prototype embedding vector based on the pixel embedding vectors corresponding to the first subset of pixels; and

update the initial prototype embedding vector based on the pixel embedding vectors corresponding to the second subset of pixels to generate the prototype embedding vector.

11. The system of claim 10 , wherein the instructions, when executed by the processor, further cause the processor to:

update the parameters of the embedding neural network model based on a loss function associated with the determined probabilities for the second subset of pixels;

pass the pixel data through the embedding neural network model with the updated parameters; and

repeat the instructions to pass the pixel data through the embedding neural network model, to generate a prototype embedding vector, and to determine a probability a predetermined number of times,

wherein the one or more pixels in the second subset of pixels are labeled with the object identifier after the repeating the instructions.

12. The system of claim 11 , wherein a probability for each pixel of the second subset of pixels is determined for the object identifier and a distractor represented by a distractor prototype, and

wherein the one or more pixels of the second subset of pixels are labeled with either the object identifier or the distractor based on the determined probabilities.

13. The system of claim 12 , wherein the instructions, when executed by the processor, further cause the processor to:

for each of a first number of loops:

select a labeled image from a set of training images;

designate a first subset of pixels of the selected training image and a second subset of pixels of the selected training image, wherein labels associated with the second subset of pixels are hidden;

pass pixel data representing the pixels of the selected training image through the embedding neural network model to generate a plurality of pixel embedding vectors corresponding to the pixels of the selected training image;

generate a training prototype embedding vector associated with a training label associated with the first subset pixels based on the pixel embedding vectors corresponding to the first subset of pixels;

for each pixel of the second subset of pixels, determine a probability that the pixel should be labeled with the training label based on the training prototype embedding vector and pixel embedding vectors corresponding to the second subset of pixels;

update the parameters of the embedding neural network model based on the determined probabilities; and

repeat the instructions to select, designate, pass, generate, determine, and update above for a second number of loops; and

generate the initialized parameters for the embedding neural network model based on the updated parameters generated in each of the first number of loops.

14. A computer program product comprising code stored in a non-transitory tangible computer-readable storage medium, the code comprising: code for labeling a first subset of pixels of an image based on user interactions with the image; code for passing pixel data representing the pixels of the image through an embedding neural network model comprising meta-learned initialized parameters to generate a plurality of pixel embedding vectors corresponding to the pixels of the image; code for generating an initial prototype embedding vector based on the pixel embedding vectors corresponding to the first subset of pixels; and code for updating the initial prototype embedding vector based on pixel embedding vectors corresponding to a second subset of pixels to generate a first prototype embedding vector; code for determining, for each pixel of the second subset of pixels, a probability that the pixel should be labeled with the first object identifier based on the first prototype embedding vector and the pixel embedding vectors corresponding to the second subset of pixels; code for labeling one or more of second subset of pixels with the first object identifier based on the determined probabilities; and code for segmenting the pixels in the image into a plurality of segments based on the pixels of the image labeled with the first object identifier.

15. The computer program product of claim 14 , wherein the code for segmenting the pixels in the image into a plurality of segments comprises:

code for editing the pixel data of the image based on the pixels labeled with the first object identifier; and

code for storing the edited image in storage media.

16. The computer program product of claim 15 , wherein editing the pixel data of the image comprises removing pixels that are not labeled with the first object identifier from the image.

17. The computer program product of claim 15 , wherein editing the pixel data of the image comprises editing the pixel data to alter a visual appearance of the pixels labeled with the first object identifier in the image.

18. The computer program product of claim 14 , wherein the computer program product further comprises:

code for updating the parameters of the embedding neural network model based on a loss function associated with the determined probabilities for the pixels of the second subset of pixels;

code for passing the pixel data representing the pixels of the displayed image through the embedding neural network model with the updated parameters; and

code for repeating the steps of generating a prototype embedding vector, and determining a probability for each pixel of the second subset of pixels,

wherein the one or more pixel embedding vectors in the second subset of the plurality of pixel embedding vectors are labeled with the first object identifier after the repeating of the steps.

19. The computer program product of claim 14 , wherein the computer program product further comprises:

code for labeling a third subset of the pixels with a second object identifier based on the user interactions with the image;

code for generating a second prototype embedding vector associated with the second object identifier based on pixel embedding vectors corresponding with the third subset of pixels; and

code for determining, for each pixel of the second subset of pixels, a probability that the pixel should be labeled with the second object identifier based on the second prototype embedding vector and the pixel embedding vectors corresponding to the second subset of pixels,

wherein the one or more pixels in the second subset of pixels are labeled with either the first object identifier or the second object identifier based on the determined probabilities.

20. The computer program product of claim 14 , wherein the computer program product further comprises:

for each of a first number of loops:

code for selecting a labeled image from a set of training images;

code for designating a first subset of pixels of the selected training image and a second subset of pixels of the selected training image, wherein labels associated with the second subset of pixels are hidden;

code for passing pixel data representing the pixels of the training image through the embedding neural network model to generate a plurality of pixel embedding vectors corresponding to the pixels of the training image;

code for generating a training prototype embedding vector associated with a training label associated with the first subset of pixels based on pixel embedding vectors corresponding to the first subset of pixels of the training image;

code for determining, for each pixel of the second subset of pixels, a probability that the pixel should be labeled with the training label based on the training prototype embedding vector;

code for updating the parameters of the embedding neural network model based on the determined probabilities; and

code for repeating the selecting, designating, passing, generating, determining, and updating steps above for a second number of loops; and

code for generating the initialized parameters for the embedding neural network model based on a set of parameters updated in each of the first number of loops.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2020
From: ORHON, ATILA; JAGADEESH, VIGNESH
To: APPLE INC.
Reel/Frame 054687/0450 →
Continuity (2)
Provisional Application 63025886 · May 15, 2020
Related Publication 20210358127A1 · Nov 18, 2021
Cited By (2)
US 12,437,375 US 12,700,077