Discovering objects in an image by classifying object portions
By combining object partial neural networks and object detection neural networks, and utilizing unsupervised learning, the dependence on labeled data in image object detection is resolved, achieving efficient object recognition and improved computational efficiency.
Patent Information
- Application Number
- CN202080034618.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-06-20
- Filing Date
- 2020-05-22
- Publication Date
- 2026-01-27
- Estimated Expiration
- 2040-05-22
AI Technical Summary
Existing technologies for image object detection require labeled data and rely on complex data augmentation techniques, resulting in low computational efficiency.
A combined architecture of object partial neural network and object detection neural network is adopted. It is trained through unsupervised learning to generate prediction partial feature data and object detection output to identify objects in images.
Even when trained on unlabeled data, it can effectively identify objects in images, improve computational efficiency, and acquire viewpoint-invariant knowledge without relying on complex data augmentation.
Smart Images

Figure CN113826111B_ABST
Abstract
Description
Background Technology
[0001] This manual relates to the use of neural networks to process images.
[0002] A neural network is a machine learning model that uses one or more nonlinear units to predict the output of a received input. In addition to the output layer, some neural networks also include one or more hidden layers. The output of each hidden layer serves as the input to the next layer in the network (i.e., the next hidden layer or output layer). Each layer of the network generates its output from the received input based on the current values of its corresponding set of parameters. Summary of the Invention
[0003] This specification describes a system implemented as a computer program on one or more computers at one or more locations, which processes images to detect objects in the images. Once the system detects an object, the system's output can be provided to a user and can be used to classify the detected object into, for example, an object category, or can be used for other downstream tasks, such as semantic segmentation, action classification, robot control, etc.
[0004] The system includes an object partial neural network that processes an input image to generate predicted partial feature data. For each of a plurality of possible object partials, the predicted partial feature data may include: i) a partial presence probability representing the likelihood that the possible object partial is depicted in the input image; ii) a predicted pose of the possible object partial in the input image if it is depicted; and iii) an object partial feature vector characterizing the depiction of the possible object partial if it is depicted. The system also includes an object detection neural network 130 that processes the predicted partial feature data of the plurality of possible object partials to generate an object detection output that identifies one or more objects depicted in the input image. Typically, the object detection neural network organizes the possible object partials into objects and their poses based on the predicted partial feature data, and then identifies which object partials belong to which objects.
[0005] In some implementations, one or both of the object partial neural network and the object detection neural network can be trained as components of the corresponding autoencoder. In these implementations, the object partial neural network can also be called a "partial capsule autoencoder," and the object detection neural network can also be called an "object capsule autoencoder."
[0006] The subject matter described in this specification can be implemented in particular embodiments to achieve one or more of the following advantages.
[0007] The described technique allows for object detection in images even when no labeled data is available during training. In other words, the architecture of the described neural network allows it to perform object detection efficiently, even when trained entirely on unlabeled data, i.e., only on raw images. Once generated, the system's object detection output can be used to accurately identify the object category to which the detected objects belong, even when only a few object category labels become available after training. Furthermore, the described system can acquire view-invariant knowledge in a statistically efficient manner and does not rely on any complex data augmentation techniques to generate high-quality object detection output, making the system computationally efficient during inference and training.
[0008] Details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the following description. Other features, aspects, and advantages of this subject matter will become apparent from the description, drawings, and claims. Attached Figure Description
[0009] Figure 1 This is a schematic diagram of an example object detection system.
[0010] Figure 2 This is a diagram of the example input image and the example reconstructed image.
[0011] Figure 3 This is a schematic diagram of the example training system.
[0012] Figure 4 This is a flowchart of an example process for generating object detection output.
[0013] Figure 5 This is a flowchart illustrating an example process of processing predicted feature data to generate object detection output.
[0014] Figure 6 This is a flowchart of an example process for generating a partial pose distribution.
[0015] In the various figures, the same reference numerals and names denote the same elements. Detailed Implementation
[0016] This specification describes a system for processing images to detect objects within them.
[0017] Figure 1 This is a schematic diagram of an example object detection system 100. The object detection system 100 is an example of a system implemented as a computer program on one or more computers at one or more locations, in which the systems, components and techniques described below can be implemented.
[0018] The object detection system 100 is trained and configured to receive an input image 102 and process the input image 102 to generate an object detection output 152 that identifies one or more objects depicted in the input image 102.
[0019] In some implementations, the objects detected in the object detection output 152 may include one or more objects that do not have semantic meaning. That is, the object detection output 152 may include the identification of one or more detected objects that do not have human-interpretable meaning, i.e., they may not be recognized as "objects" by humans. In some such implementations, the possible objects that can be identified in the object detection output 152 may be machine-learned, for example, jointly learned with the parameters of the object detection system 100. This process will be described in more detail below, for example, referring to... Figure 3 .
[0020] The object detection system 100 includes an object partial neural network 110, which receives an input image 102 and processes the input image to generate M prediction partial feature data sets 112a-m, each prediction partial feature data set 112a-m corresponding to a possible object part that may be depicted in the input image 102.
[0021] In this specification, an object portion is a component of a larger object that can be depicted in an input image. For example, possible objects depicted in an input image may include handwritten digits, and the object portions of these objects may be individual strokes that combine to form the handwritten digits. As a particular example, an object may represent a handwritten "4," and the object may include three object portions, each representing one of the three strokes of the handwritten "4." As another example, an object depicted in an image may represent a vehicle, and the object portions of the object may include one or more wheels of the vehicle, one or more components of the vehicle's body, etc.
[0022] In other words, the object-part neural network 110 processes the input image 102 and generates a corresponding predicted partial feature set 112a-m for each of the multiple possible object parts that may be depicted in the input image 102, wherein each predicted partial feature set 112a-m represents the depiction of the corresponding possible object part in the input image 102. In some implementations, the object-part neural network 110 generates a corresponding predicted partial feature set 112a-m for each possible object part in the set of possible object parts.
[0023] In some implementations, the object partial neural network 110 may also obtain partial metadata 122 from the object partial data storage 110. The object partial data storage 120 may include metadata corresponding to each of a plurality of possible object parts depicted in the input image 102. The partial metadata 122 corresponding to a particular possible object part characterizes how that particular possible object part can be depicted in the image. For example, the partial metadata 122 corresponding to a particular possible object part may include a template characterizing that particular possible object part, such that if the template is processed using an affine transformation corresponding to a particular input image, the transformed template characterizes the position and appearance of that particular object part in the particular input image.
[0024] As a specific example, for each possible object portion, the partial metadata 122 may include an image template corresponding to that possible object portion, which is a low-resolution image representation of the possible object portion. As a specific example, the image template for the possible object portion may be an image with multiple color channels (e.g., three color channels corresponding to red, green, and blue channels) and an alpha channel. The alpha channel of the image template may represent the transparency of each pixel and may allow a portion of pixels of the corresponding possible object portion to be occluded in the input image 102. References will follow below. Figure 2 Provide a more detailed description of the image templates for the possible object parts.
[0025] In some implementations, the image template for the object portion may be fixed, i.e., determined by the user of the object detection system 100. In other implementations, the image template may be machine-learned, for example, jointly learned with the parameters of the object detection system 100. See below for further details. Figure 3 The process will be described in more detail.
[0026] The object-part neural network 110 generates system input, which includes i) an input image and, in some implementations, ii) partial metadata 122 corresponding to each possible object part. The object-part neural network 110 processes the system input to generate M predicted partial feature sets 112a-m. Each predicted partial feature set 112a-m corresponds to a corresponding possible object part depicted in the input image 102 and may include one or more of the following: i) a partial presence probability representing the likelihood that a possible object part is depicted in the input image 102; ii) a predicted pose of the possible object part in the input image 102 if the possible object part is depicted; or iii) an object part feature embedding characterizing the depiction of the possible object part if the possible object part is depicted in the input image 102.
[0027] In this specification, an embedding is an ordered set of numerical values representing inputs in a specific embedding space. For example, an embedding can be a vector of floating-point or other numerical values with a fixed dimension.
[0028] Assuming that a possible object part is depicted in input image 102, both the predicted pose of the possible object part and the corresponding object part feature embedding describe that possible object part. That is, the object part neural network 110 has not yet determined that the possible object part is depicted in input image 102. Instead, assuming that the possible object part is depicted in input image 102, the object part neural network generates the predicted pose and feature embedding of the possible object part. The same probability is given for the probability of the part's existence under this assumption.
[0029] When a possible object portion is depicted in an image, the predicted pose of the possible object portion represents the affine transformation between the possible object portion and the camera capturing the input image 102. As a specific example, the predicted pose of the possible object portion can be represented by a six-dimensional encoding, where two dimensions correspond to rotation, two dimensions correspond to translation, one dimension corresponds to scaling, and one dimension corresponds to cropping the image template of the possible object portion. That is, when the possible object portion is depicted in the input image 102, the image template of the possible object portion is processed using an affine transformation so that the transformed image template lies within the input image 102, such that the transformed image template overlaps with the portion of the input image 102 depicting the possible object portion.
[0030] When a possible object portion is depicted in input image 102, the object portion feature embedding characterizes the depiction of that possible object portion in input image 102. For example, the object portion feature embedding can characterize one or more ways that cause the depiction of the possible object portion in input image 102 to differ from the image template of the possible object portion (besides the pose of the possible object portion within input image 102). For example, the object portion feature embedding can characterize the color of the possible object portion when it is depicted in input image 102. As another example, the object portion feature embedding can characterize one or more occlusions when the possible object portion is depicted in input image 102.
[0031] In some implementations, the object partial neural network 110 generates only one predicted partial feature set 112 for each possible object portion depicted in the input image 102. That is, the object partial neural network 110 can recognize only a single instance of each possible object portion depicted in the input image 102. In other implementations, the object partial neural network 110 can generate multiple predicted partial feature embeddings 112 for a single possible object portion. For example, the object partial data storage 120 can contain k identical copies of metadata corresponding to each possible object portion, where k > 1, such that the object partial neural network 110 can generate k different predicted partial feature sets 112 for each possible object portion, allowing up to k depictions of each possible object portion in the input image 102.
[0032] In some implementations, the object-part neural network 110 includes a convolutional subnetwork. Alternatively or additionally, the object-part neural network 110 may include a corresponding possible part subnetwork for each possible object part. Reference will be made below. Figure 4 The process of generating M prediction feature sets 112a-m from the object part neural network is described in more detail.
[0033] The object detection system 100 includes an object detection neural network 130, which receives M sets of predicted partial features 112a-m and generates an object detection output 152.
[0034] The object detection neural network 130 may include an object prediction subnetwork 150 and a partial component subnetwork 160. The object prediction subnetwork 150 is configured to receive M predicted partial feature sets 112a-m and generate K predicted object feature sets 132a-k, where each predicted object feature set 132a-k corresponds to a possible object depicted in the input image 102. That is, when a possible object is depicted in the input image, the object prediction subnetwork 150 can generate a corresponding predicted object feature set 132 representing the possible object depicted in the input image 102 for each of the multiple possible objects. In some implementations, the object prediction subnetwork 150 generates a corresponding predicted object feature set 132 for each possible object in the set of possible objects.
[0035] Each predicted object feature set 132a-k may include one or more of the following: i) the object presence probability representing the possibility that the corresponding possible object is depicted in the input image 102; ii) the object feature embedding characterizing the depiction of the possible object if the possible object is depicted in the input image 102; or iii) the predicted pose of the possible object in the input image 102 if the possible object is depicted in the input image.
[0036] Similar to the predicted feature sets 112a-m, when it is assumed that a possible object is depicted in the input image 102, both the object feature embedding and the predicted pose of the possible object describe the possible object. That is, the object prediction sub-network 150 has not yet determined whether the possible object is depicted in the input image 102. Instead, when the possible object is depicted in the input image 102, the object prediction sub-network 150 generates the feature embedding and predicted pose of the possible object. The probability given by this assumption regarding the object's existence is also the same.
[0037] The predicted pose of a possible object represents the affine transformation between the possible object and the camera that captures the input image 102, given that the possible object is in the input image 102. As a specific example, the predicted pose of a possible object can be represented by a capsule-camera relation (CCR) matrix. For example, the CCR matrix can be a 3x3 matrix representing the affine transformation between the possible object and the camera.
[0038] When a possible object is depicted in the input image 102, the object feature embedding of the possible object represents the depiction of that possible object in the input image 102. In some implementations, the object feature embedding is a machine learning embedding, for example, jointly learned with the parameters of the object detection system 100. (See below for further details.) Figure 3 The process will be described in more detail.
[0039] In some implementations, the object prediction subnetwork 150 uses a permutation-invariant encoder neural network to process the predicted feature set 112a-m to generate the predicted object feature set 132a-k. The following will refer to... Figure 5 The process of generating a set of K predicted object features 132a-k by the object prediction sub-network is described in more detail.
[0040] The object prediction subnetwork 150 can provide the set of K predicted object features 132a-k to the component subnetwork 160.
[0041] In some implementations, the constituent subnetwork 160 may also obtain object metadata 142 from the object data store 140. The object data store 140 may include data corresponding to each of the plurality of possible objects depicted in the input image 102. The object metadata 142 corresponding to a particular possible object characterizes the relationship between that particular possible object and each part of the possible object, for example, characterizing the position of the possible object part within the possible object. For example, the object metadata 142 corresponding to a particular possible object may include a corresponding affine transformation between that particular possible object and each part of the possible object. That is, processing the representation of the possible object part using an affine transformation transforms the data from the coordinate system of the possible object part to the coordinate system of the possible object, such that the representation of the possible object part is positioned correctly relative to the possible object.
[0042] In some implementations, the object metadata 142 may be fixed, i.e., determined by the user of the object detection system 100. In other implementations, the object metadata 142 may be machine-learned, for example, jointly learned with the parameters of the object detection system 100. See below for further details. Figure 5 The object metadata 142 is described in more detail.
[0043] Partial component subnetwork 160 can generate network input from the predicted object feature set 132a-k (and optionally from object metadata 142). The partial component subnetwork 160 can then process the network input to generate object detection prediction 152, which identifies one or more objects depicted in the input image 102 from K possible objects that may be depicted in the input image 102. (Refer to the following...) Figure 5 and Figure 6 The process will be described in more detail.
[0044] For each of one or more objects identified in the input image 102, the object detection output 152 may include the location of the identified object in the input image 102. In some implementations, the object detection output 152 may also include the probability that the identified object is depicted in the input image 102 and / or the probability distribution of the possible poses of the identified object in the input image 102.
[0045] The object detection system 100 may provide object detection output 152 to the user display system for display. Alternatively or additionally, the object detection system 100 may provide object detection output 152 to downstream systems (e.g., semantic segmentation systems) for further processing.
[0046] In some implementations, the object partial neural network 110 is trained via unsupervised learning as part of an image autoencoder that encodes the input image. Similarly, in some implementations, the object detection neural network 130 is trained via unsupervised learning as part of an object partial pose autoencoder that encodes the pose of the object portion from the input image. References will follow below. Figure 3 The process will be described in more detail.
[0047] Figure 2 This is an illustration of example input image 210 and example reconstructed image 230. Reconstructed image 230 is generated using image template 220, which characterizes possible object portions depicted in input image 210.
[0048] The reconstructed image 230 is based on an object detection system (e.g., Figure 1 The object detection system 100 shown is used to generate the image. Specifically, for each reconstructed image 230, the object detection system processes the corresponding input image 210 to identify one or more possible objects depicted in the input image 210.
[0049] Each possible object depicted in the input image 210 consists of one or more object parts. Each object part is represented by a corresponding image template 220, which is a low-resolution image of the possible object part. In some implementations, the image template 220 of the possible object part is machine learned by processing the input image 210 to train an object detection system. (See below for further details.) Figure 3 The example training system is described in more detail.
[0050] For each object portion of each object identified within the input image 210, the object detection system 100 can generate a predicted pose for that object portion. The predicted pose of the object portion defines an affine transformation (if used to process the image template 220 corresponding to that object portion) that positions the image template over the portion of the input image 210 corresponding to that object portion.
[0051] Therefore, the reconstructed image 230 has been generated using i) image template 220 and ii) the predicted pose of the corresponding object portion. That is, for each input image 210 and each object portion depicted in that input image 210, the system processes the image template 220 corresponding to the object portion using the generated predicted pose of the object portion to generate a transformed image template. Then, the system combines the transformed image templates of each input image 210 to generate the corresponding reconstructed image 230.
[0052] Figure 3This is a schematic diagram of an example training system 300. The training system 300 is an example of a system implemented as a computer program on one or more computers at one or more locations, in which the systems, components and techniques described below can be implemented.
[0053] Training system 300 is configured to process training image 302 to update the parameters of i) a partial capsule autoencoder and ii) an object capsule autoencoder, wherein the partial capsule autoencoder includes a partial capsule encoder 310 and a partial capsule decoder 330, and the object capsule autoencoder includes an object capsule encoder 340 and an object capsule decoder 360. Specifically, training system 300 is configured to perform unsupervised training on the partial capsule autoencoder and the object capsule autoencoder. That is, training image 302 is not "labeled," i.e., it does not have associated fact labels representing one or more objects depicted in training image 302.
[0054] In some implementations, the partial capsule encoder 310 includes an object-partial neural network, for example, Figure 1 The object-part neural network 110 is shown. After the training system 300 has completed training the partial capsule encoder 310, that is, after the training system 300 has generated the final parameters of the partial capsule encoder 310 (including the final parameters of the object-part neural network), the object-part neural network can be used by an object detection system (e.g., Figure 1 The object detection system 100 shown is used to detect objects in the input image.
[0055] Similarly, in some implementations, the object capsule encoder 340 includes an object detection neural network, for example, Figure 1 The object detection neural network 130 is shown. After the training system 300 has completed training the object capsule encoder 340, that is, after the training system 300 has generated the final parameters of the object capsule encoder 340 (including the final parameters of the object detection neural network), the object detection neural network can be generated by the object detection system (e.g., Figure 1 The object detection system 100 shown is used to detect objects in the input image.
[0056] The partial capsule encoder 310 can receive the training image 302. In some implementations, the partial capsule encoder 310 can also obtain partial metadata 322 from the object partial data storage 320. The object partial data storage 320 includes metadata corresponding to each of the plurality of possible object parts depicted in the training image 302. For each possible object part, the partial metadata 322 may include an image template corresponding to that possible object part.
[0057] The partial capsule encoder 310 can process the network input (including i) the training image 302 and ii) partial metadata 322) to generate M predicted partial feature sets 312a-m. In some implementations, multiple partial feature sets are predicted, i.e., M>1. Each predicted partial feature set 312a-m corresponds to a corresponding possible object part depicted in the training image 302 and may include one or more of the following: i) a partial presence probability representing the possibility that a possible object part is depicted in the training image 302; ii) a predicted pose of the possible object part in the training image 302 if the possible object part is depicted; or iii) an object part feature embedding characterizing the depiction of the possible object part if the possible object part is depicted in the training image 302.
[0058] In other words, the partial capsule encoder 310 can encode the training image 302 to generate an encoding represented by the predicted partial feature set 312a-m. That is, the predicted partial feature set 312a-m represents the object portion represented by the image template. The training system 300 can manipulate the image template according to the predicted partial feature set 312a-m, as described above. Figure 2 The above is used to generate a reconstructed image. This reconstructed image represents the encoding of the original training image 302, and therefore the predicted partial feature set 312a-m represents the encoding of the original training image 302.
[0059] The partial capsule encoder 310 can provide a set of predicted partial features 312a-m to the partial capsule decoder 330, which can determine the loss of the encoding represented by the set of predicted partial features 312a-m.
[0060] In some implementations, given the encoding of the training image 302 represented by the predicted partial feature set 312a-m, the partial capsule decoder 330 can determine the "image probability". That is, the partial capsule decoder 330 can calculate the probability of the observed training image 302 conditioned on the encoding represented by the predicted partial feature set 312a-m.
[0061] As a specific example, the partial capsule decoder 330 can calculate:
[0062]
[0063] Where y is the training image 302; M is the number of possible object parts; (i,j) represents a specific pixel position within the training image 302; c represents the mixing probability of different possible object parts m at the same pixel position (i,j); m The predicted color of the image template representing the m-th possible object portion; This represents the original template T of the m-th possible object part, processed based on the predicted pose of the m-th possible object part identified in the predicted feature set 312. m The transformed image template for the m-th possible object portion; Let represent the color channel of the transformed image template at the m-th possible object portion at the (i,j)-th pixel position; and It is a constant variance value.
[0064] Predict color c m It can be generated by using a neural network (e.g., a multilayer perceptron) to process the object part feature embedding of the m-th object part identified in the predicted part feature set 312.
[0065] In some implementations, the blending probability of possible object parts at a specific pixel location (i,j) The probability of the existence of the possible object portion identified in the predicted feature set 312 is proportional to the α value of the transformed image template of the possible object portion at that specific pixel location, i.e.:
[0066] The partial capsule decoder 330 can use the calculated image probabilities to determine updates to the parameters of the partial capsule encoder 310. The training system 300 can backpropagate this update through the partial capsule encoder 310. Figure 3 The dashed line shown indicates the direction of reverse propagation.
[0067] The training system 300 can further backpropagate parameter updates to the object partial data storage 320 to update the image templates of possible object parts. That is, since the image template is the input to the partial capsule encoder 310 when it generates the predicted partial feature set 312a-m, the training system can backpropagate gradients to the image template and determine the update of the value for each channel of the image template. In this way, the training system 300 can automatically learn the image templates of possible object parts, which define the possible object parts themselves. Therefore, the user of the training system 300 does not need to determine what the possible object parts should be; instead, the training system 300 can determine, through training, the optimal features that can be used to characterize the possible object parts of a large range of training images 302.
[0068] Partial capsule encoder 310 may provide predicted partial feature sets 312a-m to object capsule encoder 340. In some implementations, object capsule encoder 340 may also obtain object metadata 352 from object data storage 350. Object metadata 352 includes data corresponding to each of the plurality of possible objects depicted in training image 302. Object metadata 352 corresponding to a particular possible object includes the corresponding affine transformation between that particular possible object and each possible object part. For example, for each possible object, object metadata 352 may include a corresponding capsule-part relation (CPR) matrix for each of the M possible object parts, where each CPR matrix represents the affine transformation between the possible object and the possible object part.
[0069] The object capsule encoder 340 can process the network input (including i) the predicted partial feature sets 312a-m and ii) the object metadata 352 to generate P predicted partial pose distributions 342a-p (including the corresponding partial pose distributions for each possible object and each possible object part), where P = M·K, where M is the number of possible object parts and K is the number of possible objects. When a specific possible object part is a component of a specific possible object, the partial pose distributions 342 of the specific possible object and its part identify the range of specific poses within the training image 302 of that specific possible object part, and the associated probability of each specific pose. The following will refer to... Figure 6 A more detailed discussion of some pose distributions is provided.
[0070] In other words, the object capsule encoder 340 can encode the predicted partial feature set 312a-m into a code represented by the partial pose distribution 342a-p. That is, the object capsule encoder 340 uses the predicted partial feature set 312a-m as a basis, assuming that the predicted pose of each possible object identified in the predicted partial feature set 312a-m is correct. Then, the object capsule encoder can generate partial pose distributions 342a-p representing the same possible object portion, assigned to different specific possible objects. Therefore, the partial pose distribution 342a-p represents the encoding of the predicted poses identified in the predicted partial feature set 312a-m.
[0071] The object capsule encoder 340 can provide a partial pose distribution 342a-p to the object capsule decoder 360, which can determine the loss of the encoding represented by the partial pose distribution 342a-p.
[0072] In some implementations, given the encoding of the pose of possible object parts identified in the predicted partial feature set 312a-m, the object capsule decoder 360 can determine the "partial pose probability". That is, the object capsule decoder 360 can calculate the probability of the observed pose in the predicted partial feature set 312a-m conditioned on the encoding represented by the partial pose distribution 342a-p.
[0073] For example, the Object Capsule Decoder 360 can calculate:
[0074]
[0075] Where a k It is the probability that the k-th possible object is depicted in training image 302; a k,m x is the conditional probability that the m-th possible object part is depicted in training image 302 if the m-th possible object part is located in the k-th possible object; m It is the predicted pose of the m-th possible object part identified in the feature set 312a-m; p(x m |k,m) represents the probability of the predicted pose of the m-th possible object part if the m-th possible object part is located in the k-th possible object; and d m It is the probability that the m-th possible object part is located in the training image identified in the prediction part feature set 312a-m.
[0076] In some implementations, the probability p(x) is given by having a normal distribution with mean and variance calculated from the predicted feature set 312a-m. m |k, m). That is:
[0077]
[0078] The following will refer to Figure 6 This process will be discussed in more detail.
[0079] The object capsule decoder 360 can use the calculated partial pose probabilities to determine updates to the parameters of the object capsule encoder 340. The training system 300 can backpropagate this update through the object capsule encoder 340.
[0080] The training system 300 can further backpropagate parameter updates to the object data storage 350 to update the object metadata 352, for example, updating the CPR matrix corresponding to each possible object and each possible object part. That is, since the CPR matrix is the input to the object capsule encoder 340 when it generates the partial pose distributions 342a-p, the training system can backpropagate gradients to the CPR matrix and determine updates to the values of each element in each matrix. In this way, the training system 300 can automatically learn the relationships between possible object parts and possible objects. Therefore, the user of the training system 300 does not need to determine what a possible object should be or how possible object parts should be combined to form a possible object; instead, the training system 300 can determine, through training, the optimal possible objects that can be used to represent a large range of training images 302, and the optimal combination of possible object parts that can be used to form possible objects.
[0081] In some implementations, the partial capsule autoencoder and the object capsule autoencoder are jointly trained. For example, during training, the training system 300 can backpropagate gradients from the object capsule encoder 340 to the partial capsule encoder 310. In some implementations, stopping gradients can be applied to every input of the object capsule encoder except for the object partial feature embeddings identified in the predicted partial feature sets 312a-m. That is, the training system 300 does not backpropagate gradients from any input of the object capsule encoder 340 other than the object partial feature embeddings to the partial capsule encoder 310.
[0082] In some implementations, the training objective of the training system 300 can promote the sparsity and diversity of possible objects and possible object parts, as defined by the CPR matrix in the object data storage 350 and the image templates in the object part data storage 320, respectively. That is, the training objective used to train the object capsule autoencoder and the part capsule autoencoder can promote the training system 300 to learn parameters that i) allow specific possible objects to be dedicated to a specific arrangement of possible object parts and ii) allow a wide variety of possible objects and possible object parts to be recognized in different training images.
[0083] Training system 300 may be an image classification system in which an object partial neural network and an object detection neural network are trained as part of a system, wherein each input image is assigned one or more specific categories from both sets of categories. That is, the object detection output generated by the object detection neural network (e.g., Figure 1 The object detection output 152 shown can be provided to a downstream system that classifies the input image based on the object detection output. In this case, there may be C possible categories, K possible objects, and M possible object parts.
[0084] Typically, a specific subset of possible objects corresponds to a specific category. That is, if a specific subset of possible objects is identified in an input image, the input image can be assigned to a specific category. In some implementations, there is a one-to-one relationship between possible categories and possible objects. That is, C = M, and each possible object corresponds to a specific category. In other implementations, one or more categories may correspond to specific subsets of multiple possible objects, i.e., M < C ≤ 2. M In this specification, if a category corresponds to one or more specific objects, then the category "includes" those one or more specific objects.
[0085] For example, training system 300 can use training objectives that promote one or more of the following features to generate parameter updates: i) each category includes the same number of possible objects, or ii) each possible object is included in the same number of categories.
[0086] As a specific example, training system 300 can process a batch of training images 302 of size B and generate parameter updates in order to maximize the image probabilities and partial pose probabilities of that batch. Therefore, for each training image 302 in this batch, the system can calculate the prior object existence probability for each possible object:
[0087]
[0088] The training system 300 can calculate the sum of the prior object probabilities for each possible object in the batch of training images:
[0089]
[0090] Furthermore, for each training image in this batch of training images, the sum of the prior object existence probabilities is calculated:
[0091]
[0092] In this particular example, the training system 300 may assume that only one category is depicted in each image. To promote the inclusion of the same number of possible objects in each category, the training system 300 may promote... To facilitate the inclusion of each possible object in the same number of categories, the training system 300 can promote... Therefore, training system 300 can generate parameter updates in order to minimize:
[0093]
[0094] As another example, training system 300 can minimize the entropy within a batch of training images 302 of size B. Alternatively or further, training system 300 can maximize the entropy between training images in that batch.
[0095] As a specific example, training system 300 can process a batch of training images 302 of size B and generate parameter updates in order to maximize the image probabilities and partial pose probabilities of this batch. Therefore, for each training image 302 in this batch, the system can calculate the posterior object part existence probability for each possible object and each possible object part:
[0096]
[0097] Then, the training system 300 can generate parameter updates to minimize:
[0098]
[0099] H is a measure of entropy. For example, H(v i )=-∑ i v i log2(v i ).
[0100] It is the sum of the posterior object part existence probabilities of the training images for possible object k. Or its normalized version.
[0101] It is the sum of the posterior object probabilities of possible objects for training image b. Or its normalized version.
[0102] Figure 4 This is a flowchart of an example process 400 for generating object detection output. For convenience, process 400 is described as being implemented by a system of one or more computers located in one or more locations. For example, an object detection system appropriately programmed according to this specification (e.g., Figure 1 The object detection system 100 shown can implement process 400.
[0103] The system acquires the input image (step 402). The input image may include one or more depictions of a particular possible object, each of which consists of one or more possible object parts.
[0104] The system processes the input image to generate predicted partial feature data (step 404). For example, the system can use an object partial neural network (e.g., Figure 1The object shown is part of the neural network 110, which processes the input image.
[0105] For each of the multiple possible object parts, the predicted partial feature data may include: i) a partial existence probability representing the possibility that the possible object part is depicted in the input image; ii) the predicted pose of the possible object part in the input image if the possible object part is depicted; and iii) an object part feature embedding characterizing the depiction of the possible object part if the possible object part is depicted in the input image.
[0106] In some implementations, the system can process the input image using an object-part neural network, which includes a convolutional subnetwork comprising one or more convolutional neural network layers. The convolutional subnetwork processes the input image to generate a set of predicted partial features. For example, the object-part neural network may include one or more upsampled convolutional layers, followed by one or more convolutional neural network layers, each with a channel depth of M, i.e., each convolutional neural network layer has M filters, where M is the number of possible object parts. The outputs of these layers can then be shaped or processed using additional neural network layers to generate M sets of predicted partial features.
[0107] As another example, an object partial neural network may include a corresponding subnetwork for each possible object partial depicted in the input image, such that each subnetwork processes the output of the convolutional subnetwork to generate a corresponding set of predicted partial features. For example, each subnetwork may be a multilayer perceptron that generates a corresponding object partial feature embedding, which is a unique embedding of the possible object partial depicted in the input image.
[0108] The system processes the predicted feature data of multiple possible object parts to generate an object detection output that identifies one or more objects depicted in the input image (step 406). For example, the system can use an object detection neural network (e.g., Figure 1 The object detection neural network 130 shown is used to process the predicted feature data. The following will refer to... Figure 5 The process will be described in more detail.
[0109] The object detection output includes data identifying one or more possible objects depicted in the input image from a set of M possible objects. For each identified possible object, the object detection output may also identify the location of that identified possible object in the input image. In some implementations, for each identified possible object, the object detection output includes a probability characterizing the likelihood that the identified possible object is depicted in the input image. In some implementations, for each identified possible object, the object detection output further includes a probability distribution of the possible locations of the identified possible object in the input image.
[0110] Figure 5 This is a flowchart of an example process 500 for processing predicted feature data to generate object detection output. For convenience, process 500 is described as being implemented by a system of one or more computers located in one or more locations. For example, an object detection neural network appropriately programmed according to this specification (e.g., Figure 1 The object detection neural network 130 shown can be implemented in process 500.
[0111] The system acquires a set of predicted partial features corresponding to each of a plurality of possible object parts that may be depicted in the input image (step 502). For each of the plurality of possible object parts, the predicted partial feature data may include: i) a partial existence probability representing the possibility that the possible object part is depicted in the input image; ii) the predicted pose of the possible object part in the input image if the possible object part is depicted; and / or iii) an object part feature embedding characterizing the depiction of the possible object part if the possible object part is depicted in the input image. In some implementations, each of the predicted partial feature sets includes an image template characterizing the corresponding possible object part.
[0112] The system processes the predicted feature set to generate a predicted object feature set, where each predicted object feature set corresponds to a possible object that may be depicted in the input image (step 504). For example, the system can use an object prediction subnetwork (e.g., Figure 1 The object prediction subnetwork 150 shown processes the feature set of the prediction part.
[0113] Each set of predicted object features may include: i) the object presence probability representing the likelihood that the corresponding possible object is depicted in the input image; ii) the object feature embedding characterizing the depiction of the possible object if the possible object is depicted in the input image; and / or iii) the predicted pose of the possible object in the input image if the possible object is depicted in the input image. For example, the predicted pose of the possible object in the input image may be represented by a capsule-camera relation (CCR) matrix.
[0114] In some implementations, the object prediction subnetwork uses a permutation-invariant encoder neural network to process the predicted partial feature set to generate a predicted object feature set. For example, the permutation-invariant encoder neural network can have a set transformer architecture. The set transformer is described in more detail in "Set Transformer: A Framework for Attention-Based Permutation-Invariant Neural Networks", Lee et al., arXiv:1810.00825.
[0115] In some implementations, the system can generate the network input for the object prediction subnetwork by combining i) the predicted pose of possible object parts identified in the predicted partial feature set, ii) the object part feature embedding of possible object parts identified in the predicted partial feature set, and iii) an image template of possible object parts identified in the predicted partial feature set. For example, the system can concatenate the predicted pose, the object part feature embedding, and a tiled version of the image template to generate the network input. That is, the system can process each image template to generate a version of the image template with the same dimension as the predicted pose and the object part feature embedding, e.g., a one-dimensional version. The object prediction subnetwork can then process the network input using a permutation-invariant encoder neural network. In some implementations, the permutation-invariant encoder neural network can use the partial presence probability of possible sizes of parts identified in the predicted partial feature set as a deviation value in one or more attention mechanisms within the permutation-invariant encoder neural network.
[0116] The system processes the predicted object feature set for each possible object to generate object detection output (step 506). The object detection output includes data identifying one or more possible objects depicted in the input image from a set of M possible objects. For each identified possible object, the object detection output can also identify the location of the identified possible object in the input image.
[0117] In some implementations, the system identifies one or more potential objects in the input image based on the object presence probability of each potential object identified in the corresponding object feature set. For example, if the corresponding object presence probability is higher than a certain threshold, the system may determine that a specific potential object is depicted in the input image. In some such implementations, the system may further include the predicted pose of each identified potential object in the object detection output, for example, using the CCR matrix of the identified potential objects.
[0118] In some other implementations, the system can process the feature set of the predicted object to generate a partial pose distribution for each possible object and possible object portion. This partial pose distribution characterizes the probability distribution of possible poses of the possible object portion when the possible object portion is located within the possible object. The system can then process the partial pose distribution to generate object detection output. The following will refer to... Figure 6 The process will be described in more detail.
[0119] Figure 6 This is a flowchart of an example process 600 for generating a partial pose distribution. For convenience, process 600 is described as being implemented by a system of one or more computers located in one or more locations. For example, an object detection neural network appropriately programmed according to this specification (e.g., Figure 1 The object detection neural network 130 shown can be implemented in process 600.
[0120] When a specific possible object portion is located within a specific possible object, the pose distribution of each portion represents the probability distribution of possible poses of that specific possible object portion within the input image. The system can generate probability distributions for each possible object among multiple possible objects and for each possible object portion among multiple possible object portions.
[0121] The system acquires a set of predicted object features corresponding to each possible object (step 602). Each set of predicted object features may include: i) the probability of the corresponding possible object being depicted in the input image; ii) the object feature embedding characterizing the depiction of the possible object if the possible object is depicted in the input image; and / or iii) the predicted pose of the possible object in the input image if the possible object is depicted in the input image. For example, the predicted pose of the possible object in the input image may be represented by a capsule-camera relationship (CCR) matrix.
[0122] For each possible object, the system processes the corresponding set of predicted object features to generate a corresponding set of candidate parameters (step 604). For example, the system can use partially componentized subnetworks (e.g., Figure 1 The part shown is composed of subnetwork 160) to process the object feature set.
[0123] Candidate parameters for a specific possible object may include: i) the conditional probability, for each possible object portion, that the possible object portion is part of a specific possible object, of being depicted in the input image; and / or ii) for each possible object portion, a prediction scalar accuracy characterizing the accuracy of the partial pose distribution corresponding to the specific possible object and that possible object portion. For example, the prediction scalar accuracy may be the standard deviation corresponding to the corresponding partial pose distribution.
[0124] As a specific example, an object prediction subsystem can generate candidate parameters for a particular possible object by processing the object feature embeddings identified in the corresponding set of predicted object features using a feedforward neural network (e.g., a multilayer perceptron) specific to that particular possible object. That is, the object prediction subsystem can include K different feedforward neural networks, each corresponding to a specific possible object.
[0125] For each possible object, the system obtains the corresponding capsule-part relation (CPR) matrix corresponding to each possible object part (step 606). Each CPR matrix represents the affine transformation between the possible object and the possible object part. That is, the CPR matrix represents the position of the possible object part relative to the possible object when the possible object part is a member of the possible object. In some implementations, the system can use a feedforward neural network to generate the CPR matrix corresponding to a specific possible object, which is used to generate the conditional probability and prediction scalar accuracy corresponding to the specific possible object. That is, the CPR matrix corresponding to a specific possible object can be a component of the generated candidate parameters of the specific possible object. In some other implementations, the system can obtain the CPR matrix from data storage (e.g., Figure 1 The CPR matrix is obtained from the object data storage 140 shown.
[0126] For each possible object part and for each possible object, if the possible object part is a member of a possible object, the system generates an initial candidate prediction for the possible object part (step 608). Each initial candidate prediction represents a specific pose of the corresponding possible object part in the initial image if the possible object part is part of the corresponding possible object.
[0127] For example, the system can generate initial candidate predictions for specific possible object parts and specific possible objects by combining i) the CCR matrix corresponding to a specific possible object and ii) the CPR matrix corresponding to a specific possible object part and a specific possible object. For example, the system can multiply the CCR matrix corresponding to a specific possible object and the CPR matrix corresponding to a specific possible object and a specific possible object part.
[0128] For each possible object part and each possible object, where the possible object part is a member of a possible object, the system generates a partial pose distribution representing the probability distribution of possible poses of the possible object part (step 610). For example, the system can generate partial pose distributions for a specific object and a specific object part by combining the corresponding initial candidate predictions and the corresponding scalar precision. As a specific example, the system can generate a normal distribution for each possible object part and the possible object, where the mean of the normal distribution is equal to the corresponding initial candidate prediction, and the standard deviation of the normal distribution is equal to the corresponding scalar precision.
[0129] After generating partial pose distributions for each possible object and parts of the possible object, the system can use the partial pose distributions to generate object detection output.
[0130] In some implementations, for each possible object and each possible object part, the system can use the corresponding part pose distribution to determine the object-object part probability characterizing the likelihood that the possible object part is located within a possible object. For example, the system can obtain the predicted pose of the possible object parts in the input image, independent of the possible objects. For example, the system can obtain the predicted pose of the possible object parts from an object part neural network (e.g., Figure 1 The system identifies the predicted poses of possible object parts from the predicted feature set generated by the neural network 110 (shown in the diagram). The system can then determine the object-object part probability as the probability of the predicted pose of the possible object part given by the possible object parts and the possible object part pose distribution (e.g., a determined normal distribution).
[0131] In some implementations, for each possible object part, the system assigns that possible object part to a possible object. As a specific example, the system might assign each possible object part to the possible object with the highest corresponding object-object part probability. As another specific example, if the corresponding object-object part probability is above a certain threshold, the system might assign the possible object part to the possible object with the highest corresponding object-object part probability and not assign that possible object part to any other possible object.
[0132] The system can then identify each possible object in the object detection output that has been assigned one or more possible object parts. In some implementations, the system includes only a subset of possible objects assigned possible object parts in the object detection output. For example, if a particular object is assigned a possible object part with a probability higher than a certain threshold, the system may only identify that particular possible object in the object detection output. As another example, if the number of possible object parts assigned to a particular possible object is higher than a certain threshold, the system may only identify that particular possible object.
[0133] In some implementations, the system identifies possible object parts that have been assigned to each possible object identified in the object detection output. In some such implementations, for each possible object part assigned to a possible object identified in the object detection output, the system identifies the predicted pose of the possible object part identified in the predicted part feature set generated by the object part neural network. That is, the system can identify the predicted pose of the possible object parts independent of the possible objects.
[0134] This specification uses the term "configuration" in conjunction with system and computer program components. A system of one or more computers configured to perform a specific operation or action means that the system has software, firmware, hardware, or a combination thereof installed that causes the system to perform the operation or action when it is run. One or more computer programs configured to perform a specific operation or action means that the one or more programs include instructions that cause the data processing device to perform the operation or action when executed by the data processing device.
[0135] The embodiments and functional operations of the subject matter described in this specification may be implemented in digital electronic circuits, tangibly embodied computer software or firmware, computer hardware (including the structures disclosed herein and their structural equivalents), or combinations thereof. Embodiments of the subject matter described in this specification may be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible, non-transitory storage medium for execution by a data processing apparatus or for controlling the operation of such data processing apparatus. The computer storage medium may be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or combinations thereof. Alternatively or additionally, the program instructions may be encoded on artificially generated propagated signals, such as machine-generated electrical, optical, or electromagnetic signals, generated to encode information for transmission to a suitable receiver device for execution by the data processing apparatus.
[0136] The term "data processing apparatus" refers to data processing hardware and includes various devices, apparatuses, and machines for processing data, including, for example, programmable processors, computers, or multiple processors or computers. The apparatus may also be or further include special-purpose logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits). In addition to hardware, the apparatus may optionally include code that creates an execution environment for computer programs, such as code constituting processor firmware, protocol stacks, database management systems, operating systems, or combinations thereof.
[0137] Computer programs (also referred to or described as programs, software, software applications, applications, modules, software modules, scripts, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and can be deployed in any form, including as standalone programs or as modules, components, subroutines, or other units suitable for use in a computing environment. A program may, but does not need to, correspond to a file in a file system. A program may be stored as a portion of a file containing other programs or data (e.g., one or more scripts stored in a markup language document), or as a single file dedicated to the program in question, or as a collection of collaborating files (e.g., a file storing one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on a single computer or on multiple computers located at a single site or distributed across multiple sites and interconnected via a data communication network.
[0138] In this specification, the term "database" is used broadly to refer to any collection of data: data that does not need to be structured in any particular way, or not structured at all, and can be stored on storage devices in one or more locations. Thus, for example, an index database may include multiple collections of data, each of which can be organized and accessed differently.
[0139] Similarly, in this specification, the term "engine" is used broadly to refer to a software-based system, subsystem, or process programmed to perform one or more specific functions. Typically, an engine will be implemented as one or more software modules or components installed on one or more computers at one or more locations. In some cases, one or more computers are dedicated to a particular engine; in others, multiple engines may be installed on the same or multiple computers or run on the same or multiple computers.
[0140] The processes and logic flows described in this specification can be implemented by one or more programmable computers executing one or more computer programs to perform functions by manipulating input data and generating outputs. The processes and logic flows can also be implemented by special-purpose logic circuitry (e.g., FPGA or ASIC) or a combination of special-purpose logic circuitry and one or more programmable computers.
[0141] A computer suitable for executing computer programs can be based on a general-purpose microprocessor, a special-purpose microprocessor, or both, or any other type of central processing unit (CPU). Typically, the CPU receives instructions and data from read-only memory (ROM) or random access memory (RAM), or both. The essential components of a computer are the CPU for implementing or executing instructions and one or more memory devices for storing instructions and data. The CPU and memory may be supplemented by special-purpose logic circuitry or may be incorporated into the special-purpose logic circuitry. Typically, a computer will also include one or more large storage devices (e.g., disks, magneto-optical disks, or optical disks) for storing data, or the computer may be operatively coupled to receive data from or transfer data to large storage devices, or both. However, a computer does not necessarily need to have such devices. Furthermore, a computer may be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
[0142] Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices), magnetic disks (e.g., internal hard disks or removable disks), magneto-optical disks, and CD-ROM and DVD-ROM disks.
[0143] To provide interaction with the user, embodiments of the subject matter described in this specification can be implemented on a computer having: a display device for displaying information to the user, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor; and a keyboard and pointing device, such as a mouse or trackball, through which the user provides input to the computer. Other types of devices can also be used to provide interaction with the user; for example, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form (including acoustic input, voice input, or tactile input). Additionally, the computer can interact with the user by sending documents to and receiving documents from the device used by the user (e.g., by sending web pages to a web browser on the user's device in response to a request received from a web browser). Furthermore, the computer can interact with the user by sending text messages or other forms of messages to a personal device (e.g., a smartphone running a messaging application) and subsequently receiving response messages from the user.
[0144] For example, the data processing apparatus used to implement machine learning models may also include common and compute-intensive parts for processing machine learning training or production, namely dedicated hardware accelerator units for inference and workloads.
[0145] Machine learning models can be implemented and deployed using machine learning frameworks, such as TensorFlow, Microsoft Cognitive Toolkit, Apache Singa, or Apache MXNet.
[0146] Embodiments of the subject matter described herein can be implemented in a computing system that includes back-end components (e.g., as a data server), or middleware components (e.g., an application server), or front-end components (e.g., a client computer having a graphical user interface, web browser, or application through which a user can interact with the implementation of the subject matter described herein), or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected via digital data communication (e.g., a communication network) of any form or medium. Examples of communication networks include local area networks (LANs) and wide area networks (WANs), such as the Internet.
[0147] A computing system may include clients and servers. Clients and servers are generally geographically distant and typically interact via a communication network. The client-server relationship is established by computer programs running on respective computers that establish a client-server relationship between them. In some embodiments, the server transmits data (e.g., HTML pages) to a user device, for example, to display the data to a user interacting with the device as a client and to receive user input from the user. Data generated at the user device (e.g., the result of user interaction) can be received from the device at the server.
[0148] In addition to the embodiments described above, the following embodiments are also innovative:
[0149] Example 1 is a method comprising:
[0150] Obtain the input image;
[0151] The input image is processed using an object-part neural network to generate predicted partial feature data, which for each of a plurality of possible object parts includes:
[0152] This represents the probability that a portion of a possible object might be depicted in the input image.
[0153] Given that the possible object portion is depicted in the input image, the predicted pose of the possible object portion in the input image, and
[0154] The feature vector representing the depicted object portion when the possible object portion is depicted in the input image; and
[0155] The object detection neural network is used to process the predicted partial feature data of multiple possible object parts to generate object detection output, which identifies one or more objects depicted in the input image.
[0156] Example 2 is based on the method of Example 1, wherein the object part neural network includes a convolutional neural network configured to process the input image to generate the presence probability of each possible object part, the predicted pose, and the object part feature vector.
[0157] Example 3 is a method according to either Example 1 or 2, wherein the predicted partial feature data further includes a corresponding image template for each possible object portion, the image template being a low-dimensional image of the possible object portion.
[0158] Example 4 is based on the method of any one of Examples 1 to 3, wherein processing the predicted feature data includes:
[0159] A permutation-invariant encoder neural network is used to process the predicted partial feature data to generate predicted object feature data. The predicted object feature data includes, for each of the multiple possible objects, the following:
[0160] This represents the probability that an object exists and is likely to be depicted in the input image.
[0161] The object feature vector that represents the depiction of a possible object in the context of the input image;
[0162] Capsule-camera relationship (CCR) matrix representing the affine transformation between a possible object and the camera that captures the image;
[0163] For each possible object, where the possible object part is part of another possible object, generate a probability distribution of possible poses for each possible object part from the predicted object feature data; and
[0164] Use probability distributions to generate object detection output.
[0165] Example 5 is based on the method of Example 4, wherein the probability distribution of possible poses of possible object parts generated from predicted object feature data and for each possible object part includes:
[0166] For each possible object, candidate parameters are generated from the object feature vector of the possible object. These candidate parameters include: (i) the corresponding capsule-part relation (CPR) matrix for each possible object part, which represents the affine transformation between the possible object and the possible object part; and (ii) the corresponding prediction scalar accuracy for each possible object part.
[0167] For each possible object, generate initial candidate predictions for each possible object part from the CCR matrix of the possible object and the CPR matrix of the possible object and its parts; and
[0168] For each possible object and each possible object part, a probability distribution of possible poses of the possible object part is generated from the initial candidate predictions and prediction scalar precision corresponding to the possible object and the possible object part.
[0169] Example 6 is based on the method of Example 5, wherein generating candidate parameters for each possible object and from the object feature vector of the possible object includes:
[0170] The object feature vectors of possible objects are processed using a feedforward neural network specific to the possible objects to generate candidate parameters.
[0171] Example 7 is based on the method of either Example 5 or 6, wherein, for each possible object and each possible object portion, generating a probability distribution of possible poses of the possible object portion from the initial candidate predictions and prediction scalar accuracy corresponding to the possible object and the possible object portion includes:
[0172] Generate a normal distribution with initial candidate predictions as the mean and prediction scalar accuracy as the standard deviation.
[0173] Example 8 is a method according to any one of Examples 4 to 7, wherein the permutation-invariant encoder neural network has an ensemble transformer architecture.
[0174] Example 9 is a method according to any one of Examples 4 to 8, wherein generating object detection output using a probability distribution includes:
[0175] For at least one subset of possible object parts, if a possible object part is part of a possible object, assign the possible object part to the possible object, such that the predicted pose of the possible object part of that possible object is assigned the highest probability in the probability distribution of the possible poses of the possible object part; and
[0176] Identify possible object portions that have been assigned to the same possible object in the object detection output.
[0177] Example 10 is a method according to any one of Examples 1 to 9, wherein the object-part neural network is trained as part of an image autoencoder through unsupervised learning, which automatically encodes the input image.
[0178] Example 11 is the method according to Example 10, wherein an object detection neural network is trained as part of an object partial pose autoencoder through unsupervised learning, which automatically encodes the pose of an object portion from an input image.
[0179] Example 12 is based on the method of Example 11, wherein the object partial pose autoencoder and the image encoder are jointly trained.
[0180] Example 13 is based on the method of Example 12, wherein during training, gradients are backpropagated from the object detection neural network to the object part of the neural network.
[0181] Example 14 is the method according to Example 13, wherein stopping gradients are applied to all inputs of the object part neural network except for the object part feature vector.
[0182] Example 15 is a method according to any one of Examples 12 to 14, wherein the joint training objective includes one or more items subject to sparse constraints.
[0183] Example 16 is a method according to any one of Examples 12 to 15, wherein the joint training objective includes one or more items subject to entropy constraints.
[0184] Example 17 is a system comprising: one or more computers and one or more storage devices storing instructions that, when executed by the one or more computers, are operable to cause the one or more computers to perform a method according to any one of Examples 1 to 16.
[0185] Example 18 is a computer storage medium coded with a computer program that includes instructions that, when executed by a data processing apparatus, are operable to cause the data processing apparatus to perform the method according to any one of Examples 1 to 16.
[0186] While this specification contains numerous specific implementation details, these details should not be construed as limiting the scope of any invention or potentially claimed content, but rather as descriptions of features that may be specific to particular embodiments of a particular invention. Certain features described in this specification within the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, while features may be described above as functioning in certain combinations, or even initially claimed in this manner, in some cases one or more features from a claimed combination may be removed from the combination, and the claimed combination may refer to a sub-combination or a variation thereof.
[0187] Similarly, although the operations are shown in a specific order in the accompanying drawings and set forth in a specific order in the claims, they should not be construed as requiring these operations to be performed in the specific order or sequence shown, or as requiring all the shown operations to be performed to obtain the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of the various system modules and components in the above embodiments should not be construed as requiring such separation in all embodiments; and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
[0188] Specific embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions set forth in the claims can be performed in a different order and still achieve the desired result. As an example, the processes illustrated in the figures do not necessarily require the specific illustrated order or sequence to obtain the desired result. In some cases, multitasking and parallel processing can be advantageous.
Claims
1. A method for detecting objects in an image, comprising: Obtain the input image; The input image is processed using an object-part neural network to generate predicted partial feature data, wherein the predicted partial feature data includes, for each of a plurality of possible object parts: This represents the probability that the possible object portion is depicted in the input image. The predicted pose of the possible object portion in the input image when the possible object portion is depicted in the input image, the predicted pose including the affine transformation between the possible object portion and the camera capturing the input image when the possible object portion is depicted in the input image, and In the case that the possible object portion is depicted in the input image, the object portion feature vector characterizing the depiction of the possible object portion; and The object detection neural network is used to process the predicted partial feature data of the plurality of possible object parts to generate an object detection output, which identifies one or more objects depicted in the input image. The processing includes: The predicted partial feature data is processed using a permutation-invariant encoder neural network to generate predicted object feature data, wherein the predicted object feature data includes, for each of a plurality of possible objects: This represents the probability of the possible object being depicted in the input image. The object feature vector that characterizes the depiction of the possible object when the possible object is depicted in the input image; Capsule-camera relationship matrix representing the affine transformation between the possible object and the camera that captures the input image; For each possible object, if the possible object portion is part of the possible object, generate a probability distribution of possible poses of the possible object portion from the predicted object feature data and for each possible object portion; and The object detection output is generated using the probability distribution.
2. The method according to claim 1, wherein, The object part neural network includes a convolutional neural network configured to process the input image to generate a partial existence probability, predicted pose, and object part feature vector for each of the plurality of possible object parts.
3. The method according to claim 1, wherein, The predicted feature data further includes a corresponding image template for each of the plurality of possible object parts, wherein the corresponding image template is a low-dimensional image of the possible object part.
4. The method according to claim 1, wherein, The probability distribution of possible poses for each possible object part, generated from the predicted object feature data, includes: For each possible object, candidate parameters are generated from the object feature vector of the possible object, the candidate parameters including: (i) a corresponding capsule-part relation CPR matrix for each of the plurality of possible object parts, the CPR matrix representing the affine transformation between the possible object and the possible object part; and (ii) a corresponding prediction scalar accuracy for each of the plurality of possible object parts; For each possible object, an initial candidate prediction for each possible object portion is generated from the CCR matrix of the possible object and the CPR matrix of the possible object and its portions; and For each possible object and for each possible object portion, a probability distribution of possible poses of the possible object portion is generated from the initial candidate predictions and prediction scalar accuracy corresponding to the possible object and the possible object portion.
5. The method according to claim 4, wherein, For each possible object, generating candidate parameters from the object feature vector of said possible object includes: The object feature vectors of the possible objects are processed using a feedforward neural network specific to the possible objects to generate the candidate parameters.
6. The method according to claim 4, wherein, For each possible object and for each possible object portion, the probability distribution for generating the possible poses of the possible object portion from the initial candidate predictions and prediction scalar accuracy corresponding to the possible object and the possible object portion includes: Generate a normal distribution having an initial candidate prediction as the mean and a prediction scalar accuracy as the standard deviation.
7. The method according to claim 1, wherein, The permutation-invariant encoder neural network has a set transformer architecture.
8. The method according to any one of claims 1 to 7, wherein, Generating the object detection output using the probability distribution includes: For at least one subset of the possible object portions, if the possible object portion is part of the possible object, the possible object portion is assigned to the possible object, wherein the predicted pose of the possible object portion of the possible object is assigned the highest probability in the probability distribution of the possible poses of the possible object portion; and The object detection output identifies the multiple possible object portions that have been assigned to the same possible object.
9. The method according to claim 1, wherein, The object-part neural network is trained as part of an image autoencoder through unsupervised learning, which automatically encodes the input image.
10. The method according to claim 9, wherein, The object detection neural network is trained as part of an object partial pose autoencoder through unsupervised learning, which automatically encodes the pose of object parts from the input image.
11. The method according to claim 10, wherein, The object partial pose autoencoder and the image encoder are jointly trained.
12. The method according to claim 11, wherein, During training, gradients are backpropagated from the object detection neural network to the object part of the neural network.
13. The method according to claim 12, wherein, The stopping gradient is applied to all input images of the object part neural network except for the object part feature vector.
14. The method according to any one of claims 11 to 13, wherein, Joint training objectives include one or more items with sparse constraints applied.
15. The method according to any one of claims 11 to 13, wherein, The joint training objective includes one or more items for which entropy constraints are imposed.
16. A system for detecting objects in an image, comprising one or more computers and one or more storage devices, the one or more storage devices storing instructions that, when executed by the one or more computers, cause the one or more computers to perform the method according to any one of claims 1-15.
17. One or more non-transitory computer-readable storage media encoded with computer program instructions, which, when executed by one or more computers, cause the one or more computers to perform the method according to any one of claims 1-15.