# Patent

## Title
Object detection and classification

## Abstract

Object detection and classification across disparate fields of view are provided. A first image generated by a first recording device with a first field of view, and a second image generated by a second recording device with a second field of view can be obtained. An object detection component can detect a first object within the first field of view, and a second object within the second field of view. An object classification component can determine first and second level classification categories of the first object. A data processing system can create a data structure indicating a probability identifier for a descriptor of the first object. An object matching component can correlate the first object with the second object based on the descriptor of the first object, the probability identifier for the descriptor of the first object, or a descriptor of the second object.

## Background
CROSS-REFERENCES TO RELATED APPLICATIONS
This application claims the benefit of priority of U.S. provisional application 62/136,038, filed Mar. 20, 2015 and titled “Multi-Camera Object Tracking and Search”, and is incorporated by reference herein in its entirety.


BACKGROUND
Digital images can include views of various objects from various perspectives. The objects can be similar or different in size, shape, motion, or other characteristics.
SUMMARY
At least one aspect is directed to a system of digital image object detection across disparate fields of view. The system can include a data processing hardware system having at least one of an object detection component, an object classification component, and an object matching component. The data processing system can obtain a first image generated by a first recording device, the first recording device having a first field of view. The object detection component of the data processing hardware system can detect, from the first image, a first object present within the first field of view. The object classification component of the data processing hardware system can determine a first level classification category of the first object and can determine, from the first level classification category of the first object, a second level classification category of the first object. The data processing hardware system can generate a descriptor of the first object based on at least one of the first level classification category of the first object and the second level classification category of the first object. The data processing hardware system can create, for the first object, a data structure indicating a probability identifier for the descriptor of the first object. The data processing system can obtain a second image generated by a second recording device, the second recording device having a second field of view different than the first field of view. The object detection component of the data processing hardware system can detect, from the second image, a second object present within the second field of view. The data processing hardware system can generate a descriptor of the second object based on at least one of a first level classification category of the second object and a second level classification category of the second object. The object matching component of the data processing hardware system can correlate the first object with the second object based on the descriptor of the first object, the probability identifier for the descriptor of the first object, and the descriptor of the second object.
At least one aspect is directed to a method of digital image object detection across disparate fields of view. The method can include obtaining, by a data processing hardware system having at least one of an object detection component, an object classification component, and an object matching component, a first image generated by a first recording device, the first recording device having a first field of view. The method can include detecting, by the object detection component of the data processing hardware system, from the first image, a first object present within the first field of view. The method can include determining, by the object classification component of the data processing hardware system, a first level classification category of the first object and determining, from the first level classification category of the first object, a second level classification category of the first object. The method can include generating, by the data processing hardware system, a descriptor of the first object based on at least one of the first level classification category of the first object and the second level classification category of the first object. The method can include creating, by the data processing hardware system, for the first object, a data structure indicating a probability identifier for the descriptor of the first object. The method can include obtaining, by the data processing system, a second image generated by a second recording device, the second recording device having a second field of view different than the first field of view. The method can include detecting, by the object detection component of the data processing hardware system, from the second image, a second object present within the second field of view. The method can include generating, by the data processing hardware system, a descriptor of the second object based on at least one of a first level classification category of the second object and a second level classification category of the second object. The method can include correlating, by the object matching component of the data processing hardware system, the first object with the second object based on the descriptor of the first object, the probability identifier for the descriptor of the first object, and the descriptor of the second object.
These and other aspects and implementations are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of various aspects and implementations, and provide an overview or framework for understanding the nature and character of the claimed aspects and implementations. The drawings provide illustration and a further understanding of the various aspects and implementations, and are incorporated in and constitute a part of this specification.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings are not intended to be drawn to scale. Like reference numbers and designations in the various drawings indicate like elements. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
FIG. 1 is a functional diagram depicting one example environment for object detection, according to an illustrative implementation;
FIG. 2 is a block diagram depicting one example environment for object detection, according to an illustrative implementation;
FIG. 3 is an example illustration of an image object detection display, according to an illustrative implementation;
FIG. 4 is an example illustration of an image object detection display, according to an illustrative implementation;
FIG. 5 is an example illustration of an image object detection display, according to an illustrative implementation;
FIG. 6 is a flow diagram depicting an example method of digital image object detection, according to an illustrative implementation;
FIG. 7 is a flow diagram depicting an example method of digital image object detection, according to an illustrative implementation; and
FIG. 8 is a block diagram illustrating a general architecture for a computer system that may be employed to implement elements of the systems and methods described and illustrated herein, according to an illustrative implementation.



