Patent Description:
Artificial intelligence (Al) is a part of computer science that employs algorithms that allow software applications to learn from their environment and make decisions therefrom to achieve a certain result. Machine learning is a part of AI that employs software applications that acquire their own knowledge by analyzing vast amounts of raw input data in an iterative manner to extract patterns from the data and to allow the software application to learn to perform a task without being specifically programmed to perform that task. Deep learning is a particular type of machine learning that provides greater learning performance through representing a certain real-world environment as a hierarchy of increasing complex concepts.

Deep learning typically employs a software structure comprising several layers of neural networks that perform nonlinear processing, where each successive layer receives the output from the previous layer. Generally, the layers include an input layer that receives raw data from a sensor, a number of hidden layers that extract abstract features from the data, and an output layer that identifies a certain thing based on the feature extraction from the hidden layers. The neural networks include neurons or nodes that each has a "weight" that is multiplied by the input to the node to obtain a probability of whether something is correct. More specifically, each of the nodes has a weight that is a floating point number that is multiplied with the input to the node to generate an output for that node that is some proportion of the input. The weights are initially "trained" or set by causing the neural networks to analyze a set of known data under supervised processing and through minimizing a cost function to allow the network to obtain the highest probability of a correct output.

Deep learning neural networks are usually employed to provide image feature extraction and transformation for the visual detection and classification of objects in an image, where a video or stream of images can be analyzed by the network to identify and classify objects and learn through the process to better recognize the objects. Thus, in these types of networks, the system can use the same processing configuration to detect certain objects and classify them differently based on how the algorithm has learned to recognize the objects.

Deep learning algorithms and networks continue to improve as data processing capabilities increase. Specific areas of improvement include discriminators that increase the detection quality of the images and the speed at which the objects are recognized and classified.

Prior art can be found in <CIT> which generally relates to a method and apparatus for detecting a speed of an object and in <CIT> which generally relates to an image processing device.

The present invention discloses and describes an adaptive real-time detection and examination network that employs deep learning to detect and recognize objects in pixilated two-dimensional digital images. The network provides the images from an image source as pixilated image frames to a CNN having an input layer and output layer, where the CNN identifies and classifies the objects in the image. The network also provides metadata relating to the image source and its location, and provides the object classification data and the metadata to an RNN that identifies motion and relative velocity of the classified objects in the images, and predicts future locations of the objects that are moving. The network combines the object classification data from the CNN and the motion and prediction data from the RNN, and correlates the combined data to define boundary boxes around each of the classified objects and an indicator of relative velocity and direction of movement of the classified objects, which can be displayed on the display device.

Additional features of the present invention will become apparent from the following description and appended claims, taken in conjunction with the accompanying drawings.

The following discussion of the embodiments of the invention directed to a system and method that employ deep learning for providing detection, classification and relative velocity of objects in a stream of pixilated two-dimensional digital images is merely exemplary in nature, and is in no way intended to limit the invention or its applications or uses.

<FIG> is an illustration of a pixilated two-dimensional digital image <NUM> showing a city intersection <NUM> defined by crossing roadways <NUM> and <NUM>, where sidewalks <NUM> are provided adjacent to the roadways <NUM> and <NUM>. A number of vehicles <NUM>, including trucks, cars, etc., are shown traveling along the roadways <NUM> and <NUM> at varying speeds. Further, a number of pedestrians <NUM> are shown walking on the sidewalks <NUM> and in cross-walks <NUM>. For the purposes of the discussion herein, the digital image <NUM> can be a single still image or can be a frame from a video stream of images.

As will be discussed in detail below, the present invention proposes an adaptive real-time detection and examination network (ARDEN) that employs deep learning and trained neural networks that provide detection and classification of objects in a two-dimensional digital image, for example, the vehicles <NUM> and the pedestrians <NUM> in the image <NUM>. The network will identify objects within the digital image <NUM>, provide their pixel based location within the image <NUM>, and provide a probability of object detection all at a very low latency, such as less than <NUM>, for use in real-time video. The network will also predict the relative velocity of the objects that are moving in the image <NUM> based on their position in previous frames of images.

