Team Members: Aastha Sharma, Andrea Jose, Kanishk Srivastava, Lahari Bandaru, Maggie Wang, Ray Zong
Faculty: Yancy Diaz-Mercado, Sara Hanarvar, Sarjana Oradiambalam
I4C Teaching Assistant: Amber Melton
Project Overview
Constructing a machine learning algorithm to prognosticate the movement of people and to develop direct and clear paths for robots to avoid collision through a crowded environment. Using the data obtained from the recordings from people entering and exiting a university and hotel(the pedestrians exact positions on specific times, their direction, and velocity) we were able to construct a neural network to generate their potential movement which the robot will use to successfully navigate and reach its destination.
Project Question
How can we predict the movement of humans in a crowded environment?
Deliverables
Observing human movement in crowds
Generating graphs to represent this movement
Training a neural network with this data
Using this to predict human movement and construct paths which the robots will use to navigate.
Our Action Steps
1) Preprocess the crowd dataset: Formatting the data and developing graphs
2) Construct GNN Structure: Training, testing, and validating the model.
3) Incorporate model into robot motion planner.
Finding a Dataset
The data that we will be using was obtained from multiple public data sets, including eth, hotel, and univ. Each dataset was retrieved from a separate location, and possessed position and velocity information for different pedestrians passing through at various times.
The data is reasonably varied, providing frames with both low and high pedestrian concentration. The dataset was compiled by professional software engineers focused in artificial intelligence, thus proving the source's credibility.
Low pedestrian concentration
High pedestrian concentration
Constructing Graphs
Before we can develop the neural network, we need to make sure that the data is in a form that the computer can understand. As a result, we converted all of our data into graphs, where different pedestrians are represented by nodes or points, and the distance between them is represented by edges or lines.
Graphs can be represented in a number of ways: visual models, lists, and matrices. We used matrices for our program, since they are the most versatile of the aforementioned representations. For example, we can construct adjacency matrices, which determine the way in which different nodes are connected to each other. As well as Laplacian matrices, which are adjacency matrices with additional information on the total number of connections owned by each node.
Code used to construct graphs
What are Neural Networks?
A neural network is a graph that has three types of layers.
input layer: data inputted by the human (frames of people walking)
hidden layers: the system converts the data into a simpler form that the computer can interpret.
output layer: the system makes a decision based on the given data
Most of the action happens in the hidden layers. Forward propagation determines how information travels through the neural network in a set direction. The information that is transformed into information the next layer can use is called convolution. After the neural network displays the output, backwards propagation takes place. Backward propagation is the difference between the output and the actual result is calculated (mean squared error). The weights are adjusted to reduce the error.
Code used to construct the neural network.
Training the Model
First, the data is split for training and testing. After splitting the data, we train the model. The model generates predictions during training trying to minimize the value of losses. It iterates through multiple epochs to better fit the data. An epoch is where the system goes through the graphs over and over to minimize the maximum loss. The system then uses the data to predict the next handful of frames and range of possible paths a human could take. The range width depends on the error rate the system minimized.
Code for training the model
Testing the Model
Code for testing
Testing Results
After testing the results, we discovered that our data was still quite far away from being accurate
Creating Paths for the Robot
Now that we have predictions for the path of the pedestrians, we need to develop a program to guide the robot through the crowd. To do this, we used a system of rewards and punishment, with the goal of the system being to optimize the overall score. Points are assigned when the robot get closer to its final destination, while points are deducted the closer the robot gets to a pedestrian. As a result