DETAILED DESCRIPTION
Following below are more detailed descriptions of systems, devices, apparatuses, and methods of digital image object detection or tracking across disparate fields of view. The technical solution described herein includes an object detection component (e.g., that includes hardware) that detects, from a first image, a first object within the field of view of a first recording device. Using, for example, a locality sensitive hashing technique and an inverted index central data structure, an object classification component can determine hierarchical classification categories of the first object. For example, the object classification component can detect the first object and classify the object as a person (a first level classification category) wearing a green sweater (a second level classification category). A data processing system that includes the object classification component can generate a descriptor for the first object, e.g., a descriptor indicating that the object may be a person wearing a green sweater, and can create a data structure indicating a probability identifier for the descriptor. For example, the probability identifier can indicate that there is a 75% probability that the object is a person wearing a green sweater.
The object detection component can also detect a second object within the field of view of the same recording device or of a second recording device, and can similarly analyze the second object to determine hierarchical classification categories, descriptors, and probability identifiers for the second object. An object matching component utilizing, e.g., locality sensitive hashing and the inverted index central data structure, can correlate the first object with the second object based on their respective descriptors. For example, the object matching component can determine (or determine a probability) that the first object and the second object are a same object. Among other data output, the data processing system that includes these and other components can also generate tracks on displays that indicate where, within the fields of view of the respective images, the object travelled; and can generate a display including these tracks and other information about objects.
FIG. 1 and FIG. 2 illustrate an example system 100 of object detection across different fields of view. Referring to FIG. 1 and FIG. 2, among others, the system 100 can be part of an object detection or tracking system that, for example, identifies or tracks at least one object that appears in multiple different video or still images. The system 100 can include at least one recording device 105, such as a video camera, surveillance camera, still image camera, digital camera, or other computing device (e.g., laptop, tablet, personal digital assistant, or smartphone) with video or still image creation or recording capability.
The objects 110 present in the video or still images can include background objects or transient objects. The background objects 110 can include generally static or permanent objects that remain in position within the image. For example, the recording devices 105 can be present in a department store and the images created by the recording devices 105 can include background objects 110 such as clothing racks, tables, shelves, walls, floors, fixtures, goods, or other items that generally remain in a fixed location unless disturbed. In an outdoor setting, the images can include, among other things, background objects such as streets, buildings, sidewalks, utility structures, or parked cars. Transient objects 110 can include people, shopping carts, pets, or other objects (e.g., cars, vans, trucks, bicycles, or animals) that can move within or through the field of view of the recording device 105.
The recording devices 105 can be placed in a variety of public or private locations and can generate or record digital images of background or transient objects 110 present with the fields of view of the recording devices 105. For example, a building can have multiple recording devices 105 in different areas of the building, such as different floors, different rooms, different areas of the same room, or surrounding outdoor space. The images recorded by the different recording devices 105 of their respective fields of view can include the same or different transient objects 110. For example, a first image (recorded by a first recording device 105) can include a person (e.g., a transient object 110) passing through the field of view of the first recording device 105 in a first area of a store. A second image (recorded by a second recording device 105) can include the same person or a different person (e.g., a transient object 110) passing through the field of view of the second recording device 105 in a second area of a store.
The images, which can be video, digital, photographs, film, still, color, black and white, or combinations thereof, can be generated by different recording devices 105 that have different fields of view 115, or by the same recording device 105 at different times. The field of view 115 of a recording device 105 is generally the area through which a detector or sensor of the recording device 105 can detect light or other electromagnetic radiation to generate an image. For example, the field of view 115 of the recording device can include the area (or volume) visible in the video or still image when displayed on a display of a computing device. The different fields of view 115 of different recording devices 105 can partially overlap or can be entirely separate from each other.
The system 100 can include at least one data processing system 120. The data processing system 120 can include at least one logic device such as a computing device or server having at least one processor to communicate via at least one computer network 125, for example with the recording devices 105. The computer network 125 can include computer networks such as the internet, local, wide, metro, private, virtual private, or other area networks, intranets, satellite networks, other computer networks such as voice or data mobile phone communication networks, and combinations thereof.
For example, FIG. 1 depicts two fields of view 115. A first field of view 115 is the area that is recorded by a first recording device 105 and includes three objects 110. For example, this field of view can be in a store. Two of the objects 110 are people, a man and a woman are transient objects that can move within and outside of the field of view 115. The third object 110 is a shelf, e.g., a background object generally in a fixed location. The recording device 105 trained on this field of view 115 can record activity in the area of the shelf. FIG. 1 also depicts, as an example, a second field of view 115. This second field of view 115 can be a view of an outdoor area behind the store, and in the example of FIG. 1 includes two objects 110—a man (a transient object) and a tree (a background object). The two fields of view 115 in this example do not overlap. As described herein, the data processing system 120 can determine that the man (an object 110) present in an image of the first field of view 115 in the store is, or is likely to be, the same man present in an image of the second field of view 115 outside, near the tree.
The data processing system 120 can include at least one server. For example, the data processing system 120 can include a plurality of servers located in at least one data center or server farm. The data processing system 120 can detect, track, and match various objects 110 that are present in images created by one or more recording devices 105. The data processing system 120 can also include personal computing devices, desktop, laptop, tablet, mobile, smartphone, or other computing devices. The data processing system 120 can create documents indicating tracks of objects or information about objects present in the images.
The data processing system 120 can include at least one object detection component 205, at least one object classification component 210, at least one object matching component 215, or at least one database 220. The object detection component 205, object classification component 210, or object matching component 215 can each include at least one processing unit, appliance, server, virtual server, circuit, engine, agent, or other logic device such as programmable logic arrays, hardware, software, or hardware and software combinations configured to communicate with the database 220 and with other computing devices (e.g., the recording devices 105, end user computing devices 225 or other computing device) via the computer network 125. The data processing system 120 can be or include a hardware system having at least one processor and memory unit and including the object detection component 205, object classification component 210, and object matching component 215.
The object detection component 205, object classification component 210, or object matching component 215 can include or execute at least one computer program or at least one script. The object detection component 205, object classification component 210, or object matching component 215 can be separate components, a single component, part of or in communication with a deep neural network, or part of the data processing system 120. The object detection component 205, object classification component 210, or object matching component 215 can include combinations of software and hardware, such as one or more processors configured to detect objects 110 in images from recording devices 105 that have different fields of view, determine classification categories for the objects 110, generate descriptors (e.g., feature vectors) of the objects 110 based on the classification categories, determine probability identifiers for the descriptors, and correlate objects 110 with each other.
The object detection component 205, object classification component 210, or object matching component 215 can be part of, or can include scripts executed by, the data processing system 120 or one or more servers or computing devices thereof. The object detection component 205, object classification component 210, or object matching component 215 can include hardware (e.g., servers) software (e.g., program applications) or combinations thereof (e.g., processors configured to execute program applications) and can execute on the data processing system 120 or the end user computing device 225. For example, the end user computing device 225 can be or include the data processing system 120; or the data processing system 120 can be remote from the end user computing device 225 (e.g., in a data center) or other remote location.
The object detection component 205, object classification component 210, or object matching component 215 can communicate with each other, with the database 220, or with other components such as the recording devices 105 or end user computing devices 225 via the computer network 125, for example. The database 220 can include one or more local or distributed data storage units, memory devices, indices, disk, tape drive, or an array of such components.
The end user computing devices 225 can communicate with the data processing system 120 via the computer network 125 to display data such as content provided by the data processing system 120 (e.g., video or still images, tracks of objects 110, data about objects 110 or about the images that include the objects 110, analytics, reports, or other information). The end user computing device 225 (and the data processing system 120) can include desktop computers, laptop computers, tablet computers, smartphones, personal digital assistants, mobile devices, consumer computing devices, servers, clients, and other computing devices. The end user computing device 225 and the data processing system 120 can include user interfaces such as microphones, speakers, touchscreens, keyboards, pointing devices, a computer mouse, touchpad, or other input or output interfaces.
The system 100 can be distributed. For example, the recording devices 105 can be in one or more than one area, such as one or more streets, parks, public areas, stores, shopping malls, office environments, retail areas, warehouse areas, industrial areas, outdoor areas, indoor areas, or residential areas. The recording devices 105 can be associated with different entities, such as different stores, cities, towns, or government agencies. The data processing system 120 can include a cloud-based distributed system of separate computing devices connected via the network 125, or consolidated computing devices for example in a data center. The data processing system 120 an also consist of a single computing device, such as a server, personal computer, desktop, laptop, tablet, or smartphone computing device. The data processing system 120 can be in the same general location as the recording devices 105 (e.g., in the same shopping mall; or in a back room of a department store that includes recording devices 105), or in a separate location remote from the recording device location. The end user computing device 225 can be in the same department store, or at a remote location connected to the data processing system 120 via the computer network 125. The end user computing device 225 can be associated with a same entity as the recording devices 105, such as a same store. Different recording devices 105 can also be located in different areas that may or may not have an overt relationship with each other. For example, a first recording device 105 can be located at a public park of a city; and a second recording device 105 can be located in a subway station of the same or a different city. The recording devices 105 can also include mobile devices, e.g., smartphones, and can be carried by people or fixed to vehicles (e.g., a dashcam).
The system 100 can include at least one recording device 105 to detect objects 110. For example, the system 100 can include two or more recording devices 105 to detect objects from digital images that represent disparate fields of view of the respective recording devices 105. The disparate fields of view 115 can at least partially overlap or can be entirely different. The disparate fields of view 115 can also represent different angles of the same area. For example, one recording device 105 can record images from a top or birds eye view, and another recording device 105 can record images of the same area and have the same field of view, but from a street level or other perspective view that is not a top view.
The data processing system 120 can obtain an image generated by a first recording device 105. For example, the first recording device 105 can be one of multiple recording devices 105 installed in a store and can generate an image such as a video image within a field of view that includes a corridor and some shelves. The data processing system 120 (e.g., located in the back room of the store or remotely) can receive or otherwise obtain the images from the first recording device 105 via the computer network 125. The data processing system 120 can obtain the images in real time or at various intervals, such as hourly, daily, or weekly via the computer network 125 or manually. For example, a technician using a hardware memory device such as a USB flash drive or other data storage device can retrieve the image(s) from the recording device 105 and can provide the images to the data processing system 120 with the same hardware memory device. The images can be stored in the database 220.
The data processing system 120 can by need not obtain the images directly (or via the computer network 125) from the recording devices 105. In some instances the images can be stored on a third party device between recording by the recording devices 105 and receipt by the data processing system 120. For example, the images created by the recording device 105 can be stored on a server that is not the recording device 105 and available on the internet. In this example, the data processing system 120 can obtain the image from an internet connected database rather than from the recording device 105 that generated the image.
The data processing system 120 can detect, from a first image obtained from a first recording device 105, at least one object present within the field of view 115 of the first image. For example, the object detection component 205 can evaluate the first image, e.g., frame by frame, using video tracking or another object recognition technique. The object detection component 205 can analyze multiple frames of the image, in sequence or out of sequence, using kernel based or shift tracking based on a maximization of a similarity measure of objects 110 present in the image, using contour based tracking that includes edge or boundary detection of objects 110 present in the image, or using other target representation or localization measures. In some implementations, from a multi-frame analysis of the first image (or any other image) the data processing system 120 can determine that the first image includes a background object that is at least partially blocked or obscured by a transient object that passes in front of the background object, e.g., between the background object and the recording device 105 that generates the image.
The object detection component 205 can also detect movement of an object 110 relative to background or other objects in the image from a first frame of the image to a second frame of the image. For example, the data processing system 120 can obtain a first image from a first recording device 105 in a store that includes within its field of view 115 a corridor and a shelf. From analysis of the first image, the object detection component 205 can identify a first object 110 such as a person present in the corridor. The object 110, or a particular instance of an object in an image, may be referred to as a blob or blob image.
The data processing system 120 can determine one or more classification categories for the object 110. The classification categories can include a hierarchical or vertical classification of the object. For example, the object classification component 210 can determine a first level classification category of the object 110. Referring to the example immediately above, the first level classification category can indicate that the object 110 is a male or an adult human male.
For example, the object classification component 210 can query or compare the object 110 (e.g., a blob or blob image) against a convolutional neural network (CNN), recurrent neural network (RNN), other artificial neural network (ANN), or against a spatio-temporal memory network (that can be collectively referred to as a deep neural network (DNN)) that has been previously trained, for example to recognize humans and associated gender. In some implementations, the DNN has been trained with samples of males and females of various age groups. The DNN can be part of the data processing system 120, e.g., that utilizes the database 220, or a separate system in communication with the data processing system 120, for example via the computer network 125. The result of the comparison of the object 110 with the DNN can indicate that the object 110 is, for example, a male. The object classification component 210 can provide this information—e.g., a first level classification category—as output that can be stored in the database 220 and accessed by the data processing system components to correlate the object 110 having this first level classification category with other objects 110 that also have the first level classification category of, for example, “male”.
The object classification component 210 can also determine a second level classification category for the object 110. The second level classification category can include a sub-category of the object 110. For example, when the first level classification category indicates that the object 110 is a human male, the second level classification category can indicate that the object is a man, or a male child or other characteristic, such as a man wearing a hat or a jacket. The second level classification category can include other characteristics, such as indicators of height, weight, hair style, or indicators of the physical appearance of the man.
For example, the object classification component 210 can implement a secondary or second level query or comparison of the object 110 (e.g., the blob) against the Deep Neural Network (DNN), which has been previously trained, for example to recognize clothing, associated fabrics or accessories. The clothing recognition capabilities of the DNN results from previous training of the DNN with, for example, various samples of clothes or accessories. The DNN output can indicate, for example, the second level classification category of the object 110 wearing a jacket. The object classification component 210 can provide this information—e.g., a second level classification category—as output that can be stored in the database 220 and accessed by the data processing system components to correlate the object 110 having this second level classification category with other objects 110 that also have the second level classification category of, for example, “wearing a jacket”. The DNN can be similarly trained and analyzed by the object classification component 210 to determine third or higher level (e.g., more fine grained) classification categories of the objects 110. In some implementations, the object classification component 210 includes or is part of the DNN.
The data processing system 120 can determine more or less than two classification categories. For example, the object classification component 210 can determine a third level classification category, e.g., that the jacket indicated by the second level classification category is green in color. The classification categories can be hierarchical, where for example the second level classification category is a subset or refinement of the first level classification category. For example, the object classification component 210 can determine the second level classification category of the object 110 from a list of available choices or verticals (e.g., obtained from the database 220) for or associated with the first level classification category. For example, the first level classification category may be “person”; and a list of potential second level categories may include “man”, “woman”, “child”, “age 20-39”, “elderly”, “taller than six feet”, “athletic build”, “red hair”, or other characteristic relevant to the first level classification category of “person”. These characteristics can be considered sub-categories of the first level classification category. In this and other examples, the object classification component 210 determines the second level classification category of the object 110 from the first level classification category of the same object 110. Each classification level category can represent a more fine grained or detailed elaboration, e.g., “red hair” of the previous (coarser) classification level, e.g., “person”. The classification category levels can also be non-hierarchical, where they different classification level categories represent different or unrelated characteristics of the object 110.
The data processing system 120 can generate at least one descriptor (e.g., a feature vector) for the object(s) 110 present, for example, in a first image obtained from a first recording device 105. The descriptor can be based on or describe the first, second, or other level classification categories for the detected objects 110. For example, when the first level classification category is “human male” and the second level classification category is “green jacket” the object classification component 210 can generate a descriptor indicating that the object 110 is (or is likely to be) a man wearing a green jacket.
The classification categories and descriptors associated with detected objects 110 can be stored as data structures (e.g., using locality-sensitive hashing (LSH) as part of an index data structure or inverted index) in the database 220 and can be accessed by components of the data processing system 120 as well as the end user computing device 225. For example, the object classification component 210 can implement a locality-sensitive hashing technique to hash the descriptors so that similar descriptors map to similar indexes (e.g., buckets or verticals) within the database 220, which can be a single memory unit or distributed database within or external to the data processing system 120. Collisions that occur when similar descriptors are mapped by the object classification component 210 to similar indices can be used by the data processing system 120 to detect matches between objects 110, or to determine that an object 110 present in two different images is, or is likely to be, a same object such as an individual person. In addition or as an alternative to locality-sensitive hashing, the object classification component 210 can implement data clustering or nearest neighbor techniques to classify the descriptors.
The object classification component 210 or other data processing system 120 component can create a probability identifier represented by a data structure that indicates a probability that the information indicated by the descriptor is accurate. For example, the probability identifier can indicate a 75% likelihood or probability that the object 110 is an adult male with a green jacket. For example, the data processing system 120 or the DNN can include a softmax layer, (e.g., a normalized exponential or other logistic function) that normalizes the inferences of each of the predicted classification categories (e.g., age_range:adult, gender:male, clothing:green_jacket that indicates three classification level categories of an adult male wearing a green jacket). The data processing system 120 can estimate the conditional probability using, for example, Bayes' theorem or another statistical inference model. The object classification component 210 can estimate the combined probability of the classification categories using a distance metric such as Cosine similarity between the object 110's descriptor set and a median of the training images descriptors and the estimated probability. For example, implementing the above techniques, the object classification component 210 can determine a 75% likelihood (e.g., a probability identifier or similarity metric) that a particular object 110 is an adult male wearing a green jacket. This information can be provided to the database 220 where it can be accessed by the data processing system 120 to correlate this particular object with another object 110.
The system 100 can include multiple recording devices 105 distributed throughout a store, for example. Transient objects 110, such as people walking around, can be present within the fields of view of different recording devices 105 at the same time or different times. For example, the man with the green jacket can be identified within an image of a first recording device 105, and subsequently can also be present within an image of a second recording device 105. The data processing system 120 can determine a correlation between objects 110 present in multiple images obtained from different recording devices 105. The correlation can indicate that the object 110 in a first image and the object 110 in a second image are (or are likely to be) the same object, e.g., the same man wearing the green jacket.
The images from the first recording device 105 and the second recording device 105 (or additional recording devices 105) can be the same or different types of images. For example, the first recording device 105 can provide video images, and the second recording device 105 can provide still photograph images. The data processing system 120 can evaluate images to correlate objects 110 present in the same or different types of images from the same or different recording devices 105. For example, the image data feeds obtained by the data processing system 120 from different sources such as different recording devices 105 can include different combinations of data formats, such as video/video feeds, video/photo, photo/photo, or photo/video. The video can be interlaced or non-interlaced video. Implementations involving two recording devices 105 are examples. The data processing system 120 can detect, track, or correlate objects 110 identified in images obtained from exactly one, two, or more than two recording devices 105. For example, a single recording device 105 can create multiple different video or still images of the same field of view 115 or of different fields of view at different times. The data processing system 120 can evaluate the multiple images created by a single recording device 105 to detect, classify, or correlate objects 110 present within these multiple images.
For example, once a new object 110 is detected in the field of view 115 of one of the recording devices 105, the data processing system 120 (or component such as the object matching component 120) can use tags for the new object 120 determined from the DNN and descriptors (e.g., feature vectors) to query an inverted index and obtain a candidate matching list of other objects 110 ordered by relevance. The data processing system 120 can perform a second pass comparison with the new object 110, for example using a distance metric such as Cosine similarity. If, for example, the similarity between the new object 110 and another object 110 exceeds a set threshold value (e.g., 0.5 or other value) the object matching component 120 can determine or identify a match between the two objects 110.
For example, having identified the object 110 as a man with the green jacket in the first image (e.g., in a first area of a store), the data processing system 120 can obtain a second image generated by a second recording device 105, e.g., in a second area of a store. The field of view of the second image and the field of view of the first image can be different fields of view. The object detection component 205 can detect at least one object 110 in the second image using for example the same object detection analysis noted above. As with the first object 110, the data processing system 120 can generate at least one descriptor of the second object. The descriptor of the second object can be based on first level, second level, or other level classification categories of the second object 110.
For example, the first level classification category of the object 110 can indicate that the object 110 is a male; and the second level classification category can indicate that the object 110 is wearing a green jacket. In this example, the descriptor can indicate that the second object 110 is a male wearing a green jacket. The data processing system 120 can also determine a probability identifier for the second object 110, indicating for example a 90% probability or likelihood that the second object 110 is a male wearing a green jacket. The data processing system 120 can create a data structure that represents the probability identifier and can provide the same to the database 120 for storage. A similarity metric can indicate that the probability that the object 110 is similar to another, previously identified object 110, and therefore a track is identified. The similarity metric can be extended to include a score obtained by the search result using the tags provided by the DNN.
The object matching component 215 can correlate the first object 110 with the second object 110. The correlation can indicate that the first object 110 and the second object 110 are a same object, e.g., the same man wearing the green jacket. For example, the object matching component 215 can correlate or match the first object 110 with the second object 110 based on the descriptors, classification categories, or probability identifiers of the first or second objects 110.
The correlation, or determination that an object 110 present in different images of different fields of views generated by different recording devices 105, can be based on matches between different classification category levels associated with the object 110. For example, the object matching component 215 can identify a correlation based exclusively on a match between the first level classification category of an object 110 in a first image and an object 110 in a second image. For example, the object 110 present in both images may have the first level classification category of “vehicle”. The object matching component 215 can also identify the correlation based on a match of both first and second (or more) level classification categories of the object 110. For example, the object 110 present in two or more images may have the first and second level classification categories of “vehicle; motorcycle”. In some instances, the correlation can be based exclusively on a match between second level categories of the object 110, e.g., (solely based on “motorcycle”). The object matching component 215 can identify correlations between objects 110 in multiple images based on matches between any level, a single level, or multiple levels of classification categories.
Relative to a multi-level (or higher level such as second level or beyond) classification categories, the data processing system 120 that identifies the correlation between objects 110 can conserve processing power or bandwidth by limiting evaluation to a single or lower or coarser (e.g., first) level classification category as fewer search, analysis, or database 220 retrieval operations are performed. This can improve operation of the system 100 including the data processing system 120 by reducing latency and bandwidth for communications between the data processing system 120 or its components and the database 220 (or with the end user computing device 225, and minimizes processing operations of the data processing system 120, which reduces power consumption.
The data processing system 120 can correlate objects 110 that can be present in different images captured by different recording devices 105 at different times by, for example, comparing first and second (or any other level) classification categories of various objects 110 present in images created by different recording devices 105. In some implementations, the data processing system 120 (or component thereof such as the object matching component 215) can parse through the database 220 (an inverted index data structure) to identify matches in descriptors or probability identifiers associated with identified objects 110. These objects 110 may be associated with images taken from different recording devices 105. In some implementations, in an iterative or other process of correlating objects, the data processing system 120 can determine that an object 110 present in an image of one recording device 105 is more closely associated with an object 110 (that may be the same object) present in an image of a second recording device 105 than with a third recording device 105. In this example, further data or images from the third recording device can be ignored when continuing to identify correlations between objects. This can reduce latency and improve performance (e.g., speed) of the data processing system 120 in identifying correlations between objects.
FIG. 3 depicts an image object detection display 300. The display 300 can include an electronic document or rendering of a plurality of images 305a-d (that can be collectively referred to as images 305) created by one or more recording devices 105 and obtained by the data processing system 120. The data processing system 120 can provide the display 300, e.g., via the computer network 125, to the end user computing device 225 for rendering or display by the end user computing device 225. In some implementations, the data processing system 120 can also render the display 300.
The images 305 or any other images can be real time video streams, still images, digital photographs, recorded (non-real time) video, or a series of image frames. The images 305 can be taken from exactly one recording device or from more than one recording devices 105 that can each have a unique field of view that is not identical to a field of view of any other image 305. In the example of FIG. 3, among others, the image 305a depicts is labelled as a “corridor” view and depicts a corridor 310a in a store, with an object 110a (e.g., a man wearing a short sleeve shirt) present in the corridor and a shelf 315a as a background object 110. The image 305b indicates a “store front” view and depicts a check out area of the store and includes an object 110b (e.g., a woman wearing a dress and short sleeve shirt) present near a checkout station 320. The image 305c depicts a top view of an area of the store with a corridor 310c and shelves 315c, and with no people or other transient objects 110. The image 305d depicts a “Cam 6” or perspective view of a recording device 105 in the store having the name “Cam 6” and including the object 110a (the man with the short sleeve shirt), object 110c (a woman wearing pants), and a shelf 315d. The display 300 can also include store data such as a store name indicator 325 or an image date range 330, for example from Apr. 21, 2016 to Jul. 1, 2016.
The display 300 can be rendered by the end user computing device 225 for display to an end user. The end user can interface with the display 300 to obtain additional information or to seek matches of objects within the images 300. For example, the display 300 can include an actuator mechanism or button such as an add video button 335, an analytics button 340, or a generate report button 345. These are examples and other buttons, links, or actuator mechanisms can be displayed. The add video button 335 when clicked by the user or otherwise actuated, can cause the end user computing device 225 to communicate with the data processing system 120 to communicate a request for an additional image not presently part of the display 300.
The analytics button 340, when actuated, can cause the end user computing device 225 to communicate with the data processing system 120 to request analytical data regarding object traffic, characteristics, or other data regarding objects 110 in the images 305. The generate report button 345, when actuated, can cause the end user computing device 225 to communicate with the data processing system 120 to request a report associated with one or more of the images 305. The report can indicate details about object traffic, characteristics, or other data regarding objects 110 in the images 305. The display 300 can include a video search button 350 that, when actuated, provides a request for video search to the data processing system 120. The request for a video search can include a request to search images of the recording devices 105, e.g., for one or more objects 110 present in multiple different images recorded by different recording devices 105, or a request to search images from a larger collection of images, such as images available on the internet that may include one of the objects present in an image created by one of the recording devices 105. The data processing system 120 can receive the indications of actuation of these or other actuation mechanism of the display 300 and in response can provide the requested information via the computer network 125 to the end user computing device 225 for display by the end user computing device.
FIG. 4 depicts an image object detection display 400. The display 400 can include an electronic document provided by the data processing system 120 to the end user computing device 225 for rendering by the end user computing device 225. The display 400 can include an image display area 405. The image display area 405 can include images obtained by the data processing system 120 from the recording devices 105. These can include the images 305 or other images; and can be real time, past, or historical images and the data processing system 120 can provide the images present in the image display area 405 to the end user computing device 225 for simultaneous display by the end user computing device within the display 400 or other electronic document.
The display 400 can include analytic data or report data. For example, the display 400 can include a foot traffic report 410, a foot tracking report 415, or a floor utilization chart 420. These are examples, and the display 400 can include other analyses of objects 110 present in the images 305 (or any other images). In some implementations, the end user can actuate the analytics button 340 or the generate report button 345. For example, the generate report button 345 (or the analytics button 340) can include a drop down menu from which the end user can select a foot traffic report 410, a foot tracking report 415, or a floor utilization chart 420. The data processing system 120 can obtain this data, e.g., from the database 220 and create a report in the appropriate format.
For example, the foot traffic report 410 can indicate an average rate of foot traffic associated with two different images day-by-day for the last four days in a store associated with two recording devices 105, where one rate of foot traffic (e.g., associated with one image) is indicated by a solid line, and another rate of foot traffic (e.g., associated with another image) is indicated by a dashed line. An end user viewing the display 400 at the end user computing device 225 can highlight part of the foot traffic report 410. For example, the “−2 d” period from two days ago can be selected (e.g., clicked) by the user. In response, the data processing system 120 can provide additional analytical data for display, such as in indication that a rate of foot traffic associated with one image is 2 objects per hour (or some other metric) for one image, and 1.5 objects per hour for another image.
The average foot traffic report 415 can indicate average foot traffic over a preceding time period (e.g., the last four days) and can provide a histogram or other display indicating a number of objects 110 (or a number of times a specific object 110 such as an individual person was) present in one or more images over the previous four days. The average floor utilization report 420 can include a chart that indicates utilization rates of, for example, areas within the images 305 (or other images) such as corridors. For example, the utilization report 420 can indicate that a corridor was occupied by one or more objects 110 (e.g., at least one person) 63% of the time, and not occupied 37% of the time. The data processing system 120 can obtain utilization or other information about the images from the database 220, create a pie chart of other display, and provide this information to the end user computing device 225 for display with the display 400 or with another display.
FIG. 5 depicts an image object detection display 500. The display 500 can include the image display area 405 that displays multiple images. The display 500 can include an electronic document presented to an end user at the end user computing device 225 as a report or analytic data. The example display 500 includes the image 305c that depicts the corridor 310c and shelves 315c. The image 305c can include at least one track 505. The track can include a digital overlay of the image 305c that indicates a path taken by, for example the man (object 110a) of image 305a or the woman (object 110b) of 305b, or another transient object 110 that passes into the field of view of the image 305c. The track can indicate the path taken by an object 110 (not shown in FIG. 5) in the corridor 310c. The data processing system 120 can analyze image data associated with the image 305c to identify where, within the image 305c, an object 110 was located at different points in time, and from this information can create the track that shows movement of the object 110. The display 500 can include a timeline 510 that, when actuated, can run forward or backward in time to put the track 505 in motion. For example, clicking or otherwise actuating a play icon of the timeline 510 can cause additional dots of the track to appear as time progresses, representing motion of the object 110 through the corridor 310c. The track 505 can represent historical or past movement of the object 110 through the image 305c, or can represent real time or near real time (e.g., within the last five minutes) movement through the image 305c. The track can include an aggregate of the various appearances of an object 110 (e.g. human) over one or more recording devices 105, over a specified period of time. Once the data processing system 120 has identified the various appearances of the object 110 above a specified mathematical threshold, the data processing system 120 can order the various appearances chronologically to build a most likely track of the object 110.
The data processing system 120 can create one or more tracks 505 for one or more objects 110 present in one or more images or one or more fields of view. For example, the data processing system 120 can generate a track 505 of a first object 110 within the field of view of a first image (e.g., the image 305c) and can also generate a different track 505 of a second object 110 within the field of view of a second image (e.g., an image other than the image 305c). For example, the data processing system 120 can receive a query or request from the end user computing device 225 that identifies at least one object 110, (e.g., the object 110a—the man with the short sleeve shirt in the example of FIG. 3). Responsive to the query, the data processing system 120 can generate a track of the object 110, e.g., track 505. The data processing system 120 can provide the track 505 (or other track) to the end user computing device 225 for display by the end user computing device 225.
The request to view the track 505 of the object 110 can be part of a request to generate an electronic document that includes images, analytics, or reporting data. For example, the data processing system 120 can receive a request to generate a document associated with at least one image 305 (or any other image) responsive to end user actuation of an interface displayed by the end user computing device 225. Responsive to the request, the data processing system 120 can generate the electronic document (e.g., displays 300, 400, 500, or other displays). The electronic document can include one or more tracks 505 (or other tracks) of objects 110, one or more utilization rates associated with images (or with the fields of view of the images), or traffic indicators indicative of the presence or absence of objects 110 within the images. The data processing system 120 can provide the electronic document to the end user computing device 225, for example via the computer network 125.
The displays 300, 400, or 500 can be displayed e.g., by the end user computing device within a web browser as a web page, as an app, or as another electronic document that is not a web page. The information and ranges shown in these displays are examples and other displays and other data can be displayed. For example, a user can select a time period of other than a previous four days from a drop down menu.
FIG. 6 depicts an example method 600 of digital image object detection. The method 600 can obtain a first image (ACT 605). For example, the data processing system 120 can receive or otherwise obtain the first image from a first recording device 105. The first image can be obtained (ACT 605) from the first recording device 105 via the computer network 125, direct connection, a portable memory unit. The first image can be obtained (ACT 605) in real time or at symmetric or asymmetric periodic intervals (e.g., daily or every six or other number of hours). The first image can represent or be an image of the field of view of the first recording device. The data processing system 120 that receives the first image can include at least one object detection component 205, at least one object classification component 210, or at least one object matching component 215.
The method 600 can detect a first object 110 present within the first image and within the field of view of the first recording device 105 (ACT 610). For example, the object detection component 205 can implement an object tracking technique to identify the first object 110 present within multiple frames or images of the first image (ACT 610). The first object 110 can include a transient object such as a person or vehicle, for example. The method 600 can also determine at least one classification category for the object 110 (ACT 615). For example, when the object 110 is a transient object, the object classification component 210 can determine a first level classification category for the object (ACT 615) as a “person” and a second level classification category for the object as a “male” or “male wearing a hat”. In some implementations, the second level classification can indicate “male” and a third level classification can indicate “wearing a hat”. The second and higher order classification category levels can indicate further details regarding characteristics of the object 110 indicated by a lower order classification category level.
The method 600 can generate a descriptor of a first object 110. For example, the object classification component 210 (ACT 620), and can create a probability identifier (ACT 615) that indicates a probability that the descriptor is accurate. The probability identifier (and the descriptor and classification categories) for a first or any other object 110 can be represented as data structures stored in the database 220 or other hardware memory units such as a memory unit of the end user computing device 225. For example, the data processing system 120 can assign the first object 110 to a first level category of “male person” (ACT 615). This information can be indicated by the descriptor for the first object 110 that the data processing system 120 generates (ACT 620). The descriptor can be stored as a data structure in the database 220. Based for example on analysis of the image obtained from a first recording device 105, the data processing system 120 can determine or create a probability identifier indicating a 65% probability or likelihood that the first object 110 is in fact a male person (ACT 625). The probability identifier associated with the descriptor of the first object 110 can also be represented by a data structure stored in the database 220.
The method 600 can obtain a second image (ACT 630). For example the data processing system 120 or component thereof such as the object detection component 205 can receive a second image from a second recording device 105 (ACT 630) that can be a different device than the first recording device 105 that generated the first image. The second image can be associated with a different field of view than the first image, such as a different store, a different portion of a same store, or a different angle or perspective of the first image. The same objects 110, different objects 110, or combinations thereof can be present in the two images. The data processing system 120 can obtain any number of second images (e.g., third images, fourth images, etc.) of different fields of view, from different recording devices 105. The second image can be obtained (ACT 630) from the recording device 105 via the computer network 125, manually, or via direct connection between the data processing system 120 and the recording device 105 that generates the second image.
The method 600 can detect at least one second object 110 within the second image (ACT 635). For example, the object detection component 205 can implement an object tracking technique to identify the second object 110 present within multiple frames or images of the second image (ACT 635). The second object 110 can be detected (ACT 635) in the same manner in which the data processing system 120 detects the first object 110 (ACT 610).
The method 600 can generate at least one descriptor for the second object 110 (ACT 640). For example, the data processing system 120 (or component such as the object classification module 210) can create a descriptor for the second object 110 (ACT 640) detected in the second image. The descriptor for the second object 100 can indicate a type of the object 110, such as a “person” or “vehicle”. The data processing system 120 can also classify or assign the second image into one or more classification categories, and the descriptor can indicate the classification categories of the second image, e.g., “man with green jacket” or “vehicle, compact car”. The descriptor for the second image can also be associated with a probability identifier that indicates a likelihood of the accuracy of the descriptor, such as a 35% probability that the second object 110 is a man with a green jacket. The descriptor (as well as the classification categories or probability identifier) can be provided to or read from the database 220, e.g., by the data processing system 120 or another device such as the end user computing device 225.
The method 600 can correlate the first object 110 with the second object 110 (ACT 645). The correlation can indicate the object and the second object are a same object. For example, the first and second object 110 can be the same man with a green jacket who passes through the field of view of the first recording device 105 (and is present in the first image) and the field of view of the second recording device 105 (and is present in the second image). For example, to correlate the first object 110 with the second object 110 (ACT 645), the object matching module 215 can compare or match the descriptor of the first object with the descriptor of the second object. The object matching module 215 can also consider the probability identifier for the descriptor of the first object (or the probability identifier for the descriptor of the second object) to determine that the first and second objects 110 are a same object, such as a particular individual. For example, the data processing system 120 can correlate the objects 110 (ACT 645) when the respective descriptors match and at least one probability identifier is above a threshold value, such as 33%, 50%, 75%, or 90% (or any other value).
FIG. 7 depicts an example method 700 of digital image object detection. The method 700 can provide a first document (ACT 705). For example, the data processing system 120 can provide the first document, (e.g., an electronic or online document) (ACT 705) via the computer network 125 to the end user computing device 225 for display by the end user computing device 225. The first document can include displays, screenshots, stills, live, real time, or recorded video, or other representations of the images created by the recording devices 105. The first document can include at least one button or other actuator mechanism.
The method 700 can receive an indication that the actuation mechanism has been activated (ACT 710). For example, and end user at the end user computing device 225 can click or otherwise actuate the actuation mechanism displayed with the first document to cause the end user computing device 225 to transmit the indication of the actuation to the data processing system 120 via the computer network 125. The actuation of the actuation mechanism can indicate a request for a report related to the displayed images or other images by the data processing system 120 from the recording devices 105.
The method 700 can generate a second document (ACT 715). For example, responsive to a request for a report, such as the actuation of the actuation mechanism, the data processing system 120 can generate a second document (ACT 715). The second document, e.g., an electronic or online document, can include analytical data, charts, graphs, or tracks related to the objects 110 present in at least one of the images. For example, the second document can include at least one track of at least one object 110 present in one or more images, utilization rates associated with fields of view of the images, traffic indicators associated with the fields of view of the images. The data processing system 120 can provide the second document via the computer network 125 to the end user computing device 225 for rendering at a display of the end user computing device.
FIG. 8 shows the general architecture of an illustrative computer system 800 that may be employed to implement any of the computer systems discussed herein (including the system 100 and its components such as the data processing system 120, the object detection component 205, object classification component 210, or object matching component 215 in accordance with some implementations. The computer system 800 can be used to provide information via the computer network 125, for example to detect objects 110, determine classification categories of the objects 110, generate descriptors of the objects 110, probability identifiers of the descriptors, or correlations between objects 110, or to provide documents indicating this information to the end user computing device 225 for display by the end user computing device 225.
The computer system 800 can include one or more processors 820 communicatively coupled to at least one memory 825, one or more communications interfaces 805, one or more output devices 810 (e.g., one or more display devices) or one or more input devices 815. The processors 820 can be included in the data processing system 120 or the other components of the system 100 such as the object detection component 205, object classification component 210, or object matching component 215.
The memory 825 can include computer-readable storage media, and can store computer instructions such as processor-executable instructions for implementing the operations described herein. The data processing system 120, object detection component 205, object classification component 210, object matching component 215, recording device 105, or end user computing device 225 can include the memory 825 to store images, classification categories, descriptors, or probability identifiers, or to create or provide documents for, example. The at least one processor 820 can execute instructions stored in the memory 825 and can read from or write to the memory information processed and or generated pursuant to execution of the instructions.
The processors 820 can be communicatively coupled to or control the at least one communications interface 805 to transmit or receive information pursuant to execution of instructions. For example, the communications interface 805 can be coupled to a wired or wireless network (e.g., the computer network 125), bus, or other communication means and can allow the computer system 800 to transmit information to or receive information from other devices (e.g., other computer systems such as data processing system 120, recording devices 105, or end user computing devices 225). One or more communications interfaces 805 can facilitate information flow between the components of the system 100. In some implementations, the communications interface 805 can (e.g., via hardware components or software components) provide a website or browser interface as an access portal or platform to at least some aspects of the computer system 800 or system 100. Examples of communications interfaces 805 include user interfaces.
The output devices 810 can allow information to be viewed or perceived in connection with execution of the instructions. The input devices 815 can allow a user to make manual adjustments, make selections, enter data or other information e.g., a request for an electronic document or image, or interact in any of a variety of manners with the processor 820 during execution of the instructions.
The subject matter and the operations described herein can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the disclosed structures and their structural equivalents, or in combinations of one or more of them. The subject matter described herein can be implemented at least in part as one or more computer programs, e.g., computer program instructions encoded on computer storage medium for execution by, or to control the operation of, the data processing system 120, recording devices 105, or end user computing devices 225, for example. The program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information (e.g., the image, objects 110, descriptors or probability identifiers of the descriptors) for transmission to suitable receiver apparatus for execution by a data processing system or apparatus (e.g., the data processing system 120 or end user computing device 225). A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. While a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices). The operations described herein can be implemented as operations performed by a data processing apparatus (e.g., the data processing system 120 or end user computing device 225) on data stored on one or more computer-readable storage devices or received from other sources (e.g., the image received from the recording devices 105 or instructions received from the end user computing device 225).
The terms “data processing system” “computing device” “appliance” “mechanism” or “component” encompasses apparatuses, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatuses can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination thereof. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures. The data processing system 120 can include or share one or more data processing apparatuses, systems, computing devices, or processors.
A computer program (also known as a program, software, software application, app, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as a stand-alone program or as a, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program can correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more components, sub-programs, or portions of code that may be collectively referred to as a file). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described herein can be performed by one or more programmable processors executing one or more computer programs (e.g., components of the data processing system 120) to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatuses can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
The subject matter described herein can be implemented, e.g., by the data processing system 120, in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this specification, or a combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system such as system 100 or system 800 can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network (e.g., the computer network 125). The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., an electronic document, image, report, classification category, descriptor, or probability identifier) to a client device (e.g., to the end user computing device 225 to display data or receive user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server (e.g., received by the data processing system 120 from the end user computing device 225).
While operations are depicted in the drawings in a particular order, such operations are not required to be performed in the particular order shown or in sequential order, and all illustrated operations are not required to be performed. Actions described herein can be performed in a different order.
The separation of various system components does not require separation in all implementations, and the described program components can be included in a single hardware, combination hardware-software, or software product. For example, the data processing system 120, object detection component 205, object classification component 210, or object matching component 215 can be a single component, device, or a logic device having one or more processing circuits, or part of one or more servers of the system 100.
Having now described some illustrative implementations, it is apparent that the foregoing is illustrative and not limiting, having been presented by way of example. In particular, although many of the examples presented herein involve specific combinations of method acts or system elements, those acts and those elements may be combined in other ways to accomplish the same objectives. Acts, elements and features discussed in connection with one implementation are not intended to be excluded from a similar role in other implementations or implementations.
The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including” “comprising” “having” “containing” “involving” “characterized by” “characterized in that” and variations thereof herein, is meant to encompass the items listed thereafter, equivalents thereof, and additional items, as well as alternate implementations consisting of the items listed thereafter exclusively. In one implementation, the systems and methods described herein consist of one, each combination of more than one, or all of the described elements, acts, or components.
Any references to implementations or elements or acts of the systems, devices, or methods herein referred to in the singular may also embrace implementations including a plurality of these elements, and any references in plural to any implementation or element or act herein may also embrace implementations including only a single element. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements to single or plural configurations. For example, references to the data processing system 120 can include references to multiple physical computing devices (e.g., servers) that collectively operate to form the data processing system 120. References to any act or element being based on any information, act or element may include implementations where the act or element is based at least in part on any information, act, or element.
Any implementation disclosed herein may be combined with any other implementation or embodiment, and references to “an implementation,” “some implementations,” “an alternate implementation,” “various implementations,” “one implementation” or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the implementation may be included in at least one implementation or embodiment. Such terms as used herein are not necessarily all referring to the same implementation. Any implementation may be combined with any other implementation, inclusively or exclusively, in any manner consistent with the aspects and implementations disclosed herein.
References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms. References to at least one of a conjunctive list of terms may be construed as an inclusive OR to indicate any of a single, more than one, and all of the described terms. For example, a reference to “at least one of ‘A’ and ‘B’” can include only ‘A’, only ‘B’, as well as both ‘A’ and ‘B’.
Where technical features in the drawings, detailed description or any claim are followed by reference signs, the reference signs have been included to increase the intelligibility of the drawings, detailed description, and claims. Accordingly, neither the reference signs nor their absence have any limiting effect on the scope of any claim elements.
The systems and methods described herein may be embodied in other specific forms without departing from the characteristics thereof. The foregoing implementations are illustrative rather than limiting of the described systems and methods. Scope of the systems and methods described herein is thus indicated by the appended claims, rather than the foregoing description, and changes that come within the meaning and range of equivalency of the claims are embraced therein.

## Claims

1. A system of object detection across disparate fields of view, comprising:
a data processing hardware system having an object detection component, an object classification component, and an object matching component, the data processing system obtains a first image generated by a first recording device, the first recording device having a first field of view;
the object detection component of the data processing hardware system detects, from the first image, a first object present within the first field of view;
the object classification component of the data processing hardware system determines a first level classification category of the first object and determines, from the first level classification category of the first object, a second level classification category of the first object;
the data processing hardware system generates a descriptor of the first object based on at least one of the first level classification category of the first object and the second level classification category of the first object;
the data processing hardware system creates, for the first object, a data structure indicating a probability identifier for the descriptor of the first object;
the data processing system obtains a second image generated by a second recording device, the second recording device having a second field of view different than the first field of view;
the object detection component of the data processing hardware system detects, from the second image, a second object present within the second field of view;
the data processing hardware system generates a descriptor of the second object based on at least one of a first level classification category of the second object and a second level classification category of the second object; and
the object matching component of the data processing hardware system correlates the first object with the second object based on the descriptor of the first object, the probability identifier for the descriptor of the first object, and the descriptor of the second object.

2. The system of claim 1, wherein the first image includes a background object, comprising:
the data processing hardware system configured to detect the first object based on an obstruction, by the first object, of the background object within the first image.

3. The system of claim 1, comprising:
the object classification component of the data processing hardware system operational to determine the first level classification category of the second object and to determine, from the first level classification category of the second object, the second level classification category of the second object.

4. The system of claim 3, comprising:
the object matching component of the data processing hardware system configured to correlate the first object with the second object based on the second level classification category of the first object and the second level classification category of the second object.

5. The system of claim 3, comprising:
the object matching component of the data processing hardware system configured to correlate the first object with the second object based the first level classification category of the first object and the first level classification category of the second object.

6. The system of claim 1, comprising:
the data processing hardware system operational to generate a track of the first object within the first field of view, and to generate a track of the second object within the second field of view.

7. The system of claim 1, comprising the data processing hardware system operational to:
receive, from an end user computing device via a computer network, a query that identifies at least one of the first object and the second object;
generate, responsive to the query, a track of at least one first object and the second object; and
provide, via the network, to the end user computing device, the track for display by the end user computing device.

8. The system of claim 1, comprising:
the object matching component of the data processing hardware system operational to determine a probability that the first object and the second object are a same object based on the descriptor of the first object and the descriptor of the second object.

9. The system of claim 1, comprising the data processing hardware system configured to:
receive, from an end user computing device via a computer network, a request to generate an electronic document associated with at least one of the first image and the second image;
responsive to the request, generate the electronic document, the electronic document indicating at least one of a track of the first object, a track of the second object, a utilization rate associated with the first field of view, a utilization rate associate with the second field of view, a traffic indicator associated with the first field of view, and a traffic indicator associated with the second field of view; and
provide the electronic document to the end user computing device via the computer network.

10. The system of claim 1, comprising the data processing hardware system configured to:
determine that the first object present within the first field of view of the first recording device is more closely associated with the second object present within the second field of view of the second recording device than with a third image in a third field of view of a third recording device.

11. The system of claim 1, comprising:
the object detection component of the data processing hardware system configured to detect, from the first image, the first object present within the first field of view based on a location of the first object in a first frame of the first image and a location of the first object in a second frame of the first image.

12. The system of claim 1, comprising:
the object detection component of the data processing hardware system configured to detect, from the first image, the first object present within the first field of view based on edge detection of an edge of the first object.

13. The system of claim 1, wherein the second level classification category of the first object includes a sub-category of the first level classification category of the first object.

14. The system of claim 1, comprising:
the data processing hardware system operational to provide the first image and the second image to an end user computing device via a network, for simultaneous display by the end user computing device.

15. The system of claim 1, wherein the first object and the second object are a same object.

16. The system of claim 1, comprising:
the data processing hardware system configured to store the data structure indicating the probability identifier for the descriptor of the first object in an index data structure.

17. The system of claim 1, wherein the first object is present within the first field of view at a first time, and the second object is present within the second field of view at a second time subsequent to the first time.

18. A method of digital image object detection across disparate fields of view, comprising:
obtaining, by a data processing hardware system having at least one of an object detection component, an object classification component, and an object matching component, a first image generated by a first recording device, the first recording device having a first field of view;
detecting, by the object detection component of the data processing hardware system, from the first image, a first object present within the first field of view;
determining, by the object classification component of the data processing hardware system, a first level classification category of the first object and determining, from the first level classification category of the first object, a second level classification category of the first object;
generating, by the data processing hardware system, a descriptor of the first object based on at least one of the first level classification category of the first object and the second level classification category of the first object;
creating, by the data processing hardware system, for the first object, a data structure indicating a probability identifier for the descriptor of the first object;
obtaining, by the data processing system, a second image generated by a second recording device, the second recording device having a second field of view different than the first field of view;
detecting, by the object detection component of the data processing hardware system, from the second image, a second object present within the second field of view;
generating, by the data processing hardware system, a descriptor of the second object based on at least one of a first level classification category of the second object and a second level classification category of the second object; and
correlating, by the object matching component of the data processing hardware system, the first object with the second object based on the descriptor of the first object, the probability identifier for the descriptor of the first object, and the descriptor of the second object.

19. The method of claim 18, comprising:
correlating, by the object matching component of the data processing hardware system, the first object with the second object based on a probability identifier for the descriptor of the second object.

20. The method of claim 18, comprising:
providing, by the data processing hardware system via a computer network, for display by an end user computing device, a first electronic document that includes at least one of the first image and the second image, the first electronic document including an actuation mechanism;
receiving, by the data processing hardware system via the computer network, from the end user computing device, an indication of actuation of the actuation mechanism; and
generating, by the data processing hardware system, responsive to the indication of actuation of the actuation mechanism, a second electronic document that includes at least one of a track of the first object within the first image, a track of the second object within the second image, a utilization rate associated with the first field of view, a utilization rate associate with the second field of view, a traffic indicator associated with the first field of view, and a traffic indicator associated with the second field of view.