Inspiration

Throughout high school, I have always been fascinated by Astronomy. I wanted to study Astronomy since I was in middle school but ended up pursuing Computer Science because of its versatility in comparison to Astronomy, leaving the option open to a potential double major in Astronomy as well. When it was announced that the theme for Big Red Hacks would be Exploration, my mind immediately went to Space Exploration. I wanted to combine my lifelong passion for Astronomy with CS for my first ever Hackathon!

What it does

The user of the app uploads an image from 1 of 21 different categories of objects in space. Once an image of a planet, dwarf planets, nebula, sun, or moon is uploaded, the app returns a message of what the object is.

How I built it

Note: Individual Steps with code blocks can be found on Github Repo The first step in developing the program was to download data. I created a custom data set of over 2700 images of space objects and split them into 21 different categories based on what they were. Then I would utilize a principle in Deep learning called Transfer Learning where I would import a previously made deep learning model trained with the general classification of some object; this way, my model would not have to train from absolute scratch and would have some idea of reading images. Once imported, I then trained my model by showing it images, obtaining its guess of what the image is, and then comparing it with what the actual image is. The model is trained by first looking at the entire image, and then after every iteration, the images would zoom in a bit more to allow the program to pick up on smaller details. Once the model was able to predict images to over 90% accuracy, it would be ready for deployment. To deploy my program I used the Render Cloud Hosting Application and designed a simple HTML/CSS/Js website for my app. Unfortunately, I was not able to obtain the premium version of the service and could only deploy my web-app for a few hours, which means others can not use the application for themself. I do however have a video demonstration which is attached.

Challenges I ran into

One challenge I ran into was just figuring out how to utilize AI. I had some experience using deep learning and AI from a few years ago, but it was not nearly enough to code an image classification program from scratch. Even though I did not have much experience with deep learning, I knew I wanted to make an AI program and not something in my comfort zone, so I spent the first night researching deep learning and AI by watching youtube videos, tutorials, and forums. Another challenge I ran into was deploying my program to a web-app. Although I found one deployment site, I was only able to have my website live for a few hours, which means the judges and other people are not able to use the app for themselves. I did however have enough time to record a demo, which means people can see it in action.

Accomplishments that I'm proud of

I am very proud of how I created something I did not expect to make. When I signed up for BRH, I expect myself to make a simple program that would not be very interactive, but as the time got closer I realized I would not be happy with that. I am proud that I was able to successfully develop an AI image classification program from scratch in just my first hackathon.

What I learned

I learned a lot about deep learning and image classification. I also had to use some javascript and command line when deploying my app so I had to teach myself those. Lastly, I had to relearn the PyTorch and fastai library as I have not used them in 2 years.

What's next for Astronomical Object Classifier

The next steps for the Astronomical Object Classifier would be to expand its classification capabilities. Currently, it is limited to the 21 categories that it was trained with, but for the future, I would want to not only train the app to identify more types of space objects but also identify when something is unknown. This way, the application can be applied for research purposes.

Built With

Share this project:

Updates