Gun Block: Detecting Guns in a Video Stream Using Machine-Learning

Team: 13

School: Capital High

Area of Science: Machine Learning

Interim: Problem Definition:
The problem we have chosen to tackle is one that affects this country at this very moment. The amount of shootings that have happened on school campuses as of lately has been alarming. Parents are scared and kids are scared. Worst of all, at times it seems like nothing is being done to solve the very clear problem. Even though this is a problem that will need to be targeted from different angles, and we are not here to talk about politics, we hope to help the best way we currently can. In order to promote safety on school campuses and other public areas, we have decided to create and train a machine learning system (artificial neural network) [6] that can detect a gun in a photographic image from a video stream. With a project of this nature come other more technical problems like hardware limitations (Training Time) and Percent Error.
Problem Solution:
Like previously stated the way we are choosing to tackle gun safety in schools is with a machine learning system (ML System). This system will detect a gun on campus allowing staff and students to respond accordingly. Once the gun is spotted a possible first step would be to send a notification from the ML system to notify security about the possible threat [1]. The other big problem is the percent error because even if the ML system is ninety-nine percent accurate one out of every hundred detections would be wrong. In a setting where lives could potentially be on the line, this is still quite big so we will need to make sure to use the best assets when creating our ML System.
Progress so far:
In order to be able to complete the goals set above, we have had to learn a lot. At this point that is where most of our efforts have gone. We have had to learn how to program in Python using scientific packages like Numpy [5], Matplotlib, and TensorFlow. Numpy let us use the linear algebra concepts we learned like manipulating matrices and vectors. With this, we were able to create basic neural networks for the sake of learning key concepts and getting general experience before diving into TensorFlow. We then deployed two TensorFlow neural networks that can recognize handwritten digits in order to get an idea of how to use the system and how long it might take to train a neural network. Lastly, we have made a Git repository, which has helped the team to easily collaborate on the project.
Results Expected:
Although we see this project very promising, we acknowledge the limits of our equipment. We understand that the computers we are using are not optimal and that we may run into trouble training our ML system. We know that as we continue this project surveillance footage might have low-quality issues and if that were to happen we might not be able to do as much as we would like to. We are going to take the project one step at a time and start with a basic model and see what we can do from there. We expect to be able to detect handguns and shotguns (long guns) with at least 98% of the detection rate at the very minimum but it’s likely we will be able to do more.


1. Unknown Author (2017, October 5). But what is a Neural Network? | Deep learning, chapter 1. Retrieved from

2. Gunter, D. O. (2019). Beginners Guide To Git and GitHub - part 1. Retrived from

3. Unknown Author. (2019, Oct 11). The Applications of Matrices. Retrieved from

4. Gunter, D. O. (2019). Neural Networks Using Python. Retrieved from

5. Gunter, D. O. (2019). Numpy Intro.ipynb . Retrived from

6. Gunter, D. O. (2019). Introduction to Artificial Neural Networks: Part 1. Retrieved from

5. Gunter, D. O. (2019). A Very Quick Intro To Python 3. Retrieved from

Team Members:
Edwardo Pena
German Rojo
Oscar Torres

David Gunter

Sponsor Teacher(s):
Barbara Teterycz
Irina Cislaru

Team Members:

  Oscar Sandoval Torres
  German Rojo
  Edwardo Pena

Sponsoring Teacher: Irina Cislaru

Mail the entire Team