We discovered a diagnostic tool used by doctors in the diagnosis of Parkinson's patients using the "static spiral test." A patient draws a spiral on a piece of paper, and a doctor takes a guess depending on the quality of the spiral whether the patient has Parkinson's or not.
We then set out to create a portable, cheap, and accessible application which could accurately assess the severity of Parkinson's in any user in a short amount of time.
Spiro is the result of that mission.
What it does
At its core, Spiro is a mobile application which informs users whether it is likely or not that they have Parkinson's. The app presents users with a dotted image of a spiral, which they must trace using either their finger or a stylus on a touch screen. Their trace is analyzed by a machine learning algorithm, which reports back to the user whether they are potentially at risk of Parkinson's or not based on their tracing.
How we built it
First, we used static spiral test data from Istanbul University to recreate spirals of individuals with and without Parkinson's using matplotlib (python). We cleaned up the data by centering these spirals and made them have the same resolution and dimensions. Then, we built a convolutional neural network to train our TensorFlow model in Google Cloud Platform. Time was spent optimizing the parameters (pool size, num convolutions, num neurons) to maximize accuracy.
Challenges we ran into
It was difficult to manipulate all of the spiral data into a consistent format which would be usable by the program. In addition, setting up the Google Cloud Platform, having it support all of the packages we were using, and using it to train the model was fairly difficult and required a lot of research. Also, we had to play very many games against the network we were training in order to make it actually learn and not resort to a trivial local solution of guessing that the person always does or does not have Parkinson's, for example.
Accomplishments that we're proud of
Our model holds 96% accuracy in distinguishing between Parkinson's and non-Parkinson's results. Each of our team members would consistently score at only about 60% accuracy, far below the computer's discernment abilities. We also successfully developed an iOS application that instructs and allows users to take the static spiral test themselves.
What we learned
We learned how to develop streamlined and functional Swift applications, how to set up and train machine learning models on Google Cloud Platform, how to effectively use Pandas to clean and mine relevant data, and how to use Firebase as a database to store the test results of our application.
What's next for Spiro
First, we plan to automatically train the model on the new data stored in the Firebase database after an arbitrary timeframe. Then, we plan to expand support to Android as a mobile platform. Finally, we plan to increase the depth of the model used and epochs trained in order to increase accuracy.
P.S. We also built an extra little mini-game which puts you against our algorithm. Come meet us and see if you can beat our model!