<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Soumyajit Chaudhury</title>
    <description>The latest articles on DEV Community by Soumyajit Chaudhury (@soumyajitttt).</description>
    <link>https://dev.to/soumyajitttt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4160327%2F19d7edca-a129-4b24-b869-6d958d2de592.jpg</url>
      <title>DEV Community: Soumyajit Chaudhury</title>
      <link>https://dev.to/soumyajitttt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soumyajitttt"/>
    <language>en</language>
    <item>
      <title>RetinaVision AI: Exposing the Ghost in the Black Box of Medical AI</title>
      <dc:creator>Soumyajit Chaudhury</dc:creator>
      <pubDate>Wed, 28 Oct 2026 17:34:42 +0000</pubDate>
      <link>https://dev.to/soumyajitttt/retinavision-ai-exposing-the-ghost-in-the-black-box-of-medical-ai-23ck</link>
      <guid>https://dev.to/soumyajitttt/retinavision-ai-exposing-the-ghost-in-the-black-box-of-medical-ai-23ck</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RetinaVision AI&lt;/strong&gt; turns any rural Primary Health Centre (PHC) into a diabetic retinopathy (DR) screening point.&lt;/p&gt;

&lt;p&gt;In rural India there is roughly one eye doctor for every 100,000 people. Diabetic retinopathy is silent in its early stages, so many patients reach a specialist only after irreversible vision loss, even though the blindness is preventable with timely screening.&lt;/p&gt;

&lt;p&gt;A health worker uploads a retina (fundus) photo, even one taken on a smartphone. The system then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Validates&lt;/strong&gt; the image and rejects screenshots and random photos in about a second&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checks quality&lt;/strong&gt; (sharpness, brightness, contrast, field of view) and enhances usable images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detects lesions&lt;/strong&gt;: segments the optic disc and vessels, and counts microaneurysms, hemorrhages and hard exudates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grades&lt;/strong&gt; the disease from Normal to Proliferative DR (Grade 0-4) with a confidence score&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explains itself&lt;/strong&gt; with heatmaps showing what the model looked at&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refers&lt;/strong&gt; high-risk patients to a specialist in one click, with a full PDF report attached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How I read the theme:&lt;/strong&gt; every AI model has a ghost in the machine: a decision made somewhere inside layers of weights that nobody can see. In medicine, a ghost you can't question is dangerous. RetinaVision AI is built to make the ghost visible. Grad-CAM, Multi-Layer CAM, Occlusion and LIME let a doctor see &lt;em&gt;where&lt;/em&gt; the model looked and &lt;em&gt;why&lt;/em&gt; it reached its grade, instead of trusting a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/7Pvx6oEvqRg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Soumyajitttt" rel="noopener noreferrer"&gt;
        Soumyajitttt
      &lt;/a&gt; / &lt;a href="https://github.com/Soumyajitttt/RetinaVisionAI" rel="noopener noreferrer"&gt;
        RetinaVisionAI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-assisted diabetic retinopathy screening for rural India, with Explainable AI. Demo Video Link ⇓
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;RetinaVision AI&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;AI-assisted diabetic retinopathy screening for rural India: simple, fast, and explainable.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RetinaVision AI turns any Primary Health Centre (PHC) into a diabetic retinopathy (DR) screening point. A health worker uploads a retina (fundus) photo, even one taken on a smartphone, and the system grades the disease, shows &lt;em&gt;why&lt;/em&gt; it made that decision, and refers high-risk patients to a specialist in one click.&lt;/p&gt;
&lt;p&gt;Demo video -&amp;gt; &lt;a href="https://youtu.be/7Pvx6oEvqRg?si=dKT32cT2UV1CgszA" rel="nofollow noopener noreferrer"&gt;https://youtu.be/7Pvx6oEvqRg?si=dKT32cT2UV1CgszA&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In rural India there is roughly one eye doctor for every 100,000 people. It is not possible to detect symptoms early without medical assistance, so patients reach a specialist only after irreversible vision loss, even though this blindness is preventable with timely screening.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Our Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screen at the PHC:&lt;/strong&gt; health workers do first-line screening, so doctors are no longer the only line of screening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI grading:&lt;/strong&gt; each scan is graded from Normal to Proliferative DR with a confidence score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainable&lt;/strong&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Soumyajitttt/RetinaVisionAI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Original project by &lt;a href="https://github.com/Swastik1901/RetinaVisionAI" rel="noopener noreferrer"&gt;Swastik&lt;/a&gt;; this is my fork.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React + Vite  ──HTTP/JSON──▶  Node/Express + MongoDB  ──matlab -batch──▶  Pipeline
 (frontend)   ◀─────────────       (backend)           ◀── result.json ──  (quality, segment,
                                        │                                   classify, explain)
                         Cloudinary (images) · Nodemailer (referrals)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Request flow:&lt;/strong&gt; upload → JS pre-check → pipeline → images stored → result saved in MongoDB → shown in the UI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; a CNN classifier trained for DR severity grading (Grade 0-4) [ADD: architecture, dataset, and accuracy/validation results]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability suite:&lt;/strong&gt; Grad-CAM, Multi-Layer CAM, a Cross-Method check (Grad-CAM vs Occlusion vs LIME), and layer Activations. Showing agreement or disagreement between methods stops a single heatmap from being over-trusted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image processing:&lt;/strong&gt; CLAHE, illumination normalization and denoising to cope with low-quality field images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js, Express, MongoDB, JWT auth, Socket.io, Multer, Sharp, Nodemailer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, Vite, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow:&lt;/strong&gt; separate clinician and doctor roles, a "My Patients" inbox, in-app case discussions, and a searchable referral history&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Explainability only works when you can open the model up.&lt;/strong&gt; The explainability methods here (Grad-CAM, Occlusion, LIME) are all openly published techniques. They work because we own the model and can inspect its gradients and activations. A closed diagnostic API gives you a label and a score, with no way to ask it why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model is ours, not rented.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No per-scan API fees, which matters for under-funded PHCs screening at volume&lt;/li&gt;
