In the introduction to this series, our CEO, Devaki, mentioned that deep learning sits at the very core of what we do at CrowdAI. Since neural networks are the core of deep learning, that means neural networks are at the core of the core of CrowdAI!
So, what exactly are neural networks?
Neural networks are inspired by you! It is a system based on human biology and how neurons work together to understand inputs. A neural network takes some image as input, and then propagates a signal forward through groups of “neurons” in the model called “layers”, eventually producing some output. This is similar to how your brain takes as input some visual stimulus and propagates signal through your nervous system to produce some output, like a motor response.
Usually, we have some desired output for the neural network: for instance, we could feed it an image of a couple of cats and hope that it is able to output a list of all the locations of cats in the image. But a network isn’t going to just do that on its own. A neural network learns how to process an image automatically from data in order to help it achieve the desired output. This means there is little data pre-processing needed from humans.
A deep learning model is able to find more complex patterns and produce better results by using training data labeled by humans.
For example, in the case of identifying dogs vs. cats, a neural network would work by first identifying and grouping low-level features in the image, like edges, colors, and textures, and then puts these features together into higher-level objects like an ear, a nose, or a tail. Then by understanding the placement of these high level features relative to each other, it could come to a decision about whether or not an image is of a dog or a cat.
This approach of understanding an image from automatically learned lower level features from the ground up yields more accurate and robust results than traditional computer vision approaches alone.
Above: A simplified example of a neural network to identify a cat. The blue layer attempts to identify low-level features, like edges and color, and each successive layer assembles information from the previous layers until the network can "understand" that it's seeing a cat.
To sum up: neural networks are not programmed to produce a specific output.
A network is shown a bunch of labeled data and trains to learn complex processes to label an image automatically. After the algorithm has been trained with enough training data, the neural network can apply the methodology it has learned to understand unseen data and produce accurate results.
Let’s say we are trying to identify cats in pictures. There are so many different sizes, types, and colors of cats that it is impossible to hard-code an algorithm that could produce accurate results. Using a neural network, we can instead train an algorithm to look for the visual clues that define cats.
Identifying clues like a long tail, pointy ears, or a furry coat, the network starts to develop a “mental image” of what cats are supposed to look like. So every time it comes across a new image, the neural network will use its previous decisions to decide if the picture contains a cat or not.
At CrowdAI, neural networks power the algorithms our customers create on our platform. Because of the flexibility of neural networks, we can effectively create a model to identify anything a human can reliably see in any type of image or video! This open-ended nature of the uses for neural networks is part of why we find deep learning so exciting.