<FIG> is a block diagram of an object detection and classification system <NUM> that embodies the ARDEN referred to above. The system <NUM> includes a video source <NUM> that can be any suitable device capable of generating a stream of pixilated video images or a pixilated still image, such as the image <NUM>. Non-limiting examples of suitable video sources include a camera, an electro-optic infrared sensor, a LIDAR sensor, an X-ray machine, a magnetic resonance imaging (MRI) device, a synthetic aperture radar (SAR) device, etc. The video source <NUM> provides a sequence of digital image frames <NUM> of video data, or a still image, defined by pixel data at a certain sample rate, such as thirty frames per second. The system <NUM> includes a classification engine <NUM> that receives the video frames <NUM> and that identifies and classifies the objects in the frames <NUM>. Each image frame <NUM> is provided to a multi-layer feed-forward convolutional neural network (CNN) <NUM> in the classification engine <NUM>, where the input layer of the CNN <NUM> is derived from the image frames <NUM>. As is well understood by those skilled in the art, a CNN is a neural network that employs convolutional mathematical operations instead of general matrix multiplication, and has particular application for processing a grid of values, such as an image. More specifically, the CNN <NUM> is a multi-layer neural network including overlapping input regions and multiple layers of receptive fields having trained and weighted nodes in each layer, where the CNN <NUM> specifically has an absence of fully connected layers, which supports the adaptive feature of the system <NUM> and allows for a more flexible resizing of the first input layer. The trained CNN weights from a lower image resolution training set can be used as a starting point for inference or training on other higher image resolutions. Each node in the CNN <NUM> is provided with a bias and a weight that defines how it outputs data to subsequent nodes. An output layer <NUM> of the CNN <NUM> provides the raw digital data that identifies the detected and classified objects in the image <NUM> and their respective location in the image <NUM>. As will be discussed in further detail below, the detected and classified objects are identified in the image <NUM> by a bounding box and a label.

<FIG> is an illustration of a neural network <NUM> including a plurality of nodes <NUM> each having an adjustable weight W, where the network <NUM> is intended to generally represent the neural networks discussed herein. The neural network <NUM> includes an input layer <NUM> that receives the individual pixel data from the image frames <NUM>, two hidden layers <NUM> and <NUM> that identify features in the pixel data, and an output layer <NUM>, where each node in the output layer <NUM> identifies one of the objects.

Many of the objects within the image <NUM> are moving. Therefore it may be desirable to identify the relative velocity of the moving objects, the direction of the moving objects, and a prediction of where those moving objects will be in subsequent image frames based on their relative velocity and direction in previous image frames, as well as patterns derived from the neural network learning. The prediction of the location of the moving objects also includes predicting the location of those objects, such as a vehicle turning, that may not be moving in a linear motion.

The system <NUM> includes a prediction engine <NUM> to provide these functions. The video source <NUM> provides metadata represented by box <NUM> that is received by the prediction engine <NUM>, where the metadata <NUM> includes various and specific information for the particular application, such as the location of the video source <NUM>, i.e., its GPS coordinates, time of day, weather conditions, battery life, etc., and where the metadata <NUM> is correlated to the image frames <NUM> in time. The metadata <NUM> is provided to a metadata extraction database <NUM> in the prediction engine <NUM> that selects those pieces of the metadata <NUM> that are desirable for the object location prediction process for the specific location. In one embodiment, the metadata extraction database <NUM> uses the same input layer that is derived from the image frames <NUM> that is provided as the input layer for the CNN <NUM>.

The raw object classification data from the output layer <NUM> and the extracted metadata from the database <NUM> are sent to a recurrent neural network (RNN) <NUM> in the prediction engine <NUM> that determines the relative velocity and direction of the objects in the image frames <NUM> based on where the objects were in previous image frames <NUM>. As is known by those skilled in the art, a recurrent neural network is a class of artificial neural networks, also including multiple layers having trained and weighted nodes, that has particular application for processing sequential data, where connections between nodes form a directed cycle. The configuration of the RNN <NUM> creates an internal state of the network that allows it to exhibit dynamic temporal behavior, where unlike feed-forward neural networks, RNNs can use their internal memory to process an arbitrary sequences of inputs. In one embodiment, the RNN <NUM> is designed using a long short-term memory (LSTM) architecture known to those skilled in the art. The RNN <NUM> provides a fusion of the content from the metadata extraction database <NUM> and the CNN output layer <NUM> to create metadata that contains object classification, prediction of angle (direction) of each classified object, prediction of the location of objects that may not be moving in a linear manner, prediction of the relative velocity of each classified object, which will be in units only meaningful to the input layer, such as pixels per metric unit of time, and a translation of pixels per metric unit of time into GPS coordinates, or other coordinate system based units of movement, depending on the availability of the metadata.

