Specialist attention, spent where it’s needed.
DRishti screens retinal photographs for diabetic retinopathy so that the few ophthalmologists a district has can see the patients who actually need them. Built for the Smart India Hackathon, problem statement SIH26038.
A preventable blindness that nobody feels coming.
Diabetic retinopathy damages the tiny blood vessels of the retina. It is one of the leading causes of preventable vision loss in working-age adults, and it has no symptoms until the damage is advanced.
Caught early, its progress can usually be slowed or stopped. That is why every person with diabetes should have their retina checked once a year.
The check is what doesn’t happen. Grading a retinal photograph needs trained eyes, and in a rural district there are far too few specialists to look at everyone. DRishti does the first look, so specialists only see the patients who need treatment.
Principles we built around.
Uncertainty reaches a human
When our two graders disagree, the case goes to a person. It is never rounded away into a confident-looking number.
Miss nothing, over-refer a little
A missed case costs far more than a false alarm, so the referral threshold is tuned for sensitivity rather than overall accuracy.
Show the working
Every grade comes with the lesions and criteria behind it, so a clinician can check and overrule a specific finding.
Say what doesn’t work yet
Weak parts are labelled weak, in the code and on this page. That is what makes the rest of the numbers believable.
A working system, measured end to end.
- 0
- pipeline stages, from quality gate to patient report
- 0
- independent graders that must agree before a result stands
- 0
- working days simulated in the district capacity model
- 0
- automated checks on the image-processing layer
What the model learns from, and what checks it.
- APTOS 2019 · training 3,662 graded fundus photographs from Aravind Eye Hospital, taken in Indian screening conditions and labelled on the same 0–4 scale we report. The closest public match to the camps DRishti is built for.
- Messidor-2 · external test A different population and camera, held out entirely, to catch a model that has only learned one clinic’s photographs.
- IDRiD · lesion checks Indian images with pixel-level outlines of microaneurysms, haemorrhages and exudates, which is exactly what our rule-based grader detects.
Technology.
- MATLABImage analysis, both graders, capacity models
- SimulinkDistrict flow model
- Python & FlaskWeb app and MATLAB Engine bridge
- EfficientNet-B0Neural grader, transfer-learned
- fpdf2Patient PDF reports
- GeminiPlain-language wording only, never the grade
- HTML, CSS & SVGAnimated interface that works offline
Where DRishti stops.
Not a medical device
DRishti gives a screening signal and a referral decision, never a diagnosis or treatment. It has not been clinically validated, and every report says so.
Patient data stays local
Photographs and results are stored on the screening server. When a language-model key is set, only the grade, the referral flag and the grading mode are sent to write the plain-language paragraph. No image, name or age ever leaves the machine.
A person makes the call
Disagreement between the graders goes to a trained human reviewer, and every referral ends with an ophthalmologist. The system is allowed to say “a person should look at this.”
What doesn’t work yet
- The shipped network is a demo. It was fine-tuned for 3 epochs on a small subsample, so we quote no accuracy for it. Full training on the datasets above is next.
- Venous beading and IRMA are not detected automatically. Two of the three severe-grade triggers therefore depend on outside input.
- New-vessel detection is an experimental proxy. It can fire on dense but normal vessels.
- Haemorrhages are found but not sub-typed into dot, blot or flame.
- Scans are held in memory and do not survive a server restart.
Explore the project
Try a screening, or stress-test a district in the Simulink model.
With thanks to Aravind Eye Hospital and APTOS for the training images, to the creators of Messidor-2 and IDRiD, and to the Smart India Hackathon for the problem statement.