The present disclosure relates generally to object detection and tracking, and more specifically, to a draw wire encoder based homography.
Identifying and tracking objects within a space poses several technical challenges. Existing systems use various image processing techniques to identify objects (e.g. people). For example, these systems may identify different features of a person that can be used to later identify the person in an image. This process is computationally intensive when the image includes several people. For example, to identify a person in an image of a busy environment, such as a store, would involve identifying everyone in the image and then comparing the features for a person against every person in the image. In addition to being computationally intensive, this process requires a significant amount of time which means that this process is not compatible with real-time applications such as video streams. This problem becomes intractable when trying to simultaneously identify and track multiple objects. In addition, existing systems lack the ability to determine a physical location for an object that is located within an image.
Position tracking systems are used to track the physical positions of people and/or objects in a physical space (e.g., a store). These systems typically use a sensor (e.g., a camera) to detect the presence of a person and/or object and a computer to determine the physical position of the person and/or object based on signals from the sensor. In a store setting, other types of sensors can be installed to track the movement of inventory within the store. For example, weight sensors can be installed on racks and shelves to determine when items have been removed from those racks and shelves. By tracking both the positions of persons in a store and when items have been removed from shelves, it is possible for the computer to determine which person in the store removed the item and to charge that person for the item without needing to ring up the item at a register. In other words, the person can walk into the store, take items, and leave the store without stopping for the conventional checkout process.
For larger physical spaces (e.g., convenience stores and grocery stores), additional sensors can be installed throughout the space to track the position of people and/or objects as they move about the space. For example, additional cameras can be added to track positions in the larger space and additional weight sensors can be added to track additional items and shelves. Increasing the number of cameras poses a technical challenge because each camera only provides a field of view for a portion of the physical space. This means that information from each camera needs to be processed independently to identify and track people and objects within the field of view of a particular camera. The information from each camera then needs to be combined and processed as a collective in order to track people and objects within the physical space.
The system disclosed in the present application provides a technical solution to the technical problems discussed above by generating a relationship between the pixels of a camera and physical locations within a space. The disclosed system provides several practical applications and technical advantages which include 1) a process for generating a homography that maps pixels of a sensor (e.g. a camera) to physical locations in a global plane for a space (e.g. a room); 2) a process for determining a physical location for an object within a space using a sensor and a homography that is associated with the sensor; 3) a process for handing off tracking information for an object as the object moves from the field of view of one sensor to the field of view of another sensor; 4) a process for detecting when a sensor or a rack has moved within a space using markers; 5) a process for detecting where a person is interacting with a rack using a virtual curtain; 6) a process for associating an item with a person using a predefined zone that is associated with a rack; 7) a process for identifying and associating items with a non-uniform weight to a person; and 8) a process for identifying an item that has been misplaced on a rack based on its weight.
In one embodiment, the tracking system may be configured to generate homographies for sensors. A homography is configured to translate between pixel locations in an image from a sensor (e.g. a camera) and physical locations in a physical space. In this configuration, the tracking system determines coefficients for a homography based on the physical location of markers in a global plane for the space and the pixel locations of the markers in an image from a sensor. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to calibrate a shelf position within the global plane using sensors. In this configuration, the tracking system periodically compares the current shelf location of a rack to an expected shelf location for the rack using a sensor. In the event that the current shelf location does not match the expected shelf location, then the tracking system uses one or more other sensors to determine whether the rack has moved or whether the first sensor has moved. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to hand off tracking information for an object (e.g. a person) as it moves between the field of views of adjacent sensors. In this configuration, the tracking system tracks an object's movement within the field of view of a first sensor and then hands off tracking information (e.g. an object identifier) for the object as it enters the field of view of a second adjacent sensor. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to detect shelf interactions using a virtual curtain. In this configuration, the tracking system is configured to process an image captured by a sensor to determine where a person is interacting with a shelf of a rack. The tracking system uses a predetermined zone within the image as a virtual curtain that is used to determine which region and which shelf of a rack that a person is interacting with. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to detect when an item has been picked up from a rack and to determine which person to assign the item to using a predefined zone that is associated with the rack. In this configuration, the tracking system detects that an item has been picked up using a weight sensor. The tracking system then uses a sensor to identify a person within a predefined zone that is associated with the rack. Once the item and the person have been identified, the tracking system will add the item to a digital cart that is associated with the identified person. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to identify an object that has a non-uniform weight and to assign the item to a person's digital cart. In this configuration, the tracking system uses a sensor to identify markers (e.g. text or symbols) on an item that has been picked up. The tracking system uses the identified markers to then identify which item was picked up. The tracking system then uses the sensor to identify a person within a predefined zone that is associated with the rack. Once the item and the person have been identified, the tracking system will add the item to a digital cart that is associated with the identified person. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to detect and identify items that have been misplaced on a rack. For example, a person may put back an item in the wrong location on the rack. In this configuration, the tracking system uses a weight sensor to detect that an item has been put back on a rack and to determine that the item is not in the correct location based on its weight. The tracking system then uses a sensor to identify the person that put the item on the rack and analyzes their digital cart to determine which item they put back based on the weights of the items in their digital cart. This configuration will be described in more detail using
In one embodiment, the tracking system is configured to determine pixel regions from images generated by each sensor which should be excluded during object tracking. These pixel regions, or “auto-exclusion zones,” may be updated regularly (e.g., during times when there are no people moving through a space). The auto-exclusion zones may be used to generate a map of the physical portions of the space that are excluded during tracking. This configuration is described in more detail using
In one embodiment, the tracking system is configured to distinguish between closely spaced people in a space. For instance, when two people are standing, or otherwise located, near each other, it may be difficult or impossible for previous systems to distinguish between these people, particularly based on top-view images. In this embodiment, the system identifies contours at multiple depths in top-view depth images in order to individually detect closely spaced objects. This configuration is described in more detail using
In one embodiment, the tracking system is configured to track people both locally (e.g., by tracking pixel positions in images received from each sensor) and globally (e.g., by tracking physical positions on a global plane corresponding to the physical coordinates in the space). Person tracking may be more reliable when performed both locally and globally. For example, if a person is “lost” locally (e.g., if a sensor fails to capture a frame and a person is not detected by the sensor), the person may still be tracked globally based on an image from a nearby sensor, an estimated local position of the person determined using a local tracking algorithm, and/or an estimated global position determined using a global tracking algorithm. This configuration is described in more detail using
In one embodiment, the tracking system is configured to maintain a record, which is referred to in this disclosure as a “candidate list,” of possible person identities, or identifiers (i.e., the usernames, account numbers, etc. of the people being tracked), during tracking. A candidate list is generated and updated during tracking to establish the possible identities of each tracked person. Generally, for each possible identity or identifier of a tracked person, the candidate list also includes a probability that the identity, or identifier, is believed to be correct. The candidate list is updated following interactions (e.g., collisions) between people and in response to other uncertainty events (e.g., a loss of sensor data, imaging errors, intentional trickery, etc.). This configuration is described in more detail using
In one embodiment, the tracking system is configured to employ a specially structured approach for object re-identification when the identity of a tracked person becomes uncertain or unknown (e.g., based on the candidate lists described above). For example, rather than relying heavily on resource-expensive machine learning-based approaches to re-identify people, “lower-cost” descriptors related to observable characteristics (e.g., height, color, width, volume, etc.) of people are used first for person re-identification. “Higher-cost” descriptors (e.g., determined using artificial neural network models) are used when the lower-cost descriptors cannot provide reliable results. For instance, in some cases, a person may first be re-identified based on his/her height, hair color, and/or shoe color. However, if these descriptors are not sufficient for reliably re-identifying the person (e.g., because other people being tracked have similar characteristics), progressively higher-level approaches may be used (e.g., involving artificial neural networks that are trained to recognize people) which may be more effective at person identification but which generally involve the use of more processing resources. These configurations are described in more detail using
In one embodiment, the tracking system is configured to employ a cascade of algorithms (e.g., from more simple approaches based on relatively straightforwardly determined image features to more complex strategies involving artificial neural networks) to assign an item picked up from a rack to the correct person. The cascade may be triggered, for example, by (i) the proximity of two or more people to the rack, (ii) a hand crossing into the zone (or a “virtual curtain”) adjacent to the rack, and/or (iii) a weight signal indicating an item was removed from the rack. In yet another embodiment, the tracking system is configured to employ a unique contour-based approach to assign an item to the correct person. For instance, if two people may be reaching into a rack to pick up an item, a contour may be “dilated” from a head height to a lower height in order to determine which person's arm reached into the rack to pick up the item. If the results of this computationally efficient contour-based approach do not satisfy certain confidence criteria, a more computationally expensive approach may be used involving pose estimation. These configurations are described in more detail using
In one embodiment, the tracking system is configured to track an item after it exits a rack, identify a position at which the item stops moving, and determines which person is nearest to the stopped item. The nearest person is generally assigned the item. This configuration may be used, for instance, when an item cannot be assigned to the correct person even using an artificial neural network for pose estimation. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect when a person removes or replaces an item from a rack using triggering events and a wrist-based region-of-interest (ROI). In this configuration, the tracking system uses a combination of triggering events and ROIs to detect when an item has been removed or replaced from a rack, identifies the item, and then modifies a digital cart of a person that is adjacent to the rack based on the identified item. This configuration is described in more detail using
In one embodiment, the tracking system is configured to employ a machine learning model to detect differences between a series of images over time. In this configuration, the tracking system is configured to use the machine learning model to determine whether an item has been removed or replaced from a rack. After detecting that an item has been removed or replaces from a rack, the tracking system may then identify the item and modify a digital cart of a person that is adjacent to the rack based on the identified item. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect when a person is interacting with a self-serve beverage machine and to track the beverages that are obtained by the person. In this configuration, the tracking system may employ one or more zones that are used to automatically detect the type and size of beverages that a person is retrieving from the self-serve beverage machine. After determining the type and size of beverages that a person retrieves, the tracking system then modifies a digital cart of the person based on the identified beverages. This configuration is described in more detail using
In one embodiment, the tracking system is configured to employ a sensor mounting system with adjustable camera positions. The sensor mounting system generally includes a sensor, a mounting ring, a faceplate support, and a faceplate. The mounting ring includes a first opening and a first plurality of threads that are disposed on an interior surface of the first opening. The faceplate support is disposed within the first opening of the mounting ring. The faceplate support includes a second plurality of threads that are configured to engage the first plurality of threads of the mounting ring and a second opening. The faceplate is disposed within the second opening of the faceplate support. The faceplate is coupled to the sensor and is configured to rotate within the second opening of the faceplate support. This configuration is described in more detail using
In one embodiment, the tracking system is configured to using distance measuring devices (e.g. draw wire encoders) to generate a homography for a sensor. In this configuration, a platform that comprises one or more markers is repositioned within the field of view of a sensor. The tracking system is configured to obtain location information for the platform and the markers from the distance measuring devices while the platform is repositioned within a space. The tracking system then computes a homography for the sensor based on the location information from the distance measuring device and the pixel locations of the markers within a frame captured by the sensor. This configuration is described in more detail using
In one embodiment, the tracking system is configured to define a zone within a frame from a sensor using a region-of-interest (ROI) marker. In this configuration, the tracking system uses the ROI marker to define a zone within frames from a sensor. The tracking system then uses the defined zone to reduce the search space when performing object detection to determine whether a person is removing or replacing an item from a food rack. This configuration is described in more detail using
In one embodiment, the tracking system is configured to update a homography for a sensor in response to determining that the sensor has moved since its homography was first computed. In this configuration, the tracking system determines translation coefficients and/or rotation coefficients and updates the homography for the sensor by applying the translation coefficients and/or rotation coefficients. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect and correct homography errors based on the location of a sensor. In this configuration, the tracking system determines an error between an estimated location of a sensor using a homography and the actual location of the sensor. The tracking system is configured to recompute the homography for the sensor in response to determining that the error is beyond the accuracy tolerances of the system. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect and correct homography errors using distances between markers. In this configuration, the tracking system determines whether a distance measurement error that is computed using a homography exceeds the accuracy tolerances of the system. The tracking system is configured to recompute the homography for a sensor in response to determining that the distance measurement error is beyond the accuracy tolerances of the system. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect and correct homography errors using a disparity mapping between adjacent sensors. In this configuration, the tracking system determines whether a pixel location that is computed using a homography is within the accuracy tolerances of the system. The tracking system is configured to recompute the homography in response to determining the results of using the homography are beyond the accuracy tolerances of the system. This configuration is described in more detail using
In one embodiment, the tracking system is configured to detect and correct homography errors using adjacent sensors. In this configuration, the tracking system determines whether a distance measurement error that is computed using adjacent sensors exceeds the accuracy tolerances of the system. The tracking system is configured to recompute the homographies for the sensors in response to determining that the distance measurement error is beyond the accuracy tolerances of the system. This configuration is described in more detail using
Certain embodiments of the present disclosure may include some, all, or none of these advantages. These advantages and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
Position tracking systems are used to track the physical positions of people and/or objects in a physical space (e.g., a store). These systems typically use a sensor (e.g., a camera) to detect the presence of a person and/or object and a computer to determine the physical position of the person and/or object based on signals from the sensor. In a store setting, other types of sensors can be installed to track the movement of inventory within the store. For example, weight sensors can be installed on racks and shelves to determine when items have been removed from those racks and shelves. By tracking both the positions of persons in a store and when items have been removed from shelves, it is possible for the computer to determine which person in the store removed the item and to charge that person for the item without needing to ring up the item at a register. In other words, the person can walk into the store, take items, and leave the store without stopping for the conventional checkout process.
For larger physical spaces (e.g., convenience stores and grocery stores), additional sensors can be installed throughout the space to track the position of people and/or objects as they move about the space. For example, additional cameras can be added to track positions in the larger space and additional weight sensors can be added to track additional items and shelves. Increasing the number of cameras poses a technical challenge because each camera only provides a field of view for a portion of the physical space. This means that information from each camera needs to be processed independently to identify and track people and objects within the field of view of a particular camera. The information from each camera then needs to be combined and processed as a collective in order to track people and objects within the physical space.
Additional information is disclosed in U.S. patent application Ser. No. 16/663,633 entitled, “Scalable Position Tracking System For Tracking Position In Large Spaces” (attorney docket no. 090278.0176) and U.S. patent application Ser. No. 16/664,470 entitled, “Customer-Based Video Feed” (attorney docket no. 090278.0187) which are both hereby incorporated by reference herein as if reproduced in their entirety.
Tracking System Overview
In
In
In this example, the space 102 is a physical structure that includes an entryway through which shoppers can enter and exit the space 102. The space 102 comprises an entrance area 114 and an exit area 116. In some embodiments, the entrance area 114 and the exit area 116 may overlap or are the same area within the space 102. The entrance area 114 is adjacent to an entrance (e.g. a door) of the space 102 where a person enters the space 102. In some embodiments, the entrance area 114 may comprise a turnstile or gate that controls the flow of traffic into the space 102. For example, the entrance area 114 may comprise a turnstile that only allows one person to enter the space 102 at a time. The entrance area 114 may be adjacent to one or more devices (e.g. sensors 108 or a scanner 115) that identify a person as they enter space 102. As an example, a sensor 108 may capture one or more images of a person as they enter the space 102. As another example, a person may identify themselves using a scanner 115. Examples of scanners 115 include, but are not limited to, a QR code scanner, a barcode scanner, a near-field communication (NFC) scanner, or any other suitable type of scanner that can receive an electronic code embedded with information that uniquely identifies a person. For instance, a shopper may scan a personal device (e.g. a smart phone) on a scanner 115 to enter the store. When the shopper scans their personal device on the scanner 115, the personal device may provide the scanner 115 with an electronic code that uniquely identifies the shopper. After the shopper is identified and/or authenticated, the shopper is allowed to enter the store. In one embodiment, each shopper may have a registered account with the store to receive an identification code for the personal device.
After entering the space 102, the shopper may move around the interior of the store. As the shopper moves throughout the space 102, the shopper may shop for items by removing items from the racks 112. The shopper can remove multiple items from the racks 112 in the store to purchase those items. When the shopper has finished shopping, the shopper may leave the store via the exit area 116. The exit area 116 is adjacent to an exit (e.g. a door) of the space 102 where a person leaves the space 102. In some embodiments, the exit area 116 may comprise a turnstile or gate that controls the flow of traffic out of the space 102. For example, the exit area 116 may comprise a turnstile that only allows one person to leave the space 102 at a time. In some embodiments, the exit area 116 may be adjacent to one or more devices (e.g. sensors 108 or a scanner 115) that identify a person as they leave the space 102. For example, a shopper may scan their personal device on the scanner 115 before a turnstile or gate will open to allow the shopper to exit the store. When the shopper scans their personal device on the scanner 115, the personal device may provide an electronic code that uniquely identifies the shopper to indicate that the shopper is leaving the store. When the shopper leaves the store, an account for the shopper is charged for the items that the shopper removed from the store. Through this process the tracking system 100 allows the shopper to leave the store with their items without engaging in a conventional checkout process.
In order to describe the physical location of people and objects within the space 102, a global plane 104 is defined for the space 102. The global plane 104 is a user-defined coordinate system that is used by the tracking system 100 to identify the locations of objects within a physical domain (i.e. the space 102). Referring to
In this configuration, physical locations within the space 102 can be described using (x,y) coordinates in the global plane 104. As an example, the global plane 104 may be defined such that one unit in the global plane 104 corresponds with one meter in the space 102. In other words, an x-value of one in the global plane 104 corresponds with an offset of one meter from the reference location 101 in the space 102. In this example, a person that is standing in the corner of the space 102 at the reference location 101 will have an (x,y) coordinate with a value of (0,0) in the global plane 104. If person moves two meters in the positive x-axis direction and two meters in the positive y-axis direction, then their new (x,y) coordinate will have a value of (2,2). In other examples, the global plane 104 may be expressed using inches, feet, or any other suitable measurement units.
Once the global plane 104 is defined for the space 102, the tracking system 100 uses (x,y) coordinates of the global plane 104 to track the location of people and objects within the space 102. For example, as a shopper moves within the interior of the store, the tracking system 100 may track their current physical location within the store using (x,y) coordinates of the global plane 104.
In one embodiment, the tracking system 100 comprises one or more clients 105, one or more servers 106, one or more scanners 115, one or more sensors 108, and one or more weight sensors 110. The one or more clients 105, one or more servers 106, one or more scanners 115, one or more sensors 108, and one or more weight sensors 110 may be in signal communication with each other over a network 107. The network 107 may be any suitable type of wireless and/or wired network including, but not limited to, all or a portion of the Internet, an Intranet, a Bluetooth network, a WIFI network, a Zigbee network, a Z-wave network, a private network, a public network, a peer-to-peer network, the public switched telephone network, a cellular network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), and a satellite network. The network 107 may be configured to support any suitable type of communication protocol as would be appreciated by one of ordinary skill in the art. The tracking system 100 may be configured as shown or in any other suitable configuration.
The tracking system 100 is configured to use sensors 108 to identify and track the location of people and objects within the space 102. For example, the tracking system 100 uses sensors 108 to capture images or videos of a shopper as they move within the store. The tracking system 100 may process the images or videos provided by the sensors 108 to identify the shopper, the location of the shopper, and/or any items that the shopper picks up.
Examples of sensors 108 include, but are not limited to, cameras, video cameras, web cameras, printed circuit board (PCB) cameras, depth sensing cameras, time-of-flight cameras, LiDARs, structured light cameras, or any other suitable type of imaging device.
Each sensor 108 is positioned above at least a portion of the space 102 and is configured to capture overhead view images or videos of at least a portion of the space 102. In one embodiment, the sensors 108 are generally configured to produce videos of portions of the interior of the space 102. These videos may include frames or images 302 of shoppers within the space 102. Each frame 302 is a snapshot of the people and/or objects within the field of view of a particular sensor 108 at a particular moment in time. A frame 302 may be a two-dimensional (2D) image or a three-dimensional (3D) image (e.g. a point cloud or a depth map). In this configuration, each frame 302 is of a portion of a global plane 104 for the space 102. Referring to
Each sensor 108 has a limited field of view within the space 102. This means that each sensor 108 may only be able to capture a portion of the space 102 within their field of view. To provide complete coverage of the space 102, the tracking system 100 may use multiple sensors 108 configured as a sensor array. In
The tracking system 100 is configured to use weight sensors 110 to detect and identify items that a person picks up within the space 102. For example, the tracking system 100 uses weight sensors 110 that are located on the shelves of a rack 112 to detect when a shopper removes an item from the rack 112. Each weight sensor 110 may be associated with a particular item which allows the tracking system 100 to identify which item the shopper picked up.
A weight sensor 110 is generally configured to measure the weight of objects (e.g. products) that are placed on or near the weight sensor 110. For example, a weight sensor 110 may comprise a transducer that converts an input mechanical force (e.g. weight, tension, compression, pressure, or torque) into an output electrical signal (e.g. current or voltage). As the input force increases, the output electrical signal may increase proportionally. The tracking system 100 is configured to analyze the output electrical signal to determine an overall weight for the items on the weight sensor 110.
Examples of weight sensors 110 include, but are not limited to, a piezoelectric load cell or a pressure sensor. For example, a weight sensor 110 may comprise one or more load cells that are configured to communicate electrical signals that indicate a weight experienced by the load cells. For instance, the load cells may produce an electrical current that varies depending on the weight or force experienced by the load cells. The load cells are configured to communicate the produced electrical signals to a server 105 and/or a client 106 for processing.
Weight sensors 110 may be positioned onto furniture (e.g. racks 112) within the space 102 to hold one or more items. For example, one or more weight sensors 110 may be positioned on a shelf of a rack 112. As another example, one or more weight sensors 110 may be positioned on a shelf of a refrigerator or a cooler. As another example, one or more weight sensors 110 may be integrated with a shelf of a rack 112. In other examples, weight sensors 110 may be positioned in any other suitable location within the space 102.
In one embodiment, a weight sensor 110 may be associated with a particular item. For instance, a weight sensor 110 may be configured to hold one or more of a particular item and to measure a combined weight for the items on the weight sensor 110. When an item is picked up from the weight sensor 110, the weight sensor 110 is configured to detect a weight decrease. In this example, the weight sensor 110 is configured to use stored information about the weight of the item to determine a number of items that were removed from the weight sensor 110. For example, a weight sensor 110 may be associated with an item that has an individual weight of eight ounces. When the weight sensor 110 detects a weight decrease of twenty-four ounces, the weight sensor 110 may determine that three of the items were removed from the weight sensor 110. The weight sensor 110 is also configured to detect a weight increase when an item is added to the weight sensor 110. For example, if an item is returned to the weight sensor 110, then the weight sensor 110 will determine a weight increase that corresponds with the individual weight for the item associated with the weight sensor 110.
A server 106 may be formed by one or more physical devices configured to provide services and resources (e.g. data and/or hardware resources) for the tracking system 100. Additional information about the hardware configuration of a server 106 is described in
A server 106 may be configured to process data (e.g. frames 302 and/or video) for one or more sensors 108 and/or weight sensors 110. In one embodiment, a server 106 may be configured to generate homographies 118 for sensors 108. As discussed above, the generated homographies 118 allow the tracking system 100 to determine where a person is physically located within the entire space 102 based on which sensor 108 they appear in and their location within a frame 302 captured by that sensor 108. In this configuration, the server 106 determines coefficients for a homography 118 based on the physical location of markers in the global plane 104 and the pixel locations of the markers in an image from a sensor 108. Examples of the server 106 performing this process are described in
In one embodiment, a server 106 is configured to calibrate a shelf position within the global plane 104 using sensors 108. This process allows the tracking system 100 to detect when a rack 112 or sensor 108 has moved from its original location within the space 102. In this configuration, the server 106 periodically compares the current shelf location of a rack 112 to an expected shelf location for the rack 112 using a sensor 108. In the event that the current shelf location does not match the expected shelf location, then the server 106 will use one or more other sensors 108 to determine whether the rack 112 has moved or whether the first sensor 108 has moved. An example of the server 106 performing this process is described in
In one embodiment, a server 106 is configured to detect shelf interactions using a virtual curtain. This process allows the tracking system 100 to identify items that a person picks up from a rack 112. In this configuration, the server 106 is configured to process an image captured by a sensor 108 to determine where a person is interacting with a shelf of a rack 112. The server 106 uses a predetermined zone within the image as a virtual curtain that is used to determine which region and which shelf of a rack 112 that a person is interacting with. An example of the server 106 performing this process is described in
In one embodiment, a server 106 is configured to detect when an item has been picked up from a rack 112 and to determine which person to assign the item to using a predefined zone that is associated with the rack 112. This process allows the tracking system 100 to associate items on a rack 112 with the person that picked up the item. In this configuration, the server 106 detects that an item has been picked up using a weight sensor 110. The server 106 then uses a sensor 108 to identify a person within a predefined zone that is associated with the rack 112. Once the item and the person have been identified, the server 106 will add the item to a digital cart that is associated with the identified person. An example of the server 106 performing this process is described in
In one embodiment, a server 106 is configured to identify an object that has a non-uniform weight and to assign the item to a person's digital cart. This process allows the tracking system 100 to identify items that a person picks up that cannot be identified based on just their weight. For example, the weight of fresh food is not constant and will vary from item to item. In this configuration, the server 106 uses a sensor 108 to identify markers (e.g. text or symbols) on an item that has been picked up. The server 106 uses the identified markers to then identify which item was picked up. The server 106 then uses the sensor 108 to identify a person within a predefined zone that is associated with the rack 112. Once the item and the person have been identified, the server 106 will add the item to a digital cart that is associated with the identified person. An example of the server 106 performing this process is described in
In one embodiment, a server 106 is configured to identify items that have been misplaced on a rack 112. This process allows the tracking system 100 to remove items from a shopper's digital cart when the shopper puts down an item regardless of whether they put the item back in its proper location. For example, a person may put back an item in the wrong location on the rack 112 or on the wrong rack 112. In this configuration, the server 106 uses a weight sensor 110 to detect that an item has been put back on rack 112 and to determine that the item is not in the correct location based on its weight. The server 106 then uses a sensor 108 to identify the person that put the item on the rack 112 and analyzes their digital cart to determine which item they put back based on the weights of the items in their digital cart. An example of the server 106 performing this process is described in
In some embodiments, one or more sensors 108 and/or weight sensors 110 are operably coupled to a server 106 via a client 105. In one embodiment, the tracking system 100 comprises a plurality of clients 105 that may each be operably coupled to one or more sensors 108 and/or weight sensors 110. For example, first client 105 may be operably coupled to one or more sensors 108 and/or weight sensors 110 and a second client 105 may be operably coupled to one or more other sensors 108 and/or weight sensors 110. A client 105 may be formed by one or more physical devices configured to process data (e.g. frames 302 and/or video) for one or more sensors 108 and/or weight sensors 110. A client 105 may act as an intermediary for exchanging data between a server 106 and one or more sensors 108 and/or weight sensors 110. The combination of one or more clients 105 and a server 106 may also be referred to as a tracking sub-system. In this configuration, a client 105 may be configured to provide image processing capabilities for images or frames 302 that are captured by a sensor 108. The client 105 is further configured to send images, processed images, or any other suitable type of data to the server 106 for further processing and analysis. In some embodiments, a client 105 may be configured to perform one or more of the processes described above for the server 106.
At step 202, the tracking system 100 receives (x,y) coordinates 306 for markers 304 in the space 102. Referring to
In one embodiment, the (x,y) coordinates 306 for markers 304 are provided by an operator. For example, an operator may manually place markers 304 on the floor of the space 102. The operator may determine an (x,y) location 306 for a marker 304 by measuring the distance between the marker 304 and the reference location 101 for the global plane 104. The operator may then provide the determined (x,y) location 306 to a server 106 or a client 105 of the tracking system 100 as an input.
Referring to the example in
Once the tracking system 100 knows the physical location of the markers 304 within the space 102, the tracking system 100 then determines where the markers 304 are located with respect to the pixels in the frame 302 of a sensor 108. Returning to
Returning to
Returning to
Returning to
The tracking system 100 proceeds to step 212 in response to determining that the number of identified markers 304 is greater than or equal to the predetermined threshold value. At step 212, the tracking system 100 determines pixel locations 402 in the frame 302 for the identified markers 304. For example, the tracking system 100 determines a first pixel location 402A within the frame 302 that corresponds with the first marker 304A and a second pixel location 402B within the frame 302 that corresponds with the second marker 304B. The first pixel location 402A comprises a first pixel row and a first pixel column indicating where the first marker 304A is located in the frame 302. The second pixel location 402B comprises a second pixel row and a second pixel column indicating where the second marker 304B is located in the frame 302.
At step 214, the tracking system 100 generates a homography 118 for the sensor 108 based on the pixel locations 402 of identified markers 304 with the frame 302 of the sensor 108 and the (x,y) coordinate 306 of the identified markers 304 in the global plane 104. In one embodiment, the tracking system 100 correlates the pixel location 402 for each of the identified markers 304 with its corresponding (x,y) coordinate 306. Continuing with the example in
The tracking system 100 then determines a relationship between the pixel locations 402 of identified markers 304 with the frame 302 of the sensor 108 and the (x,y) coordinates 306 of the identified markers 304 in the global plane 104 to generate a homography 118 for the sensor 108. The generated homography 118 allows the tracking system 100 to map pixel locations 402 in a frame 302 from the sensor 108 to (x,y) coordinates 306 in the global plane 104. Additional information about a homography 118 is described in
The tracking system 100 may repeat the process described above to generate and associate homographies 118 with other sensors 108. Continuing with the example in
An example of a homography 118 for a sensor 108 is described in
Once the tracking system 100 generates a homography 118, the tracking system 100 may use the homography 118 to determine the location of an object (e.g. a person) within the space 102 based on the pixel location 402 of the object in a frame 302 of a sensor 108. For example, the tracking system 100 may perform matrix multiplication between a pixel location 402 in a first frame 302 and a homography 118 to determine a corresponding (x,y) coordinate 306 in the global plane 104. For example, the tracking system 100 receives a first frame 302 from a sensor 108 and determines a first pixel location in the frame 302 for an object in the space 102. The tracking system 100 may then apply the homography 118 that is associated with the sensor 108 to the first pixel location 402 of the object to determine a first (x,y) coordinate 306 that identifies a first x-value and a first y-value in the global plane 104 where the obj ect is located.
In some instances, the tracking system 100 may use multiple sensors 108 to determine the location of the object. Using multiple sensors 108 may provide more accuracy when determining where an object is located within the space 102. In this case, the tracking system 100 uses homographies 118 that are associated with different sensors 108 to determine the location of an object within the global plane 104. Continuing with the previous example, the tracking system 100 may receive a second frame 302 from a second sensor 108. The tracking system 100 may determine a second pixel location 402 in the second frame 302 for the object in the space 102. The tracking system 100 may then apply a second homography 118 that is associated the second sensor 108 to the second pixel location 402 of the object to determine a second (x,y) coordinate 306 that identifies a second x-value and a second y-value in the global plane 104 where the object is located.
When the first (x,y) coordinate 306 and the second (x,y) coordinate 306 are the same, the tracking system 100 may use either the first (x,y) coordinate 306 or the second (x,y) coordinate 306 as the physical location of the object within the space 102. The tracking system 100 may employ any suitable clustering technique between the first (x,y) coordinate 306 and the second (x,y) coordinate 306 when the first (x,y) coordinate 306 and the second (x,y) coordinate 306 are not the same. In this case, the first (x,y) coordinate 306 and the second (x,y) coordinate 306 are different so the tracking system 100 will need to determine the physical location of the object within the space 102 based on the first (x,y) location 306 and the second (x,y) location 306. For example, the tracking system 100 may generate an average (x,y) coordinate for the object by computing an average between the first (x,y) coordinate 306 and the second (x,y) coordinate 306. As another example, the tracking system 100 may generate a median (x,y) coordinate for the object by computing a median between the first (x,y) coordinate 306 and the second (x,y) coordinate 306. In other examples, the tracking system 100 may employ any other suitable technique to resolve differences between the first (x,y) coordinate 306 and the second (x,y) coordinate 306.
The tracking system 100 may use the inverse of the homography 118 to project from (x,y) coordinates 306 in the global plane 104 to pixel locations 402 in a frame 302 of a sensor 108. For example, the tracking system 100 receives an (x,y) coordinate 306 in the global plane 104 for an object. The tracking system 100 identifies a homography 118 that is associated with a sensor 108 where the object is seen. The tracking system 100 may then apply the inverse homography 118 to the (x,y) coordinate 306 to determine a pixel location 402 where the object is located in the frame 302 for the sensor 108. The tracking system 100 may compute the matrix inverse of the homograph 500 when the homography 118 is represented as a matrix. Referring to
Sensor Mapping using a Marker Grid
At step 602, the tracking system 100 receives a first (x,y) coordinate 306A for a first corner 704 of a marker grid 702 in a space 102. Referring to
In another embodiment, the tracking system 100 may receive a signal from a beacon located at the first corner 704 of the marker grid 702 that identifies the first (x,y) coordinate 306A. An example of a beacon includes, but is not limited to, a Bluetooth beacon. For example, the tracking system 100 may communicate with the beacon and determine the first (x,y) coordinate 306A based on the time-of-flight of a signal that is communicated between the tracking system 100 and the beacon. In other embodiments, the tracking system 100 may obtain the first (x,y) coordinate 306A for the first corner 704 using any other suitable technique.
Returning to
In one embodiment, the tracking system 100 determines the second (x,y) coordinate 306B based at least in part on a rotation of the marker grid 702. For example, the tracking system 100 may receive a fourth (x,y) coordinate 306D that identifies x-value and a y-value in the global plane 104 for a second corner 706 of the marker grid 702. The tracking system 100 may obtain the fourth (x,y) coordinate 306D for the second corner 706 of the marker grid 702 using a process similar to the process described in step 602. The tracking system 100 determines a rotation angle 712 between the first (x,y) coordinate 306A for the first corner 704 of the marker grid 702 and the fourth (x,y) coordinate 306D for the second corner 706 of the marker grid 702. In this example, the rotation angle 712 is about the first corner 704 of the marker grid 702 within the global plane 104. The tracking system 100 then determines the second (x,y) coordinate 306B for the first marker 304A by applying a translation by adding the offset associated with the first marker 304A to the first (x,y) coordinate 306A for the first corner 704 of the marker grid 702 and applying a rotation using the rotation angle 712 about the first (x,y) coordinate 306A for the first corner 704 of the marker grid 702. In other examples, the tracking system 100 may determine the second (x,y) coordinate 306B for the first marker 304A using any other suitable technique.
The tracking system 100 may repeat this process for one or more additional markers 304 on the marker grid 702. For example, the tracking system 100 determines a third (x,y) coordinate 306C for a second marker 304B on the marker grid 702. Here, the tracking system 100 uses the marker grid information 716 to identify an offset associated with the second marker 304A. The tracking system 100 is able to determine the third (x,y) coordinate 306C for the second marker 304B by adding the offset associated with the second marker 304B to the first (x,y) coordinate 306A for the first corner 704 of the marker grid 702. In another embodiment, the tracking system 100 determines a third (x,y) coordinate 306C for a second marker 304B based at least in part on a rotation of the marker grid 702 using a process similar to the process described above for the first marker 304A.
Once the tracking system 100 knows the physical location of the markers 304 within the space 102, the tracking system 100 then determines where the markers 304 are located with respect to the pixels in the frame 302 of a sensor 108. At step 606, the tracking system 100 receives a frame 302 from a sensor 108. The frame 302 is of the global plane 104 that includes at least a portion of the marker grid 702 in the space 102. The frame 302 comprises one or more markers 304 of the marker grid 702. The frame 302 is configured similar to the frame 302 described in
At step 610, the tracking system 100 identifies markers 304 within the frame 302 of the sensor 108. The tracking system 100 may identify markers 304 within the frame 302 using a process similar to the process described in step 206 of
In one embodiment, the tracking system 100 compares the features of the identified markers 304 to the features of known markers 304 on the marker grid 702 using a marker dictionary 718. The marker dictionary 718 identifies a plurality of markers 304 that are associated with a marker grid 702. In this example, the tracking system 100 may identify the first marker 304A by identifying a star on the marker grid 702, comparing the star to the symbols in the marker dictionary 718, and determining that the star matches one of the symbols in the marker dictionary 718 that corresponds with the first marker 304A. Similarly, the tracking system 100 may identify the second marker 304B by identifying a triangle on the marker grid 702, comparing the triangle to the symbols in the marker dictionary 718, and determining that the triangle matches one of the symbols in the marker dictionary 718 that corresponds with the second marker 304B. The tracking system 100 may repeat this process for any other identified markers 304 in the frame 302.
In another embodiment, the marker grid 702 may comprise markers 304 that contain text. In this example, each marker 304 can be uniquely identified based on its text. This configuration allows the tracking system 100 to identify markers 304 in the frame 302 by using text recognition or optical character recognition techniques on the frame 302. In this case, the tracking system 100 may use a marker dictionary 718 that comprises a plurality of predefined words that are each associated with a marker 304 on the marker grid 702. For example, the tracking system 100 may perform text recognition to identify text with the frame 302. The tracking system 100 may then compare the identified text to words in the marker dictionary 718. Here, the tracking system 100 checks whether the identified text matched any of the known text that corresponds with a marker 304 on the marker grid 702. The tracking system 100 may discard any text that does not match any words in the marker dictionary 718. When the tracking system 100 identifies text that matches a word in the marker dictionary 718, the tracking system 100 may identify the marker 304 that corresponds with the identified text. For instance, the tracking system 100 may determine that the identified text matches the text associated with the first marker 304A.The tracking system 100 may identify the second marker 304B and any other markers 304 on the marker grid 702 using a similar process.
Returning to
Returning to
The tracking system 100 proceeds to step 614 in response to determining that the number of identified markers 304 is greater than or equal to the predetermined threshold value. Once the tracking system 100 identifies a suitable number of markers 304 on the marker grid 702, the tracking system 100 then determines a pixel location 402 for each of the identified markers 304. Each marker 304 may occupy multiple pixels in the frame 302. This means that for each marker 304, the tracking system 100 determines which pixel location 402 in the frame 302 corresponds with its (x,y) coordinate 306 in the global plane 104. In one embodiment, the tracking system 100 using bounding boxes 708 to narrow or restrict the search space when trying to identify pixel location 402 for markers 304. A bounding box 708 is a defined area or region within the frame 302 that contains a marker 304. For example, a bounding box 708 may be defined as a set of pixels or a range of pixels of the frame 302 that comprise a marker 304.
At step 614, the tracking system 100 identifies bounding boxes 708 for markers 304 within the frame 302. In one embodiment, the tracking system 100 identifies a plurality of pixels in the frame 302 that correspond with a marker 304 and then defines a bounding box 708 that encloses the pixels corresponding with the marker 304. The tracking system 100 may repeat this process for each of the markers 304. Returning to the example in
In another embodiment, the tracking system may employ text or character recognition to identify the first marker 304A when the first marker 304A comprises text. For example, the tracking system 100 may use text recognition to identify pixels with the frame 302 that comprises a word corresponding with a marker 304. The tracking system 100 may then define a bounding box 708 that encloses the pixels corresponding with the identified word. In other embodiments, the tracking system 100 may employ any other suitable image processing technique for identifying bounding boxes 708 for the identified markers 304.
Returning to
At step 618, the tracking system 100 determines pixel locations 402 within the frame 302 for each of the identified pixels 710. For example, the tracking system 100 may identify a first pixel row and a first pixel column of the frame 302 that corresponds with the first pixel 710A. Similarly, the tracking system 100 may identify a pixel row and a pixel column in the frame 302 for each of the identified pixels 710.
The tracking system 100 generates a homography 118 for the sensor 108 after the tracking system 100 determines (x,y) coordinates 306 in the global plane 104 and pixel locations 402 in the frame 302 for each of the identified markers 304. At step 620, the tracking system 100 generates a homography 118 for the sensor 108 based on the pixel locations 402 of identified markers 304 in the frame 302 of the sensor 108 and the (x,y) coordinate 306 of the identified markers 304 in the global plane 104. In one embodiment, the tracking system 100 correlates the pixel location 402 for each of the identified markers 304 with its corresponding (x,y) coordinate 306. Continuing with the example in
The tracking system 100 then determines a relationship between the pixel locations 402 of identified markers 304 with the frame 302 of the sensor 108 and the (x,y) coordinate 306 of the identified markers 304 in the global plane 104 to generate a homography 118 for the sensor 108. The generated homography 118 allows the tracking system 100 to map pixel locations 402 in a frame 302 from the sensor 108 to (x,y) coordinates 306 in the global plane 104. The generated homography 118 is similar to the homography described in
The tracking system 100 may repeat the process described above to generate and associate homographies 118 with other sensors 108. The marker grid 702 may be moved or repositioned within the space 108 to generate a homography 118 for another sensor 108. For example, an operator may reposition the marker grid 702 to allow another sensor 108 to view the markers 304 on the marker grid 702. As an example, the tracking system 100 may receive a second frame 302 from a second sensor 108. In this example, the second frame 302 comprises the first marker 304A and the second marker 304B. The tracking system 100 may determine a third pixel location 402 in the second frame 302 for the first marker 304A and a fourth pixel location 402 in the second frame 302 for the second marker 304B. The tracking system 100 may then generate a second homography 118 based on the third pixel location 402 in the second frame 302 for the first marker 304A, the fourth pixel location 402 in the second frame 302 for the second marker 304B, the (x,y) coordinate 306B in the global plane 104 for the first marker 304A, the (x,y) coordinate 306C in the global plane 104 for the second marker 304B, and pixel locations 402 and (x,y) coordinates 306 for other markers 304. The second homography 118 comprises coefficients that translate between pixel locations 402 in the second frame 302 and physical locations (e.g. (x,y) coordinates 306) in the global plane 104. The coefficients of the second homography 118 are different from the coefficients of the homography 118 that is associated with the first sensor 108. In other words, each sensor 108 is uniquely associated with a homography 118 that maps pixel locations 402 from the sensor 108 to physical locations in the global plane 104. This process uniquely associates a homography 118 to a sensor 108 based on the physical location (e.g. (x,y) coordinate 306) of the sensor 108 in the global plane 104.
A sensor 108 may be positioned within the space 102 such that frames 302 captured by the sensor 108 will include one or more shelf markers 906 that are located on a rack 112. A shelf marker 906 is an object that is positioned on a rack 112 that can be used to determine a location (e.g. an (x,y) coordinate 306 and a pixel location 402) for the rack 112. The tracking system 100 is configured to store the pixel locations 402 and the (x,y) coordinates 306 of the shelf markers 906 that are associated with frames 302 from a sensor 108. In one embodiment, the pixel locations 402 and the (x,y) coordinates 306 of the shelf markers 906 may be determined using a process similar to the process described in
A shelf marker 906 may be an object similar to the marker 304 described in
Returning to
Returning to
Once the tracking system 100 identifies one or more shelf markers 906 that are present in the first frame 302A of the first sensor 108, the tracking system 100 then determines their pixel locations 402 in the first frame 302A so they can be compared to expected pixel locations 402 for the shelf markers 906. Returning to
Returning to
The tracking system 100 may terminate method 800 in response to determining that the current pixel locations 402 for the shelf markers 906 in the first frame 302A match the expected pixel location 402 for the shelf markers 906. In this case, the tracking system 100 determines that neither the rack 112 nor the first sensor 108 has moved since the current pixel locations 402 match the expected pixel locations 402 for the shelf marker 906.
The tracking system 100 proceeds to step 810 in response to a determination at step 808 that one or more current pixel locations 402 for the shelf markers 906 does not match an expected pixel location 402 for the shelf markers 906. For example, the tracking system 100 may determine that the first current pixel location 402A does not match the first expected pixel location 402 for the shelf marker 906. In this case, the tracking system 100 determines that rack 112 and/or the first sensor 108 has moved since the first current pixel location 402A does not match the first expected pixel location 402 for the shelf marker 906. Here, the tracking system 100 proceeds to step 810 to identify whether the rack 112 has moved or the first sensor 108 has moved.
At step 810, the tracking system 100 receives a second frame 302B from a second sensor 108. The second sensor 108 is adjacent to the first sensor 108 and has at least a partially overlapping field of view with the first sensor 108. The first sensor 108 and the second sensor 108 is positioned such that one or more shelf markers 906 are observable by both the first sensor 108 and the second sensor 108. In this configuration, the tracking system 100 can use a combination of information from the first sensor 108 and the second sensor 108 to determine whether the rack 112 has moved or the first sensor 108 has moved. Returning to the example in
Returning to
Once the tracking system 100 identifies one or more shelf markers 906 that are present in the second frame 302B of the second sensor 108, the tracking system 100 then determines their pixel locations 402 in the second frame 302B so they can be compared to expected pixel locations 402 for the shelf markers 906. Returning to
Returning to
The tracking system 100 determines that the rack 112 has moved when the current pixel location 402 and the expected pixel location 402 for one or more shelf markers 906 do not match for multiple sensors 108. When a rack 112 moves within the global plane 104, the physical location of the shelf markers 906 moves which causes the pixel locations 402 for the shelf markers 906 to also move with respect to any sensors 108 viewing the shelf markers 906. This means that the tracking system 100 can conclude that the rack 112 has moved when multiple sensors 108 observe a mismatch between current pixel locations 402 and expected pixel locations 402 for one or more shelf markers 906.
The tracking system 100 determines that the first sensor 108 has moved when the current pixel location 402 and the expected pixel location 402 for one or more shelf markers 906 do not match only for the first sensor 108. In this case, the first sensor 108 has moved with respect to the rack 112 and its shelf markers 906 which causes the pixel locations 402 for the shelf markers 906 to move with respect to the first sensor 108. The current pixel locations 402 of the shelf markers 906 will still match the expected pixel locations 402 for the shelf markers 906 for other sensors 108 because the position of these sensors 108 and the rack 112 has not changed.
The tracking system proceeds to step 818 in response to determining that the current pixel location 402 matches the second expected pixel location 402 for the shelf marker 906 in the second frame 302B for the second sensor 108. In this case, the tracking system 100 determines that the first sensor 108 has moved. At step 818, the tracking system 100 recalibrates the first sensor 108. In one embodiment, the tracking system 100 recalibrates the first sensor 108 by generating a new homography 118 for the first sensor 108. The tracking system 100 may generate a new homography 118 for the first sensor 108 using shelf markers 906 and/or other markers 304. The tracking system 100 may generate the new homography 118 for the first sensor 108 using a process similar to the processes described in
As an example, the tracking system 100 may use an existing homography 118 that is currently associated with the first sensor 108 to determine physical locations (e.g. (x,y) coordinates 306) for the shelf markers 906. The tracking system 110 may then use the current pixel locations 402 for the shelf markers 906 with their determined (x,y) coordinates 306 to generate a new homography 118 for the first sensor 108. For instance, the tracking system 100 may use an existing homography 118 that is associated with the first sensor 108 to determine a first (x,y) coordinate 306 in the global plane 104 where a first shelf marker 906 is located, a second (x,y) coordinate 306 in the global plane 104 where a second shelf marker 906 is located, and (x,y) coordinates 306 for any other shelf markers 906. The tracking system 100 may apply the existing homography 118 for the first sensor 108 to the current pixel location 402 for the first shelf marker 906 in the first frame 302A to determine the first (x,y) coordinate 306 for the first marker 906 using a process similar to the process described in
In another embodiment, the tracking system 100 may recalibrate the first sensor 108 by updating the stored expected pixel locations for the shelf marker 906 for the first sensor 108. For example, the tracking system 100 may replace the previous expected pixel location 402 for the shelf marker 906 with its current pixel location 402. Updating the expected pixel locations 402 for the shelf markers 906 with respect to the first sensor 108 allows the tracking system 100 to continue to monitor the location of the rack 112 using the first sensor 108. In this case, the tracking system 100 can continue comparing the current pixel locations 402 for the shelf markers 906 in the first frame 302A for the first sensor 108 with the new expected pixel locations 402 in the first frame 302A.
At step 820, the tracking system 100 sends a notification that indicates that the first sensor 108 has moved. Examples of notifications include, but are not limited to, text messages, short message service (SMS) messages, multimedia messaging service (MMS) messages, push notifications, application popup notifications, emails, or any other suitable type of notifications. For example, the tracking system 100 may send a notification indicating that the first sensor 108 has moved to a person associated with the space 102. In response to receiving the notification, the person may inspect and/or move the first sensor 108 back to its original location.
Returning to step 816, the tracking system 100 proceeds to step 822 in response to determining that the current pixel location 402 does not match the expected pixel location 402 for the shelf marker 906 in the second frame 302B. In this case, the tracking system 100 determines that the rack 112 has moved. At step 822, the tracking system 100 updates the expected pixel location information 402 for the first sensor 108 and the second sensor 108. For example, the tracking system 100 may replace the previous expected pixel location 402 for the shelf marker 906 with its current pixel location 402 for both the first sensor 108 and the second sensor 108. Updating the expected pixel locations 402 for the shelf markers 906 with respect to the first sensor 108 and the second sensor 108 allows the tracking system 100 to continue to monitor the location of the rack 112 using the first sensor 108 and the second sensor 108. In this case, the tracking system 100 can continue comparing the current pixel locations 402 for the shelf markers 906 for the first sensor 108 and the second sensor 108 with the new expected pixel locations 402.
At step 824, the tracking system 100 sends a notification that indicates that the rack 112 has moved. For example, the tracking system 100 may send a notification indicating that the rack 112 has moved to a person associated with the space 102. In response to receiving the notification, the person may inspect and/or move the rack 112 back to its original location. The tracking system 100 may update the expected pixel locations 402 for the shelf markers 906 again once the rack 112 is moved back to its original location.
The tracking system 100 is configured such that an object identifier 1118 (e.g. a customer identifier) is assigned to each person as they enter the space 102. The object identifier 1118 may be used to identify a person and other information associated with the person. Examples of object identifiers 1118 include, but are not limited to, names, customer identifiers, alphanumeric codes, phone numbers, email addresses, or any other suitable type of identifier for a person or object. In this configuration, the tracking system 100 tracks a person's movement within the field of view of a first sensor 108 and then hands off tracking information (e.g. an object identifier 1118) for the person as it enters the field of view of a second adjacent sensor 108.
In one embodiment, the tracking system 100 comprises adjacency lists 1114 for each sensor 108 that identifies adjacent sensors 108 and the pixels within the frame 302 of the sensor 108 that overlap with the adjacent sensors 108. Referring to the example in
Once the first person 1106 enters the space 102, the tracking system 100 will track the object identifier 1118 associated with the first person 1106 as well as pixel locations 402 in the sensors 108 where the first person 1106 appears in a tracking list 1112. For example, the tracking system 100 may track the people within the field of view of a first sensor 108 using a first tracking list 1112A, the people within the field of view of a second sensor 108 using a second tracking list 1112B, and so on. In this example, the first tracking list 1112A comprises object identifiers 1118 for people being tracked using the first sensor 108. The first tracking list 1112A further comprises pixel location information that indicates the location of a person within the first frame 302A of the first sensor 108. In some embodiments, the first tracking list 1112A may further comprise any other suitable information associated with a person being tracked by the first sensor 108. For example, the first tracking list 1112A may identify (x,y) coordinates 306 for the person in the global plane 104, previous pixel locations 402 within the first frame 302A for a person, and/or a travel direction 1116 for a person. For instance, the tracking system 100 may determine a travel direction 1116 for the first person 1106 based on their previous pixel locations 402 within the first frame 302A and may store the determined travel direction 1116 in the first tracking list 1112A. In one embodiment, the travel direction 1116 may be represented as a vector with respect to the global plane 104. In other embodiments, the travel direction 1116 may be represented using any other suitable format.
Returning to
Returning to
As another example, the tracking system 100 may use object detection or contour detection to identify the first person 1106 within the first frame 302A. In this example, the tracking system 100 may identify one or more features for the first person 1106 when they enter the space 102. The tracking system 100 may later compare the features of a person in the first frame 302A to the features associated with the first person 1106 to determine if the person is the first person 1106. In other examples, the tracking system 100 may use any other suitable techniques for identifying the first person 1106 within the first frame 302A. The first pixel location 402A comprises a first pixel row and a first pixel column that corresponds with the current location of the first person 1106 within the first frame 302A.
Returning to
At step 1008, the tracking system 100 applies a first homography 118 to the first pixel location 402A to determine a first (x,y) coordinate 306 in the global plane 104 for the first person 1106. The first homography 118 is configured to translate between pixel locations 402 in the first frame 302A and (x,y) coordinates 306 in the global plane 104. The first homography 118 is configured similar to the homography 118 described in
At step 1010, the tracking system 100 identifies an object identifier 1118 for the first person 1106 from the first tracking list 1112A associated with the first sensor 108. For example, the tracking system 100 may identify an object identifier 1118 that is associated with the first person 1106. At step 1012, the tracking system 100 stores the object identifier 1118 for the first person 1106 in a second tracking list 1112B associated with the second sensor 108. Continuing with the previous example, the tracking system 100 may store the object identifier 1118 for the first person 1106 in the second tracking list 1112B. Adding the object identifier 1118 for the first person 1106 to the second tracking list 1112B indicates that the first person 1106 is within the field of view of the second sensor 108 and allows the tracking system 100 to begin tracking the first person 1106 using the second sensor 108.
Once the tracking system 100 determines that the first person 1106 has entered the field of view of the second sensor 108, the tracking system 100 then determines where the first person 1106 is located in the second frame 302B of the second sensor 108 using a homography 118 that is associated with the second sensor 108. This process identifies the location of the first person 1106 with respect to the second sensor 108 so they can be tracked using the second sensor 108. At step 1014, the tracking system 100 applies a homography 118 that is associated with the second sensor 108 to the first (x,y) coordinate 306 to determine a second pixel location 402B in the second frame 302B for the first person 1106. The homography 118 is configured to translate between pixel locations 402 in the second frame 302B and (x,y) coordinates 306 in the global plane 104. The homography 118 is configured similarly to the homography 118 described in
At step 1016, the tracking system 100 stores the second pixel location 402B with the object identifier 1118 for the first person 1106 in the second tracking list 1112B. In some embodiments, the tracking system 100 may store additional information associated with the first person 1106 in the second tracking list 1112B. For example, the tracking system 100 may be configured to store a travel direction 1116 or any other suitable type of information associated with the first person 1106 in the second tracking list 1112B. After storing the second pixel location 402B in the second tracking list 1112B, the tracking system 100 may begin tracking the movement of the person within the field of view of the second sensor 108.
The tracking system 100 will continue to track the movement of the first person 1106 to determine when they completely leave the field of view of the first sensor 108. At step 1018, the tracking system 100 receives a new frame 302 from the first sensor 108. For example, the tracking system 100 may periodically receive additional frames 302 from the first sensor 108. For instance, the tracking system 100 may receive a new frame 302 from the first sensor 108 every millisecond, every second, every five second, or at any other suitable time interval.
At step 1020, the tracking system 100 determines whether the first person 1106 is present in the new frame 302. If the first person 1106 is present in the new frame 302, then this means that the first person 1106 is still within the field of view of the first sensor 108 and the tracking system 100 should continue to track the movement of the first person 1106 using the first sensor 108. If the first person 1106 is not present in the new frame 302, then this means that the first person 1106 has left the field of view of the first sensor 108 and the tracking system 100 no longer needs to track the movement of the first person 1106 using the first sensor 108. The tracking system 100 may determine whether the first person 1106 is present in the new frame 302 using a process similar to the process described in step 1004. The tracking system 100 returns to step 1018 to receive additional frames 302 from the first sensor 108 in response to determining that the first person 1106 is present in the new frame 1102 from the first sensor 108.
The tracking system 100 proceeds to step 1022 in response to determining that the first person 1106 is not present in the new frame 302. In this case, the first person 1106 has left the field of view for the first sensor 108 and no longer needs to be tracked using the first sensor 108. At step 1022, the tracking system 100 discards information associated with the first person 1106 from the first tracking list 1112A. Once the tracking system 100 determines that the first person has left the field of view of the first sensor 108, then the tracking system 100 can stop tracking the first person 1106 using the first sensor 108 and can free up resources (e.g. memory resources) that were allocated to tracking the first person 1106. The tracking system 100 will continue to track the movement of the first person 1106 using the second sensor 108 until the first person 1106 leaves the field of view of the second sensor 108. For example, the first person 1106 may leave the space 102 or may transition to the field of view of another sensor 108.
In
Returning to
The frame 302 further comprises one or more zones 1404 that are associated with zones 1304 of the rack 112. Each zone 1404 in the frame 302 corresponds with a portion of the rack 112 in the global plane 104. Referring to the example in
The frame 302 further comprises a predefined zone 1406 that is used as a virtual curtain to detect where a person 1408 is interacting with the rack 112. The predefined zone 1406 is an invisible barrier defined by the tracking system 100 that the person 1408 reaches through to pick up items 1306 from the rack 112. The predefined zone 1406 is located proximate to the one or more zones 1304 of the rack 112. For example, the predefined zone 1406 may be located proximate to the front of the one or more zones 1304 of the rack 112 where the person 1408 would reach to grab for an item 1306 on the rack 112. In some embodiments, the predefined zone 1406 may at least partially overlap with the first zone 1404A and the second zone 1404B.
Returning to
In one embodiment, the tracking system 100 identifies the rack 112 that is proximate to the person 1408. Returning to the example in
The tracking system 100 may identify an item map 1308 corresponding with the rack 112 that is closest to the person 1408. In one embodiment, the tracking system 100 comprises an item map 1308 that associates items 1306 with particular locations on the rack 112. For example, an item map 1308 may comprise a rack identifier and a plurality of item identifiers. Each item identifier is mapped to a particular location on the rack 112. Returning to the example in
Returning to
Once the tracking system 100 determines the pixel location 402B of the person's 1408 hand, the tracking system 100 then determines which shelf 1302 and zone 1304 of the rack 112 the person 1408 is reaching for. At step 1208, the tracking system 100 determines whether the pixel location 402B for the object (i.e. the person's 1408 hand) corresponds with a first zone 1304A of the rack 112. The tracking system 100 uses the pixel location 402B of the person's 1408 hand to determine which side of the rack 112 the person 1408 is reaching into. Here, the tracking system 100 checks whether the person is reaching for an item on the left side of the rack 112.
Each zone 1304 of the rack 112 is associated with a plurality of pixels in the frame 302 that can be used to determine where the person 1408 is reaching based on the pixel location 402B of the person's 1408 hand. Continuing with the example in
In this example, the tracking system 100 compares the first pixel column of the pixel location 402B to the first range of pixels 1412 to determine whether the pixel location 1410 corresponds with the first zone 1304A of the rack 112. In other words, the tracking system 100 compares the first pixel column of the pixel location 402B to the first range of pixels 1412 to determine whether the person 1408 is reaching for an item 1306 on the left side of the rack 112. In
Returning to step 1208, the tracking system 100 proceeds to step 1212 in response to determining that the pixel location 402B for the object that entered the predefined zone 1406 does not correspond with the first zone 1304B of the rack 112. At step 1212, the tracking system 100 identifies the second zone 1304B of the rack 112 based on the pixel location 402B of the object that entered the predefined zone 1406. In this case, the tracking system 100 determines that the person 1408 is reaching for an item on the right side of the rack 112.
In other embodiments, the tracking system 100 may compare the pixel location 402B to other ranges of pixels that are associated with other zones 1304 of the rack 112. For example, the tracking system 100 may compare the first pixel column of the pixel location 402B to the second range of pixels 1414 to determine whether the pixel location 402B corresponds with the second zone 1304B of the rack 112. In other words, the tracking system 100 compares the first pixel column of the pixel location 402B to the second range of pixels 1414 to determine whether the person 1408 is reaching for an item 1306 on the right side of the rack 112.
Once the tracking system 100 determines which zone 1304 of the rack 112 the person 1408 is reaching into, the tracking system 100 then determines which shelf 1302 of the rack 112 the person 1408 is reaching into. At step 1214, the tracking system 100 identifies a pixel value at the pixel location 402B for the object that entered the predefined zone 1406. The pixel value is a numeric value that corresponds with a z-coordinate or height in the global plane 104 that can be used to identify which shelf 1302 the person 1408 was interacting with. The pixel value can be used to determine the height the person's 1408 hand was at when it entered the predefined zone 1406 which can be used to determine which shelf 1302 the person 1408 was reaching into.
At step 1216, the tracking system 100 determines whether the pixel value corresponds with the first shelf 1302A of the rack 112. Returning to the example in
Returning to step 1216, the tracking system 100 proceeds to step 1220 in response to determining that the pixel value does not correspond with the first shelf 1302A of the rack 112. At step 1220, the tracking system 100 identifies the second shelf 1302B of the rack 112 based on the pixel value. In other embodiments, the tracking system 100 may compare the pixel value to other z-value ranges that are associated with other shelves 1302 of the rack 112. For example, the tracking system 100 may compare the pixel value to the second range of z-values 1310B to determine whether the pixel value corresponds with the second shelf 1302B of the rack 112.
Once the tracking system 100 determines which side of the rack 112 and which shelf 1302 of the rack 112 the person 1408 is reaching into, then the tracking system 100 can identify an item 1306 that corresponds with the identified location on the rack 112. At step 1222, the tracking system 100 identifies an item 1306 based on the identified zone 1304 and the identified shelf 1302 of the rack 112. The tracking system 100 uses the identified zone 1304 and the identified shelf 1302 to identify a corresponding item 1306 in the item map 1308. Returning to the example in
In some instances, multiple people may be near the rack 112 and the tracking system 100 may need to determine which person is interacting with the rack 112 so that it can add a picked-up item 1306 to the appropriate person's digital cart 1410. Returning to the example in
In one embodiment, the tracking system 100 determines which person picked up an item 1306 based on their proximity to the item 1306 that was picked up. For example, the tracking system 100 may determine a pixel location 402A in the frame 302 for the first person 1408. The tracking system 100 may also identify a second pixel location 402C for the second person 1420 in the frame 302. The tracking system 100 may then determine a first distance 1416 between the pixel location 402A of the first person 1408 and the location on the rack 112 where the item 1306 was picked up. The tracking system 100 also determines a second distance 1418 between the pixel location 402C of the second person 1420 and the location on the rack 112 where the item 1306 was picked up. The tracking system 100 may then determine that the first person 1408 is closer to the item 1306 than the second person 1420 when the first distance 1416 is less than the second distance 1418. In this example, the tracking system 100 identifies the first person 1408 as the person that most likely picked up the item 1306 based on their proximity to the location on the rack 112 where the item 1306 was picked up. This process allows the tracking system 100 to identify the correct person that picked up the item 1306 from the rack 112 before adding the item 1306 to their digital cart 1410.
Returning to
Item Assignment using a Local Zone
At step 1502, the tracking system 100 detects a weight decrease on a weight sensor 110. Referring to
Returning to
At step 1506, the tracking system 100 receives a frame 302 of the rack 112 from a sensor 108. The sensor 108 captures a frame 302 of at least a portion of the rack 112 within the global plane 104 for the space 102. The frame 302 comprises a plurality of pixels that are each associated with a pixel location 402. Each pixel location 402 comprises a pixel row and a pixel column. The pixel row and the pixel column indicate the location of a pixel within the frame 302.
The frame 302 comprises a predefined zone 1808 that is associated with the rack 112. The predefined zone 1808 is used for identifying people that are proximate to the front of the rack 112 and in a suitable position for retrieving items 1306 from the rack 112. For example, the rack 112 comprises a front portion 1810, a first side portion 1812, a second side portion 1814, and a back portion 1814. In this example, a person may be able to retrieve items 1306 from the rack 112 when they are either in front or to the side of the rack 112. A person is unable to retrieve items 1306 from the rack 112 when they are behind the rack 112. In this case, the predefined zone 1808 may overlap with at least a portion of the front portion 1810, the first side portion 1812, and the second side portion 1814 of the rack 112 in the frame 1806. This configuration prevents people that are behind the rack 112 from being considered as a person who picked up an item 1306 from the rack 112. In
After the tracking system 100 determines that an item 1306 has been picked up from the rack 112, the tracking system 100 then begins to identify people within the frame 302 that may have picked up the item 1306 from the rack 112. At step 1508, the tracking system 100 identifies a person 1802 within the frame 302. The tracking system 100 may identify a person 1802 within the frame 302 using a process similar to the process described in step 1004 of
At step 1510, the tracking system 100 determines a pixel location 402A in the frame 302 for the identified person 1802. The tracking system 100 may determine a pixel location 402A for the identified person 1802 using a process similar to the process described in step 1004 of
At step 1511, the tracking system 100 applies a homography 118 to the pixel location 402A of the identified person 1802 to determine an (x,y) coordinate 306 in the global plane 104 for the identified person 1802. The homography 118 is configured to translate between pixel locations 402 in the frame 302 and (x,y) coordinates 306 in the global plane 104. The homography 118 is configured similarly to the homography 118 described in
At step 1512, the tracking system 100 determines whether the identified person 1802 is within a predefined zone 1808 associated with the rack 112 in the frame 302. Continuing with the example in
In another embodiment, the predefined zone 1808 is associated with a plurality of pixels (e.g. a range of pixel rows and pixel columns) in the frame 302. The tracking system 100 may compare the pixel location 402A to the pixels associated with the predefined zone 1808 to determine whether the pixel location 402A is within the predefined zone 1808. In other words, the tracking system 100 uses the pixel location 402A of the identified person 1802 to determine whether the identified person 1802 is within an area suitable for picking up items 1306 from the rack 112. In this example, the tracking system 100 may compare the pixel column of the pixel location 402A with a range of pixel columns associated with the predefined zone 1808 and the pixel row of the pixel location 402A with a range of pixel rows associated with the predefined zone 1808 to determine whether the identified person 1802 is within the predefined zone 1808. In this example, the pixel location 402A for the person 1802 is standing in front of the rack 112 and is within the predefined zone 1808 which means that the identified person 1802 is in a suitable area for retrieving items 1306 from the rack 112.
The tracking system 100 proceeds to step 1514 in response to determining that the identified person 1802 is within the predefined zone 1808. Otherwise, the tracking system 100 returns to step 1508 to identify another person within the frame 302. In this case, the tracking system 100 determines the identified person 1802 is not in a suitable area for retrieving items 1306 from the rack 112, for example, the identified person 1802 is standing behind the rack 112.
In some instances, multiple people may be near the rack 112 and the tracking system 100 may need to determine which person is interacting with the rack 112 so that it can add a picked-up item 1306 to the appropriate person's digital cart 1410. Returning to the example in
As another example, the frame 302 further comprises a third person 1832 standing near the rack 112. In this case, the tracking system 100 determines which person picked up the item 1306 based on their proximity to the item 1306 that was picked up. For example, the tracking system 100 may determine an (x,y) coordinate 306 in the global plane 104 for the third person 1832. The tracking system 100 may then determine a first distance 1828 between the (x,y) coordinate 306 of the first person 1802 and the location on the rack 112 where the item 1306 was picked up. The tracking system 100 also determines a second distance 1830 between the (x,y) coordinate 306 of the third person 1832 and the location on the rack 112 where the item 1306 was picked up. The tracking system 100 may then determine that the first person 1802 is closer to the item 1306 than the third person 1832 when the first distance 1828 is less than the second distance 1830. In this example, the tracking system 100 identifies the first person 1802 as the person that most likely picked up the item 1306 based on their proximity to the location on the rack 112 where the item 1306 was picked up. This process allows the tracking system 100 to identify the correct person that picked up the item 1306 from the rack 112 before adding the item 1306 to their digital cart 1410.
As another example, the tracking system 100 may determine a pixel location 402C in the frame 302 for a third person 1832. The tracking system 100 may then determine the first distance 1828 between the pixel location 402A of the first person 1802 and the location on the rack 112 where the item 1306 was picked up. The tracking system 100 also determines the second distance 1830 between the pixel location 402C of the third person 1832 and the location on the rack 112 where the item 1306 was picked up.
Returning to
At step 1602, the tracking system 100 detects a weight decrease on a weight sensor 110. Returning to the example in
After the tracking system 100 detects that an item 1306 was removed from a rack 112, the tracking system 100 will use a sensor 108 to identify the item 1306 that was removed and the person who picked up the item 1306. Returning to
The frame 302 comprises a predefined zone 1808 that is configured similar to the predefined zone 1808 described in step 1504 of
At step 1606, the tracking system 100 identifies a marker 1820 on an item 1306 within a predefined zone 1808 in the frame 302. A marker 1820 is an object with unique features that can be detected by a sensor 108. For instance, a marker 1820 may comprise a uniquely identifiable shape, color, symbol, pattern, text, a barcode, a QR code, or any other suitable type of feature. The tracking system 100 may search the frame 302 for known features that correspond with a marker 1820. Referring to the example in
Returning to
In some embodiments, the tracking system 100 may also use information from a weight sensor 110 to identify the item 1306. For example, the tracking system 100 may comprise an item map 1308A that associates items 1306 with particular locations (e.g. zone 1304 and/or shelves 1302) and weight sensors 110 on the rack 112. For example, an item map 1308A may comprise a rack identifier, weight sensor identifiers, and a plurality of item identifiers. Each item identifier is mapped to a particular weight sensor 110 (i.e. weight sensor identifier) on the rack 112. The tracking system 100 determines which weight sensor 110 detected a weight decrease and then identifies the item 1306 or item identifier that corresponds with the weight sensor 110 using the item map 1308A.
After the tracking system 100 identifies the item 1306 that was picked up from the rack 112, the tracking system 100 then determines which person picked up the item 1306 from the rack 112. At step 1610, the tracking system 100 identifies a person 1802 within the frame 302. The tracking system 100 may identify a person 1802 within the frame 302 using a process similar to the process described in step 1004 of
At step 1612, the tracking system 100 determines a pixel location 402A for the identified person 1802. The tracking system 100 may determine a pixel location 402A for the identified person 1802 using a process similar to the process described in step 1004 of
At step 1613, the tracking system 100 applies a homography 118 to the pixel location 402A of the identified person 1802 to determine an (x,y) coordinate 306 in the global plane 104 for the identified person 1802. The tracking system 100 may determine the (x,y) coordinate 306 in the global plane 104 for the identified person 1802 using a process similar to the process described in step 1511 of
At step 1614, the tracking system 100 determines whether the identified person 1802 is within the predefined zone 1808. Here, the tracking system 100 determines whether the identified person 1802 is in a suitable area for retrieving items 1306 from the rack 112. The tracking system 100 may determine whether the identified person 1802 is within the predefined zone 1808 using a process similar to the process described in step 1512 of
In some instances, multiple people may be near the rack 112 and the tracking system 100 may need to determine which person is interacting with the rack 112 so that it can add a picked-up item 1306 to the appropriate person's digital cart 1410. The tracking system 100 may identify which person picked up the item 1306 from the rack 112 using a process similar to the process described in step 1512 of
At step 1614, the tracking system 100 adds the item 1306 to a digital cart 1410 that is associated with the person 1802. The tracking system 100 may add the item 1306 to the digital cart 1410 using a process similar to the process described in step 1224 of
At step 1702, the tracking system 100 detects a weight increase on a weight sensor 110. Returning to the example in
At step 1704, the tracking system 100 determines a weight increase amount on the weight sensor 110 in response to detecting the weight increase on the weight sensor 110. The weight increase amount corresponds with a magnitude of the weight change detected by the weight sensor 110. Here, the tracking system 100 determines how much of a weight increase was experienced by the weight sensor 110 after one or more items 1306 were placed on the weight sensor 110.
In one embodiment, the tracking system 100 determines that the item 1306 placed on the weight sensor 110 is a misplaced item 1306 based on the weight increase amount. For example, the weight sensor 110 may be associated with an item 1306 that has a known individual item weight. This means that the weight sensor 110 is only expected to experience weight changes that are multiples of the known item weight. In this configuration, the tracking system 100 may determine that the returned item 1306 is a misplaced item 1306 when the weight increase amount does not match the individual item weight or multiples of the individual item weight for the item 1306 associated with the weight sensor 110. As an example, the weight sensor 110 may be associated with an item 1306 that has an individual weight of ten ounces. If the weight sensor 110 detects a weight increase of twenty-five ounces, the tracking system 100 can determine that the item 1306 placed weight sensor 114 is not an item 1306 that is associated with the weight sensor 110 because the weight increase amount does not match the individual item weight or multiples of the individual item weight for the item 1306 that is associated with the weight sensor 110.
After the tracking system 100 detects that an item 1306 has been placed back on the rack 112, the tracking system 100 will use a sensor 108 to identify the person that put the item 1306 back on the rack 112. At step 1706, the tracking system 100 receives a frame 302 from a sensor 108. The sensor 108 captures a frame 302 of at least a portion of the rack 112 within the global plane 104 for the space 102. In the example shown in
At step 1708, the tracking system 100 identifies a person 1802 within the frame 302. The tracking system 100 may identify a person 1802 within the frame 302 using a process similar to the process described in step 1004 of
At step 1710, the tracking system 100 determines a pixel location 402A in the frame 302 for the identified person 1802. The tracking system 100 may determine a pixel location 402A for the identified person 1802 using a process similar to the process described in step 1004 of
At step 1712, the tracking system 100 determines whether the identified person 1802 is within a predefined zone 1808 of the frame 302. Here, the tracking system 100 determines whether the identified person 1802 is in a suitable area for putting items 1306 back on the rack 112. The tracking system 100 may determine whether the identified person 1802 is within the predefined zone 1808 using a process similar to the process described in step 1512 of
In some instances, multiple people may be near the rack 112 and the tracking system 100 may need to determine which person is interacting with the rack 112 so that it can remove the returned item 1306 from the appropriate person's digital cart 1410. The tracking system 100 may determine which person put back the item 1306 on the rack 112 using a process similar to the process described in step 1512 of
After the tracking system 100 identifies which person put back the item 1306 on the rack 112, the tracking system 100 then determines which item 1306 from the identified person's digital cart 1410 has a weight that closest matches the item 1306 that was put back on the rack 112. At step 1714, the tracking system 100 identifies a plurality of items 1306 in a digital cart 1410 that is associated with the person 1802. Here, the tracking system 100 identifies the digital cart 1410 that is associated with the identified person 1802. For example, the digital cart 1410 may be linked with the identified person's 1802 object identifier 1118. In one embodiment, the digital cart 1410 comprises item identifiers that are each associated with an individual item weight. At step 1716, the tracking system 100 identifies an item weight for each of the items 1306 in the digital cart 1410. In one embodiment, the tracking system 100 may comprise a set of item weights stored in memory and may look up the item weight for each item 1306 using the item identifiers that are associated with the item's 1306 in the digital cart 1410.
At step 1718, the tracking system 100 identifies an item 1306 from the digital cart 1410 with an item weight that closest matches the weight increase amount. For example, the tracking system 100 may compare the weight increase amount measured by the weight sensor 110 to the item weights associated with each of the items 1306 in the digital cart 1410. The tracking system 100 may then identify which item 1306 corresponds with an item weight that closest matches the weight increase amount.
In some cases, the tracking system 100 is unable to identify an item 1306 in the identified person's digital cart 1410 that a weight that matches the measured weight increase amount on the weight sensor 110. In this case, the tracking system 100 may determine a probability that an item 1306 was put down for each of the items 1306 in the digital cart 1410. The probability may be based on the individual item weight and the weight increase amount. For example, an item 1306 with an individual weight that is closer to the weight increase amount will be associated with a higher probability than an item 1306 with an individual weight that is further away from the weight increase amount.
In some instances, the probabilities are a function of the distance between a person and the rack 112. In this case, the probabilities associated with items 1306 in a person's digital cart 1410 depend on how close the person is to the rack 112 where the item 1306 was put back. For example, the probabilities associated with the items 1306 in the digital cart 1410 may be inversely proportional to the distance between the person and the rack 112. In other words, the probabilities associated with the items in a person's digital cart 1410 decay as the person moves further away from the rack 112. The tracking system 100 may identify the item 1306 that has the highest probability of being the item 1306 that was put down.
In some cases, the tracking system 100 may consider items 1306 that are in multiple people's digital carts 1410 when there are multiple people within the predefined zone 1808 that is associated with the rack 112. For example, the tracking system 100 may determine a second person is within the predefined zone 1808 that is associated with the rack 112. In this example, the tracking system 100 identifies items 1306 from each person's digital cart 1410 that may correspond with the item 1306 that was put back on the rack 112 and selects the item 1306 with an item weight that closest matches the item 1306 that was put back on the rack 112. For instance, the tracking system 100 identifies item weights for items 1306 in a second digital cart 1410 that is associated with the second person. The tracking system 100 identifies an item 1306 from the second digital cart 1410 with an item weight that closest matches the weight increase amount. The tracking system 100 determines a first weight difference between a first identified item 1306 from digital cart 1410 of the first person 1802 and the weight increase amount and a second weight difference between a second identified item 1306 from the second digital cart 1410 of the second person. In this example, the tracking system 100 may determine that the first weight difference is less than the second weight difference, which indicates that the item 1306 identified in the first person's digital cart 1410 closest matches the weight increase amount, and then removes the first identified item 1306 from their digital cart 1410.
After the tracking system 100 identifies the item 1306 that most likely put back on the rack 112 and the person that put the item 1306 back, the tracking system 100 removes the item 1306 from their digital cart 1410. At step 1720, the tracking system 100 removes the identified item 1306 from the identified person's digital cart 1410. Here, the tracking system 100 discards information associated with the identified item 1306 from the digital cart 1410. This process ensures that the shopper will not be charged for item 1306 that they put back on a rack 112 regardless of whether they put the item 1306 back in its correct location.
In order to track the movement of people in the space 102, the tracking system 100 should generally be able to distinguish between the people (i.e., the target objects) and other objects (i.e., non-target objects), such as the racks 112, displays, and any other non-human objects in the space 102. Otherwise, the tracking system 100 may waste memory and processing resources detecting and attempting to track these non-target objects. As described elsewhere in this disclosure (e.g., in
Even if sensors 108 are calibrated at installation to account for the presence of non-target objects, in many cases, it may be challenging to reliably and efficiently recalibrate the sensors 108 to account for changes in positions of non-target objects that should not be tracked in the space 102. For example, if a rack 112, sign, product display, or other furniture or object in space 102 is added, removed, or moved (e.g., all activities which may occur frequently and which may occur without warning and/or unintentionally), one or more of the sensors 108 may require recalibration or adjustment. Without this recalibration or adjustment, it is difficult or impossible to reliably track people in the space 102. Prior to this disclosure, there was a lack of tools for efficiently recalibrating and/or adjusting sensors, such as sensors 108, in a manner that would provide reliable tracking.
This disclosure encompasses the recognition not only of the previously unrecognized problems described above (e.g., with respect to tracking people in space 102, which may change over time) but also provides unique solutions to these problems. As described in this disclosure, during an initial time period before people are tracked, pixel regions from each sensor 108 may be determined that should be excluded during subsequent tracking. For example, during the initial time period, the space 102 may not include any people such that contours detected by each sensor 108 correspond only to non-target objects in the space for which tracking is not desired. Thus, pixel regions, or “auto-exclusion zones,” corresponding to portions of each image generated by sensors 108 that are not used for object detection and tracking (e.g., the pixel coordinates of contours that should not be tracked). For instance, the auto-exclusion zones may correspond to contours detected in images that are associated with non-target objects, contours that are spuriously detected at the edges of a sensor's field-of-view, and the like). Auto-exclusion zones can be determined automatically at any desired or appropriate time interval to improve the usability and performance of the tracking system 100.
After the auto-exclusion zones are determined, the tracking system 100 may proceed to track people in the space 102. The auto-exclusion zones are used to limit the pixel regions used by each sensor 108 for tracking people. For example, pixels corresponding to auto-exclusion zones may be ignored by the tracking system 100 during tracking. In some cases, a detected person (or other target object) may be near or partially overlapping with one or more auto-exclusion zones. In these cases, the tracking system 100 may determine, based on the extent to which a potential target object's position overlaps with the auto-exclusion zone, whether the target object will be tracked. This may reduce or eliminate false positive detection of non-target objects during person tracking in the space 102, while also improving the efficiency of the tracking system 100 by reducing wasted processing resources that would otherwise be expended attempting to track non-target objects. In some embodiments, a map of the space 102 may be generated that presents the physical regions that are excluded during tracking (i.e., a map that presents a representation of the auto-exclusion zone(s) in the physical coordinates of the space). Such a map, for example, may facilitate trouble-shooting of the tracking system by allowing an administrator to visually confirm that people can be tracked in appropriate portions of the space 102.
An example top-view image frame 1902 used for determining auto-exclusion zones 1910, 1914 is shown in
The client 105 determines pixel coordinates 1912 and 1916 corresponding to the locations of the auto-exclusions zones 1910 and 1914, respectively. The pixel coordinates 1912, 1916 generally correspond to the locations (e.g., row and column numbers) in the image frame 1902 that should be excluded during tracking. In general, objects associated with the pixel coordinates 1912, 1916 are not tracked by the tracking system 100. Moreover, certain objects which are detected outside of the auto-exclusion zones 1910, 1914 may not be tracked under certain conditions. For instance, if the position of the object (e.g., the position associated with region 1920, discussed below with respect to view 1914) overlaps at least a threshold amount with an auto-exclusion zone 1910, 1914, the object may not be tracked. This prevents the tracking system 100 (i.e., or the local client 105 associated with a sensor 108 or a subset of sensors 108) from attempting to unnecessarily track non-target objects. In some cases, auto-exclusion zones 1910, 1914 correspond to non-target (e.g., inanimate) objects in the field-of-view of a sensor 108 (e.g., a rack 112, which is associated with contour 1910). However, auto-exclusion zones 1910, 1914 may also or alternatively correspond to other aberrant features or contours detected by a sensor 108 (e.g., caused by sensor errors, inconsistent lighting, or the like).
Following the determination of pixel coordinates 1912, 1916 to exclude during tracking, objects may be tracked during a subsequent time period corresponding to t >to. An example image frame 1918 generated during tracking is shown in
As described above, sensors 108 may be arranged such that adjacent sensors 108 have overlapping fields-of-view. For instance, fields-of-view of adjacent sensors 108 may overlap between about 10% to 30%. As such, the same object may be detected by two different sensors 108 and either included or excluded from tracking in the image frames received from each sensor 108 based on the unique auto-exclusion zones determined for each sensor 108. This may facilitate more reliable tracking than was previously possible, even when one sensor 108 may have a large auto-exclusion zone (i.e., where a large proportion of pixel coordinates in image frames generated by the sensor 108 are excluded from tracking). Accordingly, if one sensor 108 malfunctions, adjacent sensors 108 may still provide adequate tracking in the space 102.
If region 1920 corresponds to a target object (i.e., a person to track in the space 102), the tracking system 100 proceeds to track the region 1920. Example methods of tracking are described in greater detail below with respect to
At step 2104, contours (e.g., dashed contour lines corresponding to auto-exclusion zones 1910, 1914 of
At step 2110, the client 105 receives an image frame 1918 during a subsequent time during which tracking is performed (i.e., after the pixel coordinates corresponding to auto-exclusion zones are stored at step 2108). The frame is received from sensor 108 and includes a representation of an object in the space 102. At step 2112, a contour is detected in the frame received at step 2110. For example, the contour may correspond to a curve along the edge of object represented in the frame 1902. The pixel coordinates determined at step 2106 may be excluded (or not used) during contour detection. For instance, image data may be ignored and/or removed (e.g., given a value of zero, or the color equivalent) at the pixel coordinates determined at step 2106, such that no contours are detected at these coordinates. In some cases, a contour may be detected outside of these coordinates. In some cases, a contour may be detected that is partially outside of these coordinates but overlaps partially with the coordinates (e.g., as illustrated in image 1918 of
At step 2114, the client 105 generally determines whether the detected contour has a pixel position that sufficiently overlaps with pixel coordinates of the auto-exclusion zones 1910, 1914 determined at step 2106. If the coordinates sufficiently overlap, the contour or region 1920 (i.e., and the associated object) is not tracked in the frame. For instance, as described above, the client 105 may determine whether the detected contour or region 1920 overlaps at least a threshold percentage (e.g., of 50%) with a region associated with the pixel coordinates (e.g., see overlapping region 1922 of
Otherwise, if the criteria of step 2114 are satisfied, the client 105 determines a pixel position for the contour or region 1920 at step 2118. Determining a pixel position from a contour may involve, for example, (i) determining a region 1920 (e.g., a pixel mask or bounding box) associated with the contour and (ii) determining a centroid or other characteristic position of the region as the pixel position. At step 2120, the determined pixel position is transmitted to the server 106 to facilitate global tracking, for example, using predetermined homographies, as described elsewhere in this disclosure (e.g., with respect to
Modifications, additions, or omissions may be made to method 2100 depicted in
In some cases, two people are near each other, making it difficult or impossible to reliably detect and/or track each person (or other target objects) using conventional tools. In some cases, the people may be initially detected and tracked using depth images at an approximate waist depth (i.e., a depth corresponding to the waist height of an average person being tracked). Tracking at an approximate waist depth may be more effective at capturing all people regardless of their height or mode of movement. For instance, by detecting and tacking people at an approximate waist depth, the tracking system 100 is highly likely to detect tall and short individuals and individuals who may be using alternative methods of movement (e.g., wheelchairs, and the like). However, if two people with a similar height are standing near each other, it may be difficult to distinguish between the two people in the top-view images at the approximate waist depth. Rather than detecting two separate people, the tracking system 100 may initially detect the people as a single larger object.
This disclosure encompasses the recognition that at a decreased depth (i.e., a depth nearer the heads of the people), the people may be more readily distinguished. This is because the people's heads are more likely to be imaged at the decreased depth, and their heads are smaller and less likely to be detected as a single merged region (or contour, as described in greater detail below). As another example, if two people enter the space 102 standing close to one another (e.g., holding hands), they may appear to be a single larger object. Since the tracking system 100 may initially detect the two people as one person, it may be difficult to properly identify these people if these people separate while in the space 102. As yet another example, if two people who briefly stand close together are momentarily “lost” or detected as only a single, larger object, it may be difficult to correctly identify the people after they separate from one another.
As described elsewhere in this disclosure (e.g., with respect to
The systems and methods described in this disclosure provide improvements to previous technology by facilitating the improved detection of closely spaced people. For example, the systems and methods described in this disclosure may facilitate the detection of individual people when contours associated with these people would otherwise be merged, resulting in the detection of a single person using conventional detection strategies. In some embodiments, improved contour detection is achieved by detecting contours at different depths (e.g., at least two depths) to identify separate contours at a second depth within a larger merged contour detected at a first depth used for tracking. For example, if two people are standing near each other such that contours are merged to form a single contour, separate contours associated with heads of the two closely spaced people may be detected at a depth associated with the persons' heads. In some embodiments, a unique statistical approach may be used to differentiate between the two people by selecting bounding regions for the detected contours with a low similarity value. In some embodiments, certain criteria are satisfied to ensure that the detected contours correspond to separate people, thereby providing more reliable person (e.g., or other target object) detection than was previously possible. For example, two contours detected at an approximate head depth may be required to be within a threshold size range in order for the contours to be used for subsequent tracking. In some embodiments, an artificial neural network may be employed to detect separate people that are closely spaced by analyzing top-view images at different depths.
In this example, sensor 108b is an angled-view sensor, which is configured to generate angled-view images 2214 (e.g., color and/or depth images) of at least a portion of the space 102. Sensor 108b has a field of view 2208b, which overlaps with at least a portion of the field-of-view 2208a of sensor 108a. The angled-view images 2214 generated by the angled-view sensor 108b are transmitted to sensor client 105b. Sensor client 105b may be a client 105 described above with respect to
In the example scenario illustrated in
The sensor client 105a detects contours in top-view images 2212 received from sensor 108a. Typically, the sensor client 105a detects contours at an initial depth 2210a. The initial depth 2210a may be associated with, for example, a predetermined height (e.g., from the ground) which has been established to detect and/or track people 2202, 2204 through the space 102. For example, for tracking humans, the initial depth 2210a may be associated with an average shoulder or waist height of people expected to be moving in the space 102 (e.g., a depth which is likely to capture a representation for both tall and short people traversing the space 102). The sensor client 105a may use the top-view images 2212 generated by sensor 108a to identify the top-view image 2212 corresponding to when a first contour 2202a associated with the first person 2202 merges with a second contour 2204a associated with the second person 2204. View 2216 illustrates contours 2202a, 2204a at a time prior to when these contours 2202a, 2204a merge (i.e., prior to a time (tclose) when the first and second people 2202, 2204 are within the threshold distance 2206b of each other). View 2216 corresponds to a view of the contours detected in a top-view image 2212 received from sensor 108a (e.g., with other objects in the image not shown).
A subsequent view 2218 corresponds to the image 2212 at or near tclose when the people 2202, 2204 are closely spaced and the first and second contours 2202a, 2204a merge to form merged contour 2220. The sensor client 105a may determine a region 2222 which corresponds to a “size” of the merged contour 2220 in image coordinates (e.g., a number of pixels associated with contour 2220). For example, region 2222 may correspond to a pixel mask or a bounding box determined for contour 2220. Example approaches to determining pixel masks and bounding boxes are described above with respect to step 2104 of
In order to detect the individual people 2202 and 2204, the sensor client 105a may access images 2212a t a decreased depth (i.e., at one or both of depths 2212b and 2212c) and use this data to detect separate contours 2202b, 2204b, illustrated in view 2224. In other words, the sensor client 105a may analyze the images 2212 at a depth nearer the heads of people 2202, 2204 in the images 2212 in order to detect the separate people 2202, 2204. In some embodiments, the decreased depth may correspond to an average or predetermined head height of persons expected to be detected by the tracking system 100 in the space 102. In some cases, contours 2202b, 2204b may be detected at the decreased depth for both people 2202, 2204.
However, in other cases, the sensor client 105a may not detect both heads at the decreased depth. For example, if a child and an adult are closely spaced, only the adult's head may be detected at the decreased depth (e.g., at depth 2210b). In this scenario, the sensor client 105a may proceed to a slightly increased depth (e.g., to depth 2210c) to detect the head of the child. For instance, in such scenarios, the sensor client 105a iteratively increases the depth from the decreased depth towards the initial depth 2210a in order to detect two distinct contours 2202b, 2204b (e.g., for both the adult and the child in the example described above). For instance, the depth may first be decreased to depth 2210b and then increased to depth 2210c if both contours 2202b and 2204b are not detected at depth 2210b. This iterative process is described in greater detail below with respect to method 2300 of
As described elsewhere in this disclosure, in some cases, the tracking system 100 may maintain a record of features, or descriptors, associated with each tracked person (see, e.g.,
Once contours 2202b and 2204b are detected, the sensor client determines a region 2202c associated with pixel coordinates 2202d of contour 2202b and a region 2204c associated with pixel coordinates 2204d of contour 2204b. For example, as described above with respect to region 2222, regions 2202c and 2204c may correspond to pixel masks or bounding boxes generated based on the corresponding contours 2202b, 2204b, respectively. For example, pixel masks may be generated to “fill in” the area inside the contours 2202b, 2204b or bounding boxes may be generated which encompass the contours 2202b, 2204b. The pixel coordinates 2202d, 2204d generally correspond to the set of positions (e.g., rows and columns) of pixels within regions 2202c, 2204c.
In some embodiments, a unique approach is employed to more reliably distinguish between closely spaced people 2202 and 2204 and determine associated regions 2202c and 2204c. In these embodiments, the regions 2202c and 2204c are determined using a unique method referred to in this disclosure as “non-minimum suppression.” Non-minimum suppression may involve, for example, determining bounding boxes associated with the contour 2202b, 2204b (e.g., using any appropriate object detection algorithm as appreciated by a person of skilled in the relevant art). For each bounding box, a score may be calculated. As described above with respect to non-maximum suppression, the score may represent an extent to which the bounding box is similar to the other bounding boxes. However, rather than identifying bounding boxes with high scores (e.g., as with non-maximum suppression), a subset of the bounding boxes is identified with scores that are less than a threshold value (e.g., of about 20%). This subset may be used to determine regions 2202c, 2204c. For example, regions 2202c, 2204c may include regions shared by each bounding box of the identified subsets. In other words, bounding boxes that are not below the minimum score are “suppressed” and not used to identify regions 2202b, 2204b.
Prior to assigning a position or identity to the contours 2202b, 2204b and/or the associated regions 2202c, 2204c, the sensor client 105a may first check whether criteria are satisfied for distinguishing the region 2202c from region 2204c. The criteria are generally designed to ensure that the contours 2202b, 2204b (and/or the associated regions 2202c, 2204c) are appropriately sized, shaped, and positioned to be associated with the heads of the corresponding people 2202, 2204. These criteria may include one or more requirements. For example, one requirement may be that the regions 2202c, 2204c overlap by less than or equal to a threshold amount (e.g., of about 50%, e.g., of about 10%). Generally, the separate heads of different people 2202, 2204 should not overlap in a top-view image 2212. Another requirement may be that the regions 2202c, 2204c are within (e.g., bounded by, e.g., encompassed by) the merged-contour region 2222. This requirement, for example, ensures that the head contours 2202b, 2204b are appropriately positioned above the merged contour 2220 to correspond to heads of people 2202, 2204. If the contours 2202b, 2204b detected at the decreased depth are not within the merged contour 2220, then these contours 2202b, 2204b are likely not associated with heads of the people 2202, 2204 associated with the merged contour 2220.
Generally, if the criteria are satisfied, the sensor client 105a associates region 2202c with a first pixel position 2202e of person 2202 and associates region 2204c with a second pixel position 2204e of person 2204. Each of the first and second pixel positions 2202e, 2204e generally corresponds to a single pixel position (e.g., row and column) associated with the location of the corresponding contour 2202b, 2204b in the image 2212. The first and second pixel positions 2202e, 2204e are included in the pixel positions 2226 which may be transmitted to the server 106 to determine corresponding physical (e.g., global) positions 2228, for example, based on homographies 2230 (e.g., using a previously determined homography for sensor 108a associating pixel coordinates in images 2212 generated by sensor 108a to physical coordinates in the space 102).
As described above, sensor 108b is positioned and configured to generate angled-view images 2214 of at least a portion of the field of-of-view 2208a of sensor 108a. The sensor client 105b receives the angled-view images 2214 from the second sensor 108b. Because of its different (e.g., angled) view of people 2202, 2204 in the space 102, an angled-view image 2214 obtained at tclose may be sufficient to distinguish between the people 2202, 2204. A view 2232 of contours 2202d, 2204d detected at tclose is shown in
In an example operation of the tracking system 100, sensor 108a is configured to generate top-view color-depth images of at least a portion of the space 102. When people 2202 and 2204 are within a threshold distance of each another, the sensor client 105a identifies an image frame (e.g., associated with view 2218) corresponding to a time stamp (e.g., tclose) where contours 2202a, 2204a associated with the first and second person 2202, 2204, respectively, are merged and form contour 2220. In order to detect each person 2202 and 2204 in the identified image frame (e.g., associated with view 2218), the client 105a may first attempt to detect separate contours for each person 2202, 2204 at a first decreased depth 2210b. As described above, depth 2210b may be a predetermined height associated with an expected head height of people moving through the space 102. In some embodiments, depth 2210b may be a depth previously determined based on a measured height of person 2202 and/or a measured height of person 2204. For example, depth 2210b may be based on an average height of the two people 2202, 2204. As another example, depth 2210b may be a depth corresponding to a predetermined head height of person 2202 (as illustrated in the example of
If only one contour 2202b is detected at depth 2210b (e.g., if only one person 2202, 2204 is tall enough to be detected at depth 2210b), the region associated with this contour 2202b may be used to determine the pixel position 2202e of the corresponding person, and the next person may be detected at an increased depth 2210c. Depth 2210c is generally greater than 2210b but less than depth 2210a. In the illustrative example of
At step 2306, the sensor client 105a determines a merged-contour region 2222. Region 2222 is associated with pixel coordinates of the merged contour 2220. For instance, region 2222 may correspond to coordinates of a pixel mask that overlays the detected contour. As another example, region 2222 may correspond to pixel coordinates of a bounding box determined for the contour (e.g., using any appropriate object detection algorithm). In some embodiments, a method involving non-maximum suppression is used to detect region 2222. In some embodiments, region 2222 is determined using an artificial neural network. For example, an artificial neural network may be trained to detect contours at various depths in top-view images generated by sensor 108a.
At step 2308, the depth at which contours are detected in the identified image frame from step 2304 is decreased (e.g., to depth 2210b illustrated in
The same or a similar approach—illustrated in steps 2210b, 2212b, 2214b, and 2216b—may be used to determine a second region 2204c associated with pixel coordinates 2204d of the contour 2204b. For example, at step 2310b, the sensor client 105a determines whether a second contour 2204b is detected at the current depth. If the contour 2204b is not detected, the sensor client 105a proceeds, at step 2312b, to an increased depth (e.g., to depth 2210c). If the increased depth corresponds to having reached a maximum depth (e.g., to reaching the initial depth 2210a), the process ends because the second contour 2204b was not detected. If the maximum depth has not been reached, the sensor client 105a returns to step 2310b and determines if the second contour 2204b is detected at the newly increased current depth. If the second contour 2204b is detected at step 2210a, the sensor client 105a, at step 2316a, determines a second region 2204c associated with pixel coordinates 2204d of the detected contour 2204b. In some embodiments, region 2204c may be determined using a method of non-minimal suppression or an artificial neural network, as described above.
At step 2318, the sensor client 105a determines whether criteria are satisfied for distinguishing the first and second regions determined in steps 2316a and 2316b, respectively. For example, the criteria may include one or more requirements. For example, one requirement may be that the regions 2202c, 2204c overlap by less than or equal to a threshold amount (e.g., of about 10%). Another requirement may be that the regions 2202c, 2204c are within (e.g., bounded by, e.g., encompassed by) the merged-contour region 2222 (determined at step 2306). If the criteria are not satisfied, method 2300 generally ends.
Otherwise, if the criteria are satisfied at step 2318, the method 2300 proceeds to steps 2320 and 2322 where the sensor client 105a associates the first region 2202b with a first pixel position 2202e of the first person 2202 (step 2320) and associates the second region 2204b with a first pixel position 2202e of the first person 2204 (step 2322). Associating the regions 2202c, 2204c to pixel positions 2202e, 2204e may correspond to storing in a memory pixel coordinates 2202d, 2204d of the regions 2202c, 2204c and/or an average pixel position corresponding to each of the regions 2202c, 2204c along with an object identifier for the people 2202, 2204.
At step 2324, the sensor client 105a may transmit the first and second pixel positions (e.g., as pixel positions 2226) to the server 106. At step 2326, the server 106 may apply a homography (e.g., of homographies 2230) for the sensor 2202 to the pixel positions to determine corresponding physical (e.g., global) positions 2228 for the first and second people 2202, 2204. Examples of generating and using homographies 2230 are described in greater detail above with respect to
Modifications, additions, or omissions may be made to method 2300 depicted in
As described elsewhere in this disclosure (e.g., with respect to
As another example, if people appear to merge (e.g., if detected contours merge into a single merged contour, as illustrated in view 2216 of
The tracking subsystem 2400 includes the client(s) 105 and server 106 of
Turning now to
For the object at position 2504, the estimated subsequent positions 2506 are primarily clustered in a similar area above and to the right of position 2504, indicating that the particle filter tracker 2444, 2446 may provide a relatively good estimate of a subsequent position. Meanwhile, the estimated subsequent positions 2512 are relatively randomly distributed around position 2510 for the object, indicating that the particle filter tracker 2444, 2446 may provide a relatively poor estimate of a subsequent position.
In
Referring again to
Turning back to
The server 106 generally receives pixel positions from clients 105a,b and tracks the global position of the person 2402 in the space 102. In some embodiments, the server 106 employs a global particle filter tracker 2446 to track a global physical position of the person 2402 and one or more other people 2604 in the space 102). Tracking people both locally (i.e., at the “pixel level” using clients 105a,b) and globally (i.e., based on physical positions in the space 102) improves tracking by reducing and/or eliminating noise and/or other tracking errors which may result from relying on either local tracking by the clients 105a,b or global tracking by the server 106 alone.
If a contour is not detected at step 2608a, a first particle filter tracker 2444 may be used to estimate a pixel position (e.g., estimated position 2420b), based on a history of previous positions of the contour 2410, at step 2612a. For example, the first particle filter tracker 2444 may generate a probability-weighted estimate of a subsequent first pixel position corresponding to the timestamp (e.g., as described above with respect to
The second sensor client 105b receives the second data feed 2406b from sensor 108b at step 2606b. The same or similar steps to those described above for sensor client 105a are used to determine a second pixel position 2416c for a detected contour 2414 or estimate a pixel position based on a second particle filter tracker 2444. At step 2608b, the sensor client 105b determines whether a contour 2414 is detected in an image from feed 2406b at a given timestamp. If a contour 2414 is detected at the timestamp, the sensor client 105b determines a first pixel position 2416c for the contour 2414 at step 2610b (e.g., using any of the approaches described above with respect to step 2610a). If a contour 2414 is not detected, a second particle filter tracker 2444 may be used to estimate a pixel position at step 2612b (e.g., as described above with respect to step 2612a). If the confidence level of the estimated pixel position is below a threshold value (e.g., based on a standard deviation value for the tracker 2444), no pixel position is determined for the timestamp by the sensor client 105b, and no pixel position is reported for the timestamp to the server 106.
While steps 2606a,b-2612a,b are described as being performed by sensor client 105a and 105b, it should be understood that in some embodiments, a single sensor client 105 may receive the first and second image feeds 2406a,b from sensors 108a,b and perform the steps described above. Using separate sensor clients 105a,b for separate sensors 108a,b or sets of sensors 108 may provide redundancy in case of client 105 malfunctions (e.g., such that even if one sensor client 105 fails, feeds from other sensors may be processed by other still-functioning clients 105).
At step 2614, the server 106 receives the pixel positions 2412c, 2416c determined by the sensor clients 105a,b. At step 2616, the server 106 may determine a first physical position 2412d based on the first pixel position 2412c determined at step 2610a or estimated at step 2612a by the first sensor client 105a. For example, the first physical position 2412d may be determined using a first homography associating pixel coordinates in the top-view images generated by the first sensor 108a to physical coordinates in the space 102. At step 2618, the server 106 may determine a second physical position 2416d based on the second pixel position 2416c determined at step 2610b or estimated at step 2612b by the first sensor client 105b. For instance, the second physical position 2416d may be determined using a second homography associating pixel coordinates in the top-view images generated by the second sensor 108b to physical coordinates in the space 102.
At step 2620 the server 106 determines whether the first and second positions 2412d, 2416d (from steps 2616 and 2618) are within a threshold distance 2448 (e.g., of about six inches) of each other. In general, the threshold distance 2448 may be determined based on one or more characteristics of the system tracking system 100 and/or the person 2402 or another target object being tracked. For example, the threshold distance 2448 may be based on one or more of the distance of the sensors 108a-b from the object, the size of the object, the fields-of-view 2404a-b, the sensitivity of the sensors 108a-b, and the like. Accordingly, the threshold distance 2448 may range from just over zero inches to greater than six inches depending on these and other characteristics of the tracking system 100.
If the positions 2412d, 2416d are within the threshold distance 2448 of each other at step 2620, the server 106 determines that the positions 2412d, 2416d correspond to the same person 2402 at step 2622. In other words, the server 106 determines that the person detected by the first sensor 108a is the same person detected by the second sensor 108b. This may occur, at a given timestamp, because of the overlap 2604 between field-of-view 2404a and field-of-view 2404b of sensors 108a and 108b, as illustrated in
At step 2624, the server 106 determines a global position 2438 (i.e., a physical position in the space 102) for the object based on the first and second physical positions from steps 2616 and 2618. For instance, the server 106 may calculate an average of the first and second physical positions 2412d, 2416d. In some embodiments, the global position 2438 is determined by clustering the first and second physical positions 2412d, 2416d (e.g., using any appropriate clustering algorithm). At step 2626, a global particle filter tracker 2446 is used to track the global (e.g., physical) position 2438 of the person 2402. An example of a particle filter tracker is described above with respect to
If at step 2620 the first and second physical positions 2412d, 2416d are not within the threshold distance 2448 from each other, the server 106 generally determines that the positions correspond to different objects 2402, 2604 at step 2628. In other words, the server 106 may determine that the physical positions determined at steps 2616 and 2618 are sufficiently different, or far apart, for them to correspond to the first person 2402 and a different second person 2604 in the space 102.
At step 2630, the server 106 determines a global position for the first object 2402 based on the first physical position 2412c from step 2616. Generally, in the case of having only one physical position 2412c on which to base the global position, the global position is the first physical position 2412c. If other physical positions are associated with the first object (e.g., based on data from other sensors 108, which for clarity are not shown in
At step 2634, the server 106 determines a global position for the second person 2404 based on the second physical position 2416c from step 2618. Generally, in the case of having only one physical position 2416c on which to base the global position, the global position is the second physical position 2416c. If other physical positions are associated with the second object (e.g., based on data from other sensors 108, which not shown in
Modifications, additions, or omissions may be made to the method 2600 described above with respect to
When the tracking system 100 is tracking people in the space 102, it may be challenging to reliably identify people under certain circumstances such as when they pass into or near an auto-exclusion zone (see
This disclosure provides a solution to the problems of previous technology, including those described above, by maintaining a record, which is referred to in this disclosure as a “candidate list,” of possible person identities, or identifiers (i.e., the usernames, account numbers, etc. of the people being tracked), during tracking. A candidate list is generated and updated during tracking to establish the possible identities of each tracked person. Generally, for each possible identity or identifier of a tracked person, the candidate list also includes a probability that the identity, or identifier, is believed to be correct. The candidate list is updated following interactions (e.g., collisions) between people and in response to other uncertainty events (e.g., a loss of sensor data, imaging errors, intentional trickery, etc.).
In some cases, the candidate list may be used to determine when a person should be re-identified (e.g., using methods described in greater detail below with respect to
The tracked object regions 2704, 2708, 2712 correspond to regions of the space 102 associated with the positions of corresponding people (e.g., or any other target object) moving through the space 102. For example, each tracked object region 2704, 2708, 2712 may correspond to a different person moving about in the space 102. Examples of determining the regions 2704, 2708, 2712 are described above, for example, with respect to
View 2702 at initial time to includes a first tracked object region 2704, a second tracked object region 2708, and a third tracked object region 2712. The view 2702 may correspond to a representation of the space 102 from a top view with only the tracked object regions 2704, 2708, 2712 shown (i.e., with other objects in the space 102 omitted). At time to, the identities of all of the people are generally known (e.g., because the people have recently entered the space 102 and/or because the people have not yet been near each other). The first tracked object region 2704 is associated with a first candidate list 2706, which includes a probability (PA=100%) that the region 2704 (or the corresponding person being tracked) is associated with a first identifier 2701a. The second tracked object region 2708 is associated with a second candidate list 2710, which includes a probability (PB=100%) that the region 2708 (or the corresponding person being tracked) is associated with a second identifier 2701b. The third tracked object region 2712 is associated with a third candidate list 2714, which includes a probability (PC=100%) that the region 2712 (or the corresponding person being tracked) is associated with a third identifier 2701c. Accordingly, at time t1, the candidate lists 2706, 2710, 2714 indicate that the identity of each of the tracked object regions 2704, 2708, 2712 is known with all probabilities having a value of one hundred percent.
View 2716 shows positions of the tracked objects 2704, 2708, 2712 at a first time t1 , which is after the initial time to. At time t1 , the tracking system detects an event which may cause the identities of the tracked object regions 2704, 2708 to be less certain. In this example, the tracking system 100 detects that the distance 2718a between the first object region 274 and the second object region 2708 is less than or equal to a threshold distance 2718b. Because the tracked object regions were near each other (i.e., within the threshold distance 2718b), there is a non-zero probability that the regions may be misidentified during subsequent times. The threshold distance 2718b may be any appropriate distance, as described above with respect to
After detecting that the identities of regions 2704, 2708 are less certain (i.e., that the first object region 2704 is within the threshold distance 2718b of the second object region 2708), the tracking system 100 determines a probability 2717 that the first tracked object region 2704 switched identifiers 2701a-c with the second tracked object region 2708. For example, when two contours become close in an image, there is a chance that the identities of the contours may be incorrect during subsequent tracking (e.g., because the tracking system 100 may assign the wrong identifier 2701a-c to the contours between frames). The probability 2717 that the identifiers 2701a-c switched may be determined, for example, by accessing a predefined probability value (e.g., of 50%). In other cases, the probability 2717 may be based on the distance 2718a between the object regions 2704, 2708. For example, as the distance 2718 decreases, the probability 2717 that the identifiers 2701a-c switched may increase. In the example of
In some embodiments, the tracking system 100 may determine a relative orientation between the first object region 2704 and the second object region 2708, and the probability 2717 that the object regions 2704, 2708 switched identifiers 2701a-c may be based on this relative orientation. The relative orientation may correspond to an angle between a direction a person associated with the first region 2704 is facing and a direction a person associated with the second region 2708 is facing. For example, if the angle between the directions faced by people associated with first and second regions 2704, 2708 is near 180° (i.e., such that the people are facing in opposite directions), the probability 2717 that identifiers 2701a-c switched may be decreased because this case may correspond to one person accidentally backing into the other person.
Based on the determined probability 2717 that the tracked object regions 2704, 2708 switched identifiers 2701a-c (e.g., 20% in this example), the tracking system 100 updates the first candidate list 2706 for the first object region 2704. The updated first candidate list 2706 includes a probability (PA=80%) that the first region 2704 is associated with the first identifier 2701a and a probability (PB=20%) that the first region 2704 is associated with the second identifier 2701b. The second candidate list 2710 for the second object region 2708 is similarly updated based on the probability 2717 that the first object region 2704 switched identifiers 2701a-c with the second object region 2708. The updated second candidate list 2710 includes a probability (PA=20%) that the second region 2708 is associated with the first identifier 2701a and a probability (PB=80%) that the second region 2708 is associated with the second identifier 2701b.
View 2720 shows the object regions 2704, 2708, 2712 at a second time point t2, which follows time t1. At time t2, a first person corresponding to the first tracked region 2704 stands close to a third person corresponding to the third tracked region 2712. In this example case, the tracking system 100 detects that the distance 2722 between the first object region 2704 and the third object region 2712 is less than or equal to the threshold distance 2718b (i.e., the same threshold distance 2718b described above with respect to view 2716). After detecting that the first object region 2704 is within the threshold distance 2718b of the third object region 2712, the tracking system 100 determines a probability 2721 that the first tracked object region 2704 switched identifiers 2701a-c with the third tracked object region 2712. As described above, the probability 2721 that the identifiers 2701a-c switched may be determined, for example, by accessing a predefined probability value (e.g., of 50%). In some cases, the probability 2721 may be based on the distance 2722 between the object regions 2704, 2712. For example, since the distance 2722 is greater than distance 2718a (from view 2716, described above), the probability 2721 that the identifiers 2701a-c switched may be greater at time t1 than at time t2. In the example of view 2720 of
Based on the determined probability 2721 that the tracked object regions 2704, 2712 switched identifiers 2701a-c (e.g., of 10% in this example), the tracking system 100 updates the first candidate list 2706 for the first object region 2704. The updated first candidate list 2706 includes a probability (PA=73%) that the first object region 2704 is associated with the first identifier 2701a, a probability (PB=17%) that the first object region 2704 is associated with the second identifier 2701b, and a probability (PC=10%) that the first object region 2704 is associated with the third identifier 2701c. The third candidate list 2714 for the third object region 2712 is similarly updated based on the probability 2721 that the first object region 2704 switched identifiers 2701a-c with the third object region 2712. The updated third candidate list 2714 includes a probability (PA=7%) that the third object region 2712 is associated with the first identifier 2701a, a probability (PB=3%) that the third object region 2712 is associated with the second identifier 2701b, and a probability (PC=90%) that the third object region 2712 is associated with the third identifier 2701c. Accordingly, even though the third object region 2712 never interacted with (e.g., came within the threshold distance 2718b of) the second object region 2708, there is still a non-zero probability (PB=3%) that the third object region 2712 is associated with the second identifier 2701b, which was originally assigned (at time t0) to the second object region 2708. In other words, the uncertainty in object identity that was detected at time t1 is propagated to the third object region 2712 via the interaction with region 2704 at time t2. This unique “propagation effect” facilitates improved object identification and can be used to narrow the search space (e.g., the number of possible identifiers 2701a-c that may be associated with a tracked object region 2704, 2708, 2712) when object re-identification is needed (as described in greater detail below and with respect to
View 2724 shows third object region 2712 and an unidentified object region 2726 at a third time point t3, which follows time t2. At time t3, the first and second people associated with regions 2704, 2708 come into contact (e.g., or “collide”) or are otherwise so close to one another that the tracking system 100 cannot distinguish between the people. For example, contours detected for determining the first object region 2704 and the second object region 2708 may have merged resulting in the single unidentified object region 2726. Accordingly, the position of object region 2726 may correspond to the position of one or both of object regions 2704 and 2708. At time t3, the tracking system 100 may determine that the first and second object regions 2704, 2708 are no longer detected because a first contour associated with the first object region 2704 is merged with a second contour associated with the second object region 2708.
The tracking system 100 may wait until a subsequent time t4 (shown in view 2728) when the first and second object regions 2704, 2708 are again detected before the candidate lists 2706, 2710 are updated. Time t4 generally corresponds to a time when the first and second people associated with regions 2704, 2708 have separated from each other such that each person can be tracked in the space 102. Following a merging event such as is illustrated in view 2724, the probability 2725 that regions 2704 and 2708 have switched identifiers 2701a-c may be 50%. At time t4, updated candidate list 2706 includes an updated probability (PA=60%) that the first object region 2704 is associated with the first identifier 2701a, an updated probability (PB=35%) that the first object region 2704 is associated with the second identifier 2701b, and an updated probability (PC=5%) that the first object region 2704 is associated with the third identifier 2701c. Updated candidate list 2710 includes an updated probability (PA=33%) that the second object region 2708 is associated with the first identifier 2701a, an updated probability (PB=62%) that the second object region 2708 is associated with the second identifier 2701b, and an updated probability (PC=5%) that the second object region 2708 is associated with the third identifier 2701c. Candidate list 2714 is unchanged.
Still referring to view 2728, the tracking system 100 may determine that a highest value probability of a candidate list is less than a threshold value (e.g., Pthreshold=70%). In response to determining that the highest probability of the first candidate list 2706 is less than the threshold value, the corresponding object region 2704 may be re-identified (e.g., using any method of re-identification described in this disclosure, for example, with respect to
Using the candidate lists 2706, 2710, 2714 may facilitate more efficient re-identification than was previously possible because, rather than checking all possible identifiers 2701a-c (e.g., and other identifiers of people in space 102 not illustrated in
View 2730 corresponds to a time t5 at which only the person associated with object region 2712 remains within the space 102. View 2730 illustrates how the candidate lists 2706, 2710, 2714 can be used to ensure that people only receive an exit notification 2734 when the system 100 is certain the person has exited the space 102. In these embodiments, the tracking system 100 may be configured to transmit an exit notification 2734 to devices associated with these people when the probability that a person has exited the space 102 is greater than an exit threshold (e.g., Pexit=95% or greater).
An exit notification 2734 is generally sent to the device of a person and includes an acknowledgement that the tracking system 100 has determined that the person has exited the space 102. For example, if the space 102 is a store, the exit notification 2734 provides a confirmation to the person that the tracking system 100 knows the person has exited the store and is, thus, no longer shopping. This may provide assurance to the person that the tracking system 100 is operating properly and is no longer assigning items to the person or incorrectly charging the person for items that he/she did not intend to purchase.
As people exit the space 102, the tracking system 100 may maintain a record 2732 of exit probabilities to determine when an exit notification 2734 should be sent. In the example of
Method 2800 may begin at step 2802 where image frames are received from one or more sensors 108. At step 2804, the tracking system 100 uses the received frames to track objects in the space 102. In some embodiments, tracking is performed using one or more of the unique tools described in this disclosure (e.g., with respect to
At step 2806, the tracking system 100 determines whether a first person is within a threshold distance 2718b of a second person. This case may correspond to the conditions shown in view 2716 of
However, if the first and second people are within the threshold distance 2718b of each other, method 2800 proceeds to step 2808, where the probability 2717 that the first and second people switched identifiers 2701a-c is determined. As described above, the probability 2717 that the identifiers 2701a-c switched may be determined, for example, by accessing a predefined probability value (e.g., of 50%). In some embodiments, the probability 2717 is based on the distance 2718a between the people (or corresponding object regions 2704, 2708), as described above. In some embodiments, as described above, the tracking system 100 determines a relative orientation between the first person and the second person, and the probability 2717 that the people (or corresponding object regions 2704, 2708) switched identifiers 2701a-c is determined, at least in part, based on this relative orientation. At step 2810, the candidate lists 2706, 2710 for the first and second people (or corresponding object regions 2704, 2708) are updated based on the probability 2717 determined at step 2808. For instance, as described above, the updated first candidate list 2706 may include a probability that the first object is associated with the first identifier 2701a and a probability that the first object is associated with the second identifier 2701b. The second candidate list 2710 for the second person is similarly updated based on the probability 2717 that the first object switched identifiers 2701a-c with the second object (determined at step 2808). The updated second candidate list 2710 may include a probability that the second person is associated with the first identifier 2701a and a probability that the second person is associated with the second identifier 2701b.
At step 2812, the tracking system 100 determines whether the first person (or corresponding region 2704) is within a threshold distance 2718b of a third object (or corresponding region 2712). This case may correspond, for example, to the conditions shown in view 2720 of
If the first and third people (or corresponding regions 2704 and 2712) are within the threshold distance 2718b of each other, method 2800 proceeds to step 2814, where the probability 2721 that the first and third people (or corresponding regions 2704 and 2712) switched identifiers 2701a-c is determined. As described above, this probability 2721 that the identifiers 270 la-c switched may be determined, for example, by accessing a predefined probability value (e.g., of 50%). The probability 2721 may also or alternatively be based on the distance 2722 between the objects 2727and/or a relative orientation of the first and third people, as described above. At step 2816, the candidate lists 2706, 2714 for the first and third people (or corresponding regions 2704, 2712) are updated based on the probability 2721 determined at step 2808. For instance, as described above, the updated first candidate list 2706 may include a probability that the first person is associated with the first identifier 2701a, a probability that the first person is associated with the second identifier 2701b, and a probability that the first object is associated with the third identifier 2701c. The third candidate list 2714 for the third person is similarly updated based on the probability 2721 that the first person switched identifiers with the third person (i.e., determined at step 2814). The updated third candidate list 2714 may include, for example, a probability that the third object is associated with the first identifier 2701a, a probability that the third object is associated with the second identifier 2701b, and a probability that the third object is associated with the third identifier 2701c. Accordingly, if the steps of method 2800 proceed in the example order illustrated in
If, at step 2812, the first and third people (or corresponding regions 2704 and 2712) are not within the threshold distance 2718b of each other, the system 100 generally continues tracking people in the space 102. For example, the system 100 may proceed to step 2818 to determine whether the first person is within a threshold distance of an nth person (i.e., some other person in the space 102). At step 2820, the system 100 determines the probability that the first and nth people switched identifiers 2701a-c, as described above, for example, with respect to steps 2808 and 2814. At step 2822, the candidate lists for the first and nth people are updated based on the probability determined at step 2820, as described above, for example, with respect to steps 2810 and 2816 before method 2800 ends. If, at step 2818, the first person is not within the threshold distance of the nth person, the method 2800 proceeds to step 2824.
At step 2824, the tracking system 100 determines if a person has exited the space 102. For instance, as described above, the tracking system 100 may determine that a contour associated with a tracked person is no longer detected for at least a threshold time period (e.g., of about 30 seconds or more). The system 100 may additionally determine that a person exited the space 102 when a person is no longer detected and a last determined position of the person was at or near an exit position (e.g., near a door leading to a known exit from the space 102). If a person has not exited the space 102, the tracking system 100 continues to track people (e.g., by returning to step 2802).
If a person has exited the space 102, the tracking system 100 calculates or updates record 2732 of probabilities that the tracked objects have exited the space 102 at step 2826. As described above, each exit probability of record 2732 generally corresponds to a probability that a person associated with each identifier 2701a-c has exited the space 102. At step 2828, the tracking system 100 determines if a combined exit probability in the record 2732 is greater than a threshold value (e.g., of 95% or greater). If a combined exit probability is not greater than the threshold, the tracking system 100 continues to track objects (e.g., by continuing to step 2818).
If an exit probability from record 2732 is greater than the threshold, a corresponding exit notification 2734 may be sent to the person linked to the identifier 2701a-c associated with the probability at step 2830, as described above with respect to view 2730 of
Modifications, additions, or omissions may be made to method 2800 depicted in
As described above, in some cases, the identity of a tracked person can become unknown (e.g., when the people become closely spaced or “collide”, or when the candidate list of a person indicates the person's identity is not known, as described above with respect to
As an example, each person's height may be used initially for re-identification. However, if another person in the space 102 has a similar height, a height descriptor may not be sufficient for re-identifying the people (e.g., because it is not possible to distinguish between people with similar heights based on height alone), and a higher-level approach may be used (e.g., using a texture operator or an artificial neural network to characterize the person). In some embodiments, if the other person with a similar height has never interacted with the person being re-identified (e.g., as recorded in each person's candidate list—see
For each object position 2902, the subsystem 2900 maintains a corresponding candidate list 2906 (e.g., as described above with respect to
Each of the identifiers 2908 is associated with one or more predetermined descriptors 2910. The predetermined descriptors 2910 generally correspond to information about the tracked people that can be used to re-identify the people when necessary (e.g., based on the candidate lists 2906). The predetermined descriptors 2910 may include values associated with observable and/or calculated characteristics of the people associated with the identifiers 2908. For instance, the descriptors 2910 may include heights, hair colors, clothing colors, and the like. As described in greater detail below, the predetermined descriptors 2910 are generally determined by the tracking subsystem 2900 during an initial time period (e.g., when a person associated with a given tracked position 2902 enters the space) and are used to re-identify people associated with tracked positions 2902 when necessary (e.g., based on candidate lists 2906).
When re-identification is needed (or periodically during tracking) for a given person at position 2902, the tracking subsystem 2900 may determine measured descriptors 2912 for the person associated with the position 2902.
Descriptors 2910, 2912 determined in this manner may include, for example, observable descriptors 3008 and calculated descriptors 3010. For example, the observable descriptors 3008 may correspond to characteristics of the representation 3004a and/or contour 3004b which can be extracted from the image 3002 and which correspond to observable features of the person. Examples of observable descriptors 3008 include a height descriptor 3012 (e.g., a measure of the height in pixels or units of length) of the person based on representation 3004a and/or contour 3004b), a shape descriptor 3014 (e.g., width, length, aspect ratio, etc.) of the representation 3004a and/or contour 3004b, a volume descriptor 3016 of the representation 3004a and/or contour 3004b, a color descriptor 3018 of representation 3004a (e.g., a color of the person's hair, clothing, shoes, etc.), an attribute descriptor 3020 associated with the appearance of the representation 3004a and/or contour 3004b (e.g., an attribute such as “wearing a hat,” “carrying a child,” “pushing a stroller or cart,”), and the like.
In contrast to the observable descriptors 3008, the calculated descriptors 3010 generally include values (e.g., scalar or vector values) which are calculated using the representation 3004a and/or contour 3004b and which do not necessarily correspond to an observable characteristic of the person. For example, the calculated descriptors 3010 may include image-based descriptors 3022 and model-based descriptors 3024. Image-based descriptors 3022 may, for example, include any descriptor values (i.e., scalar and/or vector values) calculated from image 3002. For example, a texture operator such as a local binary pattern histogram (LBPH) algorithm may be used to calculate a vector associated with the representation 3004a. This vector may be stored as a predetermined descriptor 2910 and measured at subsequent times as a descriptor 2912 for re-identification. Since the output of a texture operator, such as the LBPH algorithm may be large (i.e., in terms of the amount of memory required to store the output), it may be beneficial to select a subset of the output that is most useful for distinguishing people. Accordingly, in some cases, the tracking subsystem 2900 may select a portion of the initial data vector to include in the descriptor 2910, 2912. For example, a principal component analysis may be used to select and retain a portion of the initial data vector that is most useful for effective person re-identification.
In contrast to the image-based descriptors 3022, model-based descriptors 3024 are generally determined using a predefined model, such as an artificial neural network. For example, a model-based descriptor 3024 may be the output (e.g., a scalar value or vector) output by an artificial neural network trained to recognize people based on their corresponding representation 3004a and/or contour 3004b in top-view image 3002. For example, a Siamese neural network may be trained to associate representations 3004a and/or contours 3004b in top-view images 3002 with corresponding identifiers 2908 and subsequently employed for re-identification 2929.
Returning to
When the correct identifier 2908 is determined by the descriptor comparator 2914, the comparator 2914 may update the candidate list 2906 for the person being re-identified at position 2902 (e.g., by sending update 2916). In some cases, a descriptor 2912 may be measured for an object that does not require re-identification (e.g., a person for which the candidate list 2906 indicates there is 100% probability that the person corresponds to a single identifier 2908). In these cases, measured identifiers 2912 may be used to update and/or maintain the predetermined descriptors 2910 for the person's known identifier 2908 (e.g., by sending update 2918). For instance, a predetermined descriptor 2910 may need to be updated if a person associated with the position 2902 has a change of appearance while moving through the space 102 (e.g., by adding or removing an article of clothing, by assuming a different posture, etc.).
When each of the people 3102, 3104, 3106 first enter the space 102 (e.g., when they are within region 3114), predetermined descriptors 2910 are generally determined for the people 3102, 3104, 3106 and associated with the identifiers 2908 of the people 3102, 3104, 3106. The predetermined descriptors 2910 are generally accessed when the identity of one or more of the people 3102, 3104, 3106 is not sufficiently certain (e.g., based on the corresponding candidate list 2906 and/or in response to a “collision event,” as described below) in order to re-identify the person 3102, 3104, 3106. For example, re-identification may be needed following a “collision event” between two or more of the people 3102, 3104, 3106. A collision event typically corresponds to an image frame in which contours associated with different people merge to form a single contour (e.g., the detection of merged contour 2220 shown in
In the example of
At a first timestamp associated with a time t1 , the tracking subsystem 2900 detects a collision event between the first person 3102 and third person 3106 at position 3116 illustrated in
After the collision event is detected, the tracking subsystem 2900 receives a top-view image (e.g., top-view image 3002 of
However, in some cases, the first descriptor may not be sufficient for re-identifying the first person 3102. For example, if the first person 3102 and the third person 3106 correspond to people with similar heights, a height descriptor 3012 generally cannot be used to distinguish between the people 3102, 3106. Accordingly, before the first descriptor 2912 is used to re-identify the first person 3102, the tracking subsystem 2900 may determine whether certain criteria are satisfied for distinguishing the first person 3102 from the third person 3106 based on the first descriptor 2912. In some embodiments, the criteria are not satisfied when a difference, determined during a time interval associated with the collision event (e.g., at a time at or near time t1), between the descriptor 2912 of the first person 3102 and a corresponding descriptor 2912 of the third person 3106 is less than a minimum value.
When the criteria are satisfied for distinguishing the first person 3102 from the third person 3106 based on the first descriptor 2912 (as is the case at ti), the descriptor comparator 2914 may compare the first descriptor 2912 for the first person 3102 to each of the corresponding predetermined descriptors 2910 (i.e., for all identifiers 2908). However, in some embodiments, comparator 2914 may compare the first descriptor 2912 for the first person 3102 to predetermined descriptors 2910 for only a select subset of the identifiers 2908. The subset may be selected using the candidate list 2906 for the person that is being re-identified (see, e.g., step 3208 of method 3200 described below with respect to
Referring again to
For example, when the criteria are not satisfied for distinguishing the first person 3102 from the third person 3106 based on the first descriptor 2912 (as is the case in this example at time t2), the tracking subsystem 2900 determines a new descriptor 2912 for the first person 3102. The new descriptor 2912 is typically a value or vector generated by an artificial neural network configured to identify people in top-view images (e.g., a model-based descriptor 3024 of
In cases where the second descriptor 2912 cannot be used to reliably re-identify the first person 3102 using the approach described above, the tracking subsystem 2900 may determine a measured descriptor 2912 for all of the “candidate identifiers” of the first person 3102. The candidate identifiers generally refer to the identifiers 2908 of people (e.g., or other tracked objects) that are known to be associated with identifiers 2908 appearing in the candidate list 2906 of the first person 3102 (e.g., as described above with respect to
At step 3206, the tracking subsystem 2900 determines whether re-identification of the first tracked person 3102 is needed. This may be based on a determination that contours have merged in an image frame (e.g., as illustrated by merged contour 2220 of
If the tracking subsystem 2900 determines at step 3206 that re-identification of the first tracked person 3102 is needed, the tracking subsystem 2900 may determine candidate identifiers for the first tracked person 3102 at step 3208. The candidate identifiers generally include a subset of all of the identifiers 2908 associated with tracked people in the space 102, and the candidate identifiers may be determined based on the candidate list 2906 for the first tracked person 3102. In other words, the candidate identifiers are a subset of the identifiers 2906 which are most likely to include the correct identifier 2908 for the first tracked person 3102 based on a history of movements of the first tracked person 3102 and interactions of the first tracked person 3102 with the one or more other tracked people 3104, 3106 in the space 102 (e.g., based on the candidate list 2906 that is updated in response to these movements and interactions).
At step 3210, the tracking subsystem 2900 determines a first descriptor 2912 for the first tracked person 3102. For example, the tracking subsystem 2900 may receive, from a first sensor 108, a first top-view image of the first person 3102 (e.g., such as image 3002 of
At step 3212, the tracking subsystem 2900 may determine whether the first descriptor 2912 can be used to distinguish the first person 3102 from the candidate identifiers (e.g., one or both of people 3104, 3106) by, for example, determining whether certain criteria are satisfied for distinguishing the first person 3102 from the candidates based on the first descriptor 2912. In some embodiments, the criteria are not satisfied when a difference, determined during a time interval associated with the collision event, between the first descriptor 2912 and corresponding descriptors 2910 of the candidates is less than a minimum value, as described in greater detail above with respect to
If the first descriptor can be used to distinguish the first person 3102 from the candidates (e.g., as was the case at time t1 in the example of
At step 3216, the identifiers 2908 of the other tracked people 3104, 3106 may be updated as appropriate by updating other people's candidate lists 2906. For example, if the first tracked person 3102 was found to be associated with an identifier 2908 that was previously associated with the second tracked person 3104. Steps 3208 to 3214 may be repeated for the second person 3104 to determine the correct identifier 2908 for the second person 3104. In some embodiments, when the identifier 2908 for the first person 3102 is updated, the identifiers 2908 for people (e.g., one or both of people 3104 and 3106) that are associated with the first person's candidate list 2906 are also updated at step 3216. As an example, the candidate list 2906 of the first person 3102 may have a non-zero probability that the first person 3102 is associated with a second identifier 2908 originally linked to the second person 3104 and a third probability that the first person 3102 is associated with a third identifier 2908 originally linked to the third person 3106. In this case, after the identifier 2908 of the first person 3102 is updated, the identifiers 2908 of the second and third people 3104, 3106 may also be updated according to steps 3208-3214.
If, at step 3212, the first descriptor 2912 cannot be used to distinguish the first person 3102 from the candidates (e.g., as was the case at time t2 in the example of
At step 3220, the tracking system 2900 determines whether the second descriptor 2912 can be used to distinguish the first person 3102 from the candidates (from step 3218) using the same or a similar approach to that described above with respect to step 3212. For example, the tracking subsystem 2900 may determine if the cosine similarity values between the second descriptor 2912 and the predetermined descriptors 2910 are greater than a threshold cosine similarity value (e.g., of 0.5). If the cosine similarity value is greater than the threshold, the second descriptor 2912 generally can be used.
If the second descriptor 2912 can be used to distinguish the first person 3102 from the candidates, the tracking subsystem 2900 proceeds to step 3222, and the tracking subsystem 2900 determines the identifier 2908 for the first person 3102 based on the second descriptor 2912 and updates the candidate list 2906 for the first person 3102 accordingly. The identifier 2908 for the first person 3102 may be determined as described above with respect to step 3214 (e.g., by calculating a cosine similarity value between a vector corresponding to the first descriptor 2912 and previously determined vectors associated with the predetermined descriptors 2910). The tracking subsystem 2900 then proceeds to step 3216 described above to update identifiers 2908 (i.e., via candidate lists 2906) of other tracked people 3104, 3106 as appropriate.
Otherwise, if the second descriptor 2912 cannot be used to distinguish the first person 3102 from the candidates, the tracking subsystem 2900 proceeds to step 3224, and the tracking subsystem 2900 determines a descriptor 2912 for all of the first person 3102 and all of the candidates. In other words, a measured descriptor 2912 is determined for all people associated with the identifiers 2908 appearing in the candidate list 2906 of the first person 3102 (e.g., as described above with respect to
Modifications, additions, or omissions may be made to method 3200 depicted in
As described above with respect to
In some embodiments, a cascade of algorithms (e.g., from more simple approaches based on relatively straightforwardly determined image features to more complex strategies involving artificial neural networks) may be employed to assign an item to the correct person. The cascade may be triggered, for example, by (i) the proximity of two or more people to the rack 112, (ii) a hand crossing into the zone (or a “virtual curtain”) adjacent to the rack (e.g., see zone 3324 of
However, in some cases, it may still be difficult or impossible to assign an item to a person even using more advance artificial neural network-based pose estimation techniques. In these cases, the tracking system 100 may store further buffer frames in order to track the item through the space 102 after it exits the rack 112. When the item comes to a stopped position (e.g., with a sufficiently low velocity), the tracking system 100 determines which person is closer to the stopped item, and the item is generally assigned to the nearest person. This process may be repeated until the item is confidently assigned to the correct person.
In this example scenario, one of the people 3302, 3304 picks up an item 3306c from weight sensor 110c, and tracking subsystem 3300 receives a trigger signal 3314 indicating an item 3306c has been removed from the rack 112. The tracking subsystem 3300 includes the client(s) 105 and server 106 described above with respect to
Following the initial inability to confidently assign item 3306c to the correct person 3302, 3304, the tracking system 100 may use a contour-dilation approach to determine whether person 3302 or 3304 picked up item 3306c.
In view 3328, contour 3302d appears to enter or touch the edge of zone 3324. Accordingly, the tracking system 100 may determine that the first person 3302, who is associated with contour 3302d, should be assigned the item 3306c. In some embodiments, after initially assigning the item 3306c to person 3302, the tracking system 100 may project an “arm segment” 3330 to determine whether the arm segment 3330 enters the appropriate zone 3312c that is associated with item 3306c. The arm segment 3330 generally corresponds to the expected position of the person's extended arm in the space occluded from view by the rack 112. If the location of the projected arm segment 3330 does not correspond with an expected location of item 3306c (e.g., a location within zone 3312c), the item is not assigned to (or is unassigned from) the first person 3302.
Another view 3332 at a further increased fourth depth shows a contour 3302e and contour 3304d. Each of these contours 3302e and 3304d appear to enter or touch the edge of zone 3324. However, since the dilated contours associated with the first person 3302 (reflected in contours 3302b-e) entered or touched zone 3324 within fewer iterations (or at a smaller depth) than did the dilated contours associated with the second person 3304 (reflected in contours 3304b-d), the item 3306c is generally assigned to the first person 3302. In general, in order for the item 3306c to be assigned to one of the people 3302, 3304 using contour dilation, a contour may need to enter zone 3324 within a maximum number of dilations (e.g., or before a maximum depth is reached). For example, if the item 3306c was not assigned by the fourth depth, the tracking system 100 may have ended the contour-dilation method and moved on to another approach to assigning the item 3306c, as described below.
In some embodiments the contour-dilation approach illustrated in
At step 3404, the tracking system 100 detects an event associated with picking up an item 33106c. In general, the event may be based on a portion of a person 3302, 3304 entering the zone adjacent to the rack 112 (e.g., zone 3324 of
At step 3406, in response to detecting the event at step 3404, the tracking system 100 determines whether more than one person 3302, 3304 may be associated with the detected event (e.g., as in the example scenario illustrated in
At step 3410, the item 3306c is assigned to the person 3302, 3304 determined to be associated with the event detected at step 3404. For example, the item 3306c may be added to a digital cart associated with the person 3302, 3304. Generally, if the action (i.e., picking up the item 3306c) was determined to have been performed by the first person 3302, the action (and the associated item 3306c) is assigned to the first person 3302, and, if the action was determined to have been performed by the second person 3304, the action (and associated item 3306c) is assigned to the second person 3304.
Otherwise, if, at step 3406, more than one person 3302, 3304 may be associated with the detected event, a select set of buffer frames of top-view images generated by sensor 108 may be stored at step 3412. In some embodiments, the stored buffer frames may include only three or fewer frames of top-view images following a triggering event. The triggering event may be associated with the person 3302, 3304 entering the zone adjacent to the rack 112 (e.g., zone 3324 of
At step 3414, a region-of-interest from the images may be accessed. For example, following storing the buffer frames, the tracking system 100 may determine a region-of-interest of the top-view images to retain. For example, the tracking system 100 may only store a region near the center of each view (e.g., region 3006 illustrated in
At step 3416, the tracking system 100 determines, using at least one of the buffer frames stored at step 3412 and a first action-detection algorithm, whether an action associated with the detected event was performed by the first person 3302 or the second person 3304. The first action-detection algorithm is generally configured to detect the action based on characteristics of one or more contours in the stored buffer frames. As an example, the first action-detection algorithm may be the contour-dilation algorithm described above with respect to
At step 3418, the tracking system 100 determines whether results of the first action-detection algorithm satisfy criteria indicating that the first algorithm is appropriate for determining which person 3302, 3304 is associated with the event (i.e., picking up item 3306c, in this example). For example, for the contour-dilation approach described above with respect to
However, if the criteria are not satisfied at step 3418, the tracking system 100 proceeds to step 3420 and uses a different action-detection algorithm to determine whether the action associated with the event detected at step 3404 was performed by the first person 3302 or the second person 3304. This may be performed by applying a second action-detection algorithm to at least one of the buffer frames selected at step 3412. The second action-detection algorithm may be configured to detect the action using an artificial neural network. For example, the second algorithm may be a pose estimation algorithm used to determine whether a pose of the first person 3302 or second person 3304 corresponds to the action (e.g., as described above with respect to
At step 3422, the tracking system 100 may determine whether the second algorithm satisfies criteria indicating that the second algorithm is appropriate for determining which person 3302, 3304 is associated with the event (i.e., with picking up item 3306c). For example, if the poses (e.g., determined from skeletons 3302f and 3304e of
Modifications, additions, or omissions may be made to method 3400 depicted in
As described above, the first action-detection algorithm of step 3416 may involve iterative contour dilation to determine which person 3302, 3304 is reaching to pick up an item 3306a-c from rack 112.
If at step 3502, a contour is detected, the tracking system proceeds to step 3508 and determines whether a portion of the detected contour overlaps, enters, or otherwise contacts the zone adjacent to the rack 112 (e.g., zone 3324 illustrated in
At step 3510, the tracking system 100 determines the number of iterations (i.e., the number of times step 3506 was performed) before the contour was determined to have entered the zone adjacent to the rack 112 at step 3508. At step 3512, this number of iterations is compared to the number of iterations for a second (i.e., different) detected contour. For example, steps 3502 to 35010 may be repeated to determine the number of iterations (at step 3506) for the second contour to enter the zone adjacent to the rack 112. If the number of iterations is less than that of the second contour, the item is assigned to the first person 3302 at step 3514. Otherwise, the item may be assigned to the second person 3304 at step 3516. For example, as described above with respect to
In some embodiments, a dilated contour (i.e., the contour generated via two or more passes through step 3506) must satisfy certain criteria in order for it to be used for assigning an item. For instance, a contour may need to enter the zone adjacent to the rack within a maximum number of dilations (e.g., or before a maximum depth is reached), as described above. As another example, a dilated contour may need to include less than a threshold number of pixels. If a contour is too large it may be a “merged contour” that is associated with two closely spaced people (see
Modifications, additions, or omissions may be made to method 3500 depicted in
As described above, in some cases, an item 3306a-c cannot be assigned to the correct person even using a higher-level algorithm such as the artificial neural network-based pose estimation described above with respect to
Tracking view 3612 of
More specifically, the tracking system 100 may determine, at each stopped time, a first distance 3626 between the stopped item 3606 and the first person 3604 and a second distance 3628 between the stopped item 3606 and the second person 3610. Using these distances 3626, 3628, the tracking system 100 determines whether the stopped position of the item 3606 in the first frame is nearer the first person 3604 or nearer the second person 3610 and whether the distance 3626, 3628 is less than a threshold distance 3630. At the first stopped time of view 3612, both distances 3626, 3628 are less than the threshold distance 3630. Thus, the tracking system 100 cannot reliably determine which person 3604, 3610 should be assigned the item 3606. In contrast, at the second stopped time of view 3614, only the first distance 3626 is less than the threshold distance 3630. Therefore, the tracking system may assign the item 3606 to the first person 3604 at the second stopped time.
At step 3706, the tracking system 100 tracks, in the stored frames, a position of the item 3606. The position may be a local pixel position associated with the sensor 108 (e.g., determined by client 105) or a global physical position in the space 102 (e.g., determined by server 106 using an appropriate homography). In some embodiments, the item 3606 may include a visually observable tag that can be viewed by the sensor 108 and detected and tracked by the tracking system 100 using the tag. In some embodiments, the item 3606 may be detected by the tracking system 100 using a machine learning algorithm. To facilitate detection of many item types under a broad range of conditions (e.g., different orientations relative to the sensor 108, different lighting conditions, etc.), the machine learning algorithm may be trained using synthetic data (e.g., artificial image data that can be used to train the algorithm).
At step 3708, the tracking system 100 determines whether a velocity 3622 of the item 3606 is less than a threshold velocity 3624. For example, the velocity 3622 may be calculated, based on the tracked position of the item 3606. For instance, the distance moved between frames may be used to calculate a velocity 3622 of the item 3606. A particle filter tracker (e.g., as described above with respect to
At step 3710, the tracking system 100 determines, in the identified frame, a first distance 3626 between the stopped item 3606 and a first person 3604 and a second distance 3628 between the stopped item 3606 and a second person 3610. Using these distances 3626, 3628, the tracking system 100 determines, at step 3712, whether the stopped position of the item 3606 in the first frame is nearer the first person 3604 or nearer the second person 3610 and whether the distance 3626, 3628 is less than a threshold distance 3630. In general, in order for the item 3606 to be assigned to the first person 3604, the item 3606 should be within the threshold distance 3630 from the first person 3604, indicating the person is likely holding the item 3606, and closer to the first person 3604 than to the second person 3610. For example, at step 3712, the tracking system 100 may determine that the stopped position is a first distance 3626 away from the first person 3604 and a second distance 3628 away from the second person 3610. The tracking system 100 may determine an absolute value of a difference between the first distance 3626 and the second distance 3628 and may compare the absolute value to a threshold distance 3630. If the absolute value is less than the threshold distance 3630, the tracking system returns to step 3706 and continues tracking the item 3606. Otherwise, the tracking system 100 is greater than the threshold distance 3630 and the item 3606 is sufficiently close to the first person 3604, the tracking system proceeds to step 3714 and assigns the item 3606 to the first person 3604. Modifications, additions, or omissions may be made to method 3700 depicted in
The processor 3802 comprises one or more processors operably coupled to the memory 3804. The processor 3802 is any electronic circuitry including, but not limited to, state machines, one or more central processing unit (CPU) chips, logic units, cores (e.g. a multi-core processor), field-programmable gate array (FPGAs), application specific integrated circuits (ASICs), or digital signal processors (DSPs). The processor 3802 may be a programmable logic device, a microcontroller, a microprocessor, or any suitable combination of the preceding. The processor 3802 is communicatively coupled to and in signal communication with the memory 3804. The one or more processors are configured to process data and may be implemented in hardware or software. For example, the processor 3802 may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. The processor 3802 may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, processor registers that supply operands to the ALU and store the results of ALU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, registers and other components.
The one or more processors are configured to implement various instructions. For example, the one or more processors are configured to execute instructions to implement a tracking engine 3808. In this way, processor 3802 may be a special purpose computer designed to implement the functions disclosed herein. In an embodiment, the tracking engine 3808 is implemented using logic units, FPGAs, ASICs, DSPs, or any other suitable hardware. The tracking engine 3808 is configured operate as described in
The memory 3804 comprises one or more disks, tape drives, or solid-state drives, and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory 3804 may be volatile or non-volatile and may comprise read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), dynamic random-access memory (DRAM), and static random-access memory (SRAM).
The memory 3804 is operable to store tracking instructions 3810, homographies 118, marker grid information 716, marker dictionaries 718, pixel location information 908, adjacency lists 1114, tracking lists 1112, digital carts 1410, item maps 1308, disparity mappings 7308, and/or any other data or instructions. The tracking instructions 3810 may comprise any suitable set of instructions, logic, rules, or code operable to execute the tracking engine 3808.
The homographies 118 are configured as described in
The network interface 3806 is configured to enable wired and/or wireless communications. The network interface 3806 is configured to communicate data between the device 3800 and other, systems, or domain. For example, the network interface 3806 may comprise a WIFI interface, a LAN interface, a WAN interface, a modem, a switch, or a router. The processor 3802 is configured to send and receive data using the network interface 3806. The network interface 3806 may be configured to use any suitable type of communication protocol as would be appreciated by one of ordinary skill in the art.
As described above, an item may be assigned to an appropriate person based on proximity to a rack 112 and activation of a weight sensor 110 on which the item is known to be placed (see, e.g.,
To handle instances where a weight sensor 110 is not present, reduce reliance on item tracking-based approaches to item assignment, and decrease the consumption of processing resources associated with continued item tracking and identification, a new approach, which is described further below with respect to
In one embodiment, the identifier 3928 of the person 3902 may be a local identifier that is assigned by a sensor 108. In this case, the tracking system 100 may use a global identifier that is associated with the person 3902. The tracking system 100 is configured to store associations between local identifiers from different sensors 108 and global identifiers for a person. For example, the tracking system 100 may be configured to receive a local identifier for a person and identifiers for items the person is removing from a rack 112. The tracking system 100 uses a mapping (e.g. a look-up table) to identify a global identifier for a person based on their local identifier from a sensor 108. After identifying the global identifier for the person, the tracking system 100 may update the digital cart 1410 that is associated with the person by adding or removing items from their digital cart 1410.
In the example scenario of
If the person 3902 is determined to be within the threshold distance 3912 of the rack 112, the tracking subsystem 3910 may begin receiving angled-view images 3918 captured by the angled-view sensor 3914. For example, after the person 3902 is determined to be within the threshold distance 3912 of the rack 112, the tracking subsystem 3910 may instruct the angled-view sensor 3914 to begin capturing angled-view images 3918. As such, the top-view images 3908 may be used to determine when a proximity trigger (e.g., the proximity trigger 4002 of
An angled-view image 3918 captured at time t2 includes a representation of the person 3902 and the portion of the rack 112 included in the field-of-view 3916 of the angled-view sensor 3914. As described in greater detail below with respect to
In some embodiments, one or more of the shelves 3920a-c of the rack 112 includes a visible marker 3922a-c (e.g., a series of visible shapes or any other marker at a predefined location on the shelf 3920a-c). The tracking subsystem 3910 may detect the markers 3922a-c in angled-view image 3918 of the shelves 3920a-c and determine the pixel positions of the shelves 3920a-c in the images 3918 based on these markers 3922a-c. In some cases, pixel positions of the shelves 3920a-c in the images 3918 are predefined (e.g., without using markers 3922a-c). For example, the tracking subsystem 3910 may determine a predefined shelf position in the images 3918 for one or more of the shelves 3920a-c. This information may facilitate improved detection of an interaction between a person 3902 and a given shelf 3920a-c, as described further below with respect to
In some embodiments, the rack 112 includes one or more weight sensors 110a-i. However, efficient and reliable assignment of item(s) 3924a-i to a person 3902 can be achieved without weight sensors 110a-i. As such, in some embodiments, the rack 112 does not include weight sensors 110a-i. In embodiments in which the rack 112 includes one or more weight sensors 110a-i, each weight sensor 110a-i may store items 3924a-i of the same type. For instance, a first weight sensor 110a may be associated with items 3924a of a first type (e.g., a particular brand and size of product), a second weight sensor 110b may be associated with items 3924b of a second type, and so on (see
An example operation of the tracking subsystem 3910 may begin with the receipt of a proximity trigger 4002. The proximity trigger 4002 may be initiated based on a proximity of the person 3902 to the rack 112. For example, top-view images 3908 captured by the top-view sensor 3904 shown in
a. Event Trigger and Item Localization
Following the proximity trigger 4002, the tracking subsystem 3910 may begin to implement the item localization/event trigger instructions 4004. The item localization/event trigger instructions 4004 generally facilitate the detection of an event associated with an item 3924a-i being interacted with by the person 3902 (e.g., detecting vibrations on the rack 112 using an accelerometer, detecting weight changes on weight sensor 110, detecting an item 3924a-i being removed from or placed on a shelf 3920a-c of the rack 112, etc.) and/or the identification of an approximate location 4008 of the interaction (e.g., the wrist positions 4102 and/or aggregated wrist position 4106 illustrated in
The item localization/event trigger instructions 4004 may cause the tracking subsystem 3910 to begin receiving angled-view images 3918 of the rack 112 (e.g., if such images 3918 are not already being received). The tracking subsystem 3910 may identify a portion of the angled-view images 3918 to analyze in order to determine whether a shelf-interaction event has occurred (e.g., to determine whether the person 3902 likely interacted with an item 3924a-i stored on the rack 112. This portion of the angled-view images 3918 may include image frames from a timeframe associated with a possible person-shelf, or person-item, interaction. The portion of the angled-view images 3918 may be identified based on a signal from a weight sensor 110a-i indicating a change in weight. For instance, a decrease in weight may indicate an item 3924a-i may have been removed from the rack 112 and an increase in weight may indicate an item 3924a-i was placed on the rack 112. The time at which a change in weight occurs may be used to determine the timeframe associated with the interaction. Detection of a change of weight is described in greater detail above with respect to
An example depiction of an angled-view image 3918 from one of the identified frames is illustrated in
The tracking subsystem 3910 may then determine an aggregated wrist position 4106 based on the set of pixel positions 4102. For example, the aggregated wrist position 4106 may correspond to a maximum depth into the rack 112 to which the person 3902 reached to possibly interact with an item 3924a-i. This maximum depth may be determined, at last in part, based on the angle, or orientation, of the angled-view camera 3914 relative to the rack 112. For instance, in the example of
Referring to
The item localization/event trigger instructions 4004 may further determine an event location 4008. The event location 4008 may include an image region that is associated with the detected shelf 3920a-c interaction, as illustrated by the dashed-line region in
As an example, the tracking subsystem 3910 may determine at least one image 3918 associated with the person 3902 removing an item 3924a-i from the rack 112. The tracking subsystem 3910 may determine a region-of-interest (e.g., region-of interest 4202 described with respect to
As another example, the tracking subsystem 3910 may determine, based on the aggregated wrist position 4106 and/or the event location region 4008, candidate items that may have been removed from the rack by the person 4008. For example, the candidate items may include a subset of all the items 3924a-i stored on the shelves 3920a-c of the rack 112 that have predefined locations (e.g., see
Referring again to
As is described further below, the data feed handling and integration instructions 4010 also integrate the information received from each of the item localization/event trigger instructions 4004, the item identification instructions 4012, and the activity recognition instructions 4016 to determine an appropriate item assignment 4020. The item assignment 4020 generally refers to an indication of an item 3924a-i interacted with by the person 3920 (e.g., based on the item identifier 3912 determined by the item identification instructions 4012) and an indication of whether the item 3924a-i was removed from the rack 112 or placed on the rack 112 (e.g., based on the item removed or replaced 4018 determined by the activity recognition instructions 4016). The item assignment 4020 is used to appropriately update the person's digital shopping cart 3926 by appropriately adding or removing items 3924a-i. For example, the digital shopping cart 3926 may be updated to include the appropriate quantity 3932 for the item identifier 3930 of the item 3924a-i.
b. Object Detection Based on Wrist-Area Region-of-Interest
Still referring to
Following determination of the wrist position 4102, the tracking subsystem 3910 then determines, in the image 4100, a region-of-interest 4202 within the image 4200 based on the wrist position 4102. The region-of-interest 4202 illustrated in
The tracking subsystem 3910 may identify the item 3924a by determining an item identifier 4014 (e.g., the identifier 3930 of
Since decreasing the number of candidate items can facilitate more rapid item identification, the event location 4008 or other item position information may be used to narrow the search space for correctly identifying the item 3924a. For example, prior to identifying the item 3924a with which the person 3902 interacted, the tracking subsystem 3910 may determine candidate items that are known to be located near the region-of-interest 4202, near the aggregated wrist position 4106 described above with respect to
c. Detection of Object Removal and Replacement
After the tracking subsystem 3910 has determined that the person 3902 has interacted with the item 3924a, further actions may be needed to determine whether the item 3924a was removed from the rack 112 or placed on the rack 112. For instance, the tracking subsystem 3910 may not have reliable information about whether the item 3924a was taken from the rack 112 or placed on the rack 112. In cases where the item 3924a was on a weight sensor 110a, a change of weight associated with the interaction detected by the tracking subsystem 3910 may be used to determine whether the item 3924a was removed or placed on the rack 112. For example, a decrease in weight at the weight sensor 3910a may indicate the item 3924a was removed from the rack, while an increase in weight may indicate the item 3924a was placed on the rack 112. In cases where there is no weight sensor 3910a or when a weight change is insufficient to provide reliable information about whether the item 3924a was removed from or placed on the rack 112 (e.g., if the magnitude of the change of weight does not correspond to an expected weight change for the item 3924a), the tracking subsystem 3910 may track the item 3924a through the space 102 after it exits the rack 112 (see
Referring again to
The data feed handling and integration instructions may use the indication 4018 of whether the item 3924a was removed or replaced on the rack 112 to determine the item assignment 4020. For example, if it is determined that the item 3924a was removed from the rack 112, the item 3924a may be assigned to the person 3902 (e.g., to the digital shopping cart 3926 of the person 3902). Otherwise, if it is determined that the item was placed on the rack 112, the item 3924a may be unassigned from the person 3902. For instance, if the item 3924a was already present in the person's digital shopping cart 3926, then the item 3924a may be removed from the digital shopping cart 3926.
Detection of Object Removal and Replacement from a Shelf
The tracking subsystem 3910 also determines a second image 4302b corresponding to a second time 4304b after the person 3902 interacted with the item 3924a. For example, the tracking subsystem 3910 may determine the second time 4304b based on the interaction time associated with the person 3902 interacting with the rack 112, the shelf 3920a, and/or the item 3924a, described above. The second time 4304b may be a time that is after the interaction time. For example, the second time 4304b may be the interaction time plus a predefined time interval (e.g., of several to tens of seconds). The second image 4302b is an angled-view image 3918 at or near the second time 4304b (e.g., with a timestamp corresponding approximately to the second time 4304b).
The tracking subsystem 3910 then compares the first and second images 4302a,b to determine whether the item 3924a was added to or removed from the rack 112. The tracking subsystem 3910 may first determine a portion 4306a of the first image 4302a and a portion 4306b of the second image 4302b that each correspond to a region around the item 3924a in the corresponding image 4302a,b. For example, the portions 4306a,b may each correspond to a region-of-interest (e.g., region-of-interest 4202 of
The tracking subsystem 3910 provides the portion 4306a of the first image 4302a and the portion 4306b of the second image 4302b to a neural network 4308 trained to determine a probability 4310, 4314 corresponding to whether the item 3924a has been added or removed from the rack 112 based on a comparison of the two input images 4306a,b. For example, the neural network 4308 may be a residual neural network. The neural network 4308 may be trained using previously obtained images of the item 3924a and/or similar items. If a high probability 4310 is determined (e.g., a probability 4310 that is greater than or equal to a threshold value), the tracking subsystem 3910 generally determines that the item 3924a was returned 4312, or added to, the rack 112. If a low probability 4314 is determined (e.g., a probability 4314 that is less than the threshold value), the tracking subsystem 3910 generally determines that the item 3924a was removed 4316 from the rack 112. In the example of
At step 4404, the wrist position 4102 (e.g., a pixel position corresponding to the location of the wrist of the person 3902 in images 3918) of the person 3902 is tracked. For example, the tracking subsystem 3910 may perform pose estimation (e.g., as described with respect to
At step 4406, an aggregated wrist position 4106 is determined. The aggregated wrist position 4106 may be determined based on the set of wrist positions 4102 determined at step 4404. For example, the aggregated wrist position 4106 may correspond to a maximum depth into the rack 112 to which the person 3902 reached to interact with an item 3924a-i. This maximum depth may be determined, at last in part, based on the angle of the angled-view camera 3914 relative to the rack 112. For instance, in the example of
At step 4408, the tracking subsystem 3910 determines if an event (e.g., a person-rack interaction event) is detected. For example, the tracking subsystem 3910 may determine whether the aggregated wrist position 4106 is within a threshold distance of a predefined location of an item 3924a-i. If the aggregated wrist position 4106 is within the threshold distance of a predefined position of an item 3924a-i, an event may be detected. In some embodiments, the tracking subsystem 3910 may determine if an event is detected based on a change of weight indicated by a weight sensor 3910a-i. If a change of weight is detected, an event may be detected. If an event is not detected, the tracking subsystem 3910 may return to wait for another proximity trigger 4002 to be detected at step 4402. If an event is detected, the tracking subsystem 3910 generally proceeds to step 4410.
At step 4410, candidate items 3924a-i may be determined based on the aggregated wrist position 4106. For example, the candidate items may include a subset of all the items 3924a-i stored on the shelves 3920a-c of the rack 112 that have predefined locations (e.g., see
At step 4412, the tracking subsystem 3910 may determine the identity of the interacted with item 3924a-i (e.g., item 3924a of the examples of images
At step 4414, the tracking subsystem 3910 determines if further item 3924a-i identification is appropriate. For example, the tracking subsystem 3910 may determine whether the identification at previous step 4412 satisfies certain reliability criteria. For instance, if the highest probability determined for candidate items is less than a threshold value, the tracking subsystem 3910 may determine that further identification is needed. As another example, if multiple candidate items were likely interacted with by the person 3902 (e.g., if probabilities for multiple candidate items were greater than a threshold value), then further identification may need to be performed. If a change in weight was received when the person 3902 interacted with an item 3924a-i, the tracking subsystem 3910 may compare a predefined weight for each candidate item to the change in weight. If the change in weight matches one of the predefined weights, then no further identification may be needed. However, if the change in weight does not match one of the predefined weights of the candidate items, then further identification may be needed. If further identification is needed, the tracking subsystem 3910 proceeds to step 4416. However, if no further identification is needed, the tracking subsystem 3910 may proceed to step 4420.
At steps 4416 and 4418, the tracking subsystem 3910 performs object recognition-based item identification. For example, at step 4416, the tracking subsystem 3910 may determine a region-of-interest 4202 associated with the person-rack interaction. As described above, the region-of-interest 4202 includes a subset of an image 3918, such that object recognition may be performed more efficiently within this subset of the entire image 3918. As described above, the region-of-interest 4202 has a size 4204 that is sufficient to capture a substantial portion of the item 3924a-i to identify the item 3924a-i using an image recognition algorithm at step 4418. The size 4204 of the region-of-interest 4202 may be a predetermined value (e.g., corresponding to a predefined number of pixels in the image 3918 or a predefined physical length in the space 102). In some embodiments, the region-of-interest 4202 has a size that is based on features of the person 3902, such as the shoulder width 4206 of the person 3902, the arm length 4208 of the person 3902, the height 4210 of the person 3902, and/or value derived from one or more of these or other features.
At step 4418, the tracking subsystem 3910 identifies the item 3924a-i within the region-of-interest 4202 using an object recognition algorithm. For example, the image of the item 3924a-i within the region-of-interest 4202 may be compared to images of candidate items determined at step 4410. In some cases, for each candidate item, a probability is determined that the candidate item is the item 3924a-i. The probability for each candidate item may be determined using an object detection algorithm 3934. The object detection algorithm 3934 may employ a neural network or a method of machine learning (e.g. a machine learning model). The object detection algorithm 3934 may be trained using the range of items 3924a-i expected to be presented on the rack 112. For example, the object detection algorithm 3934 may be trained using previously obtained images of products offered for sale on the rack 112. Generally, an item identifier 4014 for the candidate item with the largest probability value (e.g., that is at least a threshold value) is assigned to the item 3924a-i.
At steps 44204422, the tracking subsystem 3910 may determine whether the identified item 3924a-i was removed from or placed on the rack 112. For example, at step 4420, the tracking subsystem 3910 may determine a first image 4302a before the interaction between the person 3902 and the item 3924a-i and a second image 4302b after the interaction between the person 3902 and the item 3924a-i. At step 4422, the tracking subsystem 3910 determines if the item 3924a-i was removed from or placed on the rack 112. This determination may be based on a comparison of the first and second images 4302a,b, as described above with respect to
At step 4424, the tracking subsystem 3910 assigns the item 3924a-i to the person 3902. For example, the digital shopping cart 3926 may be updated to include the appropriate quantity 3932 of the item 3924a-i with the item identifier 3930 determined at step 4412 or 4418. At step 4426, the tracking subsystem 3910 determines if the item 3924a-i was already assigned to the person 3902 (e.g., if the digital shopping cart 3926 includes an entry for the item identifier 3930 determined at step 4412 or 4418). If the item 3924a-i was already assigned to the person 3902, then the tracking subsystem 3910 proceeds to step 4428 to unassigned the item 3924a-i from the person 3902. For example, the tracking subsystem 3910 may remove a unit of the item 3924a-i from the digital shopping cart 3926 of the person 3902 (e.g., by decreasing the quantity 3932 in the digital shopping cart 3926). If the item 3924a-i was not already assigned, the tracking subsystem 3910 proceeds to step 4420 and does not assign the item 3924a-i to the person 3902 (e.g., because the person 3902 may have touched and/or moved the item 3924a-i on the rack 112 without necessarily picking up the item 3924a-i).
In some cases, the space 102 (see
This disclosure overcomes these and other technical problems of previous technology by facilitating the identification of self-serve beverages and the assignment of self-serve beverages to the correct person using captured video/images of interactions between people and self-serve beverage machines. This allows the automatic assignment of self-serve beverages to a person's digital shopping cart without human intervention. Thus, a person may be assigned and ultimately charged for a beverage without ever interacting with a cashier, a self-checkout device, or other application. An example of a system 4500 for detecting and assigning beverages is illustrated in
The beverage machine 4504 is generally any device operable to dispense a beverage 4540 to a person 4502. For example, the beverage machine 4504 may be a coffee pot resting on a hot plate, a manual coffee dispenser (as illustrated in the example of
In some cases, a beverage machine 4504 may be configured to prepare a beverage 4540 based on a user's selection. For instance, such a beverage machine 4504 may include a user interface (e.g., buttons, a touchscreen, and/or the like) for selecting a beverage type and size along with one or more receptacles that hold beverage precursors (e.g., water, coffee beans, liquid and/or powdered creamer, sweetener(s), flavoring syrup(s), and the like). Such a beverage machine 4504 may include a device computer 4514, which may include one or more application programming interfaces (APIs) 4516, which facilitate communication of information about the usage of the beverage machine 4504 to the beverage assignment subsystem 4530. For example, the APIs 4516 may provide a device trigger 4518 to the beverage assignment subsystem 4530. The device trigger 4518 may include information about the time at which a beverage 4540 was dispensed, the type of beverage dispensed, and/or the amount of beverage 4540 dispensed. Similar to the flow trigger 4512, the device trigger 4518 may also be used to select images 4528 from appropriate times for assigning the beverage to the correct person 4502. While the example of
The angled-view sensor 4520 is configured to generate angled-view images 4528 (e.g., color and/or depth images) of at least a portion of the space 102. The angled-view sensor 4520 generates angled-view images 4528 for a field-of-view 4522 which includes at least a zone 4524 encompassing the dispensing mechanism 4506 of the beverage machine 4504 and a zone 4526 which encompasses a region where a cup 4508 is placed to receive dispensed beverage 4540. The angled-view sensor 4520 may include one or more sensors, such as a color camera, a depth camera, an infrared sensor, and/or the like. The angled-view sensor 4520 may be the same as or similar to the angled-view sensor 108b of
The angled-view images 4528 are provided to the beverage assignment subsystem 4530 (e.g., the server 106 and/or client(s) 105 described above) and used to detect the person 4502 dispensing beverage 4540 into a cup 4508, identify the dispensed beverage 4540, and assign the beverage 4540 to the person 4502. For example, the beverage assignment subsystem 4530 may update the digital shopping cart 4538 associated with the person 4502 to include an identification of the beverage 4540 (e.g., a type and amount of the beverage 4540). The digital shopping cart 4538 may be the same or similar to the digital shopping carts (e.g., digital cart 1410 and/or digital shopping cart 3926) described above with respect to
The beverage assignment subsystem 4530 may determine a beverage assignment 4536 using interaction detection 4532 and pose estimation 4534, as described in greater detail below with respect to
In other cases, such as the example illustrated in
a. Image-Based Detection and Assignment
At step 4604, the beverage assignment subsystem 4530 detects, based on the received angled-view images 4528 an event associated with an obj ect entering one or both of the first zone 4524 and the second zone 4526. In some embodiments, the beverage assignment subsystem 4530 may identify a subset of the images 4528 that are associated with the detected event and which should be analyzed in subsequent steps to determine the beverage assignment 4536 (see
At step 4606, the beverage assignment subsystem 4530 may perform pose estimation (e.g., using any appropriate pose estimation algorithm) to determine a pose of the person 4502. For example, a skeleton may be determined using a pose estimation algorithm (e.g., as described above with respect to the determination of skeletons 3302e and 3302f shown in
At step 4608, the beverage assignment subsystem 4530 may determine an identity of the person 4502 interacting with the beverage machine 4504. For example, the person 4502 may be identified based on features and/or descriptors, such as height, hair color, clothing properties, and/or the like of the person 4502 (see, e.g.,
At step 4610, the beverage assignment subsystem 4530 determines, in a first one or more images 4528 associated with a start of the detected event (e.g., from the first set of images 4528 determined at step 4604), that both a hand of the person 4502 enters the first zone 4524 and the cup 4508 is placed in the second zone 4526. For example, the position of the hand of the person 4502 may be determined from the pose determined at step 4506. If both of (1) the hand of the person 4502 entering the first zone 4524 and (2) the cup 4508 being placed in the second zone 4526 are not detected at step 4610, the beverage assignment subsystem 4530 may return to the start of method 4600 to continue receiving images 4528. If the both of (1) the hand of the person 4502 entering the first zone 4524 and (2) the cup 4508 being placed in the second zone 4526 are detected, the beverage assignment subsystem 4530 proceeds to step 4612.
At step 4612, the beverage assignment subsystem 4530 determines if, at a subsequent time, the cup 4508 is removed from the second zone 4526. For example, the beverage assignment subsystem 4530 may determine if the cup 4508 is no longer detected in the second zone 4526 in images 4528 corresponding to a subsequent time to the event detected at step 4604 and/or if movement of the cup 4508 out of the second zone 4526 is detected across a series of consecutive images 4528 (e.g., corresponding to the person 4502 moving the cup 4508 out of the second zone 4526). If the cup 4508 is not removed from the zone 4526, the beverage assignment subsystem 4530 may return to the start of the method 4600 to detect subsequent person-beverage machine interaction events. If the cup 4508 is removed from the zone 4526, the beverage assignment subsystem 4530 proceeds to step 4614.
At step 4614, following detecting that the cup 4508 is removed from the second zone 4526, the beverage assignment subsystem 4530 determines whether the cup 4508 was in the second zone 4526 for at least a threshold length of time. For example, the beverage assignment subsystem 4530 may determine a length of time during which the cup 4508 remained in the second zone 4526. If the determined length of time is at least a threshold time, the beverage assignment subsystem 4530 may proceed to step 4616 to assign the beverage 4540 to the person 4502 whose hand entered the first zone 4524. If the cup 4508 did not remain in in the second zone 4526 for at least the threshold time, the beverage assignment subsystem 4530 may return to the start of the method 4600, and the beverage 4540 is not assigned to the person 4502 whose hand entered the first zone 4524.
At step 4616, the beverage assignment subsystem 4530 assigns the beverage 4540 to the person 4502 whose hand entered the first zone 4524, as determined at step 4610. For example, the beverage 4540 may be assigned to the person 4502 by adding an indicator of the beverage 4540 to the digital shopping cart 4538 associated with the person 4502. The beverage assignment subsystem 4530 may determine properties of the beverage 4540 and include these properties in the digital shopping cart 4538. For example, the beverage assignment subsystem 4530 may determine a type of the beverage 4540. The type of the beverage 4540 may be predetermined for the beverage machine 4504 that is viewed by the angled-view camera 4520 which views the beverage machine 4504. For instance, the angled-view images 4528 may be predefined as images 4528 of a beverage machine 4504 known to dispense a beverage of a given type (e.g., coffee). A size of the beverage 4540 may be determined based on the size of the cup 4508 detected in the images 4528.
In one embodiment, the beverage assignment subsystem 4530 may determine a beverage type based on the type of cup that is placed in the second zone 4526. For example, the beverage assignment subsystem 4530 may determine the beverage type is coffee when a coffee cup or mug is placed in the second zone 4526. As another example, the beverage assignment subsystem 4530 may determine the beverage type is a frozen drink or a soft drink when a particular type of cup is placed in the second zone 4526. In this example, the cup may have a particular color, size, shape, or any other detectable type of feature.
b. Detection and Assignment for “Smart” Beverage Machines
The method 4700 may begin at step 4702 where a flow trigger 4512 and/or a device trigger 4518 are received. For example, a flow trigger 4518 may be provided based on a measured flow of the beverage 4540 by a flow meter 4510 out of the dispensing mechanism 4506. The flow trigger 4512 may include a time when the flow of the beverage 4540 started and/or stopped, a volume of the beverage 4540 that was dispensed, and/or a type of the beverage 4540 dispensed. A device trigger 4518 may be communicated by a device computer 4514 of the beverage machine 4504 (e.g., from an API 4516 of the device computer 4514), as described above with respect to
At step 4704, an image feed comprising the angled-view images 4528 is received by the beverage assignment subsystem 4530. The angled-view images 4528 may begin to be received in response to the trigger 4512, 4518. For example, the angled-view sensor 4520 may become active and begin capturing and transmitting angled-view images 4528 following the trigger 4512, 4518. In some embodiments, the angled-view images 4528 may be received after the person 4502 is within a threshold distance of the beverage machine 4502. For instance, top-view images captured by sensors 108 within the space 102 (see
At step 4706, the beverage assignment subsystem 4530 determines angled-view images 4528 that are associated with the start and end of a beverage-dispensing event associated with the trigger 4512, 4518. For example, the beverage assignment subsystem 4530 may determine a first one or more images 4528 associated with the start of the beverage 4540 being dispensed by detecting a hand of the person 4502 entering the zone 4524 in which the dispensing mechanism 4506 of the beverage machine 4504 is located. In some cases, the image(s) 4528 associated with the start of the beverage 4540 being dispensed by detecting that the person 4502 is within a threshold distance of the beverage machine 4504, determining a hand or wrist position of the person 4502 using pose estimation algorithm (e.g., as described above with respect to the determination of skeletons 3302e and 3302f shown in
At step 4708, the beverage assignment subsystem 4530 determines, based on the images 4528 identified at step 4706 associated with the start of the beverage being dispensed, a first identifier of the person 4502 whose hand entered the zone 4524. For example, the person 4502 may be identified based on features and/or descriptors, such as height, hair color, clothing properties, and/or the like of the person 4502 (see, e.g.,
At step 4712, the beverage assignment subsystem 4530 determines if the first identifier from step 4708 is the same as the second identifier from step 4710. In other words, the beverage assignment subsystem 4530 determines whether the same person 4502 began dispensing the beverage 4540 and removed the cup 4508 containing the beverage 4540 after the beverage 4540 was dispensed. If the first identifier from step 4708 is the same as the second identifier from step 4710, the beverage assignment subsystem 4530 proceeds to step 4714 and assigns the beverage 4540 to the person 4502. However, if the first identifier from step 4708 is not the same as the second identifier from step 4710, the beverage assignment subsystem 4530 may proceed to step 4716 to flag the event for further review and/or beverage assignment. For example, the beverage assignment subsystem 4530 may track movement of the person 4502 and/or cup 4508 through the space 102 after the cup 4508 is removed from zone 4526 to determine if the beverage 4540 should be assigned to the person 4502, as described above with respect to
At step 4714, the beverage 4540 is assigned to the person 4502. For example, the beverage 4540 may be assigned to the person 4502 by adding an indicator of the beverage 4540 to the digital shopping cart 4538 associated with the person 4502. The beverage assignment subsystem 4530 may determine properties of the beverage 4540 and include these properties in the digital shopping cart 4538. For example, the properties may be determined based on the trigger 4512, 4518. For instance, a device trigger 4518 may include an indication of a drink type and size that was dispensed, and the assigned beverage 4540 may include these properties. In some cases, before assigning the beverage 4540 to the person 4502, the beverage assignment subsystem 4530 may check that a time interval between the start of the beverage 4540 being dispensed and the end of the beverage 4540 being dispensed is at least a threshold value (e.g., to verify that the dispensing process lasted long enough for the beverage 4540 to have been dispensed).
The faceplate support 4802 comprises a plurality of threads 4810 and an opening 4812. The threads 4810 of the faceplate support 4802 are configured to engage the threads 4808 of the mounting ring 4804 such that the faceplate support 4802 can be threaded into the mounting ring 4804. Threading the faceplate support 4802 to the mounting ring 4804 couples the two components together to secure the faceplate support 4802 within the mounting ring 4804. The opening 4812 is sized and shaped to allow a faceplate 5102 and sensor 108 to be installed within the opening 4812. Additional information about the faceplate 5102 is described below in
In this configuration, the faceplate 5102 may be allowed to rotate about the opening 4812 of the faceplate support 4802. This configuration allows the field-of-view of the sensor 108 to be rotated by rotating the faceplate 5102 after the sensor 108 has been installed onto the faceplate 5102. In some embodiments, the faceplate support 4802 may be configured to allow the faceplate 5102 to freely rotate about the opening 4812 of the faceplate support 4802. In other embodiments, the faceplate support 4802 may be configured to allow the faceplate 5102 to rotate to fixed angles about the opening 4812 of the faceplate support 4802.
In some embodiments, the faceplate support 4802 may further comprise additional threads 5004 that are configured to allow additional components to be coupled to the faceplate support 4802. For example, a housing or cover may be coupled to the faceplate support 4802 by threading onto the threads 5004 of the faceplate support 4802. In other examples, any other suitable type of component may be coupled to the faceplate support 4802.
In this example, the faceplate further comprises a support 5202. The support 5202 is an interface for coupling additional components. For example, one or more supports 5202 may be coupled to printed circuit boards 5204, microprocessors, power supplies, cables, or any other suitable type of component that is associated with the sensor 108. Here, the support 5202 is coupled to a printed circuit board 5204 (e.g. a microprocessor) for the sensor 108. In
In this example, rails 5604 are configured to allow a sensor assembly 5602 to be repositioned along an x-axis of the global plane 104. Rails 5606 are configured to allow a sensor assembly 5602 to be repositioned along a y-axis of the global plane 104. In one embodiment, the rails 5604 and 5606 may comprise a plurality of notches or recesses that are configured to hold a sensor assembly 5602 at a particular location. For example, a sensor assembly 5602 may comprise one or more pins or interfaces that are configured to engage a notch or recess of a rail. In this example, the position of the sensor assembly 5602 becomes fixed with respect to global plane 104 when the sensor assembly 5602 is coupled to the rails 5604 and 5604 of the adjustable positioning system 5600. The sensor assembly 5602 may be repositioned at a later time by decoupling the sensor assembly 5602 from the rails 5604 and 5604, repositioning the sensor assembly 5602, and recoupling the sensor assembly 5602 to the rails 5604 and 5604. In other examples, the adjustable positioning system 5600 may use any other suitable type of mechanism for coupling a sensor assembly 5602 to the rails 5604 and 5606.
In one embodiment, a position sensor 5610 may be coupled to each of the sensor assemblies 5602. Each position sensor 5610 is configured to output a location for a sensor 108. For example, a position sensor 5610 may be an electronic device configured to output an (x,y) coordinate for a sensor 108 that described the physical location of the sensor 108 with respect to the global plane 104 and the space 102. Examples of a position sensor include, but are not limited to, Bluetooth beacons or an electrical contact-based circuit. In some examples, a position sensor 5610 may be further configured to output a rotation angle for a sensor 108. For instance, the position sensor 5610 may be configured to determine a rotation angle of a sensor 108 with respect to the ground plane 104 and to output the determined rotation angle. The position sensor 5610 may use an accelerometer, a gyroscope, or any other suitable type of mechanism for determining a rotation angle for a sensor 108. In other examples, the position sensor 5610 may be replaced with marker or mechanical indicator that indicates the location and/or the rotation of a sensor 108.
In one embodiment, the draw wire encoders 5702 are configured to wirelessly communicate with sensors 108 and the tracking system 100. For example, the draw wire encoders 5702 may be configured to receive data requests from a sensor 108 and/or the tracking system 100. In response to receiving a data request, a draw wire encoder 5702 may be configured to send information about the distance between the draw wire encoder 5702 and a platform 5704. The draw wire encoders 5702 may communicate wirelessly using Bluetooth, WiFi, Zigbee, Z-wave, and any other suitable type of wireless communication protocol.
The draw wire encoder system 5700 further comprises a moveable platform 5704. An example of the platform 5704 is described in
The platform 5704 is coupled to the retractable wires 5706 of the draw wire encoders 5702. The draw wire encoder system 5700 is configured to determine the location of the platform 5704 within the global plane 104 of the space 102 based on the information that is provided by the draw wire encoders 5702. For example, the draw wire encoder system 5700 may be configured to use triangulation to determine the location of the platform 5704 within the global plane 104. For instance, the draw wire encoder system 5700 may determine the location of the platform 5704 within the global plane 104 using the following expressions:
where D1 is the distance between a first draw wire encoder 5702A and the platform 5704, D2 is the distance between a second draw wire encoder 5702B and the platform 5704, D3 is the distance between the first draw wire encoder 5702A and the second draw wire encoder 5702B, x is the x-coordinate of the platform 5704 in the global plane 104, and y is the y-coordinate of the platform 5704 in the global plane 104. In other examples, the draw wire encoder system 5700 may compute the location of the platform 5704 within the global plane 104 using any other suitable technique. In other examples, the draw wire encoder system 5700 may be configured to use any other suitable mapping function to determine the location of the platform 5704 within the global plane 104 based on the distances reported by the draw wire encoders 5702.
The platform 5704 comprises one or more markers 5708 that are visible to a sensor 108. Examples of markers 5708 include, but are not limited, to text, symbols, encoded images, light sources, or any other suitable type of marker that can be detected by a sensor 108. Referring to the example in
As an example, a sensor 108 may capture a frame 302 that includes a marker 5708. The tracking system 100 will process the frame 302 to detect the marker 5708 and to determine a pixel location 5710 within the frame 302 where the marker 5708 is located. The tracking system 100 uses pixel locations 5710 of a plurality of markers 5708 with the corresponding physical locations of the markers 5708 within the global plane 104 to generate a homography 118 for the sensor 108. An example of this process is described in
In other examples, the tracking system 100 may use any other suitable type of distance measuring device in place of the draw wire encoders 5702. For example, the tracking system 100 may use Bluetooth beacons, Global Position System (GPS) sensors, Radio-Frequency Identification (RFID) tags, millimeter wave (mmWave) radar or laser, or any other suitable type of device for measuring distance or providing location information. In these examples, each distance measuring device is configured to measure and output a distance between the distance measuring device and an object that is operably coupled to the distance measuring device.
Sensor Mapping Process using a Draw Wire Encoder System
At step 5902, the tracking system 100 receives a frame 302 with a marker 5708 at a location within the space 102 from a sensor 108. Here, the tracking system 100 receives a frame 302 from a sensor 108. For example, the sensor 108 may capture an image or frame 302 of the global plane 104 for at least a portion of the space 102. The frame 302 may comprise one or more markers 5708.
At step 5904, the tracking system 100 determine pixel locations 5710 in the frame 302 for the markers 5708. In one embodiment, the tracking system 100 uses object detection to identify markers 5708 within the frame 302. For example, the markers 5708 may have known features (e.g. shape, pattern, color, text, etc.) that the tracking system 100 can search for within the frame 302 to identify a marker 5708. Referring to the example in
At step 5906, the tracking system 100 determines (x,y) coordinates 304 of the markers 5708 within the space 102. In one embodiment, the tracking system 100 may send a data request to the draw wire encoders 5702 to request location information for the platform 5704. The tracking system 100 may then determine the location of a marker 5708 based on the location of the platform 5704. For example, the tracking system 100 may use a known offset between the location of the markers 5708 and location where the platform 5704 is connected to the draw wire encoders 5702. In the example shown in
The tracking system 100 may receive a first distance from the first draw wire encoder 5702A in response to sending the first data request. The first distance corresponds to the distance between the first draw wire encoder 5702A and the platform 5704. In this example, since the marker 5708 has a zero offset with where the platform 5704 is tethered to the first draw wire encoder 5704A, the first distance also corresponds with the location of the marker 5708. In other examples, the tracking system 100 may determine the location of a marker 5708 based on an offset distance between the location of the marker 5708 and the location where the platform 5704 is tethered to a draw wire encoder 5702. The tracking system 100 may receive a second distance from the second draw wire encoder 5702B in response to the second data request. The tracking system 100 may use a similar process to determine the location of the marker 5708 based on the second distance. The tracking system 100 may then use a mapping function to determine an (x,y) coordinate for the marker 5708 based on the first distance and the second distance. For example, the tracking system 100 may use the mapping function described in
In some embodiments, the draw wire encoders 5702 may be configured to directly output an (x,y) coordinate for the marker 5708 in response to a data request from the tracking system 100. For example, the tracking system 100 may send data requests to the draw wire encoders 5702 and may receive location information for the platform 5704 and/or the markers 5708 in response to the data requests.
At step 5908, the tracking system 100 determines whether to capture additional frames 302 of the markers 5708. Each time a marker 5708 is identified and located within the global plane 104, the tracking system 100 generates an instance of marker location information. In one embodiment, the tracking system 100 may count the number of instances of marker location information that have been recorded for markers 5708 within the global plane 104. The tracking system 100 then determines whether the number of instances of marker location information is greater than or equal to a predetermined threshold value. The tracking system 100 may compare the number of instances of marker location information to the predetermined threshold value using a process similar to the process described in step 210 of
The tracking system 100 returns to step 5902 in response to determining to capture additional frames 302 of the marker 5708. In this case, the tracking system 100 will collect additional frames 302 of the marker 5708 after the marker 5708 is repositioned within the global plane 104. This process allows the tracking system 100 to generate additional instances of marker location information that can be used for generating a homography 118. The tracking system 100 proceeds to step 5910 in response to determining not to capture additional frames 302 of the marker 5708. In this case, the tracking system 100 determines that a suitable number of instances of marker location information have been recorded for generating a homography 118.
At step 5910, the tracking system 100 generates a homography 118 for the sensor 108. The tracking system 100 may generate a homography 118 using any of the previously described techniques. For example, the tracking system 100 may generate a homography 118 using the process described in
At step 6002, the tracking system 100 receives a frame 302 from a sensor 108. Referring to
Returning to
In some embodiments, the tracking system 100 may apply an affine transformation to the detected ROI marker 6106 to correct for perspective view distortion. Referring to
Returning to
At step 6008, the tracking system 100 defines a zone 6108 at the pixel locations for the sensor 108. The zone 6108 corresponds with a range of pixel columns and pixels rows that correspond with the pixel locations where the ROI marker 6106 was detected. Here, the tracking system 100 defines these pixel locations as a zone 6108 for subsequent frames 302 from the sensor 108. This process defines a subset of pixel locations within frames 302 from the sensor 108 where an object is most likely to be detected. By defining a subset of pixel locations within frames 302 from the sensor, this process allows the tracking system 100 to reduce the search space when detecting and identifying objects near the food rack 6102.
Object Tracking using the Region-of-Interest
After the tracking system 100 defines the zone 6110 within the frame 302 from the sensor 108, the ROI marker 6106 may be removed from the space 102 and the tracking system 100 will begin detecting and identifying items 6104 that are removed from the food rack 6102. At step 6010, the tracking system 100 receives a new frame 302 from the sensor 108. In one embodiment, the tracking system 100 is configured to periodically receive frames 302 from the sensor 108. For example, the sensor 108 may be configured to continuously capture frames 302. In other embodiments, the tracking system 100 may be configured to receive a frame 302 from the sensor 108 in response to a triggering event. For example, the food rack 6102 may comprise a door sensor configured to output an electrical signal when a door of the food rack 6102 is opened. In this example, the tracking system 100 may detect that the door sensor was triggered to an open position and receives the new frame 302 from the sensor 108 in response to detecting the triggering event. As another example, the tracking system 100 may be configured to detect motion based on differences between subsequent frames 302 from the sensor 108 a s triggering event. As another example, the tracking system 100 may be configured to detect vibrations at or near food rack 6102 using an accelerometer. In other examples, the tracking system 100 may be configured to use any other suitable type of triggering event.
At step 6012, the tracking system 100 detects an object within the zone 6108 of the frame 302. The tracking system 100 may monitor the pixel locations within the zone 6108 to determine whether an item 6104 is present within the zone 6108. In one embodiment, the tracking system 100 detect an item 6104 within the zone 6108 by detecting motion within the zone 6108. For example, the tracking system 100 may compare subsequent frames 302 from the sensor 108. In this example, the tracking system 100 may detect motion based on differences between subsequent frames 302. For example, the tracking system 100 may first receive a frame 302 that does not include an item 6104 within the zone 6108. In a subsequent frame 302, the tracking system 100 may detect that the item 6104 is present within the zone 6108 of the frame 302. In other examples, the tracking system 100 may detect the item 6104 within the zone 6108 using any other suitable technique.
At step 6014, the tracking system 100 identifies the object within the zone 6108 of the frame 302. In one embodiment, the tracking system 100 may use image processing to identify the item 6104. For example, the tracking system 100 may search within the zone 6108 of the frame 302 for known features (e.g. shapes, patterns, colors, text, etc.) that correspond with a particular item 6104.
In another embodiment, the sensor 108 may be configured to capture thermal or infrared frames 302. In this example, each pixel value in an infrared frame 302 may correspond with a temperature value. In this example, the tracking system 100 may identify a temperature differential within the infrared frame 302. The temperature differential within the infrared frame 302 can be used to locate an item 6104 within the frame 302 since the item 6104 will typically be cooler or hotter than ambient temperatures. The tracking system 100 may identify the pixel locations within the frame 302 that are greater than a temperature threshold which corresponds with the item 6104.
After identifying pixel locations within the frame 302, the tracking system 100 may generate a binary mask 6402 based on the identified pixel location. The binary mask 6402 may have the same pixel dimensions as the frame 302 or the zone 6108. In this example, the binary mask 6402 is configured such that pixel locations outside of the identified pixel locations corresponding with the item 6104 are set to a null value. This process generates a sub-ROI by removing the information from pixel locations outside of the identified pixel locations corresponding with the item 6104 which isolates the pixel locations associated with the item 6104 in the frame 302. After generating the binary mask 6402, the tracking system 100 applies the binary mask 6402 to the frame 302 to isolates the pixel locations associated with the item 6104 in the frame 302. An example of applying the binary mask 6402 to the frame 302 is shown in
Returning to
At step 6018, the tracking system 100 determines whether the person 6302 is removing the object from the food rack 6102. In one embodiment, the zone 6108 comprises an edge 6112. The edge 6112 comprises a plurality of pixels within the zone 6112 that can be used to determine an object travel direction 6114. For example, the tracking system 100 may use subsequent frames 302 from the sensor 108 to determine whether an item 6104 is entering or exiting the zone 6108 when it crosses the edge 6112. As an example, the tracking system 100 may first detect an item 6104 within the zone 6108 in a first frame 302. The tracking system 100 may then determine that the item 6108 is no longer in the zone 6108 after it crosses the edge 6112 of the zone 6108. In this example, the tracking system 100 determines that the item 6104 was removed from the food rack 6102 based on its travel direction 6114. As another example, the tracking system 100 may first detect that an item 6104 is not present within the zone 6108. The tracking system 100 may then detect that the item 6104 is present in the zone 6108 of the frame 302 after it crosses the edge 6112 of the zone 6108. In this example, the tracking system 100 determines that the item 6104 is being returned to the food rack 6102 based on its travel direction 6114.
In another embodiment, the tracking system 100 may use weight sensors 110 to determine whether the item 6104 is being removed from the food rack 6102 or the item 6104 is being returned to the food rack 6102. As an example, the tracking system 100 may detect a weight decrease from a weight sensor 110 before the item 6104 is detected within the zone 6108. The weight decrease corresponds with the weight of the item 6104 be lifted off of the weight sensor 110. In this example, the tracking system 100 determines that the item 6104 is being removed from the food rack 6102. As another example, the tracking system 100 may detect a weight increase on a weight sensor 110 after the item 6104 is detected within the zone 6108. The weight increase corresponds with the weight of the item 614 be placed onto the weight sensor 110. In this example, the tracking system 100 determines that the item 6104 is being returned to the food rack 6102. In other embodiments, the tracking system 100 may use any other suitable technique for determining whether the item 6104 is being removed from the food rack 6102 or the item 6104 is being returned to the food rack 6102.
The tracking system 100 proceeds to step 6020 in response to determining that the person 6302 is not removing the object. In this case, the tracking system 100 determines that the person is 6302 is putting the item 6104 back into the food rack 6102. This means that the item 6104 will need to be removed from their digital cart 1410. At step 6020, the tracking system 100 removes the object from the digital cart 1410 that is associated with the person 6302. In one embodiment, the tracking system 100 may determine a number of items 6104 that are being returned to the food rack 6102 using image processing. For example, the tracking system 100 may use object detection to determine a number of items 6104 that are present in the frame 302 when the person 6302 returns the item 6104 to the food rack 6102. In another embodiment, the tracking system 100 may use weight sensors 110 to determine a number of items 6104 that were returned to the food rack 6102. For example, the tracking system 100 may determine a weight increase amount on a weight sensor 110 after the person 6302 returns one or more items 6104 to the food rack 6102. The tracking system 100 may then determine an item quantity based on the weight increase amount. For example, the tracking system 100 may determine an individual item weight for the items 6104 that are associated with the weight sensor 110. For instance, the weight sensor 110 may be associated with an item 6104 that has an individual weight of eight ounces. When the weight sensor 110 detects a weight increase of sixteen ounces, the weight sensor 110 may determine that two of the items 6104 were returned to the food rack 6102. In other embodiments, the tracking system 100 may determine a number of items 6104 that were returned to the food rack 6102 using any other suitable type of technique. The tracking system 100 then removes the identified quantity of the item 6104 from the digital cart 1410 that is associated with the person 6302.
Returning to step 6018, the tracking system 100 proceeds to step 6022 in response to determining that the person 6302 is removing the object. In this case, the tracking system 100 determines that the person 6302 is removing the item 6104 from the food rack 6102 to purchase the item 6104. At step 6022, the tracking system 100 adds the object to the digital cart 1410 that is associated with the person 6302. In one embodiment, the tracking system 100 may determine a number of items 6104 that were removed from the food rack 6102 using image processing. For example, the tracking system 100 may use object detection to determine a number of items 6104 that are present in the frame 302 when the person 6302 removes the item 6104 from the food rack 6102. In another embodiment, the tracking system 100 may use weight sensors 110 to determine a number of items 6104 that were removed from the food rack 6102. For example, the tracking system 100 may determine a weight decrease amount on a weight sensor 110 after the person 6302 removes one or more items 6104 from the weight sensor 110. The tracking system 100 may then determine an item quantity based on the weight decrease amount. For example, the tracking system 100 may determine an individual item weight for the items 6104 that are associated with the weight sensor 110. For instance, the weight sensor 110 may be associated with an item 6104 that has an individual weight of eight ounces. When the weight sensor 110 detects a weight decrease of sixteen ounces, the weight sensor 110 may determine that two of the items 6104 were removed from the weight sensor 110. In other embodiments, the tracking system 100 may determine a number of items 6104 that were removed from the food rack 6102 using any other suitable type of technique. The tracking system 100 then adds the identified quantity of the item 6104 from the digital cart 1410 that is associated with the person 6302.
At step 6024, the tracking system 100 determines whether to continue monitoring. In one embodiment, the tracking system 100 may be configured to continuously monitor for items 6104 for a predetermined amount of time after a triggering event is detected. For example, the tracking system 100 may be configured to use a timer to determine an amount of time that has elapsed after a triggering event. If an item 6104 or a customer is not detected after a predetermined amount of time has elapsed, then the tracking system 100 may determine to discontinue monitoring for items 6104 until the next triggering event is detected. If an item 6104 or customer is detected within the predetermined time interval, then the tracking system 100 may determine to continue monitoring for items 6104.
The tracking system 100 returns to step 6010 in response to determining to continue monitoring. In this case, the tracking system 100 returns to step 6010 to continue monitoring frames 302 from the sensor 108 to detect when a person removes or replaces an item 6104 from the food rack 6102. Otherwise, the tracking system 100 terminates method 6000 in response to determining to discontinue monitoring. In this case, the tracking system 100 has finished detecting and identifying items 6104 and may terminate method 6000.
At step 6502, the tracking system 100 receives an (x,y) coordinate 6602 within a space 102 for a sensor 108 at an initial location 6604. Referring to
Returning to
At step 6506, the tracking system 100 associates the homography 118 with the sensor 108 and the initial location 6604. For example, the tracking system 100 may store an association between the sensor 108, the generated homography 118, and the initial location 6604 of the sensor 104 within the global plane 104. The tracking system 100 may also associate the generated homography 1180 with a rotation angle for the sensor 108 or any other suitable type of information about the configuration of the sensor 108.
At step 6508, the tracking system 100 determines whether the sensor 108 has moved. Here, the tracking system 100 determines whether the position of the sensor 108 has changed with respect to the global plane 104 by determining whether the sensor 108 has moved in the x-, y-, and/or z-direction within the global plane 104. For example, the sensor 108 may have been intentionally or unintentionally moved to a new location within the global plane 104. In one embodiment, the tracking system 100 may be configured to periodically sample location information (e.g. an (x,y) coordinate) for the sensor 108 from a position sensor 5610. In this configuration, the tracking system 100 may compare the current (x,y) coordinate for the sensor 108 to the previous (x,y) coordinate for the sensor 108 to determine whether the sensor 108 has moved within the global plane 104. The tracking system 100 determines that the sensor 108 moved when the current (x,y) coordinate for the sensor 108 does not match the previous (x,y) coordinate for the sensor 108. In other examples, the tracking system 100 may determine that the sensor 108 has moved based on an input provided by a technician or using any other suitable technique. The tracking system 100 proceeds to step 6510 in response to determining that the sensor 108 has moved. In this case, the tracking system 100 will determine the new location of the sensor 108 to update the homography 118 that is associated with the sensor 108. This process allows the tracking system 100 to update the homography 118 that is associated with the sensor 108 without having to use markers to recompute the homography 118.
At step 6510, the tracking system 100 receives a new (x,y) coordinate 6606 within the space 102 for the sensor 108 at a new location 6608. The tracking system 100 may determine the new (x,y) coordinate 6606 for the sensor 108 using a process similar to the process that is described in step 6502.
At step 6512, the tracking system 100 determines translation coefficients 6704 for the sensor 108 based on a difference between the initial location of the sensor 108 and the new location of the sensor 108. The translation coefficients 6704 identify an offset between the initial location of the sensor 108 and the new location of the sensor 108. The translation coefficients 6704 may comprise an x-axis offset value, a y-axis offset value, and a z-axis offset value. Returning to the example in
Returning to
Returning to
The tracking system 100 proceeds to step 6522 in response to determining that the sensor 108 has not been rotated. In this case, the tracking system 100 does not update the homography 118 based on a rotation of the sensor 108. Since the sensor 108 has not been rotated, this means that the homography 118 that is associated with the sensor 108 is still valid. The tracking system 100 proceeds to step 6518 in response to determining that the sensor 108 has been rotated. In this case, the tracking system 100 determines to update the homography 118 based on the rotation of the sensor 108. Since the sensor 108 has been rotated, this means that the homography 118 that is associated with the sensor 108 is no longer valid.
At step 6518, the tracking system 100 determines rotation coefficients 6706 for the sensor 108 based on the rotation of the sensor 108. The rotation coefficients 6706 identify a rotational orientation of the sensor 108 with respect to the ground plane 104, for example, the x-y plane of the ground plane 104. The rotation coefficients 6706 comprise an x-axis rotation value, a y-axis rotation value, and/or a z-axis rotation value. The rotation coefficients 6706 may be in degrees or radians.
At step 6520, the tracking system 100 updates the homography 118 for the sensor 108 by applying the rotation coefficients 6706 to the homography 118. The tracking system 100 may use the rotation coefficients 6706 in the transformation matrix 6702 that can be applied to the homography 118. Returning to the example in
In one embodiment, the tracking system 100 may first populate the translation matrix 6702 with the translation coefficients 6704 and the rotation coefficients 6706 and then use matrix multiplication to simultaneously apply the translation coefficients 6704 and the rotation coefficients 6706 to the homography 118. After updating the homography 118, the tracking system 100 may store a new association between the sensor 108, the updated homography 118, the current position of the sensor 108, and the rotation angle of the sensor 108.
At step 6522, the tracking system 100 determines whether to continue monitoring the position of the sensor 108. In one embodiment, the tracking system 100 may be configured to continuously monitor the position of the sensor 108. In another embodiment, the tracking system 100 may be configured to check the position and orientation of the sensor 108 in response to a user input from a technician. In this case, the tracking system 100 may discontinue monitoring the position of the sensor 108 until another user input is provided by a technician. In other embodiments, the tracking system 100 may use any other suitable criteria for determining whether to continue monitoring the position of the sensor 108.
The tracking system 100 returns to step 6508 in response to determining to continue monitoring the position of the sensor. In this case, the tracking system 100 will return to step 6508 to continue monitoring for changes in the position and orientation of the sensor 108. Otherwise, the tracking system 100 terminates method 6500 in response to determining to discontinue monitoring the position of the sensor. In this case, the tracking system 100 will suspend monitoring for changes in the position and orientation of the sensor 108 and will terminate method 6500.
At step 6802, the tracking system 100 receives a frame 302 from a sensor 108. Referring to
At step 6804, the tracking system 100 identifies a pixel location 6908 within the frame 302. In one embodiment, the tracking system 100 uses object detection to identify the marker 304 within the frame 302. For example, the tracking system 100 may search the frame 302 for known features (e.g. shapes, patterns, colors, text, etc.) that correspond with the marker 304. In this example, the tracking system 100 may identify a shape in the frame 302 that corresponds with the marker 304. In other embodiments, the tracking system 100 may use any other suitable technique to identify the marker 304 within the frame 302. After detecting the marker 304, the tracking system 100 identifies a pixel location 6908 within the frame 302 that corresponds with the marker 304. In one embodiment, the pixel location 6908 corresponds with a pixel in the center of the frame 302.
At step 6806, the tracking system 100 determines an estimated sensor location 6902 using a homography 118 that is associated with the sensor 108. Here, the tracking system 100 uses a homography 118 that is associated with the sensor 108 to determine an (x,y) coordinate in the global plane 104 for the marker 304. The homography 118 is configured to translate between pixel locations in the frame 302 and (x,y) coordinates in the global plane 104. The homography 118 is configured similarly to the homography 118 described in
At step 6808, the tracking system 100 determines an actual sensor location 6904 for the sensor 108. In one embodiment, the tracking system 100 may employ position sensors 5610 that are configured to output the location of the sensor 108. The position sensor 5610 may be configured similarly to the position sensors 5610 described in
At step 6810, the tracking system 100 determines a location difference 6906 between the estimated sensor location 6902 and the actual sensor location 6904. The location difference 6906 is in real-world units and identifies a physical distance between the estimated sensor location 6902 and the actual sensor location 6904 with respect to the global plane 104. As an example, the tracking system 100 may determine the location difference 6906 by determining a Euclidian distance between the (x,y) coordinate corresponding with the estimated sensor location 6902 and the (x,y) coordinate corresponding with the actual sensor location 6904. In other examples, the tracking system 100 may determine the location difference 6906 using any other suitable type of technique.
At step 6812, the tracking system 100 determines whether the location difference 6906 exceeds a difference threshold level 6910. The difference threshold level 6910 corresponds with an accuracy tolerance level for a homography 118. Here, the tracking system 100 compares the location difference 6906 to the difference threshold level 6910 to determine whether the location difference 6906 is less than or equal to the difference threshold level 6910. The difference threshold level 6910 is in real-world units and identifies a physical distance within the global plane 104. For example, the difference threshold level 6910 may be fifteen millimeters, one hundred millimeters, six inches, one foot, or any other suitable distance.
When the location difference 6906 is less than or equal to the difference threshold level 6910, this indicates that the distance between the estimated sensor location 6902 and the actual sensor lotion 6904 is within the accuracy tolerance for the system. In the example shown in
When location difference 6906 exceeds the difference threshold level 6910, this indicates that the distance between the estimated sensor location 6902 and the actual sensor location 6904 is too great to provide accurate results using the current homography 118. In this case, the tracking system 100 determines that the homography 118 is inaccurate and that the homography 118 should be recomputed to improve accuracy. The tracking system 100 proceeds to step 6814 in response to determining that the location difference 6906 exceeds the difference threshold value.
At step 6814, the tracking system 100 recomputes the homography 118 for the sensor 108. The tracking system 100 may recompute the homography 118 using any of the previously described techniques for generating a homography 118. For example, the tracking system 100 may generate a homography 118 using the process described in
At step 7002, the tracking system 100 receives a frame 302 from a sensor 108. Referring to
At step 7004, the tracking system 100 identifies a first pixel location 7102 for a first marker 304A within the frame 302. In one embodiment, the tracking system 100 may use object detection to identify the first marker 304A within the frame 302. For example, the tracking system 100 may search the frame 302 for known features (e.g. shapes, patterns, colors, text, etc.) that correspond with the first marker 304A. In this example, the tracking system 100 may identify a shape in the frame 302 that corresponds with the first marker 304A. In other embodiments, the tracking system 100 may use any other suitable technique to identify the first marker 304A within the frame 302. After detecting the first marker 304A, the tracking system 100 identifies a pixel location 7102 within the frame 302 that corresponds with the first marker 304A.
At step 7006, the tracking system 100 identifies a second pixel location 7104 for a second marker 304B within the frame 302. The tracking system 100 may use a process similar to the process described in step 7004 to identify the second pixel location 7104 for the second marker 304B within the frame 302.
At step 7008, the tracking system 100 determines a first (x,y) coordinate 7106 for the first marker 304A by applying a homography 118 to the first pixel location 7102. Here, the tracking system 100 uses a homography 118 that is associated with the sensor 108 to determine an (x,y) coordinate in the global plane 104 for the first marker 304A. The homography 118 is configured to translate between pixel locations in the frame 302 and (x,y) coordinates in the global plane 104. The homography 118 is configured similar to the homography 118 described in
At step 7010, the tracking system 100 determines a second (x,y) coordinate 7108 for the second marker 304B by applying the homography 118 to the second pixel location 7104. The tracking system 100 may use a process similar to the process described in step 7008 to determines a second (x,y) coordinate 7108 for the second marker 304B.
At step 7012, the tracking system 100 determines an estimated distance 7110 between the first (x,y) coordinate 7106 and the second (x,y) coordinate 7108. The estimated distance 7110 is in real-world units and identifies a physical distance between the first marker 304A and the second marker 304B with respect to the global plane 104. As an example, the tracking system 100 may determine the estimated distance 7110 by determining a Euclidian distance between the first (x,y) coordinate 7106 and the second (x,y) coordinate 7108. In other examples, the tracking system 100 may determine the estimated distance 7110 using any other suitable type of technique.
At step 7014, the tracking system 100 determines an actual distance 7112 between the first marker 304A and the second marker 304B. The actual distance 7112 is in real-world units and identifies the actual physical distance between the first marker 304A and the second marker 304B with respect to the global plane 104. The tracking system 100 may be configured to receive an actual distance 7112 between the first marker 304A and the second marker 304B from a technician or using any other suitable technique.
At step 7016, the tracking system 100 determines a distance difference 7114 between the estimated distance 7110 and the actual distance 7112. The distance difference 7114 indicates a measurement difference between the estimated distance 7110 and the actual distance 7112. The distance difference 7114 is in real-world units and identifies a physical distance within the global plane 104. In one embodiment, the tracking system 100 may use the absolute value of the difference between the estimated distance 7110 and the actual distance 7112 as the distance difference 7114.
At step 7018, the tracking system 100 determines whether the distance difference 7114 exceeds a difference threshold value 7116. The difference threshold level 7116 corresponds with an accuracy tolerance level for a homography 118. Here, the tracking system 100 compares the distance difference 7114 to the difference threshold level 7116 to determine whether the distance difference 7114 is less than or equal to the difference threshold level 7116. The difference threshold level 7116 is in real-world units and identifies a physical distance within the global plane 104. For example, the difference threshold level 7116 may be fifteen millimeters, one hundred millimeters, six inches, one foot, or any other suitable distance.
When the distance difference 7114 is less than or equal to the difference threshold level 7116, this indicates the difference between the estimated distance 7110 and the actual distance 7112 is within the accuracy tolerance for the system. In the example shown in
When distance difference 7114 exceeds the difference threshold level 7116, this indicates that the difference between the estimated distance 7110 and the actual distance 7112 is too great to provide accurate results using the current homography 118. In this case, the tracking system 100 determines that the homography 118 is inaccurate and that the homography 118 should be recomputed to improve accuracy. The tracking system 100 proceeds to step 7020 in response to determining that the distance difference 7114 exceeds the difference threshold value 7116.
At step 7020, the tracking system 100 recomputes the homography 118 for the sensor 108. The tracking system 100 may recompute the homography 118 using any of the previously described techniques for generating a homography 118. For example, the tracking system 100 may generate a homography 118 using the process described in
Homography Error Correction Process using Stereoscopic Vision Based on a Disparity Mapping
where D is the disparity mapping 7308, P is the location of a real-world point, Px is the distance between a similar point in two cameras (e.g. camera ‘a’ and camera ‘b’), Pxa is the x-coordinate of a point with respect to camera ‘a,’ Pxb is the x-coordinate of a similar point with respect to camera ‘b,’ Pya is the y-coordinate of a point with respect to camera ‘a,’ Pyb is the y-coordinate of a similar point with respect to camera ‘b,’ f is the focal length, da,b is the real distance between a camera ‘a’ and camera ‘b,’ Gz is the vertical distance between a camera to a real-world point. The disparity mapping 7308 may be used to determine 3D world points for a marker 304 using the following expression:
where Gx,y is the global position of a marker 304. Using this process, the tracking system 100 may compare the disparity between homography projected distances between points and stereo estimated distances between the points to determine the accuracy of the homographies 118 for the adjacent sensors 108.
In the second case, the tracking system 100 may generate a new homography 118 when the distance between two sensors 108 is known. In this case, the real distances between similar points are also known. The tracking system 100 may use the stereoscopic sensor configuration to calculate a homography 118 for each sensor 108 to the global plane 104. Since Gx,y is known for each sensor 108, the tracking system 100 may use this information to compute a homography 118 between the sensors 108 and the global plane 104. For example, the tracking system 100 may use the stereoscopic sensor configuration to determine 3D point locations for a set of markers 104. The tracking system 100 may then determine the position of the markers 304 with respect to the global plane 104 using Gx,y. The tracking system 100 may then use the 3D point locations for a set of markers 104 and the position of the markers 304 with respect to the global plane 104 to compute a homography 118 for a sensor 108.
At step 7202, the tracking system 100 receives a frame 302A from a first sensor 108. In one embodiment, the first sensor 108 is positioned within a space 102 (e.g. a store) with an overhead view of the space 102. The sensor 108 is configured to capture frames 302A of the global plane 104 for at least portion of the space 102. In this example, a marker 304 is positioned within the field of view of the first sensor 108. Referring to
At step 7204, the tracking system 100 identifies a first pixel location 7302 for the marker 304 within the frame 302A. In one embodiment, the tracking system 100 may use object detection to identify the marker 304 within the frame 302A. For example, the tracking system 100 may search the frame 302A for known features (e.g. shapes, patterns, colors, text, etc.) that correspond with the marker 304. In this example, the tracking system 100 may identify a shape in the frame 302A that corresponds with the marker 304. In other embodiments, the tracking system 100 may use any other suitable technique to identify the marker 304 within the frame 302A. After detecting the marker 304, the tracking system 100 identifies a pixel location 7302 within the frame 302A that corresponds with the marker 304.
At step 7206, the tracking system 100 determines an (x,y) coordinate by applying a first homography 118 to the first pixel location 7302. Here, the tracking system 100 uses a first homography 118 that is associated with the first sensor 108 to determine an (x,y) coordinate in the global plane 104 for the marker 304. The first homography 118 is configured to translate between pixel locations in the frame 302A and (x,y) coordinates in the global plane 104. The first homography 118 is configured similar to the homography 118 described in
At step 7208, the tracking system 100 identifies a second pixel location 7304 by applying a second homography 118 to the (x,y) coordinate. The second pixel location 7304 is a pixel location within a frame 302B of a second sensor 108. For example, a second sensor 108 may be positioned adjacent to the first sensor 108 such that frames 302A from the first sensor 108 at least partially overlap with frames 302B from the second sensor 108. The tracking system 100 uses a second homography 118 that is associated with the second sensor 108 to determine a pixel location 7304 based on the determined (x,y) coordinate of the marker 304. The second homography 118 is configured to translate between pixel locations in the frame 302B and (x,y) coordinates in the global plane 104. The second homography 118 is configured similarly to the homography 118 described in
At step 7210, the tracking system 100 identifies a third pixel location 7306 by applying a disparity mapping 7308 to the first pixel location 7302. In
At step 7212, the tracking system 100 determines a distance difference 7314 between the second pixel location 7304 and the third pixel location 7306. The distance difference 7314 in in pixel units and identifies the pixel distance between the second pixel location 7304 and the third pixel location 7306. As an example, the tracking system 100 may determine the distance difference 7314 by determining a Euclidean distance between the second pixel location 7304 and the third pixel location 7306. In other examples, the tracking system 100 may determine the distance difference 7314 using any other suitable type of technique.
At step 7214, the tracking system 100 determines whether the distance difference 7314 exceeds a difference threshold value 7316. The difference threshold level 7316 corresponds with an accuracy tolerance level for a homography 118. Here, the tracking system 100 compares the distance difference 7314 to the difference threshold level 7316 to determine whether the distance difference 7314 is less than or equal to the difference threshold level 7316. The difference threshold level 7316 is in pixel units and identifies a distance within a frame 302. For example, the difference threshold level 7316 may be one pixel, five pixel, ten pixels, or any other suitable distance.
When the distance difference 7314 is less than or equal to the difference threshold level 7316, this indicates the difference between the second pixel location 7304 and the third pixel location 7306 is within the accuracy tolerance for the system. In the example shown in
When distance difference 7314 exceeds the difference threshold level 7316, this indicates that the difference between the second pixel location 7304 and the third pixel location 7306 is too great to provide accurate results using the current homographies 118. In this case, the tracking system 100 determines that at least one of the homographies 118 for the first sensor 108 or the second sensor 108 is inaccurate and that the homographies 118 should be recomputed to improve accuracy. The tracking system 100 proceeds to step 7216 in response to determining that the distance difference 7314 exceeds the difference threshold value 7316.
At step 7216, the tracking system 100 recomputes the homography 118 for the first sensor 108 and/or the second sensor 108. The tracking system 100 may recompute the homography 118 for the first sensor 108 and/or the second sensor 108 using any of the previously described techniques for generating a homography 118. For example, the tracking system 100 may generate a homography 118 using the process described in
Homography Error Correction Process using Stereoscopic Vision Based on Distance Measurements
At step 7402, the tracking system 100 receives a first frame 302A from a first sensor 108A. Referring to
At step 7404, the tracking system 100 identifies a first pixel location 7502 for the first marker 304A within the first frame 302A. In one embodiment, the tracking system 100 may use object detection to identify the first marker 304A within the first frame 302A. For example, the tracking system 100 may search the first frame 302A for known features (e.g. shapes, patterns, colors, text, etc.) that correspond with the first marker 304A. In this example, the tracking system 100 may identify a shape in the first frame 302A that corresponds with the first marker 304A. In other embodiments, the tracking system 100 may use any other suitable technique to identify the first marker 304A within the first frame 302A. After detecting the first marker 304A, the tracking system 100 identifies a pixel location 7502 within the first frame 302A that corresponds with the first marker 304A. In one embodiment, the pixel location 7502 may correspond with a pixel in the center of the first frame 302A.
At step 7406, the tracking system 100 determines a first (x,y) coordinate 7504 for the first marker 304A by applying a first homography 118 to the first pixel location 7502. The tracking system 100 uses a first homography 118 that is associated with the first sensor 108A to determine a first (x,y) coordinate 7504 in the global plane 104 for the first marker 304A. The first homography 118 is configured to translate between pixel locations in the frame 302A and (x,y) coordinates in the global plane 104. The first homography 118 is configured similar to the homography 118 described in
At step 7408, the tracking system 100 receives a second frame 302B from a second sensor 108B. Returning to the example in
At step 7410, the tracking system 100 identifies a second pixel location 7506 for the second marker 304B within the second frame 302B. The tracking system 100 identifies the second pixel location 7506 for the second marker 304B using a process similar to the process described in step 7404. In one embodiment, the pixel location 7506 may correspond with a pixel in the center of the second frame 302B.
At step 7412, the tracking system 100 determines a second (x,y) coordinate 7508 for the second marker 304B by applying a second homography 118 to the second pixel location 7506. The tracking system 100 uses a second homography 118 that is associated with the second sensor 108B to determine a second (x,y) coordinate 7508 in the global plane 104 for the second marker 304B. The second homography 118 is configured to translate between pixel locations in the frame 302B and (x,y) coordinates in the global plane 104. The second homography 118 is configured similarly to the homography 118 described in
At step 7414, the tracking system 100 determines a computed distance 7512 between the first (x,y) coordinate 7504 and the second (x,y) coordinate 7508. The computed distance 7512 is in real-world units and identifies a physical distance between the first marker 304A and the second marker 304B with respect to the global plane 104. As an example, the tracking system 100 may determine the computed distance 7512 by determining a Euclidian distance between the first (x,y) coordinate 7504 and the second (x,y) coordinate 7508. In other examples, the tracking system 100 may determine the computed distance 7512 using any other suitable type of technique.
At step 7416, the tracking system 100 determines an actual distance 7514 between the first marker 304A and the second marker 304B. The actual distance 7514 is in real-world units and identifies the actual physical distance between the first marker 304A and the second marker 304B with respect to the global plane 104. The tracking system 100 may be configured to receive an actual distance 7514 between the first marker 304A and the second marker 304B from a technician or using any other suitable technique.
At step 7418, the tracking system 100 determines a distance difference 7516 between the computed distance 7512 and the actual distance 7514. The distance difference 7516 indicates a measurement difference between the computed distance 7512 and the actual distance 7514. The distance difference 7516 is in real-world units and identifies a physical distance within the global plane 104. In one embodiment, the tracking system 100 may use the absolute value of the difference between the computed distance 7512 and the actual distance 7514 as the distance difference 7516.
At step 7420, the tracking system 100 determines whether the distance difference 7516 exceeds a difference threshold level 7518. The difference threshold level 7516 corresponds with an accuracy tolerance level for a homography 118. Here, the tracking system 100 compares the distance difference 7516 to the difference threshold level 7518 to determine whether the distance difference 7516 is less than or equal to the difference threshold level 7518. The difference threshold level 7518 is in real-world units and identifies a physical distance within the global plane 104. For example, the difference threshold level 7518 may be fifteen millimeters, one hundred millimeters, six inches, one foot, or any other suitable distance.
When the distance difference 7516 is less than or equal to the difference threshold level 7518, this indicates the difference between the computed distance 7512 and the actual distance 7514 is within the accuracy tolerance for the system. In the example shown in
When distance difference 7516 exceeds the difference threshold level 7518, this indicates that the difference between the computed distance 7512 and the actual distance 7514 is too great to provide accurate results using the current homographies 118. In this case, the tracking system 100 determines that at least one of the homographies 118 for the first sensor 108A or the second sensor 108B is inaccurate and that the homographies 118 should be recomputed to improve accuracy. The tracking system 100 proceeds to step 7422 in response to determining that the distance difference 7516 exceeds the difference threshold level 7518.
At step 7422, the tracking system 100 recomputes the homography 118 for the first sensor 108A and/or the second sensor 108B. The tracking system 100 may recompute the homography 118 for the first sensor 108A and/or the second sensor 108B using any of the previously described techniques for generating a homography 118. For example, the tracking system 100 may generate a homography 118 using the process described in
While the preceding examples and explanations are described with respect to particular use cases within a retail environment, one of ordinary skill in the art would readily appreciate that the previously described configurations and techniques may also be applied to other applications and environments. Examples of other applications and environments include, but are not limited to, security applications, surveillance applications, object tracking applications, people tracking applications, occupancy detection applications, logistics applications, warehouse management applications, operations research applications, product loading applications, retail applications, robotics applications, computer vision applications, manufacturing applications, safety applications, quality control applications, food distributing applications, retail product tracking applications, mapping applications, simultaneous localization and mapping (SLAM) applications, 3D scanning applications, autonomous vehicle applications, virtual reality applications, augmented reality applications, or any other suitable type of application.
While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.
To aid the Patent Office, and any readers of any patent issued on this application in interpreting the claims appended hereto, applicants note that they do not intend any of the appended claims to invoke 35 U.S.C. § 112(f) as it exists on the date of filing hereof unless the words “means for” or “step for” are explicitly used in the particular claim.
This application is a continuation-in-part of: U.S. patent application Ser. No. 16/663,710 filed Oct. 25, 2019, by Sailesh Bharathwaaj Krishnamurthy et al., and entitled “TOPVIEW OBJECT TRACKING USING A SENSOR ARRAY”; U.S. patent application Ser. No. 16/663,766 filed Oct. 25, 2019, by Sailesh Bharathwaaj Krishnamurthy et al., and entitled “DETECTING SHELF INTERACTIONS USING A SENSOR ARRAY”; U.S. patent application Ser. No. 16/663,451 filed Oct. 25, 2019, by Sarath Vakacharla et al., and entitled “TOPVIEW ITEM TRACKING USING A SENSOR ARRAY”; U.S. patent application Ser. No. 16/663,794 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “DETECTING AND IDENTIFYING MISPLACED ITEMS USING A SENSOR ARRAY”; U.S. patent application Ser. No. 16/663,822 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “SENSOR MAPPING TO A GLOBAL COORDINATE SYSTEM”; U.S. patent application Ser. No. 16/941,415 filed Jul. 28, 2020, by Shahmeer Ali Mirza et al., and entitled “SENSOR MAPPING TO A GLOBAL COORDINATE SYSTEM USING A MARKER GRID”, which is a continuation of U.S. patent application Ser. No. 16/794,057 filed Feb. 18, 2020, by Shahmeer Ali Mirza et al., and entitled “SENSOR MAPPING TO A GLOBAL COORDINATE SYSTEM USING A MARKER GRID”, now U.S. Pat. No. 10,769,451 issued Sep. 8, 2020, which is a continuation of U.S. patent application Ser. No. 16/663,472 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “SENSOR MAPPING TO A GLOBAL COORDINATE SYSTEM USING A MARKER GRID”, now U.S. Pat. No. 10,614,318 issued Apr. 7, 2020; U.S. patent application Ser. No. 16/663,856 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “SHELF POSITION CALIBRATION INA GLOBAL COORDINATE SYSTEM USING A SENSOR ARRAY”; U.S. patent application Ser. No. 16/664,160 filed Oct. 25, 2019, by Trong Nghia Nguyen et al., and entitled “CONTOUR-BASED DETECTION OF CLOSELY SPACED OBJECTS”; U.S. patent application Ser. No. 17/071,262 filed Oct. 15, 2020, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, which is a continuation of U.S. patent application Ser. No. 16/857,990 filed Apr. 24, 2020, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, which is a continuation of U.S. patent application Ser. No. 16/793,998 filed Feb. 18, 2020, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, now U.S. Pat. No. 10,685,237 issued Jun. 16, 2020, which is a continuation of U.S. patent application Ser. No. 16/663,500 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, now U.S. Pat. No. 10,621,444 issued Apr. 14, 2020; U.S. patent application Ser. No. 16/857,990 filed Apr. 24, 2020, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, which is a continuation of U.S. patent application Ser. No. 16/793,998 filed Feb. 18, 2020, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, now U.S. Pat. No. 10,685,237 issued Jun. 16, 2020, which is a continuation of U.S. patent application Ser. No. 16/663,500 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “ACTION DETECTION DURING IMAGE TRACKING”, now U.S. Pat. No. 10,621,444 issued Apr. 14, 2020; U.S. patent application Ser. No. 16/664,219 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “OBJECT RE-IDENTIFICATION DURING IMAGE TRACKING”; U.S. patent application Ser. No. 16/664,269 filed Oct. 25, 2019, by Madan Mohan Chinnam et al., and entitled “VECTOR-BASED OBJECT RE-IDENTIFICATION DURING IMAGE TRACKING”; U.S. patent application Ser. No. 16/664,332 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “IMAGE-BASED ACTION DETECTION USING CONTOUR DILATION”; U.S. patent application Ser. No. 16/664,363 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “DETERMINING CANDIDATE OBJECT IDENTITIES DURING IMAGE TRACKING”; U.S. patent application Ser. No. 16/664,391 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “OBJECT ASSIGNMENT DURING IMAGE TRACKING”; U.S. patent application Ser. No. 16/664,426 filed Oct. 25, 2019, by Sailesh Bharathwaaj Krishnamurthy et al., and entitled “AUTO-EXCLUSION ZONE FOR CONTOUR-BASED OBJECT DETECTION”; U.S. patent application Ser. No. 16/884,434 filed May 27, 2020, by Shahmeer Ali Mirza et al., and entitled “MULTI-CAMERA IMAGE TRACKING ON A GLOBAL PLANE”, which is a continuation of U.S. patent application Ser. No. 16/663,533 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “MULTI-CAMERA IMAGE TRACKING ON A GLOBAL PLANE”, now U.S. Pat. No. 10,789,720 issued Sep. 29, 2020; U.S. patent application Ser. No. 16/663,901 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “IDENTIFYING NON-UNIFORM WEIGHT OBJECTS USING A SENSOR ARRAY”; and U.S. patent application Ser. No. 16/663,948 filed Oct. 25, 2019, by Shahmeer Ali Mirza et al., and entitled “SENSOR MAPPING TO A GLOBAL COORDINATE SYSTEM USING HOMOGRAPHY”, which are all incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 16794057 | Feb 2020 | US |
Child | 16941415 | US | |
Parent | 16663472 | Oct 2019 | US |
Child | 16794057 | US | |
Parent | 16857990 | Apr 2020 | US |
Child | 17071262 | US | |
Parent | 16793998 | Feb 2020 | US |
Child | 16857990 | US | |
Parent | 16663500 | Oct 2019 | US |
Child | 16793998 | US | |
Parent | 16663500 | Oct 2019 | US |
Child | 16793998 | US | |
Parent | 16664332 | Oct 2019 | US |
Child | 16664269 | US | |
Parent | 16663533 | Oct 2019 | US |
Child | 16884434 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16663710 | Oct 2019 | US |
Child | 17104430 | US | |
Parent | 16663766 | Oct 2019 | US |
Child | 16663710 | US | |
Parent | 16663451 | Oct 2019 | US |
Child | 16663766 | US | |
Parent | 16663794 | Oct 2019 | US |
Child | 16663451 | US | |
Parent | 16663822 | Oct 2019 | US |
Child | 16663794 | US | |
Parent | 16941415 | Jul 2020 | US |
Child | 16663822 | US | |
Parent | 16663856 | Oct 2019 | US |
Child | 16663472 | US | |
Parent | 16664160 | Oct 2019 | US |
Child | 16663856 | US | |
Parent | 17071262 | Oct 2020 | US |
Child | 16664160 | US | |
Parent | 16857990 | Apr 2020 | US |
Child | 16663500 | US | |
Parent | 16663948 | Oct 2019 | US |
Child | 16857990 | US | |
Parent | 16663901 | Oct 2019 | US |
Child | 16663948 | US | |
Parent | 16664219 | Oct 2019 | US |
Child | 16663500 | US | |
Parent | 16664269 | Oct 2019 | US |
Child | 16664219 | US | |
Parent | 16664363 | Oct 2019 | US |
Child | 16664332 | US | |
Parent | 16664391 | Oct 2019 | US |
Child | 16664363 | US | |
Parent | 16664426 | Oct 2019 | US |
Child | 16664391 | US | |
Parent | 16884434 | May 2020 | US |
Child | 16664426 | US | |
Parent | 16663901 | Oct 2019 | US |
Child | 16663533 | US | |
Parent | 16663948 | Oct 2019 | US |
Child | 16663901 | US |