<?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: Sahil</title>
    <description>The latest articles on DEV Community by Sahil (@sahil_5273).</description>
    <link>https://dev.to/sahil_5273</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%2F4094681%2F50dd6a5b-3ecb-4e9f-8c97-eae23470b1a4.png</url>
      <title>DEV Community: Sahil</title>
      <link>https://dev.to/sahil_5273</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sahil_5273"/>
    <language>en</language>
    <item>
      <title>🩺 Building RadScan AI: Autonomous Multimodal Radiology Triage on GCP Cloud Run &amp; Vertex AI</title>
      <dc:creator>Sahil</dc:creator>
      <pubDate>Tue, 25 Aug 2026 19:17:41 +0000</pubDate>
      <link>https://dev.to/sahil_5273/building-radscan-ai-autonomous-multimodal-radiology-triage-on-gcp-cloud-run-vertex-ai-42d0</link>
      <guid>https://dev.to/sahil_5273/building-radscan-ai-autonomous-multimodal-radiology-triage-on-gcp-cloud-run-vertex-ai-42d0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: &lt;em&gt;This article was created for the purpose of entering the All Things Agentic Hackathon hosted by Google Cloud and Devpost.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💡 The Problem: Radiologist Burnout &amp;amp; DICOM Bottlenecks
&lt;/h2&gt;

&lt;p&gt;Radiologists worldwide face extreme burnout, evaluating 50+ volumetric MRI scans daily. Each scan contains 24 to 40 high-resolution DICOM slices. Manually inspecting every plane, checking ligament continuity across depth slices, and dictating repetitive clinical reports takes &lt;strong&gt;10 to 15 minutes per study&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;RadScan AI&lt;/strong&gt; to eliminate this workflow bottleneck.&lt;/p&gt;

&lt;p&gt;By combining &lt;strong&gt;GCP Cloud Run (L4 GPU scale-to-zero microservices)&lt;/strong&gt;, a &lt;strong&gt;2.5D Volumetric CNN-BiGRU Neural Network&lt;/strong&gt; (trained on 819,100 DICOMs / 530 GB data), and &lt;strong&gt;Vertex AI Gemini 3.5 Flash / 1.5 Pro&lt;/strong&gt;, RadScan AI acts as an autonomous radiology co-pilot that performs 12-target pathology detection, pinpoints lesion coordinates with Grad-CAM visual heatmaps, and drafts structured DICOM reports in under &lt;strong&gt;3 seconds&lt;/strong&gt;—saving radiologists ~6 minutes per scan.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ System Architecture &amp;amp; GCP Infrastructure
&lt;/h2&gt;

&lt;p&gt;RadScan AI is architected as two decoupled, serverless microservices on &lt;strong&gt;Google Cloud Platform&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    subgraph Client ["Next.js 14 Medical Workspace"]
        A[1-Click Sample Buttons / DICOM Upload] --&amp;gt; B[Multi-Planar Slice Slider]
        B --&amp;gt; C[Grad-CAM Heatmap Opacity Layer]
        B --&amp;gt; D[Gemini Clinical Report Generator]
    end

    subgraph Backend ["FastAPI Microservice (GCP Cloud Run L4 GPU)"]
        E[POST /api/v1/predict] --&amp;gt; F[2.5D Volumetric CNN-BiGRU Engine]
        F --&amp;gt; G[Grad-CAM Heatmap Synthesizer]
        E --&amp;gt; H[POST /api/v1/report]
        H --&amp;gt; I[Google ADK / Vertex AI Gemini 3.5 SDK]
    end

    Client --&amp;gt; Backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Technical Highlights:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Built with &lt;strong&gt;Next.js 14 (App Router)&lt;/strong&gt;, React 18, and Tailwind CSS. Features an interactive 24-slice DICOM viewer slider, Grad-CAM opacity toggles, and an interactive 6-step guided tour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend Microservice&lt;/strong&gt;: Built with &lt;strong&gt;FastAPI&lt;/strong&gt; and PyTorch, packaged in a multi-stage Docker container deployed to &lt;strong&gt;GCP Cloud Run&lt;/strong&gt; with NVIDIA L4 GPU acceleration and scale-to-zero support ($0.00 idle cost).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Engine&lt;/strong&gt;: &lt;strong&gt;Vertex AI Gemini 3.5 Flash&lt;/strong&gt; accessed via &lt;code&gt;google-cloud-aiplatform&lt;/code&gt; and &lt;code&gt;google-genai&lt;/code&gt; SDK in native JSON mode (&lt;code&gt;response_mime_type="application/json"&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 The Math Behind the 2.5D Volumetric Neural Engine
&lt;/h2&gt;

&lt;p&gt;Single 2D MRI slices often mimic tears due to volume averaging artifacts. RadScan AI processes 24 parallel depth slices across Sagittal, Coronal, and Axial planes simultaneously:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Depth-Wise BiGRU Temporal Slice Attention
&lt;/h3&gt;

&lt;p&gt;For a 3D MRI volume stack S = {s1, s2, ..., s24}, spatial CNN features f_t = CNN(s_t) are fed into a Bidirectional GRU to track ligament continuity across consecutive depth slices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forward Hidden State&lt;/strong&gt;: h_fw(t) = GRU_fw(f_t, h_fw(t-1))&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backward Hidden State&lt;/strong&gt;: h_bw(t) = GRU_bw(f_t, h_bw(t+1))&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Combined Depth Feature&lt;/strong&gt;: h_t = [h_fw(t) || h_bw(t)]&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Grad-CAM Visual Explainability Heatmaps
&lt;/h3&gt;

&lt;p&gt;The explainability weights alpha_k^c for target class c at feature map A^k are computed via backpropagated gradients across feature channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feature Gradient Weight&lt;/strong&gt;: alpha_k^c = (1/Z) * sum_i sum_j ( dY^c / dA_{i,j}^k )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heatmap Activation&lt;/strong&gt;: L_Grad-CAM = ReLU( sum_k ( alpha_k^c * A^k ) )---&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚡ Deployment &amp;amp; Scalability
&lt;/h2&gt;

&lt;p&gt;Deploying to &lt;strong&gt;GCP Cloud Run&lt;/strong&gt; ensures our backend scales down to 0 instances when idle, keeping cloud costs at virtually $0/month while serving fast, sub-second inference on demand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Build &amp;amp; Deploy Backend Microservice to Cloud Run&lt;/span&gt;
gcloud run deploy radscan-ai-backend &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--image&lt;/span&gt; gcr.io/YOUR_GCP_PROJECT_ID/radscan-ai-backend:v1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--platform&lt;/span&gt; managed &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-central1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--memory&lt;/span&gt; 2Gi &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cpu&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--allow-unauthenticated&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📈 Learnings &amp;amp; Future Roadmap
&lt;/h2&gt;

&lt;p&gt;Building RadScan AI for the &lt;strong&gt;All Things Agentic Hackathon&lt;/strong&gt; proved that combining high-performance computer vision with structured Gemini 3.5 LLM agents creates production-grade medical automation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Sahil5273/RadScan-AI" rel="noopener noreferrer"&gt;https://github.com/Sahil5273/RadScan-AI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://radscan-ai-frontend-388740016983.us-central1.run.app" rel="noopener noreferrer"&gt;https://radscan-ai-frontend-388740016983.us-central1.run.app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;#AllThingsAgenticHackathon #GoogleCloud #VertexAI #Gemini #FastAPI #NextJS #AIHealthcare&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>google</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
