ACTION DETECTION DURING IMAGE TRACKING
Patent Information
- Application Number
- MX2022004898
- Authority / Receiving Office
- MX · MX
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-10-25
- Filing Date
- 2022-04-22
- Publication Date
- 2026-05-19
- Estimated Expiration
- 2040-10-23
AI Technical Summary
Existing systems for object tracking in large physical spaces, such as stores and supermarkets, face challenges due to the need to process information from multiple cameras independently and combine it to track objects across a larger area, which is computationally intensive and time-consuming, making real-time applications like video streams infeasible. Additionally, these systems struggle to determine the physical location of objects within the space and lack the ability to track multiple objects simultaneously.
A tracking system that generates a relationship between camera pixels and physical locations using homographies, allowing for the translation of pixel locations to global coordinates, transfers tracking information between sensors, detects sensor movements, and uses virtual curtains and predefined zones to associate items with individuals, while employing a cascade of algorithms for accurate item assignment.
Enables efficient, real-time tracking of objects and individuals within large spaces by accurately determining their physical locations, reducing computational load, and improving the ability to track multiple objects, thereby facilitating contactless shopping experiences.
Abstract
Description
ACTION DETECTION DURING IMAGE TRACKING DESCRIPTION OF THE INVENTION The present description relates generally to object detection and tracking, and more specifically to action detection during image tracking. 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 can identify different traits of a person that can then be used to identify the person in an image. This process is computationally intensive when the image includes multiple people. For example, identifying a person in an image of a busy environment, such as a store, would involve identifying everyone in the image and then comparing a person's traits to each person in the image. In addition to being computationally intensive, this process requires a significant amount of time, meaning that this process is not supported for real-time applications such as video streams. This problem becomes intractable when trying to simultaneously identify and track multiple objects. Additionally, the existing system lacks the ability to determine a physical location for an object found within an image. Position tracking systems are used QRQbnn / zznz / E / Y to track the physical positions of people and / or objects in a physical space (for example, 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 the sensor signals. In a store setup, 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 the positions of people 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 charge that person for the item without needing to mark the item. item in a record. In other words, the person can enter the store, grab items, and leave the store without stopping for the conventional checkout process. For larger physical spaces (e.g., convenience stores and supermarkets), additional sensors can be installed throughout the space to track the position of people and / or objects as they move through 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 items and QRQbnn / zznz / E / Y additional 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 must be processed independently to identify and track people and objects within the field of view of a particular camera. The information from each camera must then be combined and processed as a collective to track people and objects within physical space. The system described in the present application provides a technical solution to the technical problems described above by generating a relationship between the pixels of a camera and physical locations within a space. The described system provides several practical applications and technical advantages including 1) a process for generating a homography that maps the pixels of a sensor (e.g., a camera) to physical locations on a global plane for a space (e.g., a site ) ; 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 transferring tracking information of 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 to detect when a sensor or rack has been moved within a space using markers; 5) a process to detect where a person is interacting with a rack using a virtual curtain; 6) a process to associate an item with a person using a predefined zone that is associated with a rack; 7) a process to identify and associate items with non-uniform weight to a person; and 8) a process to identify an item that has been lost in a rack based on its weight. In one embodiment, the tracking system may be configured to generate homographies for sensors. A homography is set up to translate between pixel locations in an image from a sensor (for example, 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 the markers in a global plane for space and the pixel locations of the markers in a sensor image. This configuration will be described in more detail using FIGURES 2-7. In one embodiment, the tracking system is configured to calibrate the position of a shelf within the global plane using sensors. In this configuration, the monitoring system periodically compares the current shelf location of a rack with an expected shelf location for the rack using a sensor. In the event that the current location of the rack does not match the expected location of the rack, then the tracking system uses one or more sensors to determine if the rack has moved or if the first sensor has moved. This configuration will be described in more detail using FIGURES 8 and 9. In one embodiment, the tracking system is configured to transfer tracking information of an object (e.g., a person) as it moves between the field of view of adjacent sensors. In this configuration, the tracking system tracks the movement of an object within the field of view of a first sensor and then transfers tracking information (e.g., an object identifier) for the object when it enters the field of view of a first sensor. second adjacent sensor. This configuration will be described in more detail using FIGURES 10 and 11. 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 interacts with a rack shelf. The tracking system uses a predetermined area within the image as a virtual curtain that is used to determine which region and which shelf of a rack is interacting with a person. This configuration will be described in more detail using FIGURES 12-14. In one embodiment, the tracking system is QRQbnn / zznz / E / Y configured to detect when an item has been picked 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 person have been identified, the tracking system will add the item to a digital cart associated with the identified person. This configuration will be described in more detail using FIGURES 15 and 18. 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 (for example, 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 person have been identified, the tracking system will add the item to a digital cart associated with the identified person. This configuration is QRQbnn / zznz / E / Y will be described in more detail using FIGURES 16 and 18. In one embodiment, the tracking system is configured to detect and identify items that have been lost from a rack. For example, a person may replace 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 returned to the 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 who placed the item on the rack and analyzes their digital cart to determine which item they placed back based on the weights of the items in their digital cart. This configuration will be described in more detail using FIGURES 17 and 18. In one embodiment, the tracking system is configured to determine pixel regions from images generated by each sensor that should be excluded during object tracking. These pixel regions, or self-exclusion zones, can be updated regularly (for example, during times when there are no people moving through a space). Self-exclusion zones can be used to generate a map of the physical portions of space that are excluded during tracking. This configuration is described in more detail using FIGURES 19 to 21 QRQbnn / zznz / E / Y In one embodiment, the tracking system is configured to distinguish between people in close proximity in a space. For example, when two people are standing, or otherwise positioned, close to each other, it may be difficult or impossible for prior systems to distinguish between these people, particularly based on top-view images. In this modality, the system identifies contours at multiple depths in top-view depth images to individually detect objects in close proximity to each other. This configuration is described in more detail using FIGURES 22 and 23. In one embodiment, the tracking system is configured to track individuals 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 physical coordinates in space). Tracking people can be more reliable when done both locally and globally. For example, if a person is lost locally (for example, if a sensor fails to capture a frame and the sensor fails to detect a person), the person can still be tracked globally based on an image from a nearby sensor, a position estimated location 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 FIGURES 24A-C through 26. In one embodiment, the tracking system is configured to maintain a record, referred to in this description as a candidate list, of possible person identities or identifiers (i.e., user names, 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. In general, 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 after interactions (e.g., collisions) between people and in response to other uncertainty events (e.g., loss of sensor data, image errors, intentional deception, etc.,). This configuration is described in more detail using FIGURES 27 and 28. In one embodiment, the tracking system is configured to employ a specially structured approach for re-identification of objects when the identity of a tracked person becomes uncertain or unknown (e.g. QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y example, based on the candidate lists described above). For example, rather than relying heavily on resource-intensive machine learning-based approaches to re-identify individuals, lower-cost descriptors related to observable characteristics (e.g., height, color, width, volume, etc.,) of the people first for the re-identification of the person. Higher cost descriptors (for example, determined using artificial neural network models) are used when lower cost descriptors cannot provide reliable results. For example, in some cases, a person may first be re-identified based on their height, hair color, and / or shoe color. However, if these descriptors are not sufficient to reliably re-identify the person (for example, because other people being tracked have similar characteristics), progressively higher level approaches can be used (for example, involving networks artificial neurons that are trained to recognize people) that can be more effective in identifying people but generally involve the use of more processing resources. These configurations are described in more detail using FIGURES 29 to 32. In one embodiment, the tracking system is QRQbnn / zznz / E / Y configured to employ a cascade of algorithms (e.g., from simpler approaches based on relatively simply determined image features to more complex strategies involving artificial neural networks) to assign an item picked from a rack to the right person. The cascade can be activated, for example, by (i) the proximity of two or more people to the rack, (ii) a hand crossing the area (or a virtual curtain) adjacent to the rack and / or (iii) a weight signal indicating that 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 example, if two people can reach a rack to pick up an item, an outline can be expanded from head height to a lower height to determine which arm of the person reached 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 involving pose estimation can be used. These configurations are described in more detail using FIGURES 33A-C to 35. In one embodiment, the tracking system is configured to track an item after it leaves a rack, identifying a position at which the item stops QRQbnn / zznz / E / Y move and determines which person is closest to the stopped item. Generally the item is assigned to the closest person. This setting can be used, for example, 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 FIGURES 36A, B and 37. 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 together with the accompanying drawings and claims. BRIEF DESCRIPTION OF THE DRAWINGS For a more complete understanding of this description, reference is now made to the following brief description, taken in connection with the accompanying drawings and the detailed description, in which like reference numerals represent like parts. FIGURE 1 is a schematic diagram of one embodiment of a tracking system configured to track objects within a space; FIGURE 2 is a flow chart of one embodiment of a sensor mapping method for the tracking system; FIGURE 3 is an example of a mapping process QRQbnn / zznz / E / Y sensors for tracking system; FIGURE 4 is an example of a sensor frame in the tracking system; FIGURE 5A is an example of a sensor mapping for a sensor in the tracking system; FIGURE 5B is another example of a sensor mapping for a sensor in the tracking system; FIGURE 6 is a flowchart of one embodiment of a sensor mapping method for the tracking system using a marker grid; FIGURE 7 is an example of a sensor mapping process for the tracking system using a marker grid; FIGURE 8 is a flowchart of one embodiment of a shelf position calibration method for the tracking system; FIGURE 9 is an example of a shelf position calibration process for the tracking system; FIGURE 10 is a flow chart of one embodiment of a tracking transfer method for the tracking system; FIGURE 11 is an example of a tracking transfer process for the tracking system; FIGURE 12 is a flow chart of a modality QRQbnn / zznz / E / Y of a shelf interaction detection method for the tracking system; FIGURE 13 is a front view of an example of a shelf interaction detection process for the tracking system; FIGURE 14 is a top view of an example of a shelf interaction detection process for the tracking system; FIGURE 15 is a flow chart of one embodiment of an item assignment method for the tracking system; FIGURE 16 is a flow chart of one embodiment of an item identification method for the tracking system; FIGURE 17 is a flow chart of one embodiment of a lost item identification method for the tracking system; FIGURE 18 is an example of an item identification process for the tracking system; FIGURE 19 is a diagram illustrating the determination and use of self-exclusion zones by the tracking system; FIGURE 2 0 is an example of a self-exclusion zone map generated by the tracking system; FIGURE 21 is a flowchart illustrating an example method for generating and using self-exclusion zones for object tracking using the tracking system; FIGURE 22 is a diagram illustrating the detection of very close objects using the tracking system; FIGURE 23 is a flowchart illustrating an example method for detecting closely spaced objects using the tracking system; FIGURES 24A-C are diagrams illustrating tracking of a person in local image frames and in the global plane of space 102 using the tracking system; FIGURES 25A-B illustrate the implementation of a particle filter tracker by the tracking system; FIGURE 2-6 is a flowchart illustrating an example method of tracking local and global objects using the tracking system; FIGURE 27 is a diagram illustrating the use of candidate lists for object identification during object tracking by the tracking system; FIGURE 28 is a flowchart illustrating an example method for maintaining candidate lists during object tracking by the tracking system; FIGURE 29 is a diagram illustrating a subsystem QRQbnn / zznz / E / Y Example tracking QRQbnn / zznz / E / Y for use in the tracking system; FIGURE 30 is a diagram illustrating the determination of the descriptors based on the features of the object using the tracking system; FIGURES 31A-C are diagrams illustrating the use of descriptors for re-identification during object tracking by the tracking system; FIGURE 32 is a flowchart illustrating an example method of object re-identification during object tracking using the tracking system; FIGURES 33A-C are diagrams illustrating the assignment of an item to a person using the tracking system; FIGURE 34 is a flowchart of an example method for assigning an item to a person using the tracking system; FIGURE 35 is a flowchart of an example method of item assignment based on contour dilation using the tracking system; FIGURES 36A-B are diagrams illustrating item allocation based on item tracking using the tracking system; FIGURE 37 is a flowchart of an example method of item allocation based on item tracking using the tracking system; and FIGURE 38 is an embodiment of a device configured for tracking objects within a space. Position tracking systems are used to track the physical positions of people and / or objects in a physical space (for example, 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 the sensor signals. In a store setup, 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 the positions of people 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 charge that person for the item without needing to mark the item. item in a record. In other words, the person can enter the store, grab items, and leave the store without stopping for the conventional checkout process. For larger physical spaces (e.g. convenience stores and supermarkets), additional sensors can be installed throughout the space to track the QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y position of people and / or objects as they move through 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 must be processed independently to identify and track people and objects within the field of view of a particular camera. The information from each camera must then be combined and processed as a collective to track people and objects within physical space. Additional information is described in U.S. Patent Application No. titled, Scalable Position Tracking System for Tracking Position in Large Spaces (Attorney File No. 090278.0176) and U.S. Patent Application No. titled , Client Based Video Source (Attorney File No. 090278.0187), which are incorporated by reference herein as if reproduced in their entirety. Tracking System Overview FIGURE 1 is a schematic diagram of one embodiment of a tracking system 100 that is configured to track objects within a space 102. As described above, the tracking system 100 can be installed in a space 102 (e.g., a store) so that buyers do not need to participate in the conventional checkout process. Although the example of a store is used in this description, this description contemplates that the tracking system 100 can be installed and used in any type of physical space (for example, a room, an office, an outdoor stall, a shopping center , a supermarket, a convenience store, a temporary store, a warehouse, a storage center, an amusement park, an airport, an office building, etc.). Generally, the tracking system 100 (or components thereof) is used to track the positions of people and / or objects within these spaces 102 for any suitable purpose. For example, at an airport, the tracking system 100 may track the positions of travelers and employees for security purposes. As another example, in an amusement park, the tracking system 100 may track the positions of park visitors to measure the popularity of the attractions. As yet another example, in an office building, the tracking system 100 can track the position of employees and staff to monitor their productivity levels. In FIGURE 1, space 102 is a store comprising a plurality of items that are available QRQbnn / zznz / E / Y (e.g., a door) of space 102 where a person enters space 102. In some embodiments, entry area 114 may comprise a turnstile or door that controls the flow of traffic into space 102. For example, entry area 114 may comprise a turnstile that only allows one person to enter 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. For example, a sensor 108 may capture one or more images of a person. when entering space 102. As another example, a person can be identified using a scanner 115. Examples of scanners 115 include, but are not limited to, a QR code scanner, a barcode scanner, a communication scanner. near field (NEC) or any other suitable type of scanner that can receive an electronic code embedded with information that uniquely identifies a person. For example, a shopper can scan a personal device (e.g., smartphone) on a scanner 115 to enter the store. When the buyer scans his or her personal device at the scanner 115, the personal device may provide the scanner 115 with an electronic code that uniquely identifies the buyer. After identifying and / or authenticating the buyer, they are 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 space 102, the shopper can move around the interior of the store. As the shopper moves through space 102, the shopper may purchase items by removing items from racks 112. The shopper may remove multiple items from racks 112 in the store to purchase those items. When the shopper has finished shopping, the shopper can exit the store through exit area 116. The exit area 116 is adjacent to an exit (e.g., a door) of the space 102 where a person exits the space 102. In some embodiments, the exit area 116 may comprise a turnstile or gate that controls the flow of traffic outside. of space 102. For example, exit area 116 may comprise a turnstile that only allows one person to leave space 102 at a time. In some embodiments, exit area 116 may be adjacent to one or more devices (e.g., sensors 108 or scanner 115) that identify a person as they exit space 102. For example, a shopper may scan their personal device at the scanner 115 before a turnstile or door is opened to allow the shopper to exit the store. When the buyer scans his or her personal device at scanner 115, the personal device may provide an electronic code QRQbnn / zznz / E / Y that uniquely identifies the shopper to indicate that the shopper is leaving the store. When the buyer leaves the store, an account is charged to the buyer for the items that the buyer checked out of the store. Through this process, the tracking system 100 allows the buyer to leave the store with their items without participating in a conventional payment process. Global Plane Overview 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 the tracking system 100 uses to identify the locations of objects within a physical domain (i.e., space 102). Referring to FIGURE 1 as an example, a global plane 104 is defined such that an x-axis and a y-axis are parallel to the floor of the space 102. In this example, the z axis of the global plane 104 is perpendicular to the floor of space 102. A location in space 102 is defined as a reference or origin location 101 for the global plane 104. In FIGURE 1, the global plane 104 is defined such that the reference location 101 corresponds to a corner of the store. In other examples, reference location 101 may be located at any other suitable location within space 102. QRQbnn / zznz / E / Y In this configuration, physical locations within space 102 can be described using (x, y) coordinates on global plane 104. As an example, global plane 104 may be defined such that one unit in global plane 104 corresponds to one meter in space 102. In other words, an x-value of one in global plane 104 corresponds to a displacement of one meter from reference location 101 in space 102. In this example, a person standing in the corner of space 102 at reference location 101 will have a coordinate (x, y) with a value of (0 ,0) in the global plane 104. If the person moves two meters in the positive direction of the x-axis and two meters in the positive direction of the y-axis, then his new coordinate (x, y) will have a value of (2,2) . In other examples, the global plane 104 may be expressed using inches, feet, or any other suitable unit of measurement. Once the global plane 104 is defined for the space 102, the tracking system 100 uses the (x, y) coordinates of the global plane 104 to track the location of people and objects within the space 102. For example, when a buyer moves within the interior space of the store, the tracking system 100 may track its current physical location within the store using the (x, y) coordinates of the global plane 104. Tracking system hardware QRQbnn / zznz / E / Y 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. 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. 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-network. wave, 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. Network 107 may be configured to support any suitable type of communication protocol, as would be appreciated by one skilled in the art. The tracking system 100 may be configured as shown or in any other suitable configuration. Sensors 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 he or she moves within the space. the store. The tracking system 100 may process the images or videos provided by the sensors 108 to identify the buyer, the location of the buyer, and / or any items picked up by the buyer. Examples of sensors 108 include, but are not limited to, cameras, video cameras, webcams, printed circuit board (PCB) cameras, depth sensing cameras, time-of-flight cameras, LiDAR, structured light cameras. or any other suitable type of imaging device. Each sensor 108 is positioned over at least a portion of the space 102 and is configured to capture aerial 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 space 102. These videos may include frames or images 302 of shoppers within space 102. Each frame 302 is a snapshot of 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 a portion of a global plane 104 for space 102. Referring to FIGURE 4 as an example, a frame 302 comprises a plurality of pixels, each associated with a pixel location 402 within the frame. 302 System 100 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y tracking uses pixel locations 402 to describe the location of an object with respect to pixels in a frame 302 of a sensor 108. In the example shown in FIGURE 4, the tracking system 100 can identify the location of different markers 304 within the frame 302 using their respective pixel locations 402. Pixel location 402 corresponds to a pixel row and a pixel column where a pixel is located within frame 302. In one embodiment, each pixel is also associated with a pixel value 404 that indicates a depth or distance measurement. on the global 104th plane. For example, a pixel value 404 may correspond to a distance between a sensor 108 and a surface in space 102. Each sensor 108 has a limited field of view within space 102. This means that each sensor 108 can only capture a portion of space 102 within its field of view. To provide complete coverage of space 102, tracking system 100 may use multiple sensors 108 configured as a sensor array. In FIGURE 1, sensors 108 are configured as a three-by-four sensor array. In other examples, a sensor array may comprise any other suitable number and / or configuration of sensors 108. In one embodiment, the sensor array is positioned parallel to the floor of space 102. In some embodiments, the sensor array is configured QRQbnn / zznz / E / Y such that adjacent sensors 108 have at least partially overlapping fields of view. In this configuration, each sensor 108 captures images or frames 302 of a different part of the space 102, allowing the tracking system 100 to monitor the entire space 102 by combining information from frames 302 from multiple sensors 108. The tracking system 100 is configured to map pixel locations 402 within each sensor 108 to physical locations in space 102 using homographies 118. A homography 118 is configured to translate between pixel locations 402 in a frame 302 captured by a sensor 108 and coordinates (x, y ) on the global plane 104 (i.e. physical locations in space 102). The tracking system 100 uses homographies 118 to correlate between a pixel location 402 on a particular sensor 108 with a physical location in space 102. In other words, the tracking system 100 uses homographies 118 to determine where a person is physically located. in space 102 based on its pixel location 402 within a frame 302 of a sensor 108. Since the tracking system 100 uses multiple sensors 108 to monitor the entire space 102, each sensor 108 is uniquely associated with a different homography 118 based on the physical location of the sensor 108 within the space 102. This configuration allows the tracking system 100 to determine where a person is physically located within the entire space 102 based on the sensor 108 in which they appear and their location within a frame 302 captured by that sensor 108. Additional information about homographies 118 is described in FIGURES 2-7. Weight sensors 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 picks up an item from rack 112. Each weight sensor 110 may be associated with a particular item that 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 can increase proportionally. The tracking system 100 is configured to analyze the output electrical signal to determine the total weight of the items in the QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 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 indicating a weight experienced by the load cells. For example, load cells can 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 placed on accessories (e.g., racks 112) within space 102 to contain one or more items. For example, one or more weight sensors 110 may be placed on a shelf of a rack 112. As another example, one or more weight sensors 110 may be placed on a shelf of a refrigerator or cooler. As another example, one or more weight sensors 110 may be integrated with a shelf of a rack 112. In other examples, the weight sensors 110 may be placed in any other suitable location within space 102. In one embodiment, a weight sensor 110 may be associated with a particular item. For example, a weight sensor 110 can be configured to contain one or more than one QRQbnn / zznz / E / Y particular item and measure a combined weight for the items in the weight sensor 110. When an item is taken from the weight sensor 110, the weight sensor 110 is configured to detect a decrease in weight. 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 to be removed from the weight sensor 110. For example, a weight sensor 110 may be associated with an item that has an individual weight of 226g (eight ounces). When the weight sensor 110 detects a weight decrease of 680g (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 an increase in weight 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 to the individual weight of the item associated with the weight sensor 110. Servers A server 106 may consist of one or more physical devices configured to provide services and resources (e.g., data and / or hardware resources) for the monitoring system 100. FIGURE 38 describes additional information about the hardware configuration of a QRQbnn / zznz / E / Y server 106. In one embodiment, a server 106 may be operatively coupled to one or more sensors 108 and / or weight sensors 110. The monitoring system 100 may comprise any suitable number of servers 106. For example, the monitoring system 100 may comprise a first server 106 that is in signal communication with a first plurality of sensors 108 in a sensor array and a second server 106 which is in signal communication with a second plurality of sensors 108 in the sensor array. As another example, the tracking system 100 may comprise a first server 106 that is in signal communication with a plurality of sensors 108 and a second server 106 that is in signal communication with a plurality of weight sensors 110. In other examples, the tracking system 100 may comprise any other suitable number of servers 106 that are in signal communication with one or more sensors 108 and / or weight sensors 110. 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 the sensor 108 on which they appear and their location within a frame 302 captured by that sensor. 108. In this configuration, the server 106 determines the coefficients for a homography 118 based on the physical location of the markers in the global plane 104 and the pixel locations of the markers in an image of a sensor 108. In the FIGURES Examples of server 106 performing this process are described in 2-7. In one embodiment, a server 106 is configured to calibrate the position of a rack within the global plane 104 using sensors 108. This process allows the tracking system 100 to detect when a rack 112 or a sensor 108 has moved from its original location. within space 102. In this configuration, the server 106 periodically compares the current shelf location of a rack 112 with an expected shelf location for the rack 112 using a sensor 108. In case the current shelf location does not match the expected location of the rack, then the server 106 will use one or more sensors 108 to determine if the rack 112 has moved or if the first sensor 108 has moved. An example of server 106 performing this process is described in FIGURES 8 and 9. In one embodiment, a server 106 is configured to transfer tracking information for an object (e.g., a person) as it moves between the fields of view of adjacent sensors 108. This process allows QRQbnn / zznz / E / And the tracking system 100 follows people as they move within the interior field of space 102. In this configuration, the server 106 tracks the movement of an object within the field of view of a first sensor 108 and then transfers tracking information (e.g., an object identifier) for the object when it enters the field of view of a second adjacent sensor 108. An example of server 106 performing this process is described in FIGURES 10 and 11. 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 takes 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 rack in a rack 112. rack 112. The server 106 uses a predetermined area within the image as a virtual curtain that is used to determine which region and which shelf of a rack 112 is interacting with a person. An example of server 106 performing this process is described in FIGURES 12-14. In one embodiment, a server 106 is configured to detect when an item has been picked 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 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y process allows the tracking system 100 to associate items in a rack 112 with the person who 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 area 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 server 106 performing this process is described in FIGURES 15 and 18. 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 picked up by a person that cannot be identified based solely on 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 area 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 server 106 performing this process is described in FIGURES 16 and 18. In one embodiment, a server 106 is configured to identify items that have been misplaced in a rack 112. This process allows the tracking system 100 to remove items from a shopper's digital cart when the shopper drops off an item regardless of whether it was placed or not. not back into its proper location. For example, a person may put an item back in the wrong location on 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 replaced in the 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 who placed the item in the rack 112 and analyzes their digital cart to determine which item was returned based on the weights of the items in their digital cart. An example of server 106 performing this process is described in FIGURES 17 and 18. Customers In some embodiments, one or more sensors 108 and / or weight sensors 110 are operatively coupled to a server 106 through a client 105. In one embodiment, the QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y tracking system 100 comprises a plurality of clients 105 that may be operatively coupled to one or more sensors 108 and / or weight sensors 110. For example, the first client 105 may be operatively coupled to one or more sensors 108 and / or weight sensors 110 and a second client 105 may be operatively coupled to one or more sensors 108 and / or weight sensors 110. A client 105 may consist of 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 data exchange 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 called a monitoring subsystem. 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 also 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. Sensor mapping process FIGURE 2 is a flowchart of one embodiment of a sensor mapping method 200 for the tracking system 100. The tracking system 100 may employ method 200 to generate a homography 118 for a sensor 108. As described above, a homography 118 allows the tracking system 100 to determine where a person is physically located within the entire space 102 based on the sensor 108 in which it appears, and its location within a frame 302 captured by that sensor 108. Once generated, the homography 118 can be used to translate between pixel locations 402 in images (e.g., frames 302) captured by a sensor 108 and coordinate 306 (x, y) in the global plane 104 (i.e., physical locations in space 102). The following is a non-limiting example of the process to generate a homography 118 for a single sensor 108. This same process can be repeated to generate a homography 118 for other sensors 108. In step 202, the tracking system 100 receives the coordinates 306 (x, y) for the markers 304 in space 102. Referring to FIGURE 3 as an example, each marker 304 is an object that identifies a known physical location within of space 102. Markers 304 are used to demarcate locations in the physical domain (i.e., global plane 104) that can be mapped to pixel locations 402 in a frame 302 from a sensor 108. In this example, markers 304 They are represented as stars on the floor of the QRQbnn / zznz / E / Y space 102. A marker 304 may be formed by any suitable object that can be observed by a sensor 108. For example, a marker 304 may be a tape or a sticker that is placed on the floor of the space 102. As another example, a marker 304 may be a design or mark on the floor of space 102. In other examples, markers 304 may be placed at any other suitable location within space 102 that is observable by a sensor 108. For For example, one or more markers 304 may be placed on top of a rack 112. In one embodiment, the coordinates 306 (x, y) for the markers 304 are provided by an operator. For example, an operator can manually place markers 304 on the floor of space 102. The operator can determine a location 306 (x, y) for a marker 304 by measuring the distance between the marker 304 and the reference location 101 for the plane 104. global. The operator may then provide the determined location 306 (x, y) to a server 106 or a client 105 of the tracking system 100 as an input. Referring to the example of FIGURE 3, the tracking system 100 may receive a first coordinate 306A (x, y) for a first marker 304A in a space 102 and a second coordinate 306B (x, y) for a second marker 304B in the space 102. The first coordinate 306A (x, y) describes the physical location of the first marker 304A with respect to the global plane 104 of the space 102. The second coordinate 306B (x, y) describes the physical location of the second marker 304B with respect to to the global plane 104 of space 102. The tracking system 100 may repeat the process of obtaining coordinates 306 (x, y) for any suitable number of additional markers 304 within space 102. Once the tracking system 100 knows the physical location of the markers 304 within the space 102, the tracking system 100 determines where the markers 304 are located with respect to pixels in the frame 302 of a sensor 108. Returning to the FIGURE 2 At step 204, the tracking system 100 receives a frame 302 from a sensor 108. Referring to FIGURE 4 as an example, the sensor 108 captures an image or frame 302 of the global plane 104 for at least a portion of the space 102. In this example, frame 302 comprises a plurality of markers 304. Returning to FIGURE 2 at step 206, tracking system 100 identifies markers 304 within frame 302 of sensor 108. In one embodiment, tracking system 100 uses object detection to identify markers 304 within frame 302. For example, markers 304 may have known features (e.g., shape, pattern, color, text, etc.) that tracking system 100 may search within frame 302 to identify a marker 304. Referring to the example of FIGURE 3, each QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y marker 304 is star-shaped. In this example, tracking system 100 may search frame 302 for star-shaped objects to identify markers 304 within frame 302. Tracking system 100 may identify first marker 304A, second marker 304B, and any other markers. 304 within frame 302. In other examples, tracking system 100 may use any other suitable aspect to identify markers 304 within frame 302. In other embodiments, tracking system 100 may employ any other suitable image processing technique. to identify the markers 302 with the frame 302. For example, the markers 304 may have a known color or pixel value. In this example, tracking system 100 may use thresholds to identify markers 304 within frame 302 that correspond to the color or pixel value of markers 304. Returning to FIGURE 2 at step 208, the tracking system 100 determines the number of markers 304 identified within the frame 302. Here, the tracking system 100 counts the number of markers 304 that were detected within the frame 302. Referring To the example of FIGURE 3, the tracking system 100 detects eight markers 304 within the frame 302. Returning to FIGURE 2 at step 210, the system QRQbnn / zznz / E / Y Tracking 100 determines whether the number of identified markers 304 is greater than or equal to a predetermined threshold value. In some embodiments, the predetermined threshold value is proportional to a level of precision for generating a homography 118 for a sensor 108. Increasing the predetermined threshold value may increase the precision in generating a homography 118 while decreasing the predetermined threshold value may decrease the precision when generating a homography 118. As an example, the default threshold value can be set to a value of six. In the example shown in FIGURE 3, the tracking system 100 identified eight markers 304 that is greater than the predetermined threshold value. In other examples, the default threshold value may be set to any other suitable value. The tracking system 100 returns to step 204 in response to determining that the number of identified markers 304 is less than the predetermined threshold value. In this case, the tracking system 100 returns to step 204 to capture another frame 302 from space 102 using the same sensor 108 to attempt to detect more markers 304. Here, the tracking system 100 attempts to obtain a new frame 302 that includes a number of markers 304 that is greater than or equal to the default threshold value. For example, the tracking system 100 may receive a new frame 302 from space 102 after an operator QRQbnn / zznz / E / And add one or more additional markers 304 to the space 102. As another example, the tracking system 100 may receive a new frame 302 after the lighting conditions have been changed to improve the detectability of the markers. 304 within frame 302. In other examples, tracking system 100 may receive a new frame 302 after any type of change that improves the detectability of markers 304 within frame 302. The monitoring 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. In step 212, tracking system 100 determines pixel locations 402 in frame 302 for identified markers 304. For example, the tracking system 100 determines a first pixel location 402A within the frame 302 that corresponds to the first marker 304A and a second pixel location 402B within the frame 302 that corresponds to 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. which indicates where the second marker 304B is located in frame 302. In step 214, the tracking system 100 generates QRQbnn / zznz / E / Y a homography 118 for the sensor 108 based on the pixel locations 402 of the markers 304 identified with the frame 302 of the sensor 108 and the coordinate 306 (x, y) of the markers 304 identified 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 of FIGURE 3, the tracking system 100 associates the first pixel location 402A for the first marker 304A with the first coordinate 306A (x, y) for the first marker 304A. The tracking system 100 also associates the second pixel location 402B for the second marker 304B with the second coordinate 306B (x, y) for the second marker 304B. The tracking system 100 may repeat the process of associating pixel locations 402 and coordinate 306 (x, y) for all identified markers 304. The tracking system 100 then determines a relationship between the pixel locations 402 of the markers 304 identified with the frame 302 of the sensor 108 and the coordinates 306 (x, y) of the markers 304 identified 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 coordinates 306 (x, y) in the plane QRQbnn / zznz / E / Y 104 overall. Additional information about a homography 118 is described in FIGURES 5A and 5B. Once the tracking system 100 generates the homography 118 for the sensor 108, the tracking system 100 stores an association between the sensor 108 and the homography 118 generated in memory (for example, memory 3804). The tracking system 100 may repeat the process described above to generate and associate homographies 118 with other sensors 108. Continuing with the example of FIGURE 3, the tracking system 100 may receive a second frame 302 from a second sensor 108. In this For 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, a fourth pixel location 402 in the second frame 302 for the second marker 304B, and pixel locations 402 for any other marker 304. 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 first coordinate 306A (x, y) in the global plane 104 for the first marker 304A, the second coordinate 306B (x, y) in the global plane 104 for the second marker 304B, and locations 402 of QRQbnn / zznz / E / Y pixels and coordinates 306 (x, y) 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., coordinates 306 ( x, y)) in the global plane 104. The coefficients of the second homography 118 are different from the coefficients of the homography 118 that are associated with the first sensor 108. This process uniquely associates each sensor 108 with a corresponding homography 118 that maps pixel locations 402 from the sensor 108 to the coordinates 306 (x, y) in the global plane 104. nomographies An example of a homography 118 for a sensor 108 is described in FIGURES 5A and 5B. Referring to FIGURE 5A, a homography 118 comprises a plurality of coefficients configured to translate between pixel locations 402 in a frame 302 and physical locations (e.g., (x, y) coordinate 306) in the global plane 104. In this example, homography 118 is set up as a matrix and the coefficients of homography 118 are represented as Hn, H12, H13, H14, H21, H22, H23, H24, H31, H32, H33, H34, H41, H42, H43 and H44. The tracking system 100 may generate the homography 118 by defining a relationship or function between pixel locations 402 in a frame 302 and physical locations (e.g., (x, y) coordinate 306) in the global plane 104 using the coefficients. For example, the tracking system 100 may define one or more functions using the coefficients and may perform a regression (e.g., least squares regression) to resolve the values of the coefficients that project pixel locations 402 of a frame 302 of a sensor at coordinate 306 (x, y) in the global plane 104. Referring to the example of FIGURE 3, the homography 118 for the sensor 108 is configured to project the first pixel location 402A in the frame 302 for the first marker 304A to the first coordinate 306A (x, y) in the global plane 104 for the first marker 304A and project the second pixel location 402B in the frame 302 for the second marker 304B to the second coordinate 306B (x, y) in the global plane 104 for the second marker 304B. In other examples, the tracking system 100 may resolve the homography coefficients 118 using any other suitable technique. In the example shown in FIGURE 5A, the z value at pixel location 402 may correspond to a pixel value 404. In this case, the homography 118 is further configured to translate between pixel values 404 in a frame 302 and z-coordinates (e.g., heights or elevations) in the global plane 104. Using homographies Once the tracking system 100 generates a homography 118, the tracking system 100 can use the homography 118 to determine the location of an object (e.g., a person) within the space 102 based on the QRQbnn / zznz / E / Y 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 homograph 118 to determine a corresponding coordinate 306 (x, y) in the global plane 104. For example, the tracking system 100 receives a first frame 302 from a sensor 108 and determines the first pixel location in the frame 302 for an object in space 102. The tracking system 100 can 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 coordinate 306 (x, y) that identifies a first x-value and a first y-value in the global plane 104 where the object is located. In some cases, the tracking system 100 may use multiple sensors 108 to determine the location of the object. The use of multiple sensors 108 can provide more precision in 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 space 102. The Tracking system 100 may then apply a second homography 118 that is associated with the second sensor 108 to the second pixel location 402 of the object to determine a second coordinate 306 (x, y) that identifies a second x-value and a second x-value. and in the global plane 104 where the object is located. When the first coordinate 306 (x, y) and the second coordinate 306 (x, y) are the same, the tracking system 100 may use the first coordinate 306 (x, y) or the second coordinate 306 (x, y), as the physical location of the object within space 102. The tracking system 100 may employ any suitable grouping technique between the first coordinate 306 (x, y) and the second coordinate 306 (x, y) when the first coordinate 306 (x, y) , y) and the second coordinate 306 (x, y) are not the same. In this case, the first coordinate 306 (x, y) and the second coordinate 306 (x, y) are different, so the tracking system 100 must determine the physical location of the object within space. 102 based on the first location 306 (x, y), and the second location 306 (x, y). For example, the tracking system 100 may generate an average coordinate (x, y) for the object by calculating an average between the first coordinate 306 (x, y) and the second coordinate 306 (x, y). As another example, the tracking system 100 can generate an average (x, y) coordinate for the object by calculating a mean QRQbnn / zznz / E / Y between the first coordinate 306 (x, y) and the second coordinate 306 (x, y) . In other examples, the tracking system 100 may employ any other suitable technique to resolve differences between the first coordinate 306 (x, y) and the second coordinate 306 (x, y). The tracking system 100 may use the inverse of the homography 118 to project from coordinates 306 (x, y) in the global plane 104 to pixel locations 402 in a frame 302 of a sensor 108. For example, the system 100 tracking receives a coordinate 306 (x, y) 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 can 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 can calculate the inverse matrix of homograph 500 when homograph 118 is represented as a matrix. Referring to FIGURE 5B as an example, the tracking system 100 can perform a matrix multiplication between the coordinates 306 (x, y) in the global plane 104 and the inverse homography 118 to determine a corresponding pixel location 402 in the frame 302 for sensor 108. Sensor mapping using a marker grid FIGURE 6 is a flow chart of a modality QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y of a sensor mapping method 600 for the tracking system 100 using a marker grid 702. The tracking system 100 may employ method 600 to reduce the amount of time it takes to generate a homography 118 for a sensor 108. For example, the use of a marker grid 702 reduces the amount of setup time required to generate a homography 118. for a sensor 108. Typically, each marker 304 is placed within a space 102 and the physical location of each marker 304 is determined independently. This process is repeated for each sensor 108 in a sensor array. In contrast, a marker grid 702 is a portable surface comprising a plurality of markers 304. The marker grid 702 can be formed using carpet, fabric, cardstock, foam board, vinyl, paper, wood, or any other suitable type of material. Each marker 304 is an object that identifies a particular location on the marker grid 702. Examples of markers 304 include, but are not limited to, shapes, symbols, and text. The physical locations of each marker 304 on marker grid 702 are known and stored in memory (e.g., marker grid information 716). The use of a marker grid 702 simplifies and speeds up the process of placing and determining the location of the markers 304 because the marker grid 702 and its markers 304 can be quickly repositioned anywhere within the space 102 without having to individually move the markers. 304 or add new markers 304 to the space 102. Once generated, the homography 118 can be used to translate between pixel locations 402 in the frame 302 captured by a sensor 108 and coordinate 306 (x, y) in the global plane 104 ( that is, physical locations in space 102). In step 602, the tracking system 100 receives a first coordinate 306A (x, y) for a first corner 704 of a marker grid 702 in a space 102. Referring to FIGURE 7 as an example, the marker grid 702 is configured to be positioned on a surface (e.g., the floor) within the space 102 that is observable by one or more sensors 108. In this example, the tracking system 100 receives a first coordinate 306A (x, y) in the plane 104 global for a first corner 704 of the marker grid 702. The first coordinate 306A (x, y) describes the physical location of the first corner 704 with respect to the global plane 104. In one embodiment, the first coordinate 306A (x, y) is based on a physical measurement of a distance between a reference location 101 in space 102 and the first corner 704. For example, an operator may provide the first coordinate 306A ( x, y) for the first corner 704 of the marker grid 702. In this example, an operator can manually place marker grid 702 QRQbnn / zznz / E / Y on the floor of space 102. The operator can determine a location 306 (x, y) for the first corner 704 of the marker grid 702 by measuring the distance between the first corner 704 of the marker grid 702 and the reference location 101 for the global plane 104. The operator may then provide the determined location 306 (x, y) to a server 106 or a client 105 of the tracking system 100 as an input. 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 coordinate 306A (x, y). 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 coordinate 306A (x, y) 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 coordinate 306A (x, y) for the first corner 704 using any other suitable technique. Returning to FIGURE 6 at step 604, the tracking system 100 determines the coordinates 306 (x, y) for the markers 304 on the marker grid 702. Returning to the example of FIGURE 7, the tracking system 100 determines a second coordinate 306B (x, y) for a first marker 304A QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y in marker grid 702. The tracking system 100 comprises marker grid information 716 that identifies offsets between markers 304 on marker grid 702 and the first corner 704 of marker grid 702. In this example, the offset comprises a distance between the first corner 704 of the marker grid 702 and the first marker 304A with respect to the x-axis and the y-axis of the global plane 104. Using the marker grid information 1912, the tracking system 100 can determine the second coordinate 306B (x, y) for the first marker 304A by adding an offset associated with the first marker 304A to the first coordinate 306A (x, y) for the first corner 704 of the marker grid 702. In one embodiment, the tracking system 100 determines the second coordinate 306B (x, y) based, at least in part, on a rotation of the marker grid 702. For example, the tracking system 100 may receive a fourth coordinate 306D (x, y) that identifies the 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 can obtain the fourth coordinate 306D (x, y) 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 QRQbnn / zznz / E / Y first coordinate 306A (x, y) for the first corner 704 of the marker grid 702 and the fourth coordinate 306D (x, y) for the second corner 706 of the marker grid 702. In this example, the rotation angle 712 is around the first corner 704 of the marker grid 702 within the global plane 104. The tracking system 100 then determines the second coordinate 306B (x, y) for the first marker 304A by applying a translation by adding the displacement associated with the first marker 304A to the first coordinate 306A (x, y) for the first corner 704 of the marker grid 702 and applying a rotation using the rotation angle 712 about the first coordinate 306A (x, y) for the first corner 704 of the marker grid 702. In other examples, the tracking system 100 may determine the second coordinate 306B (x, y) 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 in the marker grid 702. For example, the tracking system 100 determines a third coordinate 306C (x, y) for a second marker 304B on the marker grid 702. Here, the tracking system 100 uses the information from the marker grid 716 to identify an offset associated with the second marker 304A. The tracking system 100 may determine the third coordinate 306C (x, y) QRQbnn / zznz / E / Y for the second marker 304B by adding the offset associated with the second marker 304B to the first coordinate 306A (x, y) for the first corner 704 of the marker grid 702. In another embodiment, the tracking system 100 determines a third coordinate 306C (x, y) 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 determines where the markers 304 are located with respect to pixels in the frame 302 of a sensor 108. In 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 space 102. The frame 302 comprises one or more markers 304 of the 702 marker grid. Box 302 is configured similarly to box 302 described in FIGURES 2-4. For example, frame 302 comprises a plurality of pixels, each of which is associated with a pixel location 402 within frame 302. Pixel location 402 identifies a pixel row and a pixel column where a pixel is located. . In one embodiment, each pixel is associated with a pixel value 404 that indicates a depth or distance measurement. For example, a pixel value 404 may correspond to a distance between the sensor 108 and a surface within the space 102. In step 610, tracking system 100 identifies markers 304 within frame 302 of sensor 108. Tracking system 100 may identify markers 304 within frame 302 using a process similar to the process described in step 206 of FIGURE 2. For example, tracking system 100 may use object detection to identify markers 304 within frame 302. Referring to the example of FIGURE 7, each marker 304 is a unique shape or symbol. In other examples, each marker 304 may have other unique features (e.g., shape, pattern, color, text, etc.). In this example, the tracking system 100 may search for objects within frame 302 that correspond to known features of a marker 304. The tracking system 100 may identify the first marker 304A, the second marker 304B, and any other marker 304 in the marker grid 702. In one embodiment, the tracking system 100 compares the features of the identified markers 304 with the features of the known markers 304 in the marker grid 702 using a marker dictionary 718. Marker dictionary 718 identifies a plurality of markers 304 that are associated with marker grid 702. In this example, the tracking system 100 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y may identify the first marker 304A by identifying a star in 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. marker that corresponds to the first marker 304A. Similarly, the tracking system 100 may identify the second marker 304B by identifying a triangle in 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 dictionary. 718 of the marker that corresponds to the second marker 304B. The tracking system 100 may repeat this process for any other marker 304 identified in frame 302. In another embodiment, marker grid 702 may comprise markers 304 containing text. In this example, each marker 304 can be uniquely identified based on its text. This configuration allows the tracking system 100 to identify the markers 304 in the frame 302 using text recognition or optical character recognition techniques in the frame 302. In this case, the tracking system 100 can use a marker dictionary 718 that It comprises a plurality of predefined words that are associated with a marker 304 in the marker grid 702. For example, the tracking system 100 may perform text recognition to identify the text with the frame 302. The tracking system 100 may compare the identified text to the words in the bookmark dictionary 718. Here, the tracking system 100 checks whether the identified text matches any of the known texts that correspond to a marker 304 in 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 to the identified text. For example, 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 marker 304 in the marker grid 702 using a similar process. Returning to FIGURE 6 at step 610, the tracking system 100 determines a number of markers 304 identified within the frame 302. Here, the tracking system 100 counts the number of markers 304 that were detected within the frame 302. In reference To the example of FIGURE 7, the tracking system 100 detects five markers 304 within the frame 302. QRQbnn / zznz / E / Y Returning to FIGURE 6 at step 614, the monitoring system 100 determines whether the number of identified markers 304 is greater than or equal to a predetermined threshold value. The tracking system 100 may compare the number of identified markers 304 with the predetermined threshold value using a process similar to the process described in step 210 of FIGURE 2. The tracking system 100 returns to step 606 in response to determining that the number of identified markers 304 is less than the default threshold value. In this case, the tracking system 100 returns to step 606 to capture another frame 302 from space 102 using the same sensor 108 to attempt to detect more markers 304. Here, the tracking system 100 attempts to obtain a new frame 302 that includes a number of markers 304 that is greater than or equal to the default threshold value. For example, the tracking system 100 may receive a new frame 302 from the space 102 after an operator places the marker grid 702 back into the space 102. As another example, the tracking system 100 may receive a new frame 302 after that the lighting conditions have been changed to improve the detectability of the markers 304 within the frame 302. In other examples, the tracking system 100 may receive a new frame 302 after any type of change that improves the detectability of the markers. 304 inside box 302. The monitoring 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 an appropriate number of markers 304 in the marker grid 702, the tracking system 100 determines a pixel location 402 for each of the identified markers 304. Each marker 304 may occupy multiple pixels in frame 302. This means that for each marker 304, the tracking system 100 determines which pixel location 402 in the frame 302 corresponds to its coordinate 306 (x, y) in the global plane 104. In one embodiment, the tracking system 100 uses bounding boxes 708 to narrow or restrict the search space when attempting to identify the pixel location 402 for the markers 304. A bounding box 708 is an area or region defined within the box 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 box 302 that comprises a marker 304. In step 614, the tracking system 100 identifies the bounding boxes 708 for the markers 304 within the frame 302. In one embodiment, the tracking system 100 identifies a plurality of pixels in the frame QRQbnn / zznz / E / Y 302 that correspond to a marker 304 and then defines a bounding box 708 that encloses the pixels corresponding to the marker 304. The tracking system 100 can repeat this process for each of the markers 304. Returning to the example of FIGURE 7, the Tracking system 100 may identify a first bounding box 708A for the first marker 304A, a second bounding box 708B for the second marker 304B, and bounding boxes 708 for any other marker 304 identified within the frame 302. 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, tracking system 100 may use text recognition to identify pixels with box 302 comprising a word corresponding to a marker 304. Tracking system 100 may define a bounding box 708 enclosing pixels corresponding to the word. identified. In other embodiments, the tracking system 100 may employ any other suitable image processing technique to identify bounding boxes 708 for the identified markers 304. Returning to FIGURE 6 at step 616, the tracking system 100 identifies a pixel 710 within each QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y bounding box 708 that corresponds to a pixel location 402 in frame 302 for a marker 304. As described above, each marker 304 may occupy multiple pixels in frame 302 and the tracking system 100 determines which pixel 710 in frame 302 corresponds to pixel location 402 for a coordinate 306 (x, y) in global plane 104. In one embodiment, each marker 304 comprises a light source. Examples of light sources include, but are not limited to, light emitting diodes (LEDs), infrared (IR) LEDs, incandescent lights, or any other suitable type of light source. In this configuration, a pixel 710 corresponds to a light source for a marker 304. In another embodiment, each marker 304 may comprise a detectable feature that is unique to each marker 304. For example, each marker 304 may comprise a unique color. which is associated with marker 304. As another example, each marker 304 may comprise a unique symbol or pattern that is associated with the marker 304. In this configuration, a pixel 710 corresponds to the detectable feature of the marker 304. Continuing with the previous example, the tracking system 100 identifies a first pixel 710A for the first marker 304, a second pixel 710B for the second marker 304, and pixels 710 for any other marker 304 identified. In step 618, tracking system 100 determines pixel locations 402 within frame 302 for each of the identified pixels 710. For example, tracking system 100 may identify a first pixel row and a first pixel column of frame 302 that corresponds to first pixel 710A. Similarly, the tracking system 100 may identify a pixel row and a pixel column in 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 the coordinates 306 (x, y) in the global plane 104 and the pixel locations 402 in the frame 302 for each of the 304 markers identified. In step 620, the tracking system 100 generates a homography 118 for the sensor 108 based on the pixel locations 402 of the markers 304 identified in the frame 302 of the sensor 108 and the (x, y) coordinate 306 of the markers. 304 identified in the global 104 plane. 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 of FIGURE 7, the tracking system 100 associates the first pixel location 402 for the first marker 304A with the second coordinate 306B (x, y) for the first marker 304A. The tracking system 100 also associates the second location 402 of QRQbnn / zznz / E / Y pixels for the second marker 304B with the third location 306C (x, y) for the second marker 304B. The tracking system 100 may repeat this process for all identified markers 304. The tracking system 100 then determines a relationship between the pixel locations 402 of the markers 304 identified with the frame 302 of the sensor 108 and the coordinate 306 (x, y) of the markers 304 identified in the global plane 104 to generate a homograph 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 coordinates 306 (x, y) in the global plane 104. The generated homography 118 is similar to the homography described in FIGURES 5A and 5B. Once the tracking system 100 generates the homography 118 for the sensor 108, the tracking system 100 stores an association between the sensor 108 and the generated homography 118 in memory (e.g., memory 3804). The tracking system 100 can repeat the process described above to generate and associate homographies 118 with other sensors 108. The marker grid 702 can be moved or repositioned within the space 108 to generate a homograph 118 for another sensor 108. For example, an operator can reposition the marker grid 702 to allow another sensor 108 to see the markers QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 304 in 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 coordinate 306B (x, y) in the global plane 104 for the first marker 304A, the coordinate 306C (x, y) in the global plane 104 for the second marker 304B, and pixel locations 402 and coordinate 306 (x, y) 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., coordinates 306 (x, y)) 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 on the global 104 plane. This process only associates a homography 118 with a sensor 108 based on the physical location (e.g., coordinate 306 (x, y)) of the sensor 108 in the global plane 104. Shelf Position Calibration FIGURE 8 is a flowchart of one embodiment of a shelf position calibration method 800 for the tracking system 100. The monitoring system 100 may employ method 800 to periodically check whether a rack 112 or a sensor 108 has moved within the space 102. For example, a rack 112 may be accidentally bumped or moved by a person, causing the position of the rack 112 moves with respect to the global plane 104. As another example, a sensor 108 may become detached from its mounting structure, causing the sensor 108 to sink or move from its original location. Any change in the position of a rack 112 and / or a sensor 108 after the tracking system 100 has been calibrated will reduce the accuracy and performance of the tracking system 100 in tracking objects within the space 102. The system Tracking 100 employs method 800 to detect when a rack 112 or sensor 108 has moved and then recalibrates based on the new position of the rack 112 or sensor 108. A sensor 108 may be placed within the space 102 so that the frames 302 captured by the sensor 108 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y include one or more shelf markers 906 that are located in a rack 112. A shelf marker 906 is an object that is placed in a rack 112 that can be used to determine a location (e.g., a coordinate 306 (x, y) and a pixel location 402) for the rack 112. The tracking system 100 is configured to store the pixel locations 402 and the coordinates 306 (x, y) of the rack markers 906 that are associated with frames 302 of a sensor 108. In one embodiment, the pixel locations 402 and coordinates 306 (x, y) of the shelf markers 906 can be determined using a process similar to the process described in FIGURE 2. In another In this embodiment, an operator may provide the pixel locations 402 and (x, y) coordinates 306 of the shelf markers 906 as input to the tracking system 100. A shelf marker 906 may be an object similar to the marker 304 described in FIGURES 2-7. In some embodiments, each shelf marker 906 in a rack 112 is unique from other shelf markers 906 in the rack 112. This feature allows the tracking system 100 to determine an orientation of the rack 112. Referring to the example in FIGURE 9 , each shelf marker 906 is a unique shape that identifies a particular portion of the rack 112. In this example, the tracking system 100 may associate a first shelf marker 906A and a second shelf marker 906B QRQbnn / zznz / E / Y with a front portion of rack 112. Similarly, tracking system 100 may also associate a third shelf marker 906C and a fourth shelf marker 906D with the back of rack 112. In others For example, each shelf marker 906 may have other uniquely identifiable features (e.g., color or patterns) that can be used to identify a shelf marker 906. Returning to FIGURE 8 at step 802, the tracking system 100 receives a first frame 302A from a first sensor 108. Referring to FIGURE 9 as an example, the first sensor 108 captures the first frame 302A comprising at least a portion of a rack 112 within the global plane 104 for space 102. Returning to FIGURE 8 at step 804, the tracking system 100 identifies one or more shelf markers 906 within the first frame 302A. Returning again to the example of FIGURE 9, rack 112 comprises four shelf markers 906. In one embodiment, the tracking system 100 may use object detection to identify shelf markers 906 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 to a shelf marker 906. In this example, the tracking system 100 may identify a shape (e.g., a star) in the first frame 302A that corresponds to a first shelf marker 906A. In other embodiments, the tracking system 100 may use any other suitable technique to identify a shelf marker 906 within the first frame 302A. The tracking system 100 may identify any number of shelf markers 906 that are present in the first frame 302A. 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 determines their pixel locations 402 in the first frame 302A so that they can be compared with the expected pixel locations 402 for the shelf markers 906. Returning to FIGURE 8 at step 806, the tracking system 100 determines current pixel locations 402 for the shelf markers 906 identified in the first frame 302A. Returning to the example of FIGURE 9, the tracking system 100 determines a first current pixel location 402A for the shelf marker 906 within the first frame 302A. The first current pixel location 402A comprises a first pixel row and a first pixel column where the shelf marker 906 is located within the first frame 302A. Returning to FIGURE 8 at step 808, the tracking system 100 determines whether the pixel locations 402 QRQbnn / zznz / E / Y Current QRQbnn / zznz / E / Y for shelf markers 906 match the expected pixel locations 402 for shelf markers 906 in the first frame 302A. Returning to the example of FIGURE 9, the tracking system 100 determines whether the current first pixel location 402A matches an expected first pixel location 402 for the shelf marker 906. As described above, when the tracking system 100 is initially calibrated, the tracking system 100 stores pixel location information 908 comprising expected pixel locations 402 within the first frame 302A of the first sensor 108 for shelf markers 906 of a rack 112. The tracking system 100 uses the expected pixel locations 402 as reference points to determine whether the rack 112 has moved. By comparing the expected pixel location 402 for a rack marker 906 with its current pixel location 402, the tracking system 100 can determine if there are any discrepancies that indicate that the rack 112 has moved. The tracking system 100 may terminate the 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 have moved since the current pixel locations 402 match the expected pixel locations 402 for the rack marker 906. The tracking system 100 proceeds to step 810 in response to a determination in step 808 that one or more current pixel locations 402 for shelf markers 906 do not match an expected pixel location 402 for shelf markers 906. For example, tracking system 100 may determine that the current first pixel location 402A does not match the expected first pixel location 402 for shelf marker 906. In this case, the tracking system 100 determines that the rack 112 and / or the first sensor 108 has moved since the current first pixel location 402A does not match the expected first pixel location 402 for the rack 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 one field of view partially overlapping with the first sensor 108. The first sensor 108 and the second sensor 108 are positioned so 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 may 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 of FIGURE 9, the second frame 304B comprises the first shelf marker 906A, the second shelf marker 906B, the third shelf marker 906C and the fourth shelf marker 906D of the rack 112. Returning to FIGURE 8 at step 812, the tracking system 100 identifies the shelf markers 906 that are present within the second frame 302B of the second sensor 108. The tracking system 100 may identify the shelf markers 906 using a similar process. to the process described in step 804. Returning again to the example of FIGURE 9, the tracking system 100 may search the second frame 302B for known features (e.g., shapes, patterns, colors, text, etc.) that correspond to a 906 shelf marker. For example, the tracking system 100 may identify a shape (e.g., a star) in the second frame 302B that corresponds to the first shelf marker 906A. 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 determines their pixel locations 402 in the second frame 302B so that they can be compared with the QRQbnn / zznz / E / Y expected pixel locations 402 for shelf markers 906. Returning to FIGURE 8 at step 814, the tracking system 100 determines current pixel locations 402 for the shelf markers 906 identified in the second frame 302B. Returning to the example of FIGURE 9, the tracking system 100 determines a second current pixel location 402B for the shelf marker 906 within the second frame 302B. The second current pixel location 402B comprises a second pixel row and a second pixel column where the shelf marker 906 is located within the second frame 302B of the second sensor 108. Returning to FIGURE 8 at step 816, the tracking system 100 determines whether the current pixel locations 402 for the shelf markers 906 match the expected pixel locations 402 for the shelf markers 906 in the second frame 302B. Returning to the example of FIGURE 9, the tracking system 100 determines whether the current second pixel location 402B matches an expected second pixel location 402 for the shelf marker 906. Similar to what is described above in step 808, the tracking system 100 stores pixel location information 908 comprising expected pixel locations 402 within the second frame 302B of the second sensor 108 for shelf markers 906 of a rack 112 when The tracking system 100 is initially calibrated. To the QRQbnn / zznz / E / Y QRQbnn / zznz / E / And by comparing the second expected pixel location 402 for the rack marker 906 with its current second pixel location 402B, the tracking system 100 can determine whether the rack 112 has moved or the first sensor 108 It has moved. 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, causing 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 may conclude that the rack 112 has moved when multiple sensors 108 observe a mismatch between the current pixel locations 402 and the expected pixel locations 402 for one or more rack 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 The first sensor 108 has moved with respect to the rack 112 and its shelf markers 906, causing 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 Rack markers 906 will still match the expected pixel locations 402 for rack markers 906 for other sensors 108 because the position of these sensors 108 and the rack 112 have not changed. The tracking system proceeds to step 818 in response to determining that the current pixel location 402 matches the expected second 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. In 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 FIGURES 2 and / or 6. 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., coordinates 306 (x, y)) for the markers 906. Shelf QRQbnn / zznz / E / Y. 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 example, the tracking system 100 can use an existing homography 118 that is associated with the first sensor 108 to determine a first coordinate 306 (x, y) in the global plane 104 where a first shelf marker 906 is located, a second coordinate 306 (x, y) in the global plane 104 where a second shelf marker 906 is located, and coordinate 306 (x, y) for any other shelf marker 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 coordinate 306 (x, y) for the first marker. 906 using a process similar to the process described in FIGURE 5A. The tracking system 100 may repeat this process to determine the (x, y) coordinates 306 for any other identified shelf marker 906. Once the tracking system 100 determines the coordinates 306 (x, y) for the shelf markers 906 and the current pixel locations 402 in the first frame 302A for the shelf markers 906, the tracking system 100 can generate then a new homography 118 for the first sensor 108 using this information. For example, the tracking system 100 may generate the new homography 118 based on the current pixel location 402 for the first marker 906A, the current pixel location 402 for the second marker 906B, the first coordinate 306 (x, y) for the first marker 906A, the second coordinate 306 (x, y) for the second marker 906B, and coordinate 306 (x, y) and locations 402 of pixels for any other shelf markers 906 identified in the first frame 302A. The tracking system 100 associates the first sensor 108 with the new homography 118. This process updates the homography 118 that is associated with the first sensor 108 based on the current location of the first sensor 108. In another embodiment, the tracking system 100 may recalibrate the first sensor 108 by updating the expected pixel locations stored for the shelf marker 906 for the first sensor 108. For example, the tracking system 100 may replace the expected pixel location 402 above for shelf marker 906 with its current pixel location 402. Updating the expected pixel locations 402 for the rack markers 906 with respect to the first sensor 108 allows the tracking system 100 to continue monitoring 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 QRQbnn / zznz / E / Y 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 indicating 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, app pop-up notifications, emails, or any other type. adequate notifications. For example, the tracking system 100 may send a notification indicating that the first sensor 108 has been 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 of return to its original location. Returning to step 816, 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 shelf marker 906 in second frame 302B. In this case, the tracking system 100 determines that the shelf 112 has moved. In 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. QRQbnn / zznz / E / Y QRQtnn / zznz / E / Y for the shelf marker 906 with its current pixel location 402 for both the first sensor 108 and the second sensor 108. The update of the expected pixel locations 402 for the shelf markers 906 with respect to to the first sensor 108 and the second sensor 108 allows the monitoring system 100 to continue monitoring the location of the rack 112 using the first sensor 108 and the second sensor 108. In this case, the monitoring system 100 can continue to compare the locations 402 of current pixel 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 indicating that the rack 112 has moved. For example, tracking system 100 may send a notification indicating that rack 112 has been moved to a person associated with space 102. In response to receiving the notification, the person may inspect and / or move rack 112. back to its original location. The tracking system 100 may update the expected pixel locations 402 for the rack markers 906 again once the rack 112 is moved back to its original location. Object Tracking Transfer FIGURE 10 is a flow chart of a modality QRQbnn / zznz / E / Y of a method 1000 for transferring tracking information to the tracking system 100. The tracking system 100 may employ method 1000 to transfer tracking information for an object (e.g., a person) as it moves between the fields of view of adjacent sensors 108. For example, the tracking system 100 may track the position of people (e.g., shoppers) as they move within the interior of the space 102. Each sensor 108 has a limited field of view, meaning that each sensor 108 can only track the position of a person within a portion of the space 102. The tracking system 100 employs a plurality of sensors 108 to track the movement of a person within the entire space 102. Each sensor 108 operates independently of one another, meaning that the tracking system 100 tracks a person as they move from the field of view of a sensor 108 to the field of view of an adjacent sensor 108. The tracking system 100 is configured such that an object identifier 1118 (e.g., a customer identifier) is assigned to each person when he or she enters 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, telephone numbers, email addresses, or any other type of identifier suitable for a person or object. In this configuration, the tracking system 100 tracks the movement of a person within the field of view of a first sensor 108 and then transfers tracking information (e.g., an object identifier 1118) to the person when he or she enters the field of view. vision of a second adjacent sensor 108. In one embodiment, the tracking system 100 comprises adjacency lists 1114 for each sensor 108 that identify adjacent sensors 108 and pixels within frame 302 of sensor 108 that overlap with adjacent sensors 108. Referring to the example of FIGURE 11, a first sensor 108 and a second sensor 108 have partially overlapping fields of view. This means that a first frame 302A of the first sensor 108 partially overlaps with a second frame 302B of the second sensor 108. The overlapping pixels between the first frame 302A and the second frame 302B are called the overlap region 1110. In this For example, the tracking system 100 comprises a first adjacency list 1114A that identifies pixels in the first frame 302A that correspond to the overlap region 1110 between the first sensor 108 and the second sensor 108. For example, the first adjacency list 1114A can QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y identify a range of pixels in the first frame 302A that correspond to the overlap region 1110. The first adjacency list 114A may further comprise information about other regions of overlap between the first sensor 108 and other adjacent sensors 108. For example, a third sensor 108 may be configured to capture a third frame 302 that partially overlaps the first frame 302A. In this case, the first adjacency list 1114A will further comprise information that identifies pixels in the first frame 302A that correspond to an overlap region between the first sensor 108 and the third sensor 108. Similarly, the tracking system 100 may further comprising a second adjacency list 1114B that is associated with the second sensor 108. The second adjacency list 1114B identifies pixels in the second frame 302B that correspond to the region 1110 of overlap between the first sensor 108 and the second sensor 108. The second adjacency list 1114B may further comprise information about other overlapping regions between the second sensor 108 and other adjacent sensors 108. In FIGURE 11, the second tracking list 1112B is shown as a separate data structure from the first tracking list 1112A, however, the tracking system 100 may use a single data structure to store tracking list information. which is associated with multiple sensors 108. QRQbnn / zznz / E / Y 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 the pixel locations 402 on the sensors 108 where the first person 1106 appears in a list. 1112 tracking. For example, the tracking system 100 may track people within the field of view of a first sensor 108 using a first tracking list 1112A, 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 who are tracked using the first sensor 108. The first tracking list 1112A further comprises pixel location information indicating 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 the coordinate 306 (x, y) for the person in the global plane 104, previous pixel locations 402 within the first frame 302A for a person, and / or a direction of travel 1116 for a person. For example, the tracking system 100 may determine a direction of travel 1116 for the first person 1106 based on their previous pixel locations 402 within the first frame 302A and may store the determined direction of travel 1116 in the first tracking list 1112A. . In one embodiment, the direction of travel 1116 can be represented as a vector with respect to the global plane 104. In other embodiments, direction of travel 1116 may be represented using any other suitable format. Returning to FIGURE 10 at step 1002, the tracking system 100 receives a first frame 302A from a first sensor 108. Referring to FIGURE 11 as an example, the first sensor 108 captures an image or frame 302A of a global plane 104 during at least a portion of space 102. In this example, the first frame 1102 comprises a first object (e.g., a first person 1106) and a second object (e.g., a second person 1108). In this example, the first frame 302A captures the first person 1106 and the second person 1108 as they move within the space 102. Returning to FIGURE 10 at step 1004, the tracking system 100 determines a first pixel location 402A in the first frame 302A for the first person 1106. Here, the tracking system 100 determines the current location of the first person 1106 within of the first frame 302A from the first sensor 108. Continuing with the example of FIGURE 11, the tracking system 100 identifies the QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y first person 1106 in the first frame 302A and determines a first pixel location 402A that corresponds to the first person 1106. In a given frame 302, the first person 1106 is represented by a collection of pixels within the frame 302. Referring to the example of FIGURE 11, the first person 1106 is represented by a collection of pixels showing an aerial view of the first person 1106. The tracking system 100 associates a location 402 of pixels with the collection of pixels representing the first person 1106 to identify the current location of the first person 1106 within a frame 302. In one embodiment, the pixel location 402 of the first person 1106 may correspond to the head of the first person 1106. In this For example, the pixel location 402 of the first person 1106 may be located approximately in the center of the collection of pixels representing the first person 1106. As another example, the tracking system 100 may determine a bounding box 708 that encloses the collection of pixels in the first frame 302A that represent the first person 1106. In this example, the pixel location 402 of the first person 1106 may be located approximately in the center of the bounding box 708. As another example, the tracking system 100 may use object detection or contour detection to identify the first person 1106 within the QRQbnn / zznz / E / Y first frame 302A. In this example, the tracking system 100 may identify one or more traits for the first person 1106 when it enters the space 102. The tracking system 100 may subsequently compare the traits of a person in the first frame 302A with the traits associated with the person. first person 1106 to determine whether the person is the first person 1106. In other examples, the tracking system 100 may use any other suitable technique to identify 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 to the current location of the first person 1106 within the first frame 302A. Returning to FIGURE 10 at step 1006, the tracking system 100 determines that the object is within the overlap region 1110 between the first sensor 108 and the second sensor 108. Returning to the example of FIGURE 11, the tracking system 100 Tracking may compare the first pixel location 402A for the first person 1106 to the pixels identified in the first adjacency list 1114A that correspond to the overlap region 1110 to determine whether the first person 1106 is within the overlap region 1110. The tracking system 100 may determine that the first object 1106 is within the overlap region 1110 when the first location 402A of QRQbnn / zznz / E / Y pixels for the first object 1106 match or are within a range of pixels identified in the first adjacency list 1114A that corresponds to the overlap region 1110. For example, the tracking system 100 may compare the pixel column of pixel location 402A to a range of pixel columns associated with the overlap region 1110 and the pixel row of pixel location 402A to a range of rows. of pixels associated with the overlap region 1110 to determine whether the pixel location 402A is within the overlap region 1110. In this example, the pixel location 402A for the first person 1106 is within the overlap region 1110. In step 1008, the tracking system 100 applies a first homography 118 to the first pixel location 402A to determine a first coordinate 306 (x, y) 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 coordinate 306 (x, y) in the global plane 104. The first homography 118 is configured similarly to the homography 118 described in FIGURES 2-5B. As an example, the tracking system 100 may identify the first homography 118 that is associated with the first sensor 108 and may use matrix multiplication between the first homography 118 and the first pixel location 402A to determine the first coordinate 306 (x, QRQbnn / zznz / E / Y y) at the global level 104. In step 1010, the tracking system 100 identifies an object identifier 1118 for the first person 1106 of the first tracking list 1112A associated with the first sensor 108. For example, the tracking system 100 may identify an object identifier 1118 which is associated with the first person 1106. In 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 determines where the first person 1106 is located in the second frame 302B of the second sensor 108 using a homography 118 which is associated with the second sensor 108. This process QRQbnn / zznz / E / Y identifies the location of the first person 1106 with respect to the second sensor 108 so that they can be tracked using the second sensor 108. In step 1014, the tracking system 100 applies a homograph 118 that is associated with the second sensor 108 to the first coordinate 306 (x, y) to determine a second pixel location 402B in the second frame 302B for the first person 1106. The homograph 118 is configured to translate between pixel locations 402 in the second frame 302B and coordinate 306 (x, y) in the global plane 104. Homograph 118 is configured similarly to homography 118 described in FIGURES 2-5B. As an example, the tracking system 100 may identify the homograph 118 that is associated with the second sensor 108 and may use matrix multiplication between the inverse of the homography 118 and the first coordinate 306 (x, y) to determine the second location. 402B of pixels in the second frame 302B. In 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 address 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 can begin to track 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 it completely leaves the field of view of the first sensor 108. In 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 example, the tracking system 100 may receive a new frame 302 from the first sensor 108 every millisecond, every second, every five seconds, or at any other interval. appropriate time. In 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, this means that the first person 1106 is still within the field of vision of the first sensor 108 and the tracking system 100 must 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, this means that the first person 1106 has left the field of view of the first sensor 108 and the system QRQbnn / zznz / E / Y Tracking system 100 no longer needs to track the movement of the first person 1106 using the first sensor 108. The tracking system 100 can 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 of the first sensor 108 and is no longer present. needs to be tracked using the first sensor 108. In step 1022, the tracking system 100 discards the 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 may stop tracking the first person 1106 using the first sensor 108 and may release resources (e.g. example, memory resources) that were allocated to follow 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 QRQbnn / zznz / E / Y leave the field of view of the second sensor 108. For example, the first person 1106 may leave the space 102 or may move into the field of view of another sensor 108. Shelf interaction detection FIGURE 12 is a flow chart of one embodiment of a shelf interaction detection method 1200 for the tracking system 100. The tracking system 100 may employ method 1200 to determine where a person interacts with a shelf of a rack 112. In addition to tracking where people are located within the space 102, the tracking system 100 also tracks which items 1306 a person picks up. from a rack 112. When a shopper picks up items 1306 from a rack 112, the tracking system 100 identifies and tracks which items 1306 the shopper has chosen, so they can be automatically added to a digital cart 1410 that is associated with the shopper. This process allows items 1306 to be added to the person's digital cart 1410 without the shopper scanning or otherwise identifying the item 1306 they picked up. The digital cart 1410 comprises information about the items 1306 that the buyer has picked up for purchase. In one embodiment, the digital cart 1410 comprises item identifiers and a quantity associated with each item in the digital cart 1410. For example, when the shopper picks up a canned beverage, an item identifier for the beverage is added to their digital cart 1410. The digital cart 1410 will also indicate the number of drinks the shopper has picked up. Once the shopper leaves the space 102, they will automatically be charged for the items 1306 in their digital cart 1410. In FIGURE 13, a side view of a rack 112 is shown from the perspective of a person standing in front of the rack 112. In this example, the rack 112 may comprise a plurality of shelves 1302 for holding and displaying items 1306. Each shelf 1302 can be divided into one or more zones 1304 to contain different items 1306. In FIGURE 13, the rack 112 comprises a first shelf 1302A at a first height and a second shelf 1302B at a second height. Each shelf 1302 is divided into a first zone 1304A and a second zone 1304B. Rack 112 can be configured to carry a different item 1306 (i.e., items 1306A, 1306B, 1306C, and 1036D) within each zone 1304 on each shelf 1302. In this example, rack 112 can be configured to carry up to four different types of items 1306. In other examples, rack 112 may comprise any other suitable number of shelves 1302 and / or zones 1304 for containing items 1306. Tracking system 100 may employ method 1200 to identify which item 1306 a person takes from a rack. 112 based on where the person interacts with the rack 112. QRQbnn / zznz / E / Y Returning to FIGURE 12 at step 1202, the monitoring system 100 receives a frame 302 from a sensor 108. Referring to FIGURE 14 as an example, the sensor 108 captures a frame 302 of at least a portion of the rack 112 within the overall plane 104 for space 102. In FIGURE 14, a top view of rack 112 and two people standing in front of rack 112 are shown from the perspective of sensor 108. Frame 302 comprises a plurality of pixels that are associated each one with a pixel location 402 for the sensor 108. Each pixel location 402 comprises a pixel row, a pixel column, and a pixel value. The pixel row and pixel column indicate the location of a pixel within the frame 302 of the sensor 108. The pixel value corresponds to a z-coordinate (e.g., a height) in the global plane 104. The z-coordinate corresponds to a distance between the sensor 108 and a surface in the global plane 104. Frame 302 further comprises one or more zones 1404 that are associated with zones 1304 of rack 112. Each zone 1404 in frame 302 corresponds to a portion of rack 112 in global plane 104. Referring to the example of FIGURE 14, box 302 comprises a first zone 1404A and a second zone 1404B that are associated with rack 112. In this example, the first zone 1404A and the second zone 1404B correspond to the first zone 1304A and the second zone 1304B of rack 112, respectively. QRQbnn / zznz / E / Y The box 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 passes through to pick up items 1306 from rack 112. The predefined zone 1406 is located near one or more zones 1304 of the rack 112. For example, the predefined zone 1406 may be located near the front of one or more zones 1304 of the rack 112 where the person 1408 would be enough to grab an item 1306 in 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 FIGURE 12 at step 1204, the tracking system 100 identifies an object within a predefined zone 1406 of frame 1402. For example, the tracking system 100 may detect that the hand of the person 1408 enters the zone 1406. predefined. In one embodiment, the tracking system 100 may compare the frame 1402 with a previous frame that was captured by the sensor 108 to detect that the person's hand 1408 has entered the predefined zone 1406. In this example, the tracking system 100 may use differences between frames 302 to detect that the person's hand 1408 enters the predefined zone 1406. In other embodiments, the tracking system 100 may employ any other suitable technique to detect when the person's hand 1408 has entered the predefined zone 1406. In one embodiment, the tracking system 100 identifies the rack 112 that is in proximity to the person 1408. Returning to the example of FIGURE 14, the tracking system 100 can determine a pixel location 402A in the frame 302 for the person 1408. The tracking system 100 may determine a pixel location 402A for the person 1408 using a process similar to the process described in step 1004 of FIGURE 10. The tracking system 100 may use a homography 118 associated with the sensor 108 to determine a coordinate 306 (x, y) in the global plane 104 for the person 1408. The homography 118 is configured to translate between pixel locations 402 in the frame 302 and the coordinates 306 (x, y) in the global plane 104. Homography 118 is configured similarly to homography 118 described in FIGURES 2-5B. As an example, the tracking system 100 may identify the homography 118 that is associated with the sensor 108 and may use matrix multiplication between the homography 118 and the pixel location 402A of the person 1408 to determine a coordinate 306 (x, y). ) on the global 104th plane. The tracking system 100 can then identify which rack 112 is closest to the person 1408 based on the coordinate 306 (x, y) of the person 1408 in the global plane 104. QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y The tracking system 100 may identify an item map 1308 corresponding to 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 assigned to a particular location in the rack 112. Returning to the example of FIGURE 13, a first item 1306A is assigned to a first location that identifies the first zone 1304A and the first shelf 1302A of the rack 112, a second item 1306B is assigned to a second location that identifies the second zone 1304B and the first shelf 1302A of the rack 112, a third item 1306C is assigned to a third location that identifies the first zone 1304A and the second shelf 1302B of the rack 112, and a Fourth item 1306D is assigned to a fourth location that identifies the second zone 1304B and the second shelf 1302B of the rack 112. Returning to FIGURE 12 at step 1206, the tracking system 100 determines a pixel location 402B in frame 302 for the object that entered the predefined zone 1406. Continuing with the previous example, pixel location 402B comprises a first pixel row, a first pixel column, and a first pixel value for the QRQbnn / zznz / E / Y hand of person 1408. In this example, the hand of person 1408 is represented by a collection of pixels in the predefined area 1406. In one embodiment, the pixel location 402 of the hand of the person 1408 may be located approximately in the center of the collection of pixels representing the hand of the person 1408. In other examples, the tracking system 100 may use any other appropriate technique to identify the hand of person 1408 within frame 302. Once the tracking system 100 determines the pixel location 402B of the hand of the person 1408, the tracking system 100 determines which rack 1302 and zone 1304 of the rack 112 the person 1408 is reaching. In step 1208, the system Tracking 100 determines whether the pixel location 402B for the object (i.e., the person's hand 1408) corresponds to a first zone 1304A of the rack 112. The tracking system 100 uses the pixel location 402B of the person's hand. the person 14 08 to determine which side of the rack 112 the hand of the person 1408 is reaching. 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 rack 112 is associated with a plurality of pixels in frame 302 that can be used to determine where person 1408 arrives based on the pixel location 402B of person 1408's hand. QRQbnn / zznz / E / Y 100 Continuing with the example of FIGURE 14, the first zone 1304A of rack 112 corresponds to the first zone 1404A that is associated with a first range of pixels 1412 in frame 302. Likewise, the second zone 1304B of rack 112 is corresponds to the second zone 1404B that is associated with a second pixel range 1414 in frame 302. The tracking system 100 may compare the pixel location 402B of the person's hand 1408 with the first pixel range 1412 to determine whether pixel location 402B corresponds to the first zone 1304A of rack 112. In this example, the first pixel range 1412 corresponds to a range of pixel columns in frame 302. In other examples, the first pixel range 1412 may correspond to a range of pixel rows or a combination of pixel rows and columns in frame 302. In this example, the tracking system 100 compares the first pixel column of pixel location 402B with the first pixel range 1412 to determine whether pixel location 1410 corresponds to the first area 1304A of rack 112. In other words , the tracking system 100 compares the first pixel column of pixel location 402B with the first pixel range 1412 to determine whether the person 1408 is reaching for an item 1306 on the left side of rack 112. In FIGURE 14, the 402B pixel location for person's hand 1408 is not QRQbnn / zznz / E / Y 101 corresponds to the first zone 1304A of rack 112. The tracking system 100 proceeds to step 1210 in response to determining that the pixel location 402B for the object corresponds to the first zone 1304A of rack 112. At step 1210 , the tracking system 100 identifies the first zone 1304A of the rack 112 based on the pixel location 402B for 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 left side of the rack 112. Returning to step 1208, the tracking system 100 advances to step 1212 in response to determining that the pixel location 402B for the object that entered the predefined zone 1406 does not correspond to the first zone 1304B of rack 112. In the 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 can compare the pixel location 402B with other pixel ranges that are associated with other areas 1304 of the rack 112. For example, the tracking system 100 can compare the first pixel column of the location 402B pixels with the 102 second pixel range 1414 to determine whether pixel location 402B corresponds to the second zone 1304B of rack 112. In other words, the tracking system 100 compares the first pixel column of pixel location 402B with the second pixel range pixels 1414 to determine if person 1408 is reaching for an item 1306 on the right side of rack 112. Once the tracking system 100 determines which area 1304 of the rack 112 the person 1408 is arriving at, the tracking system 100 determines which rack 1302 of the rack 112 the person 1408 is arriving at. In step 1214, the tracking system 100 Tracking identifies a pixel value at pixel location 402B for the object that entered the predefined zone 1406. The pixel value is a numerical value that corresponds to 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 at the one that person 1408's hand was in when he entered the predefined zone 1406, which can be used to determine which shelf 1302 person 1408 was arriving at. In step 1216, the tracking system 100 determines whether the pixel value corresponds to the first shelf 1302A of rack 112. Returning to the example of FIGURE 13, the first shelf 1302A of rack 112 corresponds to a QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 103 first range of z values or heights 1310A and the second shelf 1302B corresponds to a second range of z values or heights 1310B. The tracking system 100 may compare the pixel value with the first z value range 1310A to determine whether the pixel value corresponds to the first rack 1302A of the rack 112. As an example, the first z value range 1310A may be a range between 2 meters and 1 meter with respect to the z axis in the global plane 104. The second range of z values 1310B may be a range between 0.9 meters and 0 meters with respect to the z axis in the global plane 104. The pixel value may have a value that corresponds to 1.5 meters with respect to the z axis in the global plane 104. In this example, the pixel value is within the first range of z values 1310A, indicating that the pixel value corresponds to the first shelf 1302A of rack 112. In other words, the person's hand 1408 was detected at a height indicating that person 1408 was reaching the first shelf 1302A of rack 112. The tracking system 100 proceeds to step 1218 in response to determine that the pixel value corresponds to the first shelf of rack 112. In step 1218, the Tracking system 100 identifies the first shelf 1302A of rack 112 based on the pixel value. Returning to step 1216, tracking system 100 proceeds to step 1220 in response to determining that the pixel value does not correspond to the first shelf 1302Ά. 104 of rack 112. In step 1220, the tracking system 100 identifies the second rack 1302B of rack 112 based on the pixel value. In other embodiments, the tracking system 100 may compare the pixel value to other ranges of z values 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 if the pixel value corresponds to the second shelf 1302B of 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, then the tracking system 100 may identify an item 1306 that corresponds to the identified location on the rack 112. In In 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 map 1308 of articles. Returning to the example of FIGURE 14, the tracking system 100 may determine that person 1408 is reaching the right side (i.e., zone 1404B) of rack 112 and the first shelf 1302A of rack 112. In this example, the system Tracking 100 determines that person 1408 is reaching and lifting item 1306B from rack 112. QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 105 In some cases, 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 item 1306 to the appropriate person's digital cart 1410. In the example of FIGURE 14, a second person 1420 is also near rack 112 when the first person 1408 is picking up an item 1306 from rack 112. In this case, the tracking system 100 must assign any picked item to the first person. 1408 and not the second person 1420. 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 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 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 location 402C of pixels of the second person 1420 and the location in the rack 112 where the item 1306 was picked up. The tracking system 100 can then determine that the 106 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 who most likely picked up item 1306 based on its proximity to the location on rack 112 where item 1306 was picked up. This process allows tracking system 100 to identify the correct person who picked up item 1306 from rack 112 before adding item 1306 to your 1410 digital cart. Returning to FIGURE 12 at step 1224, the tracking system 100 adds the identified item 1306 to a digital cart 1410 associated with the person 1408. In one embodiment, the tracking system 100 uses weight sensors 110 to determine an amount of items 1306 that were removed from rack 112. For example, tracking system 100 may determine an amount of weight decrease in a weight sensor 110 after person 1408 removes one or more items 1306 from weight sensor 110. The tracking system 100 may then determine an item quantity based on the amount of weight decrease. For example, the tracking system 100 may determine the weight of an individual item for the items 1306 that are associated with the weight sensor 110. For example, the weight sensor 110 may be associated with a 107 article 1306 which has an individual weight of 453q (sixteen ounces). When the weight sensor 110 detects a weight decrease of 1814g (sixty-four ounces), the weight sensor 110 may determine that four of the items 1306 were removed from the weight sensor 110. In other embodiments, the digital cart 1410 may further comprise any other suitable type of information associated with the person 1408 and / or items 1306 that they have collected. Assigning items using a local zone FIGURE 15 is a flow chart of one embodiment of an item allocation method 1500 for the tracking system 100. The tracking system 100 may employ method 1500 to detect when an item 1306 has been picked from a rack 112 and to determine which person to assign the item to to use a predefined zone 1808 that is associated with the rack 112. In a busy environment , such as a store, there may be several people standing near a rack 112 when an item is picked up from rack 112. Identifying the correct person who picked up item 1306 can be a challenge. In this case, the tracking system 100 uses a predefined zone 1808 that can be used to reduce the search space when identifying a person who picks up an item 1306 from a rack 112. The predefined zone 1808 is associated with the rack 112 and is used to identify an area where a person can pick up an item 1306 from rack 112. The area QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 108 Predefined 1808 allows the tracking system 100 to quickly ignore that people are not within an area where a person can pick up an item 1306 from rack 112, for example, behind rack 112. Once item 1306 and the person have been identified, the tracking system 100 will add the item to a digital cart 1410 that is associated with the identified person. At step 1502, the tracking system 100 detects a decrease in weight at a weight sensor 110. Referring to FIGURE 18 as an example, the weight sensor 110 is arranged in a rack 112 and is configured to measure the weight of items 1306 that are placed in the weight sensor 110. In this example, weight sensor 110 is associated with a particular item 1306. The tracking system 100 detects a decrease in weight at the weight sensor 110 when a person 1802 removes one or more items 1306 from the weight sensor 110. Returning to FIGURE 15 at step 1504, the tracking system 100 identifies an item 1306 associated with the weight sensor 110. In one embodiment, the tracking system 100 comprises an item map 1308A that associates items 1306 with particular locations (e.g., zones 1304 and / or shelves 1302) and weight sensors 110 on the rack 112. For example, a map 1308A of items may comprise a shelf identifier, weight sensor identifiers and 109 a plurality of item identifiers. Each item identifier is assigned to a particular weight sensor 110 (i.e., weight sensor identifier) in the rack 112. The tracking system 100 determines which weight sensor 110 detected a decrease in weight and then identifies the item. 1306 or the item identifier that corresponds to the weight sensor 110 using the item map 1308A. In step 1506, the monitoring 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, each of which is associated with a pixel location 402. Each pixel location 402 comprises a pixel row and a pixel column. The pixel row and pixel column indicate the location of a pixel within frame 302. Frame 302 comprises a predefined zone 1808 that is associated with rack 112. Predefined zone 1808 is used to identify persons who are close to the front of rack 112 and in a suitable position to retrieve items 1306 from rack 112. For example, rack 112 comprises a front portion 1810, a first side portion 1812, a second side portion 1814, and a rear portion 1814. In this example, a person can retrieve items QRQbnn / zznz / E / Y 110 1306 from rack 112 when they are in front or to the side of rack 112. A person cannot retrieve items 1306 from rack 112 when they are behind 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 rack 112 in frame 1806. This configuration prevents persons behind rack 112 from being considered as a person who picked up an item 1306 from rack 112. In FIGURE 18, the predefined zone 1808 is rectangular. In other examples, the predefined area 1808 may be semicircular or have any other suitable shape. After the tracking system 100 determines that an item 1306 has been picked up from rack 112, the tracking system 100 begins to identify persons within box 302 who may have picked up item 1306 from 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 FIGURE 10. In other examples , the tracking system 100 may employ any other suitable technique to identify a person 1802 within the frame 302. In step 1510, the tracking system 100 QRQbnn / zznz / E / Y 111 determines a pixel location 402A in 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 FIGURE 10. The pixel location 402A comprises a pixel row and a pixel column that identifies the location of person 1802 in frame 302 of sensor 108. In step 1511, the tracking system 100 applies a homography 118 to the pixel location 402A of the identified person 1802 to determine a coordinate 306 (x, y) in the global plane 104 for the identified person 1802. Homography 118 is configured to translate between pixel locations 402 in frame 302 and coordinate 306 (x, y) in global plane 104. Homograph 118 is configured similarly to homography 118 described in FIGURES 2-5B. As an example, the tracking system 100 may identify the homography 118 that is associated with the sensor 108 and may use matrix multiplication between the homography 118 and the pixel location 402A of the identified person 1802 to determine the coordinate 306 (x, y) at the global level 104. In step 1512, the tracking system 100 determines whether the identified person 1802 is within a predefined zone 1808 associated with the rack 112 in frame 302. Continuing with the example of FIGURE 18, the zone 1808 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y The predefined 112 is associated with a coordinate range 306 (x, y) in the global plane 104. The tracking system 100 may compare the coordinate 306 (x, y) for the identified person 1802 with the range of coordinates 306 (x, y) that are associated with the predefined zone 1808 to determine whether the coordinate 306 (x, y) for the identified person 1802 is within the predefined zone 1808. In other words, the tracking system 100 uses the coordinate 306 (x, y) for 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 coordinate 306 (x, y) for person 1802 corresponds to a location in front of rack 112 and is within the predefined zone 1808 which means that the identified person 1802 is in an area suitable for retrieving items 1306 from rack 112. In another embodiment, the predefined area 1808 is associated with a plurality of pixels (e.g., a range of pixel rows and pixel columns) in frame 302. The tracking system 100 may compare the pixel location 402A with 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 of the 113 rack 112. In this example, the tracking system 100 may compare the pixel column of pixel location 402A with a range of pixel columns associated with the predefined zone 1808 and the pixel row of 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, pixel location 402A for person 1802 is in front of rack 112 and is within the predefined zone 1808, which means that the identified person 1802 is in an area suitable for retrieving items 1306 from 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 box 302. In this case, the tracking system 100 determines that the identified person 1802 is not in an area suitable for retrieving items 1306 from the rack. 112, for example, identified person 1802 is standing behind rack 112. In some cases, 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 item 1306 to the appropriate person's digital cart 1410. In the example of FIGURE 18, QRQbnn / zznz / E / Y 114 a second person 1826 is standing next to rack 112 in frame 302 when the first person 1802 picks up an item 1306 from rack 112. In this example, the second person 1826 is closer to rack 112 than the first person 1802, However, the tracking system 100 may ignore the second person 1826 because the pixel location 402B of the second person 1826 is outside the predetermined zone 1808 that is associated with the rack 112. For example, the tracking system 100 may identifying a coordinate 306 (x, y) in the global plane 104 for the second person 1826 and determining that the second person 1826 is outside the predefined zone 1808 based on its coordinate 306 (x, y). As another example, the tracking system 100 may identify a pixel location 402B within the frame 302 for the second person 1826 and determine that the second person 1826 is outside the predefined zone 1808 based on its pixel location 402B. As another example, frame 302 further comprises a third person 1832 standing near rack 112. In this case, tracking system 100 determines which person picked up item 1306 based on their proximity to the item 1306 that was picked up. For example, the tracking system 100 may determine a coordinate 306 (x, y) in the global plane 104 for the third person 1832. The tracking system 100 may then determine a first distance 1828 between the third person 1832. QRQbnn / zznz / E / Y 115 coordinate 306 (x, y) of the first person 1802 and the location in the rack 112 where the item 1306 was picked up. The tracking system 100 also determines a second distance 1830 between the coordinate 306 (x, y) 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 most likely to have picked up item 1306 based on their proximity to the location in rack 112 where item 1306 was picked up. This process allows the Tracking system 100 identifies the correct person who picked up item 1306 from rack 112 before adding item 1306 to your digital cart 1410. As another example, the tracking system 100 may determine a pixel location 402C in 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 in 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 in the rack 112 where the item was picked up. 116 article 1306. Returning to FIGURE 15 at step 1514, tracking system 100 adds item 1306 to a digital cart 1410 that is associated with the identified 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 FIGURE 12. Article ID FIGURE 16 is a flow chart of one embodiment of an item identification method 1600 for the tracking system 100. The tracking system 100 may employ method 1600 to identify an item 1306 that has a non-uniform weight and assign the item 1306 to a person's digital cart 1410. For items 1306 with a uniform weight, the tracking system 100 may determine the number of items 1306 that are removed from a weight sensor 110 based on a weight difference at the weight sensor 110. However, items 1306, such as fresh foods, are not of uniform weight, which means that the tracking system 100 cannot determine how many items 1306 were removed from a shelf 1302 based on weight measurements. In this configuration, the tracking system 100 uses a sensor 108 to identify markers 1820 (e.g., text or symbols) on an item 1306 that has been picked up and to identify a QRQbnn / zznz / E / Y 117 person near rack 112 where item 1306 was picked up. For example, a marker 1820 may be located on the packaging of an item 1806 or on a strap for carrying item 1806. Once item 1306 and the person have been identified , the tracking system 100 may add the item 1306 to a digital cart 1410 that is associated with the identified person. At step 1602, the tracking system 100 detects a decrease in weight at a weight sensor 110. Returning to the example of FIGURE 18, the weight sensor 110 is arranged in a rack 112 and is configured to measure the weight of items 1306 that are placed in the weight sensor 110. In this example, weight sensor 110 is associated with a particular item 1306. The tracking system 100 detects a decrease in weight at the weight sensor 110 when a person 1802 removes one or more items 1306 from the weight sensor 110. 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 FIGURE 16 in step 1604, the monitoring 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 QRQbnn / zznz / E / Y 118 space 102. In the example shown in FIGURE 18, the sensor 108 is configured such that the frame 302 of the sensor 108 captures an aerial view of the rack 112. The frame 302 comprises a plurality of pixels, each of which is associated with a 402 pixel location. Each pixel location 402 comprises a pixel row and a pixel column. The pixel row and pixel column indicate the location of a pixel within frame 302. Frame 302 comprises a predefined zone 1808 that is configured similarly to predefined zone 1808 described in step 1504 of FIGURE 15. In one embodiment, frame 1806 may further comprise a second predefined zone that is configured as a virtual curtain. similar to the predefined zone 1406 described in FIGURES 12-14. For example, the tracking system 100 may use the second predefined zone to detect that the person's hand 1802 reaches for an item 1306 before detecting the decrease in weight on the weight sensor 110. In this example, the second predefined zone is used to alert the tracking system 100 that an item 1306 is about to be picked up from the rack 112 which can be used to trigger the sensor 108 to capture a frame 302 that includes the item 1306 being picked. remove from rack 112. In step 1606, the tracking system 100 identifies a marker 1820 on an item 1306 within a QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 119 predefined area 1808 in frame 302. A marker 1820 is an object with unique features that can be detected by a sensor 108. For example, a marker 1820 may include a shape, a color, a symbol, a pattern, a text, a code barcode, a QR code or any other type of features that can be uniquely identified. The tracking system 100 may search frame 302 for known features that correspond to a marker 1820. Referring to the example of FIGURE 18, the tracking system 100 may identify a shape (e.g., a star) on the packaging of the item 1806 in frame 302 that corresponds to a marker 1820. As another example, the tracking system 100 may use character or text recognition to identify alphanumeric text that corresponds to a marker 1820 when the marker 1820 comprises text. In other examples, tracking system 100 may use any other suitable technique to identify a marker 1820 within frame 302. Returning to FIGURE 16 at step 1608, the tracking system 100 identifies an item 1306 associated with the marker 1820. In one embodiment, the tracking system 100 comprises an item map 1308B that associates items 1306 with particular markers 1820. For For example, an item map 1308B may comprise a plurality of item identifiers, each of which is assigned to a particular marker 1820 (i.e., item identifier). 120 marker). The tracking system 100 identifies the item 1306 or item identifier that corresponds to the marker 1820 using the item map 1308B. 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 in 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 assigned to a particular weight sensor 110 (i.e., weight sensor identifier) in the rack 112. The tracking system 100 determines which weight sensor 110 detected a decrease in weight and then identifies the item 1306. or the item identifier that corresponds to the weight sensor 110 using the item map 1308B. After the tracking system 100 identifies the item 1306 that was picked up from the rack 112, the tracking system 100 determines which person picked up the item 1306 from the rack 112. In step 1610, the tracking system 100 identifies a person 1802. within frame 302. The tracking system 100 may identify a 121 person 1802 within frame 302 using a process similar to the process described in step 1004 of FIGURE 10. In other examples, tracking system 100 may employ any other suitable technique to identify a person 1802 within frame 302. In 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 FIGURE 10. The pixel location 402A comprises a pixel row and a pixel column that identifies the location of person 1802 in frame 302 of sensor 108. In step 1613, the tracking system 100 applies a homography 118 to the pixel location 402A of the identified person 1802 to determine a coordinate 306 (x, y) in the global plane 104 for the identified person 1802. The tracking system 100 may determine the coordinate 306 (x, y) in the global plane 104 for the identified person 1802 using a process similar to the process described in step 1511 of FIGURE 15. In 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 an area QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 122 suitable for retrieving items 1306 from rack 112. The tracking system 100 can determine whether the identified person 1802 is within the predefined zone 1808 using a process similar to the process described in step 1512 of FIGURE 15. The tracking system 100 proceeds to step 1616 in response to determining that the identified person 1802 is within the predefined zone 1808. In this case, the tracking system 100 determines that the identified person 1802 is in an area suitable to retrieve items 1306 from the rack 112, for example, the identified person 1802 is standing in front of the rack 112. Otherwise, the system 100 The tracking system returns to step 1610 to identify another person within the frame 302. In this case, the tracking system 100 determines that the identified person 1802 is not in an area suitable for retrieving items 1306 from rack 112, for example, the person Identified 1802 is standing behind rack 112. In some cases, 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 item 1306 to the appropriate person's digital cart 1410. System 100 may identify which person picked up item 1306 from rack 112 using a process similar to the process described in step 1512 of FIGURE 15. 123 QRQbnn / zznz / E / Y In 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 the step 1224 of FIGURE 12. Identification of lost items FIGURE 17 is a flow chart of one embodiment of a lost item identification method 1700 for the tracking system 100. The tracking system 100 may employ method 1700 to identify items 1306 that have been lost in a rack 112. While a person is shopping, the shopper may decide to leave one or more items 1306 that they have previously picked up. In this case, the tracking system 100 must identify which items 1306 were placed back in a rack 112 and which buyer placed the items 1306 back so that the tracking system 100 can remove the items 1306 from their digital cart 1410. Identifying an item 1306 that has been replaced in a rack 112 is challenging because the buyer may not replace the item 1306 in its correct location. For example, the buyer may replace an item 1306 in the wrong location in rack 112 or in the wrong rack 112. In any of these cases, the tracking system 100 has to identify QRQbnn / zznz / E / Y 124 correctly to both the person and the item 1306 so that the buyer is not charged for the item 1306 when they leave the space 102. In this configuration, the tracking system 100 uses a weight sensor 110 to first determine that an item 1306 is not it was replaced in its correct location. The tracking system 100 then uses a sensor 108 to identify the person who placed the item 1306 in the rack 112 and analyzes their digital cart 1410 to determine which item 1306 they are most likely to put back based on the weights of the items. 1306 in your cart 1410 digital. At step 1702, the tracking system 100 detects an increase in weight at a weight sensor 110. Returning to the example of FIGURE 18, a first person 1802 replaces one or more items 1306 on a weight sensor 110 in rack 112. The weight sensor 110 is configured to measure the weight of the items 1306 that are placed on the weight sensor 110. The tracking system 100 detects an increase in weight at the weight sensor 110 when a person 1802 adds one or more items 1306 to the weight sensor 110. In step 1704, the monitoring system 100 determines an amount of weight increase in the weight sensor 110 in response to detecting the weight increase in the weight sensor 110. The amount of weight increase corresponds to a magnitude of the weight change detected by the weight sensor 110. Here, the tracking system 100 determines how much QRQbnn / zznz / E / Y 125 weight increase experienced weight sensor 110 after one or more items 1306 were placed on 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 amount of weight gain. For example, 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 weight of the item. In this configuration, the tracking system 100 may determine that the returned item 1306 is a lost item 1306 when the amount of weight gain does not match the weight of the individual item or multiples of the weight of the individual item for the item 1306 associated with the weight sensor 110. As an example, weight sensor 110 may be associated with an item 1306 that has an individual weight of 283g (ten ounces). If the weight sensor 110 detects a weight increase of 708g (twenty-five ounces), the tracking system 100 may determine that the item 1306 placed on the weight sensor 114 is not an item 1306 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 item 1306 that is associated with the 126 QRQbnn / zznz / E / Y weight sensor 110. After the tracking system 100 detects that an item 1306 has been placed back in the rack 112, the tracking system 100 will use a sensor 108 to identify the person who placed the item 1306 back in the rack 112. In In step 1706, the monitoring 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 space 102. In the example shown in FIGURE 18, sensor 108 is configured such that frame 302 of sensor 108 captures an aerial view of rack 112. 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 pixel column indicate the location of a pixel within the frame 302. In some embodiments, the frame 302 further comprises a predefined area 1808 that is configured similarly to the predefined area 1808 described in step 1504 of FIGURE 15. In 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 FIGURE 10. In other examples, the tracking system 100 may employ any other suitable technique. 127 QRQbnn / zznz / E / Y to identify a person 1802 within frame 302. In step 1710, the tracking system 100 determines a pixel location 402A in 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 FIGURE 10. The pixel location 402A comprises a pixel row and a pixel column that identifies the location of person 1802 in frame 302 of sensor 108. In step 1712, the tracking system 100 determines whether the identified person 1802 is within a predefined zone 1808 of frame 302. Here, the tracking system 100 determines whether the identified person 1802 is in an area suitable for repositioning the items 1306 on shelf 112. The tracking system 100 can determine whether the identified person 1802 is within the predefined zone 1808 using a process similar to the process described in step 1512 of FIGURE 15. The tracking system 100 proceeds to step 1714 in response to determining that the identified person 1802 is within the predefined zone 1808. In this case, the tracking system 100 determines that the identified person 1802 is in an area suitable to return the items 1306 to the rack 112, for example, the identified person 1802 is standing in front of the rack 112. Otherwise, the tracking system 100 returns to step 1708 to identify another person within the box 302. In this case, the tracking system 100 determines that the identified person is not in an area suitable to retrieve items 1306 from rack 112, For example, the person is standing behind rack 112. In some cases, 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 can determine which person returned the item 1306 to the rack 112 using a process similar to the process described in step 1512 of FIGURE 15. After the tracking system 100 identifies which person placed the item 1306 back into the rack 112, the tracking system 100 determines which item 1306 in the identified person's digital cart 1410 has a weight that is closest to the item 1306 that was placed back on shelf 112. In 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. which is associated with the identified person 1802. For example, the 1410 digital cart can be linked to the QRQbnn / zznz / E / Y 129 object identifier 1118 of the identified person 1802. In one embodiment, digital cart 1410 comprises item identifiers that are each associated with an individual item weight. In step 1716, the tracking system 100 identifies the weight of an item 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 1306 in the digital cart 1410. In step 1718, the tracking system 100 identifies an item 1306 from the digital cart 1410 with the weight of the item that most closely matches the weight gain amount. For example, the tracking system 100 may compare the amount of weight gain measured by the weight sensor 110 to the weights of the items associated with each of the items 1306 in the digital cart 1410. The tracking system 100 can then identify which item 1306 corresponds to an item weight that most closely matches the weight gain amount. In some cases, the tracking system 100 cannot identify an item 1306 in the digital cart 1410 of the identified person whose weight matches the amount of weight gain measured at the weight sensor 110. In this QRQbnn / zznz / E / Y In this case, the tracking system 100 may determine a probability that an item 1306 was deposited for each of the items 1306 in the digital cart 1410. The probability may be based on the weight of the individual item and the amount of weight gain. For example, an item 1306 with an individual weight that is closer to the weight gain amount will be associated with a higher probability than an item 1306 with an individual weight that is farther from the weight gain amount. In some cases, the probabilities are a function of the distance between a person and the rack 112. In this case, the probabilities associated with the items 1306 in a person's digital cart 1410 depend on how close the person is to the rack 112. where article 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 to 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 left. In some cases, the tracking system 100 may consider items 1306 that are in digital carts 1410 QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 131 of multiple people when there are multiple people within the predefined zone 1808 that is associated with the rack 112. For example, the monitoring system 100 may determine that a second person is within the predefined zone 1808 that is associated with the rack 112. In this example, the tracking system 100 identifies the items 1306 in each person's digital cart 1410 that may correspond to the item 1306 that was returned to the rack 112 and selects the item 1306 with the weight of the item that was most zoom in on item 1306 that has been returned to rack 112. For example, tracking system 100 identifies the weights of 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 the weight of the item that most closely matches the weight gain amount. The tracking system 100 determines a first weight difference between an identified first item 1306 of the digital cart 1410 of the first person 1802 and the amount of weight gain and a second weight difference between an identified second item 1306 of 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, indicating that the item 1306 identified in the first person's digital cart 1410 most closely matches the quantity. 132 weight gain, and then delete the first identified item 1306 from your digital cart 1410. After the tracking system 100 identifies the likely returned item 1306 to the rack 112 and the person who returned the item 1306, the tracking system 100 removes the item 1306 from its digital cart 1410. In step 1720, the tracking system 100 removes the identified item 1306 from the digital cart 1410 of the identified person. Here, the tracking system 100 discards the information associated with the identified item 1306 from the digital cart 1410. This process ensures that the buyer will not be charged for the item 1306 that he returned in a rack 112 regardless of whether the item 1306 is returned to its correct location. Self-exclusion zones To track the movement of people in space 102, the tracking system 100 should generally be able to distinguish between people (i.e., target objects) and other objects (i.e., non-target objects), such as racks. 112, screens, and any other non-human objects in 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 description (for example, in FIGURES 24-26 and the description QRQbnn / ZZnZ / E / YIAI 133 below), in some cases, person tracking can be performed by detecting one or more contours in a set of image frames (e.g., a video) and tracking the contour's movements between frames. A contour is generally a curve associated with an edge of a representation of a person in an image. While the tracking system 100 can detect contours to track people, in some cases, it may be difficult to distinguish between contours that correspond to people (e.g., or other target objects) and contours associated with non-target objects, such as shelves 112, signs, product displays and the like. Even if the sensors 108 are calibrated at installation to account for the presence of non-target objects, in many cases, it can be challenging to reliably and efficiently recalibrate the sensors 108 to account for changes in the positions of non-target objects that should not be tracked in space 102. For example, if a rack 112, signs, product display, or other furniture or object is added, removed or moved in space 102 (e.g., all activities that may occur frequently and that may occur without warning and / or involuntarily), 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 QRQbnn / zznz / E / Y 134 QRQbnn / zznz / E / Y people in space 102. Prior to this description, there was a lack of tools to efficiently recalibrate and / or adjust sensors, such as sensors 108, in a way to provide reliable tracking. This disclosure encompasses recognition not only of the previously unrecognized issues described above (e.g., with respect to tracking people in space 102, which may change over time) but also provides unique solutions to these issues. As described in this description, during an initial period of time before individuals are tracked, pixel regions of each sensor 108 may be determined that should be excluded during subsequent tracking. For example, during the initial time period, space 102 may not include any people, so that the contours detected by each sensor 108 correspond only to non-target objects in space for which tracking is not desired. Therefore, pixel regions, or self-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 are not must be tracked). For example, self-exclusion zones may correspond to contours detected in images that are associated with non-target objects, contours that 135 are falsely detected at the edges of a sensor's field of view, and the like). Self-exclusion zones may be determined automatically at any appropriate or desired time interval to improve the usability and performance of the tracking system 100. After determining the self-exclusion zones, the tracking system 100 can proceed to track people in space 102. The self-exclusion zones are used to limit the pixel regions used by each sensor 108 to perform the tracking. tracking people. For example, pixels corresponding to self-exclusion zones may be ignored by the tracking system 100 during tracking. In some cases, a detected person (for example, or another target object) may be close to or partially overlap with one or more self-exclusion zones. In these cases, the tracking system 100 may determine, based on the extent to which the position of a potential target object overlaps with the self-exclusion zone, whether the target object will be tracked. This may reduce or eliminate false positive detection of non-target objects during tracking of people in space 102, while also improving the efficiency of the tracking system 100 by reducing wasted processing resources that would otherwise be spent attempting tracking. of non-target objects. In some embodiments, you can QRQbnn / zznz / E / Y 136 QRQbnn / zznz / E / Y generate a map of space 102 that presents the physical regions that are excluded during tracking (i.e., a map that presents a representation of the self-exclusion zones in the physical coordinates of the space). Such a map, for example, may facilitate tracking system troubleshooting by allowing an administrator to visually confirm that individuals can be tracked in the appropriate portions of space 102. FIGURE 19 illustrates the determination of self-exclusion zones 1910, 1914 and the subsequent use of these self-exclusion zones 1910, 1914 to improve the tracking of people (for example, or other target objects) in space 102. Generally, during a first period of time (t < to), the client(s) 105 and / or the server 106 receive top view image frames from the sensors 108 and are used to determine the self-control zones 1910, 1914. exclusion. For example, the initial time period at t < to may correspond to a time when there are no people in space 102. For example, if space 102 is open to the public for a portion of the day, the initial time period may be before space 102 opens to the public. In some embodiments, server 106 and / or client 105 may provide, for example, an alert or transmit a signal indicating that space 102 should be emptied of people (e.g., or other objects targeted for tracking) for zones. QRQbnn / zznz / E / Y 137 1910, 1914 self-exclusion to be identified. In some embodiments, a user may enter a command (e.g., through any appropriate interface coupled to the server 106 and / or clients 105) to initiate the determination of the self-exclusion zones 1910, 1914 immediately or in one or more desired times in the future (for example, based on a schedule). An example top view image frame 1902 used to determine self-exclusion zones 1910, 1914 is shown in FIGURE 19. The image frame 1902 includes a representation of a first object 1904 (for example, a rack 112) and a representation of a second object 1906. For example, the first object 1904 may be a rack 112, and the second object 1906 may be a display of products or any other non-target object in space 102. In some embodiments, the second object 1906 may not correspond to an actual object in space but instead may be anomalously detected due to lighting in space 102. and / or a sensor error. Each sensor 108 generally generates at least one frame 1902 during the initial time period, and these frames 1902 are used to determine the corresponding self-exclusion zones 1910, 1914 for the sensor 108. For example, the client sensor 105 may receive the top view image 1902, and detect contours (i.e., the dashed lines around the areas 1910, QRQbnn / zznz / E / Y 138 1914) corresponding to the self-exclusion zones 1910, 1914 as illustrated in view 1908. The contours of the self-exclusion zones 1910, 1914 generally correspond to curves extending along a boundary (e.g. the edge) of the objects 1904, 1906 in the image 1902. The view 1908 generally corresponds to a presentation of the image 1902 in which the detected contours corresponding to the self-exclusion zones 1910, 1914 but the corresponding objects 1904 are presented , 1906, respectively, are not shown. For an image frame 1902 that includes color and depth data, the contours for the self-exclusion zones 1910, 1914 may be determined at a given depth (e.g., at a distance from the sensor 108) based on the color data. in image 1902. For example, a steep gradient of a color value may correspond to an edge of an object and be used to determine or detect a contour. For example, the contours for the self-exclusion zones 1910, 1914 may be determined using any suitable contour or edge detection method such as Canny edge detection, threshold-based detection or the like. The client 105 determines the pixel coordinates 1912 and 1916 corresponding to the locations of the self-exclusion zones 1910 and 1914, respectively. Pixel coordinates 1912, 1916 generally correspond to locations (e.g. row and column numbers) in the QRQbnn / zznz / E / Y 139 frame 1902 image that should be excluded during follow-up. Generally, objects associated with pixel coordinates 1912, 1916 are not tracked by the tracking system 100. Additionally, certain objects that are detected outside of self-exclusion zones 1910, 1914 may not be tracked under certain conditions. For example, if the position of the object (e.g., the position associated with region 1920, discussed below with respect to view 1914) overlaps by at least a threshold amount with a self-exclusion zone 1910, 1914, the object may not be traceable. 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 unnecessarily attempting to track non-target objects. In some cases, self-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, self-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 illuminations, or the like). After determining the 1912, 1916 pixel coordinates to exclude during tracking, objects can be tracked over a period of time 140 posterior corresponding to t > to- An example image frame 1918 generated during tracking is shown in FIGURE 19. In frame 1918, region 1920 is detected as possibly corresponding to what may or may not be a target object. For example, region 1920 may correspond to a pixel mask or bounding box generated based on a contour detected in frame 1902. For example, a pixel mask may be generated to fill the area within the contour or a pixel mask may be generated. a bounding box to encompass the contour. For example, a pixel mask may include the coordinates of pixels within the corresponding contour. For example, the pixel coordinates 1912 of the self-exclusion zone 1910 may effectively correspond to a mask that overlays or fills the self-exclusion zone 1910. After detection of region 1920, client 105 determines whether region 1920 corresponds to a target object to be tracked or overlaps enough with self-exclusion zone 1914 to consider region 1920 to be associated with an object. that is not destiny. For example, the client 105 may determine whether at least a threshold percentage of the pixel coordinates 1916 overlap with (e.g., are the same) the pixel coordinates of the region 1920. The overlapping region 1922 of these pixel coordinates is illustrated in Table 1918. For example, the threshold percentage 141 QRQbnn / zznz / E / Y can be around 50% or more. In some embodiments, the threshold percentage may be as small as about 10%. In response to determining that at least the threshold percentage of pixel coordinates overlaps, the client 105 generally does not determine a pixel position to track the object associated with the region 1920. However, if the overlap 1922 corresponds to less of the threshold percentage, an object associated with region 1920, as described below (e.g., with respect to FIGURES 24-26). As described above, sensors 108 can be arranged so that adjacent sensors 108 have overlapping fields of view. For example, the fields of view of adjacent sensors 108 may overlap by approximately 10% to 30%. As such, the same object can be detected by two different sensors 108 and included or excluded from tracking in the image frames received from each sensor 108 based on the unique self-exclusion zones determined for each sensor 108. This can facilitate further tracking. more reliable than was previously possible, even where a sensor 108 may have a large self-exclusion zone (i.e., where a large proportion of pixel coordinates in image frames generated by sensor 108 are excluded from tracking). Consequently, if a sensor 108 malfunctions, the sensors 108 Adjacent 142s can still provide adequate tracking in space 102. If region 1920 corresponds to a target object (i.e., a person to be tracked in space 102), tracking system 100 proceeds to track region 1920. Example tracking methods are described in more detail below with respect to to FIGURES 24-26. In some embodiments, the server 106 uses the pixel coordinates 1912, 1916 to determine the corresponding physical coordinates (e.g., the coordinates 2012, 2016 illustrated in FIGURE 20, described below). For example, the client 105 may determine the pixel coordinates 1912, 1916 corresponding to the local self-exclusion zones 1910, 1914 of a sensor 108 and transmit these coordinates 1912, 1916 to the server 106. As shown in FIGURE 20, The server 106 may use the pixel coordinates 1912, 1916 received from the sensor 108 to determine the corresponding physical coordinates 2010, 2016. For example, a homography generated for each sensor 108 (see FIGURES 2-7 and the corresponding description above), which associates pixel coordinates (e.g., coordinates 1912, 1916) in an image generated by a given sensor 108 to the coordinates corresponding physical coordinates (for example, coordinates 2012, 2016) in space 102, can be used to convert the coordinates 1912, 1916 of excluded pixels (of FIGURE QRQbnn / zznz / E / Y 143 19) to physical excluded coordinates 2012, 2016 in space 102. These excluded coordinates 2010, 2016 can be used together with other coordinates of other sensors 108 to generate the global self-exclusion zone map 2000 of space 102 illustrated in the FIGURE 20. This map 2000, for example, can facilitate troubleshooting of the tracking system 100 by facilitating the quantification, identification and / or verification of physical regions 2002 of space 102 where objects can (and cannot) be tracked. This may allow an administrator or other person to visually confirm that objects can be tracked in appropriate portions of the space 102). If regions 2002 correspond to known high traffic areas of space 102, system maintenance may be appropriate (for example, which may involve replacing, adjusting, and / or adding additional sensors 108). FIGURE 21 is a flowchart illustrating an example method 2100 for generating and using self-exclusion zones (e.g., zones 1910, 1914 of FIGURE 19). Method 2100 may begin at step 2102 where one or more image frames 1902 are received during an initial period of time. As described above, the initial time period may correspond to a time interval in which no person is moving through the space 102, or when no person is within the field of view of one or more sensors 108 from which They capture the 1902 paintings of QRQbnn / zznz / E / Y 144 images received. In a typical embodiment, one or more image frames 1902 are generally received from each sensor 108 of the tracking system 100, so that local regions (e.g., self-exclusion zones 1910, 1914) can be determined to exclude for each sensor 108. In some embodiments, a single image frame 1902 is received from each sensor 108 to detect self-exclusion zones 1910, 1914. However, in other embodiments, multiple image frames 1902 are received from each sensor 108. Using multiple image frames 1902 to identify self-exclusion zones 1910, 1914 for each sensor 108 can improve the detection of any false contours or other aberrations that correspond to pixel coordinates (e.g., coordinates 1912, 1916 in FIGURE 19) that should be ignored or excluded during tracking. In step 2104, contours (e.g., dashed contour lines corresponding to the self-exclusion zones 1910, 1914 of FIGURE 19) are detected in one or more image frames 1902 received in step 2102. any appropriate contour detection algorithm including, but not limited to, those based on Canny edge detection, threshold-based detection and the like. In some embodiments, the unique contour detection thresholds described in this description may be used (for example, to distinguish closely spaced contours in the field). QRQbnn / zznz / E / Y 145 of vision, as described below, for example, with respect to FIGURES 22 and 23). In step 2106, pixel coordinates (for example, coordinates 1912, 1916 of FIGURE 19) for the detected contours (from step 2104) are determined. The coordinates can be determined, for example, based on a pixel mask that is superimposed on the detected contours. A pixel mask can, for example, correspond to pixels within the contours. In some embodiments, the pixel coordinates correspond to the pixel coordinates within a certain bounding box for the outline (e.g., as illustrated in FIGURE 22, described below). For example, the bounding box can be a rectangular box with an area that encompasses the detected boundary. In step 2108, the pixel coordinates are stored. For example, the client 105 may store the pixel coordinates corresponding to the self-exclusion zones 1910, 1914 in memory (e.g., memory 3804 of FIG. 38, described below). As described above, pixel coordinates may also or alternatively be transmitted to server 106 (e.g., to generate a map 2000 of space, as illustrated in the example of FIGURE 20). In step 2110, the client 105 receives an image frame 1918 during a subsequent time during which 6 QRQbnn / zznz / E / Y is tracked (i.e., after the pixel coordinates corresponding to the self-exclusion zones are stored in step 2108). The frame is received from sensor 108 and includes a representation of an object in space 102. In step 2112, a contour is detected in the frame received in step 2110. For example, the contour may correspond to a curve along of the edge of the object represented in frame 1902. The pixel coordinates determined in step 2106 may be excluded (or not used) during contour detection. For example, the image data may be ignored and / or removed (e.g., by giving a value of zero, or the equivalent color) at the pixel coordinates determined in step 2106, so that no contours are detected at these coordinates. . In some cases, a contour outside these coordinates can be detected. In some cases, a contour can be detected that is partially outside these coordinates but partially overlaps the coordinates (for example, as illustrated in image 1918 of FIGURE 19). In step 2114, the client 105 generally determines whether the detected contour has a pixel position that sufficiently overlaps with the pixel coordinates of the self-exclusion zones 1910, 1914 determined in step 2106. If the coordinates overlap enough, the contour or region 1920 (i.e. and the associated object) does not 147 QRQbnn / zznz / E / Y is tracked in the box. For example, as described above, client 105 may determine whether the detected contour or region 1920 overlaps by at least a percentage threshold (e.g., 50%) with a region associated with the pixel coordinates (e.g. , see the superimposed region 1922 of FIGURE 19). If the criteria of step 2114 are met, the client 105 generally, in step 2116, does not determine a pixel position for the contour detected in step 2112. As such, no pixel position is reported to the server 106, reducing or thus eliminating the waste of processing resources associated with attempting to track an object when it is not a target object for which you wish to track. Otherwise, if the criteria of step 2114 are met, the client 105 determines a pixel position for the contour or region 1920 in step 2118. Determining a pixel position from a contour may involve, for example, (i ) determine a region 1920 (e.g., a pixel mask or a bounding box) associated with the contour and (ii) determine a centroid or other characteristic position of the region as the pixel position. In step 2120, the determined pixel position is transmitted to server 106 to facilitate global tracking, for example, using predetermined homographies, as described elsewhere in this description (for example, with respect to FIGURES 24148 QRQbnn / zznz / E / Y 26). For example, the server 106 may receive the determined pixel position, access a homography by associating pixel coordinates in images generated by the sensor 108 from which the frame was received in step 2110 to physical coordinates in space 102, and apply the pixel coordinate homography to generate the corresponding physical coordinates for the tracked object associated with the contour detected in step 2112. Modifications, additions, or omissions may be made to method 2100 depicted in FIGURE 21. Method 2100 may include more, less, or other steps. For example, the steps can be performed in parallel or in any suitable order. Although sometimes described as monitoring system 100, clients 105, server 106, or components thereof performing steps, any suitable system or components of the system may perform one or more steps of the method. Detection of people in close proximity based on contour In some cases, two people are close to each other, making it difficult or impossible to reliably detect and / or track each person (for example, or another target object) using conventional tools. In some cases, people can be initially detected and tracked using depth imaging at a depth 9 approximate waist depth (i.e., a depth corresponding to the waist height of an average person being tracked). Tracking at approximately waist depth may be most effective in capturing all people, regardless of their height or mode of movement. For example, by detecting and tracking individuals at approximately waist depth, the tracking system 100 is most 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 of similar height are standing close to each other, it may be difficult to distinguish between the two people in top view images at approximately waist depth. Instead of detecting two separate people, the tracking system 100 may initially detect the people as a single larger object. This description encompasses the recognition that at a shallower depth (i.e., a depth closer to people's heads), people can be distinguished more easily. This is because people's heads are more likely to be imaged at a shallow depth, and their heads are smaller and less likely to be detected as a single fused region (or contour, as further described). detail below). As another QRQbnn / zznz / E / Y For example, if two people enter the space 102 standing close to each other (e.g., holding hands), they may appear to be a single larger object. Since the tracking system 100 may initially detect two people as one person, it may be difficult to correctly identify these people if these people become separated while in space 102. As another example, if two people who briefly stand together are momentarily lost or detected as a single larger object, it can be difficult to correctly identify individuals after they are separated from each other. As described elsewhere in this description (e.g., with respect to FIGURES 19-21 and 24-26), people (e.g., people in the example scenarios described above) can be tracked using contour detection. in top view image frames generated by sensors 108 and following the positions of these contours. However, when two people are close together, a single merged contour (see merged contour 2220 of FIGURE 22 described below) can be detected in a top view image of the people. This single contour generally cannot be used to track each person individually, resulting in considerable subsequent errors during tracking. For example, even if two people separate after being very close, it can 151 may be difficult or impossible to use the above tools to determine which person was which, and the identity of each person may be unknown after the two people separate. Prior to this description, there was a lack of reliable tools for detecting people (e.g., and other target objects) in the example scenarios described above and in other similar circumstances. The systems and methods described in this disclosure provide improvements to prior technology by facilitating improved detection of people in close proximity to each other. For example, the systems and methods described in this disclosure can facilitate the detection of individual people when the contours associated with these people would otherwise be merged, resulting in the detection of a single person using conventional detection strategies. In some embodiments, enhanced 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 to monitoring. For example, if two people are standing close to each other such that the contours merge to form a single contour, separate contours associated with the heads of the two people that are close together can be detected at an associated depth. QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 152 with people's heads. In some embodiments, a single statistical approach can be used to differentiate between the two individuals by selecting boundary regions for 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 detection of people (e.g., or another target object) than was previously possible. For example, two contours detected at an approximate depth of the head may be required to be within a threshold size range for the contours to be used for subsequent tracking. In some embodiments, an artificial neural network can be employed to detect separate people who are close together by analyzing top view images at different depths. FIGURE 22 is a diagram illustrating the detection of two people 2202, 2204 in close proximity to each other based on top view depth images 2212 and angle view images 2214 received from sensors 108a, b using tracking system 100 . In one embodiment, the sensors 108a, b may each be one of the sensors 108 of the monitoring system 100 described above with respect to FIGURE 1. In another embodiment, the sensors 108a, b may each be one of the sensors 108 of a virtual store system QRQbnn / zznz / E / Y 153 separately (e.g., layout cameras and / or rack cameras) as described in United States Patent Application No. entitled Client-Based Video Streaming (Attorney File No. 090278.0187) which is incorporated herein as reference. In this embodiment, the sensors 108 of the tracking system 100 can be mapped to the sensors 108 of the virtual store system using a homography. Additionally, this embodiment can retrieve identifiers and the relative position of each person from the sensors 108 of the virtual store system using homography between the tracking system 100 and the virtual store system. Generally, sensor 108a is an overhead sensor configured to generate top-view depth images 2212 (e.g., color and / or depth images) of at least a portion of space 102. Sensor 108a may be mounted, for example, on a ceiling of the space 102. The sensor 108a can generate image data corresponding to a plurality of depths that include but are not necessarily limited to the depths 2210a-c illustrated in FIGURE 22. The depths 2210a-c are generally distances measured from the sensor 108a. Each depth 2210a-c may be associated with a corresponding height (e.g., from the floor of the space 102 in which persons 2202, 2204 are detected and / or tracked). Sensor 108a observes a field of view 2208a. Images 2212 of 154 top views generated by sensor 108a can be transmitted to client sensor 105a. The client sensor 105a is communicatively coupled (e.g., via a wired connection or wirelessly) to the sensor 108a and the server 106. The server 106 is described above with respect to FIGURE 1. In this example, sensor 108b is an angle view sensor, which is configured to generate angle view images 2214 (e.g., color and / or depth images) of at least a portion of space 102. Sensor 108b has a field of view 2208b, which overlaps with at least a portion of the field of view 2208a of the sensor 108a. The angle view images 2214 generated by the angle view sensor 108b are transmitted to the client sensor 105b. The client sensor 105b may be a client 105 described above with respect to FIGURE 1. In the example of FIGURE 22, the sensors 108a, b are coupled to different client sensors 105a, b. However, it should be understood that the same client sensor 105 may be used for both sensors 108a, b (e.g., such that clients 105a, b are the same client 105). In some cases, the use of different client sensors 105a, b for the sensors 108a, b can provide improved performance because image data can still be obtained for the area shared by the fields of view 2208a, b even if one of the clients 105a, QRQbnn / zznz / E / Y 155 b would fail. In the example scenario illustrated in FIGURE 22, people 2202, 2204 are located close enough together that conventional object detection tools will not detect individual people 2202, 2204 (e.g., so that people 2202 , 2204 would not have been detected as separate objects). This situation may correspond, for example, to the distance 2206a between the people 2202, 2204 being less than a threshold distance 2206b (for example, about 15.24cm (six inches).) The threshold distance 2206b may generally be any appropriate distance determined for the system 100. For example, the threshold distance 2206b may be determined based on various characteristics of the system 2200 and the people 2202, 2204 that are detected. For example, the threshold distance 2206b may be based on one or more of the distance of the sensor 108a from the people 2202, 2204, the size of the people 2202, 2204, the size of the field of view 2208a, the sensitivity of the sensor 108a, and Similar. Accordingly, the threshold distance 2206b can vary from just over zero inches to over 15.24cm (six inches) depending on these and other characteristics of the tracking system 100. Persons 2202, 2204 may be any target object that an individual wishes to detect and / or track based on data (i.e., top view images 2212 and / or top view images 2214). QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 156 angle view) of the sensors 108a, b. The client sensor 105a detects contours in top view images 2212 received from the sensor 108a. Typically, the client sensor 105a detects contours at an initial depth 2210a. The initial depth 2210a may be associated, for example, with a predetermined height (e.g., from the ground) that has been established to detect and / or track persons 2202, 2204 through 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 move in space 102 (e.g., a depth that is likely to capture a representation of tall and short people that traverse space 102). The client sensor 105a may use the top view images 2212 generated by the sensor 108 to identify the corresponding top view image 2212 when a first contour 2202a associated with the first person 2202 is merged with a second contour 2204a associated with the second person. 2204. The view 2216 illustrating the contours 2202a, 2204a at a time prior to when these contours 2202a, 2204a merge (i.e., before a time (telose) when the first and second persons 2202, 2204 are within the distance 2206b threshold between each other). View 2216 corresponds to a view of the contours detected in a top view image 2212 received from sensor 108a. QRQbnn / zznz / E / Y 157 (for example, with other objects in the image not shown). A rear view 2218 corresponds to image 2212 at or near tciose when people 2202, 2204 are close together and the first and second contours 2202a, 2204a are merged to form a merged contour 2220. The client sensor 105a may determine a region 2222 that corresponds to a size of the contour 2220 fused into image coordinates (e.g., a number of pixels associated with the contour 2220). For example, region 2222 may correspond to a pixel mask or bounding box determined for contour 2220. Examples of approaches for determining pixel masks and bounding boxes are described above with respect to step 2104 of Figure 21. For example, region 2222 may be a bounding box determined for contour 2220 using a non-maximum suppression object detection algorithm. For example, client sensor 105a may determine a plurality of bounding boxes associated with contour 2220. For each bounding box, client 105a may calculate a score. The score, for example, can represent the extent to which that bounding box is similar to other bounding boxes. The client sensor 105a may identify a subset of bounding boxes with a score greater than a threshold value (e.g., 80% or more) and determine the region 2222 based on this subset. 158 identified. For example, region 2222 may be the bounding box with the highest score or a boundary comprising regions shared by bounding boxes with a score that is above the threshold value. To detect individual people 2202 and 2204, the client sensor 105a may access images 2212 at a reduced depth (i.e., at one or both depths 2212b and 2212c) and use this data to detect separate contours 2202b, 2204b, illustrated in view 2224. In other words, the client sensor 105a can analyze the images 2212 at a depth closer to the heads of the people 2202, 2204 in the images 2212 to detect the separated people 2202, 2204. In some embodiments, the reduced depth may correspond to an average or predetermined head height of persons expected to be detected by the tracking system 100 in space 102. In some cases, the contours 2202b, 2204b may be detected at the depth reduced for both people 2202, 2204. However, in other cases, the client sensor 105a may not detect both heads at the reduced depth. For example, if a child and an adult are very close, only the adult's head can be detected at the reduced depth (for example, at depth 2210b). In this scenario, the client sensor 105a can proceed to a depth QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 159 slightly higher (for example, at depth 2210c) to detect the child's head. For example, in such scenarios, the client sensor 105a iteratively increases the depth from the reduced depth towards the initial depth 2210a to detect two different contours 2202b, 2204b (e.g., for both the adult and the child in the example described above ). For example, the depth may be first 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 more detail below with respect to method 2300 of FIGURE 23. As described elsewhere in this description, in some cases, the tracking system 100 may maintain a record of traits or descriptors associated with each tracked person (see, for example, FIGURE 30, described below). As such, the client sensor 105a may access this record to determine unique depths associated with individuals 2202, 2204, which are likely associated with the merged contour 2220. For example, depth 2210b may be associated with a known head height of person 2202, and depth 2212c may be associated with a known head height of person 2204. Once contours 2202b and 2204b are detected, the client sensor determines a region 2202c associated with 160 the pixel coordinates 2202d of the contour 2202b and a region 2204c associated with the pixel coordinates 2204d of the 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 corresponding contours 2202b, 2204b, respectively. For example, pixel masks may be generated to fill the area within the contours 2202b, 2204b or bounding boxes may be generated that encompass the contours 2202b, 2204b. 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 individuals 2202 and 2204 and determine the associated regions 2202c and 2204c. In these embodiments, regions 2202c and 2204c are determined using a unique method referred to in this description as non-minimal suppression. Non-minimal suppression may involve, for example, determining bounding boxes associated with contour 2202b, 2204b (e.g., using any appropriate object detection algorithm as will be appreciated by a person skilled in the relevant art). For each bounding box, a score can be calculated. How I know 161 described above with respect to non-maximal suppression, the score can represent the extent to which the bounding box is similar to the other bounding boxes. However, instead of identifying bounding boxes with high scores (for example, as with non-maximal suppression), a subset of bounding boxes with scores less than a threshold value (for example, around 20%) is identified. This subset can 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 are not used to identify regions 2202b, 2204b. Before assigning a position or identity to the contours 2202b, 2204b and / or the associated regions 2202c, 2204c, the client sensor 105a may first verify whether the criteria for distinguishing the region 2202c from the region 2204c are met. The criteria are generally designed to ensure that the contours 2202b, 2204b (and / or regions 2202c, 2204c associated) have the appropriate size, shape and position to associate with the heads of the corresponding persons 2202, 2204. These criteria may include one or more requirements. For example, a requirement may be that regions 2202c, 2204c overlap on a QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 162 amount equal to or less than a threshold (for example, approximately 50%, for example, approximately 10%). Generally, separate heads of different people 2202, 2204 should not be superimposed on a top view image 2212. Another requirement may be that the regions 2202c, 2204c be within (e.g., bounded by, e.g., encompassed by) the combined contour region 2222. This requirement, for example, ensures that the head contours 2202b, 2204b are positioned appropriately over the merged contour 2220 to correspond to the heads of the people 2202, 2204. If the contours 2202b, 2204b detected at the reduced depth are not within the merged contour 2220, then these contours 2202b, 2204b are probably not associated with the heads of people 2202, 2204 associated with the merged contour 2220. Generally, if the criteria are met, the client sensor 105a associates the region 2202c with a first pixel position 2202e of the person 2202 and associates the region 2204c with a second pixel position 2204e of the person 2204. Each of the first and second pixel positions 2202e, 2204e generally correspond to a single pixel position (e.g., row and column) associated with the location of the corresponding outline 2202b, 2204b in image 2212. The first and second pixel positions 2202e, 2204e are included in the 2226 pixel positions that can 163 be transmitted to server 106 to determine corresponding physical (e.g., global) positions 2228, e.g., based on homographies 2230 (e.g., using a previously determined homography for sensor 108a by associating pixel coordinates in images 2212 generated by the sensor 108a to the physical coordinates in 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 view 2208a of sensor 108a. The client sensor 105b receives the angle view images 2214 from the second sensor 108b. Due to their different (e.g., angled) view of the persons 2202, 2204 in space 102, an angled view image 2214 obtained in telose may be sufficient to distinguish between the persons 2202, 2204. A view 2232 of the contours 2202d, 2204d detected in tcicse are shown in FIGURE 22. The client sensor 105b detects a contour 2202f corresponding to the first person 2202 and determines a corresponding region 2202g associated with the pixel coordinates 2202h of the contour 2202f. The client sensor 105b detects a contour 2204f corresponding to the second person 2204 and determines a corresponding region 2204g associated with the pixel coordinates 2204h of the contour 2204f. Since the contours 2202f, 2204f and regions 2202g are not merged, QRQbnn / zznz / E / Y 164 2204g are sufficiently separated (e.g., do not overlap and / or are separated by at least a minimum pixel distance), the client sensor 105b can associate the region 2202g with a first pixel position 2202i of the first person 2202 and the region 2204g with a second pixel position 2204i of the second person 2204. Each of the first and second pixel positions 2202i, 2204i generally corresponds to a single pixel position (e.g., row and column) associated with the contour location 2202f, 2204f corresponding in the image 2214. The pixel positions 2202i, 22041 may be included in the pixel positions 2234 that may be transmitted to the server 106 to determine the physical positions 2228 of the persons 2202, 2204 (e.g., using a homography previously determined for sensor 108b that associates pixel coordinates of images 2214 generated by sensor 108b to physical coordinates in space 102). In an example operation of the tracking system 100, the sensor 108a is configured to generate top-view color depth images of at least a portion of the space 102. When the people 2202 and 2204 are within a distance threshold of each other , the client sensor 105a identifies an image frame (e.g., associated with view 2218) corresponding to a timestamp (e.g., telose) where the contours 2202a, 2204a 165 QRQbnn / zznz / E / Y associated with the first and second person 2202, 2204, respectively, are merged and form the contour 2220. To detect each person 2202 and 22 04 in the identified image frame (e.g., associated with the view 2218), the client 105a may first attempt to detect separate contours for each person 2202, 2204 at a first reduced depth 2210b. As described above, depth 2210b may be a predetermined height associated with the expected head height of persons moving through space 102. In some embodiments, depth 2210b may be a previously determined depth based on the height measurement of the person 2202 and / or height of the 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 height of default head of person 2202 (as illustrated in the example of FIGURE 22). If two contours 2202b, 2204b are detected at depth 2210b, these contours can be used to determine the pixel positions 2202e, 2204e of the people 2202 and 2204, as described above. If only one contour 2202b is detected at depth 2210b (for example, if only one person 2202, 2204 is tall enough to be detected at depth 2210b), the region associated with this contour 2202b can be used 166 QRQbnn / zznz / E / Y to determine the pixel position 2202e of the corresponding person, and the next person can be detected at a greater depth 2210c. Depth 2210c is generally greater than depth 2210b but less than depth 2210a. In the illustrative example of FIGURE 22, depth 2210c corresponds to a predetermined head height of person 2204. If contour 2204b for person 2204 is detected at depth 2210c, a pixel position 2204e is determined based on the pixel coordinates 2204d associated with contour 2204b (e.g., upon determination that the criteria described above are met). If a contour 2204b is not detected at depth 2210c, the client 105a may attempt to detect contours at progressively greater depths until a contour is detected or a maximum depth is reached (e.g., the initial depth 2210a). For example, client sensor 105a may continue to search contour 2204b at greater depths (i.e., depths between depth 2210c and initial depth 2210a). If the maximum depth (e.g., depth 2210a) is reached without contour 2204b being detected, the client 105a generally determines that the separated persons 2202, 2204 cannot be detected. FIGURE 23 is a flow chart illustrating a method 2300 of operation of the tracking system 100 167 QRQbnn / zznz / E / Y to detect people 2202, 2204 close together. The method 2300 may begin at step 2302 where the client sensor 105a receives one or more frames of top view depth images 2212 generated by the sensor 108a. In step 2304, the client sensor 105a identifies a frame in which a first contour 2202a associated with the first person 2202 is merged with a second contour 2204a associated with the second person 2204. Generally, the first and second merged contours (i.e. i.e., the fused contour 2220) is determined at the first depth 2212a in the depth images 2212 received in step 2302. The first depth 2212a may correspond to the waist or depth of people expected to be tracked in space 102. Detection of the merged contour 2220 corresponds to the first person 2202 being located in space within a threshold distance 2206b of the second person 2204, as described above. In step 2306, the client sensor 105a determines a fused contour region 2222. Region 2222 is associated with the pixel coordinates of the merged contour 2220. For example, region 2222 may correspond to the coordinates of a pixel mask that overlaps the detected contour. As another example, region 2222 may correspond to the pixel coordinates of a given bounding box for the outline (e.g., using 168 any appropriate object detection algorithm). In some embodiments, a method involving non-maximal 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 can be trained to detect contours at various depths in top view images generated by sensor 108a. In step 2308, the depth at which the contours are detected in the identified image frame of step 2304 is reduced (e.g., to the depth 2210b illustrated in FIGURE 22). In step 2310a, the client sensor 105a determines whether a first contour (e.g., contour 2202b) is detected at the current depth. If contour 2202b is not detected, client sensor 105a proceeds, in step 2312a, to a greater depth (e.g., to depth 2210c). If the increased depth corresponds to having reached a maximum depth (for example, reaching the initial depth 2210a), the process ends because the first contour 2202b was not detected. If the maximum depth has not been reached, the client sensor 105a returns to step 2310a and determines whether the first contour 2202b is detected at the newly increased current depth. If the first contour 2202b is detected in step 2310a, the client sensor 105a, in step 2316a, determines a first region 2202c associated with the pixel coordinates 2202d of the contour 2202b. QRQbnn / zznz / E / Y 169 detected. In some embodiments, region 2202c may be determined using a non-minimal suppression method, as described above. In some embodiments, region 2202c can be determined using an artificial neural network. 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 the pixel coordinates 2204d of the contour 2204b. For example, in step 2310b, the client sensor 105a determines whether a second contour 2204b is detected at the current depth. If contour 2204b is not detected, client sensor 105a proceeds, in step 2312b, to a greater depth (e.g., to depth 2210c). If the increased depth corresponds to having reached a maximum depth (for example, 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 client sensor 105a returns to step 2310b and determines whether the second contour 2204b is detected at the newly increased current depth. If the second contour 2204b is detected in step 2210a, the client sensor 105a, in step 2316a, determines a second region 2204c associated with the pixel coordinates 2204d of the detected contour 2204b. In some embodiments, region 2204c may be determined using a non-deletion method. QRQbnn / zznz / E / Y 170 minimum or an artificial neural network, as described above. In step 2318, the client sensor 105a determines whether the criteria for distinguishing the first and second regions determined in steps 2316a and 2316b, respectively, are met. For example, criteria may include one or more requirements. For example, a requirement may be that regions 2202c, 2204c overlap by an amount less than or equal to a threshold (e.g., approximately 10%). Another requirement may be that the regions 2202c, 2204c be within (e.g., bounded by, e.g., encompassed by) the combined contour region 2222 (determined in step 2306). If the criteria are not met, method 2300 generally terminates. Otherwise, if the criteria in step 2318 are met, method 2300 proceeds to steps 2320 and 2322 where the client sensor 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 with the pixel positions 2202e, 2204e may correspond to storing in a memory the pixel coordinates 2202d, 2204d of the regions 2202c, 2204c and / or an average pixel position corresponding to each of the regions 2202c. , 2204c together QRQbnn / zznz / E / Y 171 with an identifier object for people 2202, 2204. At step 2324, the client sensor 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 homograph (e.g., of homographies 2230) for the sensor 2202 to the pixel positions to determine the corresponding physical positions 2228 (e.g., global) for the first and second persons 2202, 2204. Examples of generating and using homographies 2230 are described in more detail in the above with respect to FIGURES 2-7. Modifications, additions, or omissions may be made to method 2300 depicted in FIGURE 23. Method 2300 may include more, less, or other steps. For example, the steps can be performed in parallel or in any suitable order. Although sometimes described as system 2200, client sensor 22105a, master server 2208, or components of any of them performing steps, any suitable system or system components may perform one or more steps of the method. Multi-sensor image tracking in local and global planes As described elsewhere in this description (e.g., with respect to FIGURES 19-23 above), tracking people (e.g., or other objects QRQtnn / zznz / E / Y QRQbnn / zznz / E / Y 172 targets) in space 102 using multiple sensors 108 presents several previously unrecognized challenges. This description encompasses not only the recognition of these challenges, but also unique solutions to these challenges. For example, this disclosure describes systems and methods that track people both locally (e.g., by tracking pixel positions in images received from each sensor 108) and globally (e.g., by tracking physical positions on a global plane corresponding to physical coordinates). in space 102). Tracking people can be more reliable when done both locally and globally. For example, if a person is lost locally (e.g., if a sensor 108 fails to capture a frame and the sensor 108 does not detect a person), the person can still be tracked globally based on an image from a nearby sensor 108. (e.g., the angle view sensor 108b described with respect to FIGURE 22 above), 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. As another example, if people appear to merge (for example, if the detected contours merge into a single fused contour, as illustrated in view 2216 of FIGURE 22 above) at one sensor 108, an adjacent sensor 108 may still provide a view in which people are 173 separate entities (for example, as illustrated in view 2232 of FIGURE 22 above). Therefore, information from an adjacent sensor 108 may be prioritized for tracking people. In some embodiments, if a person tracked via a sensor 108 becomes lost in local view, the estimated pixel positions may be determined using a tracking algorithm and reported to server 106 for global tracking, at least until the tracking algorithm. monitoring determines that the estimated positions are below a threshold confidence level. FIGURES 24A-C illustrate the use of a tracking subsystem 2400 to track a person 2402 through space 102. FIGURE 24A illustrates a portion of the tracking system 100 of FIGURE 1 when used to track the position of the person 2402 based on image data generated by sensors 108a-c. The position of person 2402 is illustrated at three different times: ti, t2 and ts. Each of the sensors 108a-c is a sensor 108 of FIGURE 1, described above. Each sensor 108a-c has a corresponding field of view 2404a-c, which corresponds to the portion of space 102 seen by the sensor 108a-c. As shown in FIGURE 24A, each field of view 2404a-c overlaps that of adjacent sensors 108a-c. For example, adjacent fields of view 2404a-c may overlap by 10% to 30%. Sensors 108a-c generally generate view images QRQbnn / zznz / E / Y 174 top and transmit feeds 2406a-c of top view images corresponding to a tracking subsystem 2400. The tracking subsystem 2400 includes the client(s) 105 and the server 106 of FIGURE 1. The tracking system 2400 generally receives feeds 2406a-c of top view images generated by the sensors 108a-c, respectively, and uses the images received (see FIGURE 24B) to track a physical (e.g., global) position of the person 2402 in space 102 (see FIGURE 24C). Each sensor 108a-c may be coupled to a corresponding client sensor 105 of the tracking subsystem 2400. As such, the tracking subsystem 2400 may include local particle filter trackers 2444 to track pixel positions of the person 2402 in images generated by sensors 108a-b, global particle filter trackers 2446 to track the physical positions of the person 2402 in space 102. FIGURE 24B shows images 2408a-c, 2418a-c and 2426a-c of example top view generated by each of the sensors 108a-c at times ti, t2 and tj. Some of the top view images include representations of the person 2402 (i.e., obtained if the person 2402 was in the field of view 2404a-c of the sensor 108a-c at the time it takes the image 2408a-c, 2418a-c, and 2426a-c). For example, QRQbnn / zznz / E / Y 175 QRQbnn / zznz / E / Y at time ti, sensors 108a-c generate images 2408a-c, respectively, and are provided to the tracking subsystem 2400. The tracking subsystem 2400 detects an outline 2410 associated with the person 2402 in the image 2408a. For example, contour 2410 may correspond to a curve delineating the edge of a representation of person 2402 in image 2408a (e.g., detected based on color image data (e.g., RGB) at a predefined depth in image 2408a, as described above with respect to FIGURE 19). The tracking subsystem 2400 determines the pixel coordinates 2412a, which are illustrated in this example by the bounding box 2412b in image 2408a. Pixel position 2412c is determined based on coordinates 2412a. Pixel position 2412c generally refers to the location (i.e., row and column) of the person 2402 in the image 2408a. Since the object 2402 is also within the field of view 2404b of the second sensor 108b on you (see FIGURE 24A), the tracking system also detects a contour 2414 in the image 2408b and determines the corresponding pixel coordinates 2416b (i.e. , associated with the bounding box 2416b), for the object 2402. The pixel position 2416c is determined based on the coordinates 2416a. Pixel position 2416c generally refers to the pixel location (i.e., row and column) of the person 2402 in the image 2408b. In the time 176 ti, the object 2402 is not in the field of view 2404c of the third sensor 108c (see FIGURE 24A). Consequently, the tracking subsystem 2400 does not determine the pixel coordinates for the object 2402 based on the image 2408c received from the third sensor 108c. Turning now to FIGURE 24C, the tracking subsystem 2400 (e.g., the server 106 of the tracking subsystem 2400) may determine a first global position 2438 based on the determined pixel positions 2412c and 2416c (e.g., corresponding to the pixel coordinates 2412a, 2416a and delimited boxes 2412b, 2416b, described above). The first global position 2438 corresponds to the position of the person 2402 in space 102, determined by the tracking subsystem 2400. In other words, the tracking subsystem 2400 uses the pixel positions 2412c, 2416c determined through the two sensors 108a, b to determine a single physical position 2438 for the person 2402 in space 102. For example, a first physical position 2412d from the pixel position 2412c associated with the bounding box 2412b using a first homography that associates pixel coordinates in the top view images generated by the first sensor 108a to the physical coordinates in space 102. A second Physical position 2416d can be determined similarly using position 2416c of QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 177 pixels associated with the bounding box 2416b using a second homography that associates pixel coordinates in the top view images generated by the second sensor 108b to the physical coordinates in space 102. In some cases, the tracking subsystem 2400 can compare the distance between first and second physical positions 2412d and 2416d at a threshold distance 2448 to determine whether positions 2412d, 2416d correspond to the same person or different people (see, for example, step 2620 of FIGURE 26, described below). continuation). The first global position 2438 may be determined as an average of the first and second physical positions 2410d, 2414d. In some embodiments, the global position is determined by grouping the first and second physical positions 2410d, 2414d (e.g., using any appropriate grouping algorithm). The first global position 2438 may correspond to the (x, y) coordinates of the position of the person 2402 in space 102. Returning to FIGURE 24A, at time t2, the object 2402 is within the fields of view 2404a and 2404b corresponding to the sensors 108a, b. As shown in Figure 24B, a contour 2422 is detected in the image 2418b and the corresponding pixel coordinates 2424a are determined, which are illustrated by the bounding box 2424b. Pixel position 2424c is determined based on coordinates 2424a. The 2424c pixel position is generally QRQbnn / zznz / E / Y 178 refers to the location (i.e., row and column) of person 2402 in image 2418b. However, in this example, the tracking subsystem 2400 does not detect, in the image 2418a of the sensor 108a, a contour associated with the object 2402. This may be because the object 2402 was at the edge of the field of view 2404a, due to to a loss of the image frame of the source 2406a, because the position of the person 2402 in the field of view 2404a corresponds to a self-exclusion zone for the sensor 108a (see FIGURES 19-21 and the corresponding description above) , or due to any other malfunction of the sensor 108a and / or the tracking subsystem 2400. In this case, the tracking subsystem 2400 may estimate locally (e.g., on the particular client 105 that is coupled to the sensor 108a) the pixel coordinates 2420a and / or the corresponding pixel position 2420b for the object 2402. For example, A local particle filter tracker 2444 for the object 2402 in images generated by the sensor 108a can be used to determine the estimated pixel position 2420b. FIGURES 25A, B illustrate the operation of an example particle filter tracker 2444, 2446 (e.g., to determine estimated pixel position 2420a). FIGURE 25A illustrates a region 2500 in pixel coordinates or physical coordinates of space 102. For example, region 2500 may correspond to a region of pixels in an image 179 or, to a region in physical space. In a first area 2502, an object (e.g., a person 2402) is detected at position 2504. The particle filter determines several subsequent estimated positions 2506 for the object. The estimated subsequent positions 2506 are illustrated as points or particles in FIGURE 25A and are generally determined based on a history of previous positions of the object. Similarly, another zone 2508 shows a position 2510 for another object (or the same object at a different time) along with subsequent estimated positions 2512 of the particles for this object. For the object at position 2504, the estimated subsequent positions 2506 are mainly clustered in a similar area above and to the right of position 2504, indicating that the particle filter tracker 2444, 2446 can provide a relatively good estimate of a later position. Meanwhile, the estimated posterior positions 2512 are relatively randomly distributed around the position 2510 for the object, indicating that the particle filter tracker 2444, 2446 may provide a relatively poor estimate of a posterior position. FIGURE 25B shows a distribution diagram 2550 of the particles illustrated in FIGURE 25A, which can be used to quantify the quality of an estimated position based on a standard deviation value (o). QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 180 In FIGURE 25B, curve 2552 corresponds to the position distribution of the anticipated positions 2506, and curve 2554 corresponds to the position distribution of the anticipated positions 2512. The curve 2554 has a relatively narrow distribution so that the anticipated positions 2506 are mainly close to the mean position (μ). For example, the narrow distribution corresponds to particles that mainly have a similar position, which in this case is above and to the right of position 2504. In contrast, the curve 2554 has a broader distribution, where the particles are spread more randomly around the mean position (μ). Consequently, the standard deviation of curve 2552 (σι) is less than the standard deviation of curve 2554 (02). Generally, a standard deviation (e.g., either σι or 02) can be used as a measure of an extent to which an estimated pixel position generated by the particle filter tracker 2444, 2446 is likely to be correct. If the standard deviation is less than a threshold (Othreshoici) standard deviation, as is the case with curve 2552 and σι, the estimated position generated by a particle filter tracker 2444, 2446 can be used for object tracking. Otherwise, the estimated position is generally not used for object tracking. Referring again to FIGURE 24C, the QRQbnn / zznz / E / Y 181 tracking subsystem 2400 (e.g., server 106 of tracking subsystem 2400) may determine a second global position 2440 for object 2402 in space 102 based on the estimated pixel position 2420b associated with the estimated bounding box 2420a in the frame 2418a and the pixel position 2424c associated with the bounding box 2424b of the frame 2418b. For example, a first physical position 2420c can be determined using a first homography that maps pixel coordinates in the top view images generated by the first sensor 108a to physical coordinates in space 102. A second physical position 2424d can be determined using a second homography by associating pixel coordinates in the top view images generated by the second sensor 108b to physical coordinates in space 102. The tracking subsystem 2400 (i.e., the server 106 of the tracking subsystem 2400) can determine the second position 2440 global based on the first and second physical positions 2420c, 2424d, as described above with respect to time ti. The second global position 2440 may correspond to the (x, y) coordinates of the person 2402 in space 102. Returning to FIGURE 24A, at time t3, the object 2402 is within the field of view 2404b of the sensor 108b and the field of view 2404c of the sensor 108c. Consequently, these images 2426b, or can be used to track the person QRQbnn / zznz / E / Y 182 2402. FIGURE 24B shows that a contour 2428 and the corresponding pixel coordinates 2430a, pixel region 2430b and pixel position 2430c are determined in the frame 2426b of the sensor 108b, while a contour 2432 and the corresponding pixel coordinates 2434a, Pixel region 2434b and pixel position 2434c are detected in frame 2426c from sensor 108c. As shown in FIGURE 24C and as described in more detail above for times ti and t2, the tracking subsystem 2400 may determine a third global position 2442 for the object 2402 in space based on the associated pixel position 2430c. with the bounding box 2430b in frame 2426b and the pixel position 2434c associated with the bounding box 2434b in frame 2426c. For example, a first physical position 2430d can be determined using a second homography that maps pixel coordinates in the top view images generated by the second sensor 108b to physical coordinates in space 102. A second physical position 2434d can be determined using a third homography associating pixel coordinates in the top view images generated by the third sensor 108c to physical coordinates in space 102. The tracking subsystem 2400 may determine the global position 2442 based on the first and second physical positions 2430d, 2434d, as described above with respect to times ti and t2. QRQbnn / zznz / E / Y 183 FIGURE 2-6 is a flowchart illustrating tracking of person 2402 in space 102 based on top view images (e.g., images 2408a-c, 2418a0c, 2426a-c of sources 2406a, b, generated by the sensors 108a, b, described above. The field of view 2404a of the sensor 108a and the field of view 2404b of the sensors 108b generally overlap by a distance 2602. In one embodiment, the distance 2602 can be approximately 10% to 30% of the fields of view 2404a, b. In this example, the tracking subsystem 2400 includes the first client sensor 105a, the second client sensor 105b and the server 106. Each of the first and second sensors of clients 105a, b may be a client 105 described above with respect to FIGURE 1. The first client sensor 105a is coupled to the first sensor 108a and configured to track, based on the first source 2406a, a first pixel position 2112c of the person 2402. The second client sensor 105b is coupled to the second sensor 108b and configured to track, based on the second source 2406b, a second pixel position 2416c of the same person 2402. The server 106 generally receives pixel positions from the clients 105a, b and tracks the global position of the person 2402 in space 102. In some embodiments, the server 106 employs a global particle filter tracker 2446 to track a global physical position of person QRQbnn / zznz / E / Y 184 2402 and one or more people 2604 in 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 space 102) improves tracking by reducing and / or eliminating noise and / or other tracking errors that may result from relying on local tracking by clients 105a, b or global tracking by server 106 alone. FIGURE 26 illustrates a method 2600 implemented by the client sensors 105a, b and the server 106. The client sensor 105a receives the first data source 2406a from the sensor 108a in step 2606a. The source may include top view images (e.g., images 2408a-c, 2418a-c, 2426a-c of FIGURE 24). Images can be color images, depth images, or color depth images. In an image from the source 2406a (e.g., corresponding to a certain timestamp), the client sensor 105a determines whether an outline is detected in step 2608a. If a contour is detected at the timestamp, the client sensor 105a determines a first pixel position 2412c for the contour in step 2610a. For example, the first pixel position 2412c may correspond to the pixel coordinates associated with a bounding box 2412b determined for the outline (e.g., using any appropriate object detection algorithm). As QRQbnn / zznz / E / Y 185 as another example, the client sensor 105a may generate a pixel mask that overlays the detected contour and determines the pixel coordinates of the pixel mask, as described above with respect to step 2104 of FIGURE 21. If a contour is not detected in step 2608a, a first particle filter tracker 2444 may be used to estimate a pixel position (e.g., the estimated position 2420b), based on a history of previous positions of the contour 2410, in 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 FIGURES 25A,B). Generally, if the confidence level (e.g., based on a standard deviation) of the estimated pixel position 2420b is below a threshold value (e.g., see FIG. 25B and the related description above), the Client 105a does not determine any pixel position for the timestamp, and no pixel position is reported to server 106 for the timestamp. This avoids wasting processing resources that would otherwise be spent by server 106 processing unreliable pixel position data. As described below, server 106 can often still 186 track the person 2402, even when a pixel position is not provided for a given timestamp, using the global particle filter tracker 2446 (see steps 2626, 2632 and 2636 below). The second client sensor 105b receives the second source 2406b of data from the sensor 108b in step 2606b. The same or similar steps as described above for the client sensor 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. In step 2608b, client sensor 105b determines whether a contour 2414 is detected in a source image 2406b at a given timestamp. If a contour 2414 is detected in the timestamp, the client sensor 105b determines a first pixel position 2416c for the contour 2414 in 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 in 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), the client sensor 105b does not determine any pixel position for the QRQbnn / zznz / E / Y 187 QRQbnn / zznz / E / Y timestamp, and no pixel position for the timestamp is reported to server 106. While steps 2606a, b-2612a, b are described as being performed by the client sensor 105a and 105b, it should be understood that in some embodiments, a single client sensor 105 may receive the first and second image sources 2406a, b. of sensors 108a, b and perform the steps described above. The use of separate client sensors 105a, b for separate sensors 108a, b or sets of sensors 108 can provide redundancy in the event of malfunction of client 105 (for example, even if one client sensor 105 fails, the sources of other sensors can be processed by other clients 105 in operation). In step 2614, the server 106 receives the pixel positions 2412c, 2416c determined by the client sensors 105a, b. In step 2616, the server 106 may determine a first physical position 2412d based on the first pixel position 2412c determined in step 2610a or estimated in step 2612a by the first client sensor 105a. For example, the first physical position 2412d can be determined using a first homograph that associates pixel coordinates in the top view images generated by the first sensor 108a to physical coordinates in space 102. In step 2618, the server 106 can determine 188 a second physical position 2416d based on the second pixel position 2416c determined in step 2610b or estimated in step 2612b by the first client sensor 105b. For example, the second physical position 2416d can be determined using a second homography that associates pixel coordinates in the top view images generated by the second sensor 108b to physical coordinates in space 102. In step 2620, server 106 determines whether the first and second positions 2412d, 2416d (from steps 2616 and 2618) are within a threshold distance 2448 (e.g., approximately six inches) from each other. In general, the threshold distance 2448 may be determined based on one or more characteristics of the tracking system of the system 100 and / or the person 2402 or other 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 can vary from just over zero inches to over 15.24cm (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 in step 2620, the server 106 determines that the positions 2412d, 2416d correspond to the QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 189 same person 2402 in 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, due to overlap 2604 between the field of view 2404a and the field of view 2404b of the sensors 108a and 108b, as illustrated in FIGURE 26. In step 2624, server 106 determines a global position 2438 (i.e., a physical position in space 102) for the object based on the first and second physical positions of steps 2616 and 2618. For example, 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 grouping the first and second phase positions 2412d, 2416d (e.g., using any appropriate grouping algorithm). In 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 FIGURES 25 A, B. For example, the global particle filter tracker 2446 can generate probability weighted estimates of subsequent global positions at later times. If a global position cannot be determined 2438 at a later timestamp (for example, because the 190 pixel positions are not available in the client sensors 105a, b), the particle filter tracker 2446 can be used to estimate the position. If in step 2620 the first and second physical positions 2412d, 2416d are not within the threshold distance 2448 of each other, the server 106 generally determines that the positions correspond to different objects 2402, 2604 in step 2628. In other words, The server 106 may determine that the physical positions determined in steps 2616 and 2618 are sufficiently different, or separate, to correspond to the first person 2402 and a different second person 2604 in space 102. In step 2630, the server 106 determines a global position for the first object 2402 based on the first physical position 2412c of 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 2412c position. If other physical positions are associated with the first object (for example, based on data from other sensors 108, which for clarity are not shown in FIGURE 26), the global position of the first person 2402 may be an average of the positions or determined based on the positions using any appropriate clustering algorithm, as described above. In step 2632, a global particle filter tracker 2446 may be used. 191 QRQbnn / zznz / E / Y to track the first global position of the first person 2402, as also described above. In step 2634, the server 106 determines a global position for the second person 2404 based on the second physical position 2416c of 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 (for example, based on data from other sensors 108, which are not shown in FIGURE 26 for clarity), the global position of the second person 2604 may be an average of positions or determined based on positions using any appropriate clustering algorithm. In step 2636, a global particle filter tracker 2446 is used to track the second global position of the second object, as described above. Modifications, additions, or omissions may be made to method 2600 described above with respect to FIGURE 26. The method may include more, less, or other steps. For example, the steps can be performed in parallel or in any suitable order. Although sometimes described as a tracking subsystem 2400, client sensors 105a, b, server 106, or components of any of them performing steps, any suitable system or system components may perform one or more steps of method 2600. QRQbnn / zznz / E / Y 192 Candidate lists When the tracking system 100 is tracking people in space 102, it can be a challenge to reliably identify people in certain circumstances, such as when they pass into or near a self-exclusion zone (see FIGURES 19 to 21 and the corresponding description above), when standing near another person (see FIGURES 22-23 and the corresponding description above), and / or when one or more of the sensors 108, clients 105 and / or server 106 malfunction. For example, after a first person approaches or even comes into contact with (e.g., collides with) a second person, it may be difficult to determine which person is which (e.g., as described above with respect to FIGURE 22 ). Conventional tracking systems may use physics-based tracking algorithms in an attempt to determine which person is which based on people's estimated trajectories (e.g., estimated as if people were marbles that collide and change trajectories). according to conservation of momentum, or similar). However, people's identities can be more difficult to reliably track because movements can be random. As described above, the tracking system 100 may employ particulate filter tracking to improve tracking of individuals in the QRQbnn / zznz / E / Y 193 space 102 (see, for example, FIGURES 24-26 and the corresponding description above). However, even with these advances, the identities of tracked individuals can be difficult to determine at certain times. This description particularly encompasses the recognition that the positions of people who are shopping in a store (i.e., moving through a space, selecting items, and picking up the items) are difficult or impossible to track using previously available technology because the movement of these people is random and does not follow an easily defined pattern or model (e.g., such as the physics-based models of previous approaches). Consequently, there is a lack of tools to reliably and efficiently track people (e.g., or other target objects). This disclosure provides a solution to prior art problems, including those described above, by maintaining a record, referred to in this disclosure as a candidate list, of possible person identities or identifiers (i.e., names username, 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. In general, for each possible identity or 194 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 after interactions (e.g. collisions) between people and in response to other uncertainty events (e.g. loss of sensor data, image errors, intentional deception, etc.). In some cases, the candidate list can be used to determine when a person should be re-identified (for example, using the methods described in more detail below with respect to FIGURES 29 through 32). In general, re-identification is appropriate when the candidate list of a tracked person indicates that the person's identity is not sufficiently known (for example, based on probabilities stored in the candidate list that are less than a threshold value). In some embodiments, the candidate list is used to determine when a person is likely to have exited the space 102 (i.e., with at least a threshold confidence level), and an exit notification is only sent to the person thereafter. that there is a high level of confidence that the person has exited (see, for example, view 2730 of FIGURE 27, described below). In general, processing resources can be conserved by only performing potentially complex person re-identification tasks when a list of QRQbnn / zznz / E / Y 195 candidates indicates that a person's identity is no longer known according to pre-established criteria. FIGURE 27 is a flowchart illustrating how identifiers 2701a-c associated with tracked persons (e.g., or any other target object) can be updated during tracking over a period of time from an initial time to to an ending time ts. through tracking system 100. Individuals may be tracked using tracking system 100 based on data from sensors 108, as described above. FIGURE 27 represents a plurality of views 2702, 2716, 2720, 2724, 2728, 2730 at different times during monitoring. In some embodiments, views 2702, 2716, 2720, 2724, 2728, 2730 correspond to a local frame view (e.g., as described above with respect to FIG. for example, or any other unit appropriate for the type of data generated by the sensor 108). In other embodiments, views 2702, 2716, 2720, 2724, 2728, 2730 correspond to global views of space 102 determined based on data from multiple sensors 108 with coordinates corresponding to physical positions in space (e.g., as determined using the homographies described in greater detail with respect to FIGURES 2-7). For clarity and conciseness, the example in FIGURE 27 is QRQbnn / zznz / E / Y 196 below describes in terms of global views of space 102 (i.e., a view corresponding to the physical coordinates of space 102). The tracked object regions 2704, 2708, 2712 correspond to regions of space 102 associated with the positions of corresponding people (e.g., or any other target object) moving through space 102. For example, each region 2704, Tracked object 2708, 2712 may correspond to a different person moving in space 102. Examples of determining regions 2704, 2708, 2712 are described above, for example, with respect to FIGURES 21, 22 and 24. As an example, the tracked object regions 2704, 2708, 2712 may be identified bounding boxes for corresponding objects in space 102. As another example, the tracked object regions 2704, 2708, 2712 may correspond to pixel masks determined for contours. associated with the corresponding objects in space 102 (see, for example, step 2104 of FIGURE 21 for a more detailed description of determining a pixel mask). Generally, people can be tracked in space 102 and regions 2704, 2708, 2712 can be determined using any appropriate identification and tracking method. View 2702 at initial time to includes a 197 QRQbnn / zznz / E / Y first tracked object region 2704, a second tracked object region 2708, and a third tracked object region 2712. View 2702 may correspond to a representation of space 102 from a top view with only the regions 2704, 2708, 2712 of the tracked object shown (i.e., with other objects in space 102 omitted). At time to, the identities of all the people are generally known (for example, because the people have recently entered space 102 and / or because the people have not yet been close to each other). The first region 2704 of the tracked object 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 (Pe = 100%) that the region 2712 (or the corresponding person being tracked) is associated with a third identifier 2701c. Therefore, at time ti, candidate lists 2706, 2710, 2714 indicate that the identity 198 of each of the tracked object regions 2704, 2708, 2712 is known with every probability of having a value of one hundred percent. The view 2716 shows the positions of the tracked objects 2704, 2708, 2712 at a first time ti, which is after the initial time to. At time ti, the tracking system detects an event that may cause the identities of the tracked object regions 2704, 2708 to be less secure. 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 regions of the tracked object were close to each other (i.e., within the threshold distance 2718b), there is a non-zero probability that the regions would be misidentified during later times. The threshold distance 2718b may be any appropriate distance, as described above with respect to FIGURE 22. For example, the tracking system 100 may determine that the first object region 2704 is within the threshold distance 2718b of the second. object region 2708 by determining the first coordinates of the first object region 2704, determining the second coordinates of the second object region 2708, calculating a distance 2718a and comparing the distance 2718a with the threshold distance 2718b. QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 199 In some embodiments, the first and second coordinates correspond to pixel coordinates in an image capturing the first and second people, and the distance 2718a corresponds to a number of pixels between these pixel coordinates. For example, as illustrated in view 2716 of FIGURE 27, distance 2718 may correspond to the pixel distance between the centroids of regions 2704, 2708 of the tracked object. In other embodiments, the first and second coordinates correspond to physical or global coordinates in space 102, and the distance 2718a corresponds to a physical distance (e.g., in units of length, such as inches). For example, physical coordinates can be determined using the homographies described in more detail above with respect to FIGURES 2-7. After detecting that the identities of the 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 exchanged identifiers 2701a-c with the second tracked object region 2708. For example, when two contours approach each other in an image, there is a possibility that the identities of the contours will be incorrect during subsequent tracking (for example, because the tracking system 100 may 200 assign the incorrect identifleader 2701a-c to the borders between frames). The probability 2717 that the identifiers 2701a-c change may be determined, for example, by accessing a predefined probability value (e.g., 50%). In other cases, the probability 2717 may be based on the distance 2718a between regions 2704 of the object, 2708. For example, as the distance 2718 decreases, the probability 2717 that identifiers 2701a-c change may increase. In the example in FIGURE 27, the determined probability 2717 is 20%, because the regions 2704, 2708 of the object are relatively separated, but there is some overlap between the regions 2704, 2708. 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 change identifiers 2701a-c may be based in this relative orientation. The relative orientation may correspond to an angle between a direction facing a person associated with the first region 2704 and a direction facing a person associated with the second region 2708. For example, if the angle between the directions that people associated with the first and second regions 2704, 2708 face is about 180° (i.e., such that people face opposite directions), the probability 2717 QRQbnn / zznz / E / Y 201 of identifiers 2701a-c changing can be diminished because this case may correspond to a person accidentally backing into the other person. Based on the determined probability 2717 that regions 2704, 2708 of the tracked object changed identifiers 2701a-c (e.g., 20% in this example), the tracking system 100 updates the first list 2706 of candidates for region 2704. of the first object. The first updated 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 list 2710 of candidates for the second object region 2708 is similarly updated based on the probability 2717 that the first object region 2704 will exchange 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. The view 2720 shows the object regions 2704, 2708, 2712 at a second time point t2, which follows time ti. In time you, a first person corresponding to the QRQbnn / zznz / E / Y 202 QRQbnn / zznz / E / Y first tracked region 2704 stops near 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 tracked first object region 2704 changes identifiers 2701a-c with the third region 2712 of the tracked object. As described above, the probability 2721 that the identifiers 2701a-c change may be determined, for example, by accessing a predefined probability value (e.g., 50%). In some cases, the probability 2721 may be based on the distance 2722 between regions 2704, 2712 of the object. For example, since distance 2722 is greater than distance 2718a (from view 2716, described above), the probability 2721 that identifiers 2701a-c change may be greater at time ti than at time t2. In the example view 2720 of FIGURE 27, the probability 2721 determined is 10% (which is less than the probability 2717 changes from 20% determined at time ti). QRQbnn / zznz / E / Y 203 Based on the determined probability 2721 that the regions 2704, 2712 of the tracked object changed the identifiers 2701a-c (e.g., 10% in this example), the tracking system 100 updates the first list 2706 of candidates for the first region 2704 of the object. The first updated candidate list 2706 includes a probability (Pa = 73%) that the first region 2704 of the object is associated with the first identifier 2701a, a probability (Pb = 17%) that the first region 2704 of the object is associated with the second identifier 2701b, and a probability (Pe = 10%) that the first region 2704 of the object 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 will exchange identifiers 2701 a-c with the third object region 2712. The updated third candidate list 2714 includes a probability (PA = 7%) that the third region 2712 of the object is associated with the first identifier 2701a, a probability (Pb = 3%) that the third region 2712 of the object is associated with the second identifier 2701b, and a probability (Pe = 90%) that the third region 2712 of the object is associated with the third identifier 2701c. Consequently, although the third region 2712 of the object was never interacted with (e.g., was QRQbnn / zznz / E / Y 204 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 to) to the second region 2708 of the object. In other words, the uncertainty in the identity of the object that was detected at time ti propagates to the third region 2712 of the object through interaction with region 2704 at time t2. This unique propagation effect facilitates improved identification of objects and can be used to reduce the search space (e.g., the number of possible identifiers 2701a-c that can be associated with a tracked object region 2704, 2708, 2712) when object re-identification is necessary (as described further detail below and with respect to FIGURES 2932). View 2724 shows the third object region 2712 and an unidentified object region 2726 at a third time point ta, which follows time t2. At time ts, the first and second people associated with regions 2704, 2708 come into contact (e.g., or collide) or are so close to each other that the tracking system 100 cannot distinguish between the people. For example, the contours detected to determine the first object region 2704 and the second object region 2708 may have been merged QRQbnn / zznz / E / Y 205 resulting in the only region 2726 of the unidentified object. Accordingly, the position of the object region 2726 may correspond to the position of one or both of the object regions 2704 and 2708. At time ts, 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 merges with a second contour associated with the second. region 2708 of the object. The tracking system 100 may wait until a later time ti (shown in view 2728) when the first and second regions 2704, 2708 of the object are detected again before the candidate lists 2706, 2710 are updated. The time ti generally corresponds to a time at which the first and second persons associated with regions 2704, 2708 have separated from each other such that each person can be tracked in space 102. After a merging event such as illustrated in view 2724, the probability 2725 that regions 2704 and 2708 have changed identifiers 2701a-c may be 50%. At time ti, the updated candidate list 2706 includes an updated probability (Pa = 60%) that the first region 2704 of the object is associated with the first identifier 2701a, an updated probability (Pb = 35%) that the first region 2704 of the object is associated with the second QRQbnn / zznz / E / Y 206 identifier 2701b, and an updated probability (Pe = 5%) that the first region 2704 of the object is associated with the third identifier 2701c. The 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 (Pe = 5%) that the second object region 2708 is associated with the third identifier 2701c. The list 2714 of candidates has not changed. Even with reference to view 2728, tracking system 100 may determine that a probability of the highest value of a candidate list is less than a threshold value (e.g., Pthreshoia = 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 re-identification method described in this description). , for example, with respect to FIGURES 29-32). For example, the first region 2704 of the object can be re-identified because the highest probability (ΡΆ = 60%) is less than the threshold probability (Pthreshoid = 70%). The tracking system 100 may extract features, or descriptors, associated with the observable characteristics of 207 the first person (or corresponding contour) associated with the first region 2704 of the object. Observable characteristics may be the height of the object (for example, determined from depth data received from a sensor), a color associated with an area within the contour (for example, based on color image data from a sensor 108), a width of the object, an aspect ratio (e.g., width / length) of the object, a volume of the object (e.g., based on depth data from sensor 108), or the like. Examples of other descriptors are described in more detail below with respect to FIGURE 30. As described in more detail below, a texture feature (e.g., determined using a local binary pattern histogram algorithm) may be calculated ( LBPH)) for the person. Alternatively or additionally, an artificial neural network may be used to associate the person with the correct identifier 2701a-c (e.g., as described in more detail below with respect to FIGURE 2932). The use of candidate lists 2706, 2710, 2714 can facilitate more efficient re-identification than was previously possible because, instead of checking all possible identifiers 2701a-c (for example, and other identifiers of persons in the space 102 not illustrated in FIGURE 27) for a region 2704, 2708, 2712 that has a QRQbnn / zznz / E / Y 208 uncertain identity, the tracking system 100 may identify a subset of all other identifleaders 2701a-c that are most likely to be associated with the unknown region 2704, 2708, 2712 and only compare descriptors from region 2 / 04, 2 / 08, 2 / 12 unknown to descriptors associated with the subset of identifiers 2701a-c. In other words, if the identity of a tracked person is not certain, the tracking system 100 can only verify whether the person is one of the few people indicated on the person's candidate list, instead of comparing the unknown person. with all other people in space 102. For example, only identifiers 2701a-c associated with a non-zero probability, or a probability greater than a threshold value, in the candidate list 2706 are likely to be associated with the identifier 2701a-c of the first region 2704. In some embodiments, the subset may include identifiers 2701a-c of the first list 2706 of candidates with probabilities that are greater than a threshold probability value (e.g., 10%). Therefore, the tracking system 100 may compare descriptors of the person associated with region 2704 with predetermined descriptors associated with the subset. As described in more detail below with respect to FIGURES 29-32, predetermined traits (or descriptors) may be determined when a person enters space 102 and 209 associate with the known identifier 2701a-c of the person during the entry time period (that is, before any event may make the identity of the person uncertain. In the example of FIGURE 27, the region 2708 of the object can also be re-identified at or after time t4 because the highest probability Pb = 62% is lower than in the threshold probability example of 70%. View 2730 corresponds to a time t5 in which only the person associated with region 2712 of the object remains within space 102. View 2730 illustrates how candidate lists 2706, 2710, 2714 can be used to ensure that people only receive an exit notification 2734 when the system 100 is certain that the person has left the space 102. In these embodiments, the tracking system 100 can be configured to transmit an exit notification 2734 to the devices associated with these people when the probability that a person has exited space 102 is greater than an exit threshold (e.g., Pexit = 95% or greater). An exit notification 2734 is generally sent to a person's device and includes an acknowledgment 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 output provides confirmation to the person that the tracking system 100 QRQbnn / zznz / E / Y 210 knows that the person has left the store and is therefore no longer shopping. This can provide assurance to the person that the tracking system 100 is functioning correctly and is no longer assigning items to the person or incorrectly charging the person for items that the person did not intend to purchase. As individuals 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 FIGURE 27, at time ts (shown in view 2730), record 2732 includes an exit probability (PA,exit = 93%) that a first person associated with the first region 2704 of the object has exited space 102. Since PA,exit is less than the example threshold exit probability of 95%, an exit notification 2734 will not be sent to the first person (e.g., your device). Therefore, although the first region 2704 of the object is no longer detected in space 102, an exit notification 2734 is not sent, because there is still a possibility that the first person is still in space 102 (i.e., due to to identity uncertainties that are captured and recorded through lists 2706, 2710, 2714 of candidates). This prevents a person from receiving an exit notification 2734 before he has exited space 102. Record 2732 includes an exit probability (Pe, exit = 97%) that the second person QRQbnn / zznz / E / Y 211 associated with the second region 2708 of the object has left space 102. Since PB, exit is greater than the 95% exit probability threshold, an exit notification 2734 is sent to the second person (for example, her device). Record 2732 also includes an exit probability (Pc,exit = 10%) that the third person associated with the third object region 2712 has exited space 102. Since Pc.exit is less than the exit probability threshold 95%, an output notification 2734 is not sent to the third party (for example, to your device). FIGURE 28 is a flow chart of a method 2800 for creating and / or maintaining lists 2706, 2710, 2714 of candidates using the tracking system 100. Method 2800 generally facilitates improved identification of tracked persons (e.g., or other target objects) by maintaining lists 2706, 2710, 2714 of candidates that, for a given tracked person, or the corresponding tracked object region (e.g., the region 2704, 2708, 2712), include possible identifiers 2701a-c for the object and a corresponding probability that each identifier 2701a-c is correct for the person. By maintaining candidate lists 2706, 2710, 2714 for traced individuals, individuals can be identified more effectively and efficiently during tracing. For example, costly re-identification of people (e.g. in terms of system resources QRQbnn / zznz / E / Y 212 spent) can only be used when a candidate list indicates that a person's identity is sufficiently uncertain. Method 2800 may begin at step 2802 where image frames are received from one or more sensors 108. At step 2804, tracking system 100 uses the received frames for tracking objects in space 102. In some embodiments, tracking is performed using one or more of the unique tools described in this description (for example, with respect to FIGURES 24-26). However, in general, any appropriate sensor-based object tracking method can be employed. In 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 the view 2716 of FIGURE 27, described above, where the first region 2704 of the object is at a distance 2718a away from the second region 2708 of the object. As described above, distance 2718a may correspond to a pixel distance measured in a frame or a physical distance in space 102 (e.g., determined using a homography that maps pixel coordinates to physical coordinates in space 102). If the first and second persons are not within the threshold distance 2718b of each other, the QRQbnn / zznz / E / Y 213 system 100 continues tracking objects in space 102 (i.e., returning to step 2804). However, if the first and second persons are within the threshold distance 2718b of each other, the method 2800 proceeds to step 2808, where the 2 / 17 probability that the first and second persons change identifiers 2701a-c is determined. . As described above, the probability 2717 that the identifiers 2701a-c change can be determined, for example, by accessing a predefined probability value (e.g., 50%). In some embodiments, the probability 2717 is based on the distance 2718a between 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) change the identifiers 2701a-c, at least in part, based on this relative orientation. In step 2810, the candidate lists 2706, 2710 for the first and second persons (or corresponding object regions 2704, 2708) are updated based on the probability 2717 determined in step 2808. For example, as described above , the first updated candidate list 2706 may include a probability that the QRQbnn / zznz / E / Y 214 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 list 2710 of candidates for the second person is similarly updated based on the probability 2717 that the first object will exchange identifiers 2701a-c with the second object (determined in step 2808). The second updated 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. In 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 the view 2720 of FIGURE 27, described above, where the first object region 2704 is at a distance 2722 from the third object region 2712. As described above , the threshold distance 2718b may correspond to a pixel distance measured in a frame or a physical distance in space 102 (e.g., determined using an appropriate homography that maps pixel coordinates to physical coordinates in space 102). If the first and third person (or regions QRQbnn / zznz / E / Y 215 2704 and 2712 corresponding) are within the threshold distance 2718b of each other, the method 2800 continues with step 2814, where the probability 2721 that the first and the third person (or the corresponding regions 2704 and 2712) changed, are determined in identifiers 2 / 01a-c. As described above, this probability 2721 that identifiers 2701a-c change can be determined, for example, by accessing a predefined probability value (e.g., 50%). The probability 2721 may also or alternatively be based on the distance 2722 between the objects 2727 and / or a relative orientation of the first and third persons, as described above. In step 2816, the candidate lists 2706, 2714 for the first and third person (or corresponding regions 2704, 2712) are updated based on the probability 2721 determined in step 2808. For example, as described above, The first updated 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 list 2714 of candidates for the third person is similarly updated based on the probability 2721 that the first person has changed identifiers with the third person (i.e., determined in 216 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 FIGURE 28, the third person candidate list 2714 includes a non-zero probability that the third object is associated with the second identifier 2701b, which It was originally associated with the second person. If, in step 2812, the first and third person (or corresponding regions 2704 and 2712) are not within the threshold distance 2718b of each other, the system 100 generally continues to follow people in space 102. For example, the system 100 may continue to step 2818 to determine whether the first person is within a threshold distance of an nth person (i.e., some other person in space 102). In step 2820, system 100 determines the probability that the first and nth person change identifiers 2701a-c, as described above, for example, with respect to steps 2808 and 2814. In step 2822, the candidate lists for the first and nth person are updated based on the probability determined in step QRQbnn / zznz / E / Y 217 2820, as described above, for example, with respect to steps 2810 and 2816 before method 2800 ends. If, in step 2818, the first person is not within the distance threshold of the nth person , method 2800 proceeds to step 2824. At step 2824, the tracking system 100 determines whether a person has left space 102. For example, 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 (for example, about 30 seconds or more). The system 100 may also determine that a person exited space 102 when a person is no longer detected and the person's last determined position was at or near an exit position (e.g., near a door leading to an exit). known from space 102). If a person has not left space 102, the tracking system 100 continues to track the persons (e.g., returning to step 2 8 02). If a person has exited space 102, the tracking system 100 calculates or updates record 2732 of probabilities that the tracked objects have exited space 102 in step 2826. As described above, each exit probability of record 2732 generally corresponds to a probability that an associated person QRQbnn / zznz / E / Y 218 with each identifier 2701a-c has exited space 102. In step 2828, the tracking system 100 determines whether a combined exit probability in register 2732 is greater than a threshold value (e.g., 95% or greater). . If a combined output probability is not greater than the threshold, the tracking system 100 continues tracking objects (e.g., continuing to step 2818). If an exit probability of the 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 in step 2830, as described above with respect to the view 2730 of FIGURE 27. This may prevent or reduce cases where an exit notification 2734 is sent prematurely while an object is still in space 102. For example, it may be beneficial to delay sending an exit notification 2734 until that there is a high certainty that the associated person is no longer in space 102. In some cases, several tracked people must exit space 102 before an exit probability in record 2732 for a given identifier 2701a-c is large enough to send an outbound notification 2734 to the person (e.g., to a device associated with the person). Modifications, additions or QRQbnn / zznz / E / Y 219 omissions to method 2800 depicted in FIGURE 28. Method 2800 may include more, less, or other steps. For example, the steps can be performed in parallel or in any suitable order. Although sometimes described as the tracking system 100 or components thereof performing steps, any suitable system or components of the system may perform one or more steps of method 2800. Re-identification of people As described above, in some cases, the identity of a tracked person may become unknown (for example, when people get too close together or collide, or when a person's candidate list indicates that the person's identity is unknown, as described above with respect to FIGURES 27-28), and the person may need to be re-identified. This disclosure contemplates a unique approach to efficiently and reliably re-identify individuals using the tracking system 100. For example, rather than relying entirely on resource-expensive machine learning-based approaches to re-identify individuals, a more efficient and specially structured approach can be used when lower-cost descriptors related to observable characteristics (e.g. height, color, width, volume, etc.) of people are first used for re-identification of people. The QRQbnn / zznz / E / Y 220 QRQbnn / zznz / E / Y higher cost descriptors (for example, determined using artificial neural network models) are only used when lower cost methods cannot provide reliable results. For example, in some embodiments, a person may first be re-identified based on their height, hair color, and / or shoe color. However, if these descriptors are not sufficient to reliably re-identify the person (for example, because other people being tracked have similar characteristics), progressively higher level approaches can be used (for example, involving networks artificial neurons that are trained to recognize people) that can be more effective in identifying people but generally involve the use of more processing resources. As an example, the height of each person can initially be used for re-identification. However, if another person in space 102 has a similar height, a height descriptor may not be sufficient to re-identify the persons (for example, because it is not possible to distinguish between persons with similar heights based on height alone). , and a higher level approach can be used (for example, using a texture operator or an artificial neural network to characterize the person). In some embodiments, if the other person of similar height has never 221 interacted with the person being re-identified (for example, as recorded in each person's candidate list; see FIGURE 27 and the corresponding description above), height may still be an appropriate characteristic for re-identifying to the person (for example, because the other person with a similar height is not associated with a candidate identity of the person being reidentified). FIGURE 29 illustrates a tracking subsystem 2900 configured to track people (e.g., and / or other target objects) based on sensor data 2904 received from one or more sensors 108. In general, the tracking subsystem 2900 may include one or both of the server 106 and the client(s) 105 of FIGURE 1, described above. The tracking subsystem 2900 may be implemented using the device 3800 described below with respect to FIGURE 38. The tracking subsystem 2900 may track the positions 2902 of the objects, over a period of time using the sensor data 2904 (e.g., top view images) generated by at least one of the sensors 108. The positions 2902 of the objects may correspond to local pixel positions (e.g., pixel positions 2226, 2234 of FIGURE 22) determined at a single sensor 108 and / or global positions corresponding to physical positions (for example, positions QRQbnn / zznz / E / Y 222 QRQbnn / zznz / E / Y 2228 of FIGURE 22) in space 102 (for example, using the homographies described above with respect to FIGURES 2-7). In some cases, object positions 2902 may correspond to regions detected in an image, or in space 102, that are associated with the location of a corresponding person (e.g., regions 2704, 2708, 2712 of FIG. 27, described above). People can be tracked and the corresponding positions 2902 can be determined, for example, based on the pixel coordinates of the contours detected in the top view images generated by the sensor(s) 108. Examples of detection and tracking based on in the contour, for example, with respect to FIGURES 24 and 27. However, in general, any appropriate sensor-based tracking method can be used to determine positions 2902. For each object position 2902, the subsystem 2900 maintains a corresponding candidate list 2906 (e.g., as described above with respect to FIGURE 27). Candidate lists 2906 are generally used to keep a record of the most likely identities of each person being tracked (i.e., associated with positions 2902). Each candidate list 2906 includes probabilities that are associated with identifiers 2908 of people who have entered space 102. The identifiers QRQbnn / zznz / E / Y 223 2908 may be any appropriate representation (e.g., an alphanumeric string or similar) to identify a person (e.g., a username, name, account number, or the like associated with the person being tracked). In some embodiments, the identifiers 2908 may be anonymized (for example, using key calculation or any other appropriate anonymization technique). Each of the identifiers 2908 is associated with one or more predetermined descriptors 2910. Default descriptors 2910 generally correspond to information about tracked individuals that can be used to re-identify individuals when necessary (for example, based on candidate lists 2906). Predetermined descriptors 2910 may include values associated with observable and / or calculated characteristics of individuals associated with identifiers 2908. For example, descriptors 2910 may include heights, hair colors, clothing colors, and the like. As described in more detail below, predetermined descriptors 2910 are generally determined by the tracking subsystem 2900 during an initial period of time (for example, when a person associated with a certain tracked position 2902 enters the space) and are used to re-identify persons associated with tracked 2902 positions when necessary (e.g., based on 224 QRQbnn / zznz / E / Y lists 2906 of candidates). When re-identification is needed (or periodically during tracking) for a given person at position 2902, tracking subsystem 2900 may determine the measured descriptors 2912 for the person associated with position 2902. FIGURE 30 illustrates the determination of the descriptors 2910, 2912 based on a top view depth image 3002 received from a sensor 108. A representation 2904a of a person corresponding to the position 2902 of the tracked object is observable in the image 3002. The tracking subsystem 2900 can detect a contour 3004b associated with the representation 3004a. The contour 3004b may correspond to a boundary of the representation 3004a (for example, determined at a given depth in the image 3002). The tracking subsystem 2900 generally determines the descriptors 2910, 2912 based on the representation 3004a and / or the contour 3004b. In some cases, the representation 3004b appears within a predefined region of interest 3006 of the image 3002 so that the descriptors 2910, 2912 are determined by the tracking subsystem 2900. This may facilitate a more reliable determination of the descriptor 2910, 2912, for example, because the descriptors 2910, 2912 may be more reproducible and / or reliable when the person being imaged is in the sensor's field of view. that QRQbnn / zznz / E / Y 225 corresponds to this region of interest 3006. For example, descriptors 2910, 2912 may have more consistent values when the image of the person is within the region of interest 3006. 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 features of the representation 3004a and / or contour 3004b that can be extracted from the image 3002 and that correspond to observable features of the person. Examples of observable descriptors 3008 include a height descriptor 3012 (e.g., a measurement of the height in pixels or units of length) of the person based on the representation 3004a and / or the contour 3004b), a shape descriptor 3014 (e.g., width, length, aspect ratio, etc.) of the representation 3004a and / or outline 3004b, a volume descriptor 3016 of the representation 3004a and / or outline 3004b, a color descriptor 3018 of the 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 the outline 3004b (e.g., an attribute such as wearing a hat, carrying a child, pushing a stroller or cart), and the like. Unlike observable 3008 descriptors, 226 the calculated descriptors 3010 generally include values (e.g., scalar or vector values) that are calculated using the representation 3004a and / or the contour 3004b and that 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 histogram algorithm may be used. of local binary pattern (LBPH) to calculate a vector associated with the representation 3004a. This vector can be stored as a default descriptor 2910 and measured at later times as a descriptor 2912 for re-identification. Since the output of a texture operator, such as the LBPH algorithm, can 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 distinguish 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, principal component analysis may be used to select and retain a portion of the data vector initial 227 QRQbnn / zznz / E / Y which is more useful for effective re-identification of people. Unlike 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 a vector) of an artificial neural network trained to recognize people based on their corresponding representation 3004a and / or contour 3004b in image 3002. top view. For example, a Siamese neural network can be trained to associate representations 3004a and / or contours 3004b in top-view images 3002 with corresponding identifiers 2908 and subsequently used for re-identification 2929. Returning to FIGURE 29, the descriptor comparator 2914 of the tracking subsystem 2900 can be used to compare the measured descriptor 2912 with the corresponding predetermined descriptors 2910 to determine the correct identity of a person being tracked. For example, the measured descriptor 2912 may be compared to a corresponding default descriptor 2910 to determine the correct identifier 2908 for the person at position 2902. For example, if the measured descriptor 2912 is a height descriptor 3012, it may be compared to height descriptors 2910 default for 228 QRQbnn / zznz / E / Y identifiers 2908, or a subset of the identifiers 2908 determined using the candidate list 2906. Comparison of descriptors 2910, 2912 may involve calculating a difference between values of scalar descriptors (e.g., a difference in heights 3012, volumes 3018, etc.), determining whether a value of a measured descriptor 2912 is within a threshold range of the corresponding predetermined descriptor 2910 (for example, determining whether a measured color value 3018 of the descriptor 2912 is within a threshold range of the color value 3018 of the predetermined descriptor 2910), determining a cosine similarity value between the vectors of the measured descriptor 2912 and the corresponding predetermined descriptor 2910 (for example, determining a cosine similarity value between a measured vector calculated using a texture or neural network operator and a predetermined vector calculated in the same way). In some embodiments, only a subset of the predetermined descriptors 2910 is compared to the measured descriptor 2912. The subset may be selected using the candidate list 2906 for the person in position 2902 being re-identified. For example, the person's candidate list 2906 may indicate that only a subset (e.g., two, three, or more) of a larger number of identifiers 2908 are likely to be associated with the position 2902 of the tracked object that requires re- ID. 230 Similarly, the second person 3104 has a corresponding trajectory 3110 represented by the dashed line in FIGURE 31A. Trajectory 3110 corresponds to the position history of person 3104 in space 102 during the time period. The third person 3106 has a corresponding trajectory 3112 represented by the dotted line in FIGURE 31A. Trajectory 3112 corresponds to the position history of person 3112 in space 102 during the time period. When each of the persons 3102, 3104, 3106 first enters the space 102 (for example, when they are within the region 3114), the default descriptors 2910 are generally determined for the persons 3102, 3104, 3106 and are associated with the identifiers 2908 of the persons 3102, 3104, 3106. The default descriptors 2910 are generally accessed when the identity of one or more of the persons 3102, 3104, 3106 is not sufficiently secure (for example, based on the corresponding candidate list 2906 and / or in response to a collision event, as described below) to re-identify the person 3102, 3104, 3106. For example, re-identification may be necessary after a collision event. collision between two or more of the persons 3102, 3104, 3106. The collision event typically corresponds to an image frame in which the contours associated with different persons are merged to QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 231 form a single contour (for example, the detection of the merged contour 2220 shown in FIGURE 22 may correspond to the detection of a collision event). In some embodiments, a collision event corresponds to a person located within a distance threshold of another person (see, for example, distance 2718a and 2722 in FIGURE 27 and the corresponding description above). More generally, a collision event may correspond to any event that results in a candidate list 2906 of a person indicating that re-identification is needed (for example, based on the probabilities stored in the candidate list 2906; see FIGURES 27-28 and the corresponding description above). In the example of FIGURE 31A, when the persons 3102, 3104, 3106 are within the region 3114, the tracking subsystem 2900 may determine a first height descriptor 3012 associated with a first height of the first person 3102, a first descriptor contour 3014 associated with a shape of the first person 3102, a first anchor descriptor 3024 corresponding to a first vector generated by an artificial neural network for the first person 3102, and / or any other descriptor 2910 described with respect to FIGURE 30 former. Each of these descriptors is stored for use as a default descriptor 2910 to re-identify the first person 3102. These descriptors 2910 Default 232 are associated with the first identifier (i.e., of the identifiers 2908) of the first person 3102. When the identity of the first person 3102 is certain (for example, before the first collision event at position 3116), each one of the descriptors 2910 described above may be determined again to update the default descriptors 2910. For example, if person 3102 moves to a position in space 102 that allows person 3102 to be within a desired region of interest (e.g., region of interest 3006 of FIG. 30), new descriptors may be determined. 2912. The tracking subsystem 2900 may use these new...
Claims
1. A system, characterized in that it comprises: a sensor placed above a rack in a space, the sensor configured to generate top-view images of at least a portion of a space comprising the rack; a plurality of weight sensors, each weight sensor associated with a corresponding item stored on a shelf of the rack; and a tracking subsystem coupled to the image sensor and the weight sensors, the tracking subsystem configured to: receive an image source comprising frames of the top-view images generated by the sensor; receive weight measurements from the weight sensors; detect an event associated with one or both of a portion of a person entering an area adjacent to the rack and a weight change associated with a first item being removed from a first shelf associated with a first weight sensor;In response to the detection of the event, determine that a first person and a second person can be associated with the detected event, based on one or more of a first distance between the first person and the rack, a second distance between the second person and the rack, and a person-to-person distance between the first person and the second person; in response to the determination that the first and second person can be associated with the detected event, store image memories of top-view images generated by the sensor after the detected event;determine, using at least one of the stored image memories and a first action detection algorithm, whether an action associated with the detected event has been performed by the first person or the second person, wherein the first action detection algorithm is configured to detect the action based on the features of one or more contours in at least one of the stored image memories; determine whether the results of the first action detection algorithm satisfy criteria based at least in part on a number of iterations required to implement the first action detection algorithm;In response to the determination that the results of the first action detection algorithm do not meet the criteria, determine, by applying a second action detection algorithm to at least one of the image memories, whether the action associated with the detected event was performed by the first person or the second person, wherein the second action detection algorithm is configured to detect the action using an artificial neural network; in response to the determination that the action was performed by the first person, assign the action to the first person; and in response to the determination that the action was performed by the second person, assign the action to the second person.
2. The system according to claim 1, characterized in that the tracking subsystem is further configured to: after storing the image memories, determine a region of interest from the top view images of the stored frames; and determine, using the region of interest from at least one of the stored image memories and the first action detection algorithm, whether the action associated with the detected event was performed by the first person or the second person.
3. The system according to claim 1, characterized in that the stored image memories comprise three or fewer top-view image frames that follow one or both of: the portion of the person entering the area adjacent to the rack and the portion of the person leaving the area adjacent to the rack.
4. The system according to claim 2, characterized in that the tracking subsystem is further configured to determine a subset of QRQbnn / zznz / E / Y 492 image memories for use with the first action detection algorithm and a second subset of image memories for use with the second action detection algorithm.
5. The system according to claim 1, characterized in that the tracking subsystem is further configured to determine that the first person and the second person can be associated with the detected event based on a first relative orientation between the first person and the rack and a second relative orientation between the second person and the rack.
6. The system according to claim 1, characterized in that: the detected action is associated with a person picking up the first item stored on the first shelf of the rack; and the tracking subsystem is further configured to: in response to the determination that the action was performed by the first person, assign the first item to the first person; and in response to the determination that the action was performed by the second person, assign the first item to the second person.
7. The system according to claim 1, characterized in that: QRQbnn / zznz / E / Y 493 the first action detection algorithm involves the iterative dilation of a first contour associated with the first person and a second contour associated with the second contour; and the criteria comprise the requirement that the portion of the person entering the area adjacent to the rack be associated with the first person or the second person within a maximum number of iterative dilations of the first and second contours.
8. The system according to claim 7, characterized in that the tracking subsystem is further configured to: in response to the determination that the first person is associated with the portion of the person entering the area adjacent to the rack within the maximum number of expansions, assign the action to the first person.
9. A method, characterized in that it comprises: receiving an image source comprising top-view image frames generated by a sensor, the sensor being positioned above a rack in a space and configured to generate top-view images of at least a portion of a space comprising the rack; receiving weight measurements from a weight sensor associated with a corresponding item stored on a shelf of the rack; QRQbnn / zznz / E / Y 494 detecting an event associated with one or both of a portion of a person entering an area adjacent to the rack and a weight change associated with a first item being removed from a first shelf associated with the weight sensor;In response to the detection of the event, determining that a first person and a second person may be associated with the detected event, based on one or more of a first distance between the first person and the rack, a second distance between the second person and the rack, and a person-to-person distance between the first person and the second person; in response to the determination that the first and second person may be associated with the detected event, store image memories of top-view images generated by the sensor after the detected event;determine, using at least one of the stored image memories and a first action detection algorithm, whether an action associated with the detected event was performed by the first person or the second person, wherein the first action detection algorithm is configured to detect the action based on the features of one or more contours in at least one of the stored image memories; determine whether the results of the first action detection algorithm satisfy criteria based at least in part on a number of iterations required to implement the first action detection algorithm;In response to the determination that the results of the first action detection algorithm do not satisfy the criteria, determine, by applying a second action detection algorithm to at least one of the image memories, whether the action associated with the detected event was performed by the first person or the second person, wherein the second action detection algorithm is configured to detect the action using an artificial neural network; in response to determining that the action was performed by the first person, assigning the action to the first person; and in response to determining that the action was performed by the second person, assigning the action to the second person.
10. The method according to claim 9, characterized in that it further comprises: after storing the image memories, determining a region of interest from the top view images of the stored frames; and determining, using the region of interest from at least one of the stored image memories and the first action detection algorithm, whether the action associated with the detected event was performed by the first person or the second person.
11. The method according to claim 9, characterized in that the stored image memories comprise three or fewer top-view image frames that follow one or both of: the portion of the person entering the area adjacent to the rack and the portion of the person leaving the area adjacent to the rack.
12. The method according to claim 11, characterized in that it further comprises determining a subset of image memories for use with the first action detection algorithm and a second subset of image memories for use with the second action detection algorithm.
13. The method according to claim 9, characterized in that it further comprises determining that the first person and the second person can be associated with the detected event based on a first relative orientation between the first person and the rack and a second relative orientation between the second person and the rack.
14. The method according to claim 9, characterized in that: the detected action is associated with a person picking up the first item stored on the first shelf of the rack; and QRQbnn / zznz / E / Y QRQbnn / zznz / E / Y 498 image and weight sensor, characterized in that the image sensor is placed above a rack in a space and is configured to generate top-view images of at least a portion of the space comprising the rack, wherein the weight sensor is configured to measure a change in weight when an item is removed from a shelf of the rack, the tracking subsystem is configured to: receive an image source comprising frames of the top-view images generated by the sensor; receive weight measurements from the weight sensor;detect an event associated with one or both of a portion of a person entering an area adjacent to the rack and a weight change associated with a first item being removed from a first shelf associated with the weight sensor; in response to the detection of the event, determine that a first person and a second person may be associated with the detected event, based on one or more of a first distance between the first person and the rack, a second distance between the second person and the rack, and a person-to-person distance between the first person and the second person; in response to the determination that the first and second person may be associated with the detected event, store image memories of top-view images generated by the sensor after the detected event;determine, using at least one of the stored image memories QRQbnn / zznz / E / Y 499 and a first action detection algorithm, whether an action associated with the detected event was performed by the first person or the second person, wherein the first action detection algorithm is configured to detect the action based on the features of one or more contours in at least one of the stored image memories; determine whether the results of the first action detection algorithm satisfy criteria based at least in part on a number of iterations required to implement the first action detection algorithm;In response to the determination that the results of the first action detection algorithm do not satisfy the criteria, determine, by applying a second action detection algorithm to at least one of the image memories, whether the action associated with the detected event was performed by the first person or the second person, wherein the second action detection algorithm is configured to detect the action using an artificial neural network; in response to the determination that the action was performed by the first person, assign the action to the first person; and in response to the determination that the action was performed by the second person, assign the action to the second person.
18. The tracking subsystem according to claim 17, characterized in that it is further configured to: after storing the image memories, determine a region of interest from the top-view images of the stored frames; and determine, using the region of interest from at least one of the stored image memories and the first action detection algorithm, whether the action associated with the detected event was performed by the first person or the second person.
19. The tracking subsystem according to claim 17, characterized in that the stored image memories comprise three or fewer top-view image frames that track one or both of: the portion of the person entering the area adjacent to the rack and the portion of the person leaving the area adjacent to the rack.
20. The tracking subsystem according to claim 19, characterized in that it is further configured to determine a subset of image memories for use with the first action detection algorithm and a second subset of image memories for use with the second action detection algorithm.