Edge Detection through Canny
Our eyes are the mirror to the outside world and are arguably the most important of the five senses. More than 20 million people suffer from blindness due to a disease known as cataract. These people are deprived of their sense of perception due to -- (a) untimely detection, (b) lack of quick solutions, and (c) lack of basic awareness. Cataract is the root cause for 5% of the United States population, and 60% of the African and South American population suffering with blindness. Although, cataract has often been termed as a disease striking the elderly population, but it has affected unto 40% of the children in developing nations. We believe any step that can safeguard the human vision is a vital step. EyePhone is one such smart step that tries to predict the existence of cataract in the human eye. EyePhone empowers its user with a simple application that helps to detect the presence of cataract in their eyes at a cost of a single picture of their eye !
What it does
EyePhone aims at early detection of cataract so that quick remedial measures can be taken, in order to avoid unprecedented blindness. EyePhone also tries to provide quick solutions to its user, if they are detected in the cataract prone zone. EyePhone also tries to forewarn its users about the possibility of cataract if their results fall in the false positive set. All in all, EyePhone is a smart and sophisticated machine learning application (powered by android) the tries to use the best of both the worlds. This application can be downloaded and used, by any user, to check for the presence of cataract in their eye-lens, get educated about the causes and symptoms of cataract, and access quick remedial solutions.
How we built it
We designed EyePhone using a bottom-up approach with two separate modules, one targeting the Machine Learning and the other Android Application development. After performing unit testing of these individual components we did a system integration to launch an android application that detects cataract. Since the machine learning component required the data to be in a better quality, we used some image enhancement techniques to preprocess our data. We could not get any annotated data online, so we collected the data ourselves from Google Images. We took a dataset of 60 patients (30 cataract infected and 30 normal healthy people). We divided this dataset into 40, 10 and 10 patients for Training, Development and Testing purposes. The most important feature for this study was the whiteness of the small ring of the eye. In Cataract images, the inner surface of the cornea is more whitish as compared to that of normal images. We also took into account the Big Ring Area of the eye. In cataract images, the outer surface of the cornea images is bright in color as compared to that of the normal patients' image. Also, we took into account the Edge Pixel Count. Canny method is the most powerful edge detection method among them. It uses two different thresholds (to detect strong and weak edges), and it includes the weak edges in the output only if they are connected to strong edges. In the computation of EPC, we counted the number of white pixels in the output of the edge detection. Now, with all these features, we chose the Unsupervised K-means clustering algorithm as out baseline Machine Learning algorithm. The reason behind that was having access to only non-annotated data. The algorithm divides the datapoints into two sections (or clusters) which are separable. The test datapoint can be incorporated with the cluster to which its closer (Euclidean distance).
From the Android side, we used Material Design concepts to bring together a clean and sleek UI that helps to minimize stress when dealing with diseases. We provide educational materials along with out ML backed algorithms to deliver information in a straightforward manner. Users would get to know more about how to deal with cataracts. To ease users into the app, plenty of animations were implemented to guide users around the app, making sure that buttons are reused and minimal learning is required.
Challenges we ran into
We could not find any publicly available annotated dataset for eye images affected with Cataract. The idea behind having a labeled dataset was the ease of usage of powerful supervised learning algorithms. Since, we were not able to get the labeled data, we scraped images from Google Image Search manually and built a non-annotated dataset, for Machine Learning purposes. We also tried to extend this work over another eye disease Conjunctivitis, but we could not get good results owing to the dataset that we had. Since this is a Health hack and we do not want to recommend random suggestions to the patients, we decided not to include it with EyePhone.
Accomplishments that we're proud of
We are happy to present an application that tries to positively impact the lives of the people. Our application is at a one-click launch able stage. We believe our application would be a useful tool not only for the general population but also to the medical industry. We also believe that EyePhone is not only capable of detecting cataract at an early, but also acts as an interactive tool that helps to educate the general population.
What we learned
We learned a lot about Computer Vision techniques and ways to play with image-related datasets. We also realized how important it is to do image preprocessing and image enhancement before we use Machine Learning algorithms to train and test the data.
What's next for EyePhone
We plan to launch EyePhone on the Google Play Store soon. We also plan to extend the EyePhone to incorporate other diseases such as Glaucoma and Conjunctivitis.