BACKGROUND & MOTIVATION
Vision impairment remains a major global health challenge, with the World Health Organization estimating that at least 2.2 billion people live with near or distance vision impairment. Retinal conditions are particularly important because delayed detection can lead to irreversible changes in vision. Optical Coherence Tomography (OCT) provides high-resolution, cross-sectional images of retinal tissue that allow specialists to identify structural abnormalities associated with conditions such as Choroidal Neovascularization (CNV), Diabetic Macular Edema (DME), and Drusen.
The challenge is that producing an OCT scan does not automatically make specialist interpretation available. Reviewing these scans requires trained eye-care professionals, and access to that expertise can be limited in underserved and resource-constrained communities. EyeNet was motivated by the question of whether deep learning could provide an initial computational assessment of an OCT scan and make that capability accessible through a simple web-based system. The goal was not to replace ophthalmologists, but to explore AI as an additional decision-support layer for retinal screening.
THE PROBLEM
OCT imaging can reveal subtle changes within retinal structures, but extracting clinically meaningful information from those images requires specialist knowledge. This creates two related challenges: the workload involved in manually reviewing large numbers of scans and the limited availability of ophthalmic specialists in some communities.
The research therefore investigated whether part of this image-analysis process could be supported computationally. EyeNet focused on classifying OCT scans into four categories: Choroidal Neovascularization (CNV), Diabetic Macular Edema (DME), Drusen, and Normal retina. Beyond developing the classifier, the project also addressed a software-engineering problem: how could the resulting model be transformed from a machine-learning experiment into an accessible cloud-based application that could accept an OCT scan and return an understandable prediction?
RESEARCH GAP
Previous research had already demonstrated the potential of convolutional neural networks for retinal image classification. However, strong classification performance alone does not make an AI system practically accessible. Some approaches concentrated primarily on the model, while others explored cloud or mobile delivery but introduced additional challenges around connectivity, integration, usability, and deployment.
EyeNet explored the intersection of these areas. The objective was to design, develop, and evaluate a cloud-based system that combined OCT image classification with a usable application workflow. This required developing the deep learning model, evaluating its performance, exposing inference through a REST API, creating a web interface for submitting scans and viewing results, and deploying the supporting services using cloud infrastructure.
METHODOLOGY
The research combined machine-learning experimentation with software-system development. Requirements were informed by related research, analysis of the available OCT dataset, evaluation of suitable technologies, and informal discussions with fifth-year Optometry students. These discussions helped identify the importance of a simple workflow that could expose AI-assisted analysis without requiring users to interact directly with machine-learning tools.
The implementation then progressed through dataset preparation, image preprocessing and augmentation, transfer learning with MobileNetV3Large, model evaluation, backend API development, frontend integration, cloud deployment, system testing, and preliminary user evaluation.
OCT Dataset ↓ Data Preparation ↓ Preprocessing & Augmentation ↓ MobileNetV3Large ↓ Model Training ↓ Model Evaluation ↓ Django REST API ↓ Next.js Interface ↓ AWS Deployment ↓ Prediction + Confidence + Report
DATASET & PREPROCESSING
EyeNet was developed using labelled OCT images from a publicly available retinal imaging dataset. A balanced experimental subset of 6,200 images was prepared, containing 1,550 images for each of the four target classes: CNV, DME, Drusen, and Normal. Maintaining equal representation across the classes reduced the possibility of the model favouring a category simply because it appeared more frequently in the training data.
Each image was resized to 224 × 224 pixels to match the input expected by MobileNetV3Large. Data augmentation, including random rotations and horizontal flipping, was applied during training to introduce additional variation and reduce dependence on the exact presentation of individual training samples. The same preprocessing assumptions were later preserved within the deployed inference pipeline so that uploaded images were processed consistently with the data used during model development.
Stats
Total OCT Images - 6,200 . Images Per Class - 1,550 . Retinal Classes - 4 . Model Input - 224 × 224
MODEL DEVELOPMENT
Transfer learning with MobileNetV3Large
The classifier was built using MobileNetV3Large with weights pretrained on ImageNet. Transfer learning provided the model with an existing foundation of learned visual representations that could be adapted to OCT imagery rather than requiring a deep convolutional network to learn every visual feature from scratch.
The network was adapted to produce four outputs corresponding to CNV, DME, Drusen, and Normal. A Softmax output layer converted these values into a probability distribution across the four classes, allowing the application to identify the highest-scoring category and expose its associated confidence.
The model was trained for 15 epochs using a batch size of 32. Adam was used as the optimizer with a learning rate of 0.0001, while categorical cross-entropy was used as the loss function for the four-class classification task. Training and validation behaviour were monitored throughout the experiment to assess convergence and identify potential signs of overfitting.
Architecture MobileNetV3Large Pretraining ImageNet Input 224 × 224 RGB Classes CNV · DME · Drusen · Normal Optimizer Adam Learning Rate 0.0001 Loss Categorical Cross-Entropy Batch Size 32 Epochs 15
RESULTS
The final classifier achieved 95% accuracy on the test dataset with a macro F1 score of 0.91. CNV and Normal produced the strongest class-level results, with F1 scores of 0.96 and 0.97 respectively, while DME achieved an F1 score of 0.91.
Drusen was the most challenging category, producing an F1 score of 0.79. This became an important finding because it showed why the model could not be evaluated using overall accuracy alone. Although 95% suggested strong aggregate performance, the class-level metrics revealed that the model was not equally reliable across every retinal condition.
Precision, recall, F1 score, a confusion matrix, and training and validation behaviour were therefore considered alongside accuracy. This provided a more complete understanding of where the classifier performed strongly and where further research was required.
Metrics
95% Test Accuracy 0.91 Macro F1 Score
Table
Class Precision Recall F1 Score CNV 0.97 0.95 0.96 DME 0.95 0.88 0.91 Drusen 0.79 0.79 0.79 Normal 0.96 0.99 0.97
SYSTEM ARCHITECTURE
Training the classifier was only one part of EyeNet. To make the model accessible outside the development environment, the system was divided into frontend, backend, inference, and cloud infrastructure layers.
The user interface was developed with React and Next.js, while Django REST Framework provided the backend API responsible for receiving uploaded OCT scans and communicating with the trained TensorFlow model. During inference, the backend prepared the uploaded image using the model’s expected preprocessing pipeline, generated predictions across the four retinal classes, and returned the highest-scoring category and confidence information to the frontend.
Cloud infrastructure was used to make these services remotely accessible. The project architecture incorporated AWS EC2 for the backend, AWS S3 for image storage, and AWS Amplify for the frontend deployment. This separation allowed the interface, application logic, machine-learning model, and infrastructure to operate as distinct components of the overall system.
Architecture visual
USER ↓ NEXT.JS WEB INTERFACE ↓ DJANGO REST API ↓ IMAGE PREPROCESSING ↓ MOBILENETV3LARGE ↓ PREDICTION + CONFIDENCE ↓ RESULT PRESENTATION ↓ PDF REPORT Cloud: AWS Amplify · EC2 · S3
APPLICATION EXPERIENCE
The application was designed so that a user did not need knowledge of Python, TensorFlow, or machine learning to interact with the classifier. A user could select an OCT scan from their device, preview the image, and submit it for analysis. The image was then transferred to the backend, processed using the same input requirements established during model development, and passed through the trained classifier.
The resulting retinal class and confidence score were returned to the interface and presented in an understandable form. EyeNet also included report generation, allowing the analysis result to be represented as a downloadable document. This completed the path from raw OCT image to model inference and user-facing output.
SYSTEM EVALUATION
Testing extended beyond the neural network itself. The frontend was tested for image selection, upload behaviour, validation, preview, and result presentation. Backend endpoints were tested independently using Postman, while sample OCT images were used to verify that the exported model could perform inference correctly outside the training environment. End-to-end testing then evaluated the complete path from image upload through preprocessing and prediction to report generation.
A preliminary usability evaluation was also conducted with five Optometry students. The prototype received scores of 4.8/5 for Ease of Use, 4.6/5 for Speed, 4.7/5 for Clarity, and 4.5/5 for Overall Satisfaction. Because the evaluation involved only five students, these results were treated as early usability feedback rather than evidence of clinical effectiveness.
KEY FINDINGS
EyeNet demonstrated that transfer learning with MobileNetV3Large could achieve strong four-class OCT classification performance on the prepared experimental dataset. More importantly, the difference between the 95% overall accuracy and the weaker Drusen performance demonstrated the importance of evaluating AI systems beyond a single headline metric.
The project also demonstrated the engineering path required to move a trained deep learning model into an accessible application. Model development, preprocessing, API design, frontend interaction, cloud infrastructure, and result presentation all had to work together for the classifier to become usable outside the research environment.
The research therefore produced two outcomes: a retinal image classifier with strong experimental performance and an end-to-end prototype demonstrating how that classifier could be delivered through a cloud-based diagnostic-support workflow.
LIMITATIONS
The most significant limitation was the reliance on a public OCT dataset. Although the dataset provided sufficient labelled images for model development, performance on one prepared dataset does not establish how the classifier would behave across different hospitals, imaging devices, patient populations, or image-acquisition conditions. The reported 95% accuracy should therefore be understood as experimental test performance rather than a measure of universal clinical accuracy.
The project also did not include prospective clinical validation or evaluation by practicing ophthalmologists. Security features required for a production healthcare environment, including comprehensive authentication, role-based access control, auditing, and healthcare data-governance mechanisms, would also require further development. The comparatively weaker Drusen performance provides another clear area requiring additional investigation.
FUTURE RESEARCH
Future work should begin with external validation using independently collected OCT scans from multiple hospitals, imaging devices, and patient populations. Particular attention should be given to Drusen through additional data, error analysis, alternative augmentation strategies, and comparison with other vision architectures.
The system could also be extended with model-interpretability techniques that help reveal which retinal regions influenced a prediction, more rigorous uncertainty estimation, stronger security and privacy controls, and integration with clinical information systems. A larger usability study involving practicing eye-care professionals would also be necessary to understand how AI-generated predictions could responsibly fit into real clinical workflows.
These directions would move EyeNet beyond the question of whether an OCT classifier can achieve strong experimental accuracy toward the more important question of whether such a system can remain reliable, understandable, secure, and useful in the environments where it is intended to operate.
RESEARCH REFLECTION
When the model reached 95% test accuracy, that initially felt like the clearest measure of success. Examining the class-level results changed my perspective. The difference between an F1 score of 0.97 for Normal and 0.79 for Drusen showed me how easily a strong aggregate metric can hide weaknesses that matter.
Building the complete application reinforced that lesson from another direction. A model does not become useful simply because it performs well in a notebook. Its preprocessing must remain consistent, its inference service must be reliable, its output must be understandable, and the surrounding system must account for usability, security, accessibility, and human oversight.
EyeNet ultimately shaped my interest in building AI systems that go beyond experimental performance. It made me more interested in how intelligent systems can be engineered to remain reliable, deployable, and useful when they move from controlled experiments into real-world environments.
EXPLORE THE RESEARCH
Research Report
Full undergraduate project report covering the research background, methodology, model development, system implementation, evaluation, findings, and limitations.
Source Code
Model training, backend inference, frontend application, and system implementation for the EyeNet research prototype.
Final attribution
Undergraduate Final Year Research Project Department of Computer Science Kwame Nkrumah University of Science and Technology Supervisor: Prof. James Ben Hayfron Acquah September 2024 to November 2025
