Optic draws inspiration from existing python libraries like OpenCV, a computer vision library, and Tensorflow, one of the most popular machine learning libraries. Combining these two and using a resource called Kaggle, I was able to create Optic.

What it does

Optic is a command-line tool that can be used to analyze images of you guessed it, the eye. Optic analyzes these images and diagnoses the user within seconds with extremely high accuracy. Optic uses thousands of datasets to establish a pattern in images that contain a disease. Optic can successfully diagnose dry eyes, optical malaria, cataracts, dry eyes, conjunctivitis, corneal ulcers, uveitis, and glaucoma with an average accuracy of 93%.This is effectively machine learning. After establishing this pattern successfully, when you show Optic an image and ask it to diagnose that image, Optic checks the image for the pattern it already knows and tells them its diagnosis along with accuracy as to how sure Optic is when diagnosing you.

How I built it

I built it using only Python as it is a great language for machine learning in general. In Python, I had to use several machine learning. Some of these are TensorFlow, one of the most popular general machine learning libraries, Numpy, a must-have for almost any program, and OpenCV, a computer vision library. Using these and my trusty friend Stack Overflow, I managed to create Optic through many challenges.

Challenges we ran into

Some of the challenges I ran into were that for one, it was incredibly hard to use OpenCV in a way like this as it had been only done a few times before. With very little documentation for this kind of project, a majority of the beginning stages of Optic were composed of trial and error. It was tough to get OpenCV to find connections between the pictures of eyes, but I managed it in the end. Another challenge that I ran into was actually calculating the percentage of accuracy as this not being a simple neural network, was extremely hard to put into place. But by using some TensorFlow functions and sigmoids, I managed it.

Accomplishments that we're proud of

One of the accomplishments I am proud of is being able to solve the challenges that I faced above as it was extremely discouraging since I could not get it working for several hours. After a few hours of perseverance and a lot of help from official documentation, I managed to get it working and I was thrilled because at that point if I couldn't get it working, I would not have time to create a new project.

What we learned

With this project, I learned a lot more about machine learning and computer vision. I also learned how to use OpenCV and TensorFlow which will definitely benefit me in the future. Creating a full project from start to finish also taught me to celebrate the small victories as it was a delight every time my program compiled successfully.

What's next for Optic

For the next steps with Optic, I would like to add functionality for many more diseases so that Optic can become much more widely used for all sorts of applications. Also, I would like to create an API for Optic so that anyone, anywhere can use Optic in their projects so that Optic can be best used.

Also, I am unable to attach my zip file as it is too large with all the training data. Really sorry about the echo in the video.

Built With

Share this project: