<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Karan Jadhav]]></title><description><![CDATA[Karan Jadhav]]></description><link>https://karanjadhav.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 07 Nov 2026 10:16:39 GMT</lastBuildDate><atom:link href="https://karanjadhav.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building PotholeNet: A Computer Vision Project for Road Damage Detection]]></title><description><![CDATA[Building PotholeNet, an AI-powered pothole detection system using YOLO11n, Python, ONNX, FastAPI, and geospatial technology.]]></description><link>https://karanjadhav.hashnode.dev/building-potholenet-a-computer-vision-project-for-road-damage-detection</link><guid isPermaLink="true">https://karanjadhav.hashnode.dev/building-potholenet-a-computer-vision-project-for-road-damage-detection</guid><category><![CDATA[Machine Learning]]></category><category><![CDATA[Computer Vision]]></category><category><![CDATA[Python]]></category><category><![CDATA[YOLO]]></category><category><![CDATA[Deep Learning]]></category><category><![CDATA[ONNX]]></category><dc:creator><![CDATA[Karnsinh Jadhav]]></dc:creator><pubDate>Tue, 27 Oct 2026 17:05:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae0d0539bfb3e16f3c76ff9/845db138-217d-4db8-b17a-707243714ae2.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>What started as a computer vision project is becoming an exploration of road safety, geospatial intelligence, and real-world software engineering.</em></p>
<p>Road potholes are more than just an inconvenience.</p>
<p>They can damage vehicles, make journeys uncomfortable, and create safety risks for people using the road every day. Yet identifying a pothole is only one part of understanding the problem.</p>
<p><strong>What happens after a pothole is detected?</strong></p>
<p>Where exactly is it located? Which road segment does it belong to? Which authority might be responsible for maintaining that road? Is there a related road contract or tender? And how could this information help people understand road conditions before choosing a route?</p>
<p>These questions led me to start building <strong>PotholeNet</strong>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ae0d0539bfb3e16f3c76ff9/0e550f48-acb3-4f2f-848a-585e6683a81f.jpg" alt="" style="display:block;margin:0 auto" />