It is noted that as described the RNN <NUM> includes an internal memory state that allows it to use previous image frames <NUM> in combination with the current image frame <NUM> to provide the relative velocity of the classified objects. If the system <NUM> is only processing a single still image from the source <NUM>, then previous image frames are not available, and thus, the RNN <NUM> is unable to provide an indication of the relative velocity of the objects.

The data generated by the RNN <NUM> identifying the motion of the objects in the image frames <NUM> that were identified by the classification engine <NUM> is then sent to an object classification and motion vector metadata processor <NUM> in the prediction engine <NUM> that combines the detection of the objects in the image frames <NUM> provided by the CNN <NUM> with the motion of those objects determined by the RNN <NUM>. The combination of data including object location and object relative velocity is then provided along with the image frames <NUM> to a visual overlay of object classification and motion vector metadata processor <NUM> in a visualization engine <NUM> that provides bounding boxes around each detected object in the frames <NUM> and an indication of object relative velocity and predicted future location. That correlation is provided to an image frame and classification overlay and motion vector object prediction processor <NUM> in the visualization engine <NUM> that generates an image indicating the location and relative velocity of the objects in the image <NUM>. That image and the combination of data including object location and object relative velocity from the processor <NUM> is provided to a display device <NUM> to display the image. The display device <NUM> can be any display device suitable for the purposes described herein, such as a monitor, head-up display (HUD), goggles, projector, smart phone, computer, etc..

<FIG> is an illustration of an image <NUM> that is an example of what might be displayed on the display device <NUM> by processing of the image <NUM> through the system <NUM>, as described. In the image <NUM>, each of the objects identified and classified is surrounded by a bounding box <NUM> indicating that it has been identified and classified and includes a label <NUM> identifying its classification, i.e., vehicle, person, etc. For each of the classified objects that is in motion, a number of chevrons <NUM> are provided in association with the bounding box <NUM>, where the direction of the chevrons <NUM> indicates the direction of travel of the object, and the number of the chevrons <NUM> indicates the relative velocity of the object.

<FIG> is an illustration of an image <NUM> that is another example of what might be displayed on the display device <NUM> by processing of the image <NUM> through the system <NUM> that includes the bounding boxes <NUM> around each of the objects and the labels <NUM> identifying the objects. However, instead of the chevrons <NUM>, the image <NUM> includes arrows <NUM> indicating the direction of movement of the objects and the relative velocity of the objects, where the length of the arrow <NUM> indicates the relative velocity.

As is well understood by those skilled in the art, it is necessary to train a neural network for the purposes discussed herein so as to provide appropriate weights for each of the nodes in the CNN <NUM> and the RNN <NUM>. Such training is supervised and typically requires a technician who initially identifies objects in the image, provides initial weights for the nodes, and then evaluates and corrects the outputs of the network all off-line so that the weights are properly trained for use in the field. As will be discussed in detail below, the present invention also includes a system whereby an object detection and classification system of the type shown in <FIG> that already includes trained nodes in the CNN <NUM> and the RNN <NUM> can have those nodes revised and updated by a training system that receives images from other object detection and classification systems, where the training system uses those images to further train a representative neural network.

