<?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: Dr. Mohammad Amin Talaghat</title>
    <description>The latest articles on DEV Community by Dr. Mohammad Amin Talaghat (@atalaghat).</description>
    <link>https://dev.to/atalaghat</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%2F4238924%2Fdc09b148-84f9-4a58-920c-7d2584e915e0.jpg</url>
      <title>DEV Community: Dr. Mohammad Amin Talaghat</title>
      <link>https://dev.to/atalaghat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/atalaghat"/>
    <language>en</language>
    <item>
      <title>Building Road Infrastructure Digital Twins with Computer Vision &amp; Deep Learning</title>
      <dc:creator>Dr. Mohammad Amin Talaghat</dc:creator>
      <pubDate>Thu, 12 Nov 2026 05:13:01 +0000</pubDate>
      <link>https://dev.to/atalaghat/building-road-infrastructure-digital-twins-with-computer-vision-deep-learning-1bb4</link>
      <guid>https://dev.to/atalaghat/building-road-infrastructure-digital-twins-with-computer-vision-deep-learning-1bb4</guid>
      <description>&lt;h1&gt;
  
  
  Building Road Infrastructure Digital Twins with Computer Vision &amp;amp; Deep Learning
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Dr. Mohammad Amin Talaghat (Ph.D. in Construction Management | AI &amp;amp; Digital Twin Researcher)&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Modern transportation infrastructure demands proactive, data-driven pavement management systems (PMS). Traditional manual condition surveys are not only labor-intensive, costly, and hazardous, but also suffer from human subjectivity and low spatial frequency. &lt;/p&gt;

&lt;p&gt;In recent research collaborations with the &lt;strong&gt;DigiPave project at the University of Oulu (Finland)&lt;/strong&gt;, we have been developing and optimizing end-to-end digital twin architectures for continuous road surface inspection, automated defect recognition, and life-cycle maintenance optimization.&lt;/p&gt;

&lt;p&gt;In this article, I share the core architectural pillars, deep learning models, and practical integration workflows that bridge Computer Vision (YOLO/SAM), Geographic Information Systems (GIS), and Building Information Modeling (BIM) to create a true Digital Twin for civil infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Multi-Layer Digital Twin Architecture
&lt;/h2&gt;

&lt;p&gt;An effective infrastructure digital twin is not just a 3D visualization—it is a closed-loop cyber-physical system composed of four foundational layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Physical Sensing &amp;amp; Data Acquisition Layer:&lt;/strong&gt; High-resolution cameras, spatial LiDAR, and GNSS/IMU modules mounted on moving inspection vehicles or aerial UAVs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep Learning Vision Engine:&lt;/strong&gt; Real-time object detection and instance segmentation models (such as YOLOv8, YOLOv11, and Segment Anything Model) trained on standardized defect taxonomies (e.g., ASTM D6433, RDD2022).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spatial Georeferencing &amp;amp; Asset Indexing Layer:&lt;/strong&gt; Projecting 2D pixel-level bounding boxes and masks into 3D world coordinates (EPSG:4326 / UTM), indexing each defect to its respective linear highway chainage (Kilometer Post).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision Support &amp;amp; Predictive Analytics Layer:&lt;/strong&gt; Integrating defect severity and density into Pavement Condition Index (PCI) calculations, deterioration curves (Markov chains, LSTM-based degradation forecasting), and multi-objective maintenance scheduling.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Real-Time Defect Detection: Why YOLOv8/v11 + Segmentation?
&lt;/h2&gt;

&lt;p&gt;Accurate pavement distress assessment requires distinguishing between various distress classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Longitudinal &amp;amp; Transverse Cracks:&lt;/strong&gt; Linear features requiring high precision to measure crack length and opening width.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alligator (Fatigue) Cracking:&lt;/strong&gt; Interconnected polygonal patterns indicating base or subgrade structural failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Potholes:&lt;/strong&gt; Deep bowl-shaped depressions posing immediate traffic safety hazards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raveling &amp;amp; Rutting:&lt;/strong&gt; Surface attrition and wheel-path depression.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Defect Segmentation Code Snippet
&lt;/h3&gt;

&lt;p&gt;Using Ultralytics YOLOv8 segmentation in Python, we extract both spatial bounding boxes and exact polygon contours to calculate surface defect area:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;ultralytics&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="no"&gt;YOLO&lt;/span&gt;

&lt;span class="c1"&gt;# Load fine-tuned road distress segmentation model&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;YOLO&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'best_road_defect_segmentation.pt'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_inspection_frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;conf_threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conf_threshold&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;defect_summary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;masks&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;masks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;cls_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;class_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cls_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="c1"&gt;# Compute real-world area from polygon contour&lt;/span&gt;
            &lt;span class="n"&gt;contour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;pixel_area&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contourArea&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contour&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="n"&gt;defect_summary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="s1"&gt;'class'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;class_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s1"&gt;'confidence'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s1"&gt;'contour_points'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contour&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="s1"&gt;'pixel_area'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pixel_area&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;defect_summary&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. From Vision to PCI: Standards-Compliant Analytics
&lt;/h2&gt;

&lt;p&gt;Under &lt;strong&gt;ASTM D6433&lt;/strong&gt;, raw detections must be converted to quantifiable engineering indices. For each inspection sample unit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deduct values are calculated based on distress type, severity level (Low, Medium, High), and distress density.&lt;/li&gt;
&lt;li&gt;The Total Deduct Value (TDV) is adjusted using iterative correction curves to obtain the Corrected Deduct Value (CDV).&lt;/li&gt;
&lt;li&gt;The final condition score is calculated:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;$$\text{PCI} = 100 - \text{CDV}$$&lt;/p&gt;

&lt;p&gt;Automating this pipeline with Python transforms raw mobile video recordings into interactive engineering dashboards within minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Explore the Open Ecosystem &amp;amp; Connect
&lt;/h2&gt;

&lt;p&gt;I have built several open-source tools, scientific articles, and interactive demos bridging artificial intelligence with structural engineering, contracts, and digital twins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official Portfolio &amp;amp; Web-Resume:&lt;/strong&gt; &lt;a href="https://atalaghat.github.io" rel="noopener noreferrer"&gt;atalaghat.github.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repositories:&lt;/strong&gt; &lt;a href="https://github.com/atalaghat" rel="noopener noreferrer"&gt;github.com/atalaghat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hugging Face Models &amp;amp; Datasets:&lt;/strong&gt; &lt;a href="https://huggingface.co/atalaghat" rel="noopener noreferrer"&gt;huggingface.co/atalaghat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/atalaghat/" rel="noopener noreferrer"&gt;linkedin.com/in/atalaghat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Scholar:&lt;/strong&gt; &lt;a href="https://scholar.google.com/citations?user=QW77YRoAAAAJ&amp;amp;hl=en" rel="noopener noreferrer"&gt;Publications &amp;amp; Citations&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feel free to leave your thoughts, questions, or collaboration ideas below!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>deeplearning</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