<h2>The Idea Behind PotholeNet</h2>
<p>PotholeNet is a road-infrastructure intelligence project that begins with computer vision and aims to connect detections with useful geographic and infrastructure information.</p>
<p>The initial goal is straightforward: build a model that can identify potholes in road images.</p>
<p>But I don't want the project to stop at drawing bounding boxes around damaged road surfaces.</p>
<p>I want to explore how those detections could become structured information about roads, maintenance responsibilities, and potential route risks.</p>
<p>The broader vision looks something like this:</p>
<p><strong>Pothole Detection → Geographic Location → Road Segment → Responsible Authority → Contract or Tender Information → Route Risk</strong></p>
<p>Each step introduces a different engineering challenge.</p>
<p>Detecting a pothole is a computer vision problem. Connecting it to a road segment requires geospatial data. Identifying a potentially responsible authority requires reliable infrastructure records. Matching road damage to contracts or tenders introduces another layer of data integration.</p>
<p>Not every pothole will have enough available information to support every step. Part of the challenge is determining what can be established reliably and where uncertainty remains.</p>
<p>That is what makes this project interesting to me.</p>
<h2>Starting With Computer Vision</h2>
<p>The first major component of PotholeNet is its machine learning service.</p>
<p>I'm using a fine-tuned <strong>YOLO11n object detection model</strong> to identify potholes in road images.</p>
<p>The model produces detections containing bounding boxes and confidence scores. These outputs provide the initial signal that the rest of the system can eventually use.</p>
<p>The current ML workflow includes:</p>
<ul>
<li>Preparing and validating the dataset.</li>
<li>Fine-tuning a pretrained detection model.</li>
<li>Evaluating model performance.</li>
<li>Inspecting prediction errors.</li>
<li>Exporting the trained model to ONNX.</li>
<li>Serving predictions through a FastAPI service.</li>
</ul>
<p>I've also been learning that training a model is only one part of building a useful ML system.</p>
<p>A model can produce promising evaluation metrics and still struggle with unfamiliar road conditions. Understanding those failures, improving the data, and testing the inference pipeline are just as important as the training process itself.</p>
<p>For me, this is where the project starts becoming more than a model-training exercise.</p>
<h2>Building the ML Service</h2>
<p>I wanted the detection model to remain separate from the main application backend.</p>
<p>The ML service uses Python, FastAPI, and ONNX Runtime for inference. The main application is being developed with Node.js and Express, with React on the frontend.</p>
<p>The intended architecture allows the backend to send an image to the ML service and receive structured detection results in return.</p>
<p>This separation makes it easier to develop and improve the model without tightly coupling machine learning code to the rest of the application.</p>
<p>It also creates room to experiment with model formats and inference performance independently.</p>
<p>The model is trained locally using an NVIDIA GeForce RTX 5060. The deployed inference service, however, runs on CPU-based infrastructure using ONNX Runtime.</p>
<p>That distinction has been a useful reminder that <strong>training a model efficiently and serving a model efficiently are two different engineering problems.</strong></p>
<h2>The Challenges Go Beyond Detection</h2>
<p>Even if the detector becomes reliable, several important questions remain.</p>
<h3>1. Where is the pothole?</h3>
<p>An image can show road damage, but the system also needs geographic context to understand where that damage occurred.</p>
<p>This is where geospatial tools and road-network data become important.</p>
<h3>2. Which road does it belong to?</h3>
<p>Coordinates alone aren't enough. A useful system needs to associate a detection with the appropriate road segment, while accounting for the limitations of location data and map matching.</p>
<h3>3. Who is responsible for maintaining that road?</h3>
<p>Road ownership and maintenance responsibilities can be fragmented across different authorities.</p>
<p>PotholeNet will need to investigate available public data and develop evidence-based associations rather than assume every detection can be mapped automatically to a single responsible authority.</p>
<h3>4. Can the information help people make better decisions?</h3>
<p>The longer-term goal is to explore how road-condition information could support route-risk insights and a dashboard that makes the collected information easier to understand.</p>
<p>These capabilities are part of the broader vision, not claims that the entire system is already implemented.</p>
<p>I want to build toward them incrementally, beginning with a reliable detection pipeline.</p>
<h2>Why I'm Building It This Way</h2>
<p>One of my goals with PotholeNet is to work across several areas of software engineering in one coherent project:</p>
<ul>
<li><strong>Machine learning:</strong> object detection, fine-tuning, evaluation, and error analysis.</li>
<li><strong>Backend engineering:</strong> APIs, service boundaries, and data processing.</li>
<li><strong>Geospatial systems:</strong> coordinates, road networks, and geographic queries.</li>
<li><strong>Data engineering:</strong> dataset validation and integration of external data sources.</li>
<li><strong>Full-stack development:</strong> building an interface that makes the results useful.</li>
</ul>
<p>Rather than treating these as isolated technologies, I want to understand how they fit together in a system that addresses a real-world problem.</p>
<p>I'm also trying to keep the development process honest.</p>
<p>A feature isn't complete just because a model produces a prediction. A prediction isn't automatically reliable just because it has a confidence score. And a planned architecture isn't the same as a working implementation.</p>
<p>I want PotholeNet to grow through small, testable steps, with clear distinctions between what works, what needs improvement, and what remains to be built.</p>
<h2>What's Next?</h2>
<p>My immediate focus is improving the pothole detector and making the inference pipeline more reliable.</p>
<p>After that, the next milestones include integrating the ML service with the main backend, representing detections as structured events, and exploring how those events can be associated with road segments.</p>
<p>From there, I want to investigate authority mapping, public contract and tender data, and the possibility of deriving useful route-risk information.</p>
<p>These are substantial challenges, particularly where public infrastructure data is incomplete or inconsistent. I'll approach them one step at a time rather than assume the answers are already available.</p>
<h2>This Is Just the Beginning</h2>
<p>PotholeNet started with a simple question:</p>
<p><strong>Can I build a system that detects potholes?</strong></p>
<p>Now, the question is becoming more ambitious:</p>
<p><strong>Can I turn those detections into reliable, useful information about our roads?</strong></p>
<p>I don't have every part figured out yet, and that's part of the journey.</p>
<p>I'll be documenting the process as I build, experiment, encounter problems, and improve the system — from computer vision and model deployment to geospatial data and backend integration.</p>
<p>For now, the focus is on getting the foundations right.</p>
<p>One model. One service. One step at a time.</p>
<p><strong>Welcome to the PotholeNet journey.</strong> 🚧</p>
]]></content:encoded></item></channel></rss>