<FIG> is a schematic block diagram of an object detection network <NUM> that provides distributive training and weight distribution of the nodes in a neural network illustrating this feature of the present invention. The network <NUM> includes a training system <NUM> located at a training facility and a plurality of object detection and classification systems <NUM> located separate from the training system <NUM> and being used in the field, where the systems <NUM> are similar to the system <NUM>. It is noted that the number of the systems <NUM> can be any suitable number of two or more. The training system <NUM> includes a training tools suite <NUM> that is a computer system operating suitable algorithms and the necessary accessories, all of which are well known to those skilled in the art. A technician will inspect a set of training images including objects that may be images to be classified by the systems <NUM> using the tools suite <NUM> and will draw bounding boxes around the objects in the training images and will classify them, where the technician identifies the classified objects by labels representing the objects. The labels and images, represented by box <NUM>, are provided to a classification and prediction engine <NUM> that includes a training CNN and RNN that are the same or similar networks used in the systems <NUM> that are to be trained. The engine <NUM> also includes an evaluation and back propagation feature that are used to adjust the value of the weights for the nodes in the CNN and the RNN therein to more accurately cause it to classify objects in other images. More specifically, the weights are evaluated in a controlled manner so that the training CNN and RNN classifies objects correctly as the weights are being adjusted, where the weights have the property of being static data that can be extracted, saved, transferred and refined through an evaluation function and recursively updated during that propagation while training. The classification and prediction engine <NUM> provides data to and receives data from a graphical processing unit (GPU) cluster <NUM>, whose operation is well understood to those skilled in the art, that provides parallel data processing to increase data throughput. Once the evaluation process is complete and the engine <NUM> determines that the weights provide a high predictability of identifying and classifying the objects that it has been trained for, the weights are output from the engine <NUM> as trained weights <NUM>. The training system <NUM> also includes a transceiver or networked router <NUM> for transmitting the trained weights <NUM> and receiving images.

Each object detection and classification system <NUM> includes a sensor <NUM>, intended to represent the video source <NUM>, that generates images <NUM> that are provided to a detector <NUM> intended to represent the combined classification engine <NUM>, the prediction engine <NUM> and the visualization engine <NUM>. Each system <NUM> also includes a transceiver or networked router <NUM> that allows it to be in wireless communication with the networked router <NUM> in the system <NUM>, where the networked router <NUM> also receives the images <NUM> from the sensor <NUM>. Although this embodiment shows the networked routers <NUM> and <NUM> in wireless communication with each other, it is noted that any suitable communications configuration can be employed. The images <NUM> are sent by the networked router <NUM> to the training system <NUM> where they are provided to the tools suite <NUM> and then to the classification and prediction engine <NUM> for further training of the weights for the nodes in the training CNN and RNN to help detect objects that are at the location of the specific system <NUM>. Further, the networked router <NUM> is capable of receiving the trained weights <NUM> from the system <NUM>, which are provided to the detector <NUM> at box <NUM> to update the weights in the CNN and RNN in the detector <NUM>. Therefore, adaptively trained weights using images from one of the systems <NUM> can be used to update the weights for the nodes in the CNN and RNN in another one of the systems <NUM> so that the detector <NUM> in that system <NUM> can be trained to classify objects that may not be in the images received by that system <NUM>.

Claim 1:
A method for identifying, classifying and indicating relative velocity of objects in a video stream from an image source (<NUM>), said method comprising:
providing a sequence of image frames (<NUM>) from the video stream to a convolutional neural network, CNN (<NUM>), said CNN (<NUM>) including an input layer and an output layer (<NUM>);
identifying and classifying objects in the image frames (<NUM>) using the CNN (<NUM>) and providing object classification data in the output layer (<NUM>);
providing metadata (<NUM>) from the image source (<NUM>);
providing the object classification data in the output layer (<NUM>) and the metadata (<NUM>) to a recurrent neural network, RNN (<NUM>);
identifying direction of movement and relative velocity of the classified objects in the image frames using the RNN (<NUM>) and providing object motion data therefrom;
combining, by a prediction engine (<NUM>), the object classification data from the CNN (<NUM>) and the object motion data from the RNN (<NUM>);
correlating, by a visualization engine (<NUM>), the combined object classification data and the object motion data with the image frames (<NUM>) to provide correlated images that include boundary boxes (<NUM>) around each classified object and an indicator (<NUM>, <NUM>) of the relative velocity and the direction of movement of the classified objects; and
displaying the correlated images on a display device (<NUM>).