&lt;li&gt;Patient scans are analyzed on our own server rather than sent to a third-party inference API&lt;/li&gt;
&lt;li&gt;We can retrain or fine-tune on local data, since fundus images from Indian smartphones and cameras look different from the clean clinical datasets most models are trained on&lt;/li&gt;
&lt;li&gt;The grading pipeline can't be changed or shut down by a vendor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest limits:&lt;/strong&gt; the pipeline currently runs on MATLAB, which is proprietary, and referral images are stored on Cloudinary. The next step is to port the pipeline to an open stack (PyTorch/ONNX) and self-host image storage, so that every layer, not just the model, is open and can run in a clinic with poor connectivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;A black box can say "Grade 3" and be right, but a health worker or doctor has no reason to believe it. A heatmap glowing over the exact hemorrhages and exudates a specialist would look at is what turns "the AI said so" into "I can verify this." In a place where there's one specialist per 100,000 people, that trust decides who gets referred in time and who loses their sight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team
&lt;/h2&gt;

&lt;p&gt;Built together with &lt;strong&gt;Swastik&lt;/strong&gt; (&lt;a href="https://github.com/Swastik1901" rel="noopener noreferrer"&gt;@Swastik1901 on GitHub&lt;/a&gt;), who started the original &lt;a href="https://github.com/Swastik1901/RetinaVisionAI" rel="noopener noreferrer"&gt;RetinaVisionAI repository&lt;/a&gt; that this project builds on. He doesn't have a DEV account, so I'm crediting him here directly. Huge thanks to him for the foundation of this project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;RetinaVision AI is a decision-support and screening aid, not a replacement for a qualified ophthalmologist. All results should be reviewed by a medical professional before any clinical decision.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
