| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <title>ccdp — Neural Network Architecture & Data Flow</title> |
| <style> |
| :root{ |
| --bg:#0c1018; --bg2:#121826; --card:#161e2e; --line:#243049; |
| --txt:#e6edf6; --mut:#93a3bd; --accent:#5cc8ff; --accent2:#7dffc0; |
| --warn:#ffd166; --red:#ff7b72; --violet:#b692ff; --green:#3fd07f; |
| --mono:"SFMono-Regular",ui-monospace,Menlo,Consolas,monospace; |
| } |
| *{box-sizing:border-box} |
| html{scroll-behavior:smooth; scroll-padding-top:74px;} /* anchors clear the sticky nav */ |
| body{margin:0;background:radial-gradient(1200px 700px at 70% -10%,#15203a 0%,var(--bg) 55%); |
| color:var(--txt);font:15px/1.6 system-ui,-apple-system,Segoe UI,Roboto,sans-serif} |
| a{color:var(--accent);text-decoration:none} |
| header{padding:54px 24px 30px;max-width:1100px;margin:0 auto;text-align:center} |
| header h1{font-size:34px;margin:0 0 8px;letter-spacing:-.5px} |
| header p{color:var(--mut);max-width:780px;margin:6px auto;font-size:16px} |
| .tag{display:inline-block;background:var(--card);border:1px solid var(--line); |
| color:var(--mut);border-radius:999px;padding:4px 12px;margin:3px;font-size:12.5px;font-family:var(--mono)} |
| .build{display:inline-block;background:rgba(63,208,127,.12);border:1px solid #2c5c45;color:var(--green); |
| border-radius:999px;padding:4px 13px;margin-top:10px;font-size:12.5px;font-family:var(--mono)} |
| nav{position:sticky;top:0;z-index:20;background:rgba(12,16,24,.85);backdrop-filter:blur(10px); |
| border-bottom:1px solid var(--line)} |
| nav .inner{max-width:1100px;margin:0 auto;display:flex;gap:4px;overflow-x:auto;padding:10px 14px} |
| nav a{color:var(--mut);padding:6px 12px;border-radius:8px;white-space:nowrap;font-size:13.5px} |
| nav a:hover{color:var(--txt);background:var(--card)} |
| main{max-width:1100px;margin:0 auto;padding:10px 22px 80px} |
| section{padding:42px 0 12px;border-top:1px solid var(--line);scroll-margin-top:74px} |
| section:first-of-type{border-top:none} |
| h2{font-size:24px;margin:0 0 6px;display:flex;align-items:center;gap:10px} |
| h2 .n{font-family:var(--mono);font-size:14px;color:var(--accent);background:var(--bg2); |
| border:1px solid var(--line);border-radius:8px;padding:2px 9px} |
| h3{font-size:17px;margin:22px 0 6px;color:var(--accent2)} |
| p.lead{color:var(--mut);max-width:840px} |
| .card{background:linear-gradient(180deg,var(--card),var(--bg2));border:1px solid var(--line); |
| border-radius:14px;padding:16px;margin:16px 0} |
| canvas{width:100%;display:block;border-radius:10px} |
| .grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px} |
| .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px} |
| @media(max-width:820px){.grid2,.grid3{grid-template-columns:1fr}} |
| code,.mono{font-family:var(--mono);font-size:13px} |
| .kv{font-family:var(--mono);font-size:12.5px;color:var(--mut)} |
| .pill{display:inline-block;border-radius:6px;padding:1px 7px;font-family:var(--mono);font-size:12px;margin:2px} |
| .pill.relu{background:rgba(92,200,255,.14);color:var(--accent)} |
| .pill.sig{background:rgba(125,255,192,.14);color:var(--accent2)} |
| .pill.soft{background:rgba(182,146,255,.16);color:var(--violet)} |
| .pill.silu{background:rgba(255,209,102,.16);color:var(--warn)} |
| table{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:8px} |
| th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top} |
| th{color:var(--mut);font-weight:600} |
| td .mono{color:var(--accent2)} |
| .formula{background:#0a0e16;border:1px solid var(--line);border-left:3px solid var(--accent); |
| border-radius:8px;padding:12px 14px;font-family:var(--mono);font-size:13.5px;overflow-x:auto;margin:10px 0} |
| .formula b{color:var(--accent)} |
| .note{font-size:13px;color:var(--mut);border-left:2px solid var(--line);padding-left:12px;margin:10px 0} |
| .warnbox{background:rgba(255,209,102,.07);border:1px solid #5a4f2c;border-radius:10px;padding:12px 14px; |
| font-size:13.5px;color:#e8dcb6;margin:14px 0} |
| .legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--mut);margin:8px 2px} |
| .legend span{display:flex;align-items:center;gap:6px} |
| .sw{width:12px;height:12px;border-radius:3px;display:inline-block} |
| .muted{color:var(--mut)} |
| .samples{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:6px} |
| @media(max-width:820px){.samples{grid-template-columns:repeat(3,1fr)}} |
| figure{margin:0;background:#0a0e16;border:1px solid var(--line);border-radius:10px;overflow:hidden} |
| figure img{width:100%;height:96px;object-fit:cover;display:block} |
| figcaption{font-family:var(--mono);font-size:10.5px;color:var(--mut);padding:5px 7px;line-height:1.3} |
| figcaption b{color:var(--accent2)} |
| .cite{font-size:13px;color:var(--mut);border-left:2px solid var(--accent);padding:6px 0 6px 12px;margin:12px 0} |
| .cite b{color:var(--txt)} |
| footer{max-width:1100px;margin:0 auto;padding:30px 22px 60px;color:var(--mut);font-size:13px;border-top:1px solid var(--line)} |
| </style> |
| </head> |
| <body> |
| <header> |
| <h1>Car Crash Fix Amount Predictor</h1> |
| <p>How the neural networks are built, how data is parsed, trained, and turned into a repair-cost estimate. |
| Every diagram is drawn live on <code><canvas></code> and reflects the code on this branch.</p> |
| <div style="margin-top:12px"> |
| <span class="tag">ResNet-50</span><span class="tag">YOLOv8</span> |
| <span class="tag">Mask R-CNN (car gate)</span><span class="tag">XGBoost</span><span class="tag">PyTorch · torchvision</span> |
| </div> |
| <div class="build">build: checkpoint-16 · gate + identifier + Variant A/B · runs on v0.2.0 weights</div> |
| </header> |
|
|
| <nav><div class="inner"> |
| <a href="#flow">Code flow</a> |
| <a href="#data">Data parsing</a> |
| <a href="#arch">Architecture</a> |
| <a href="#act">Activations</a> |
| <a href="#train">Training</a> |
| <a href="#backprop">Backprop</a> |
| <a href="#loss">Loss functions</a> |
| <a href="#acc">Accuracy</a> |
| <a href="#out">Output</a> |
| <a href="#cite">Citations</a> |
| </div></nav> |
|
|
| <main> |
|
|
| |
| <section id="flow"> |
| <h2><span class="n">01</span> End-to-end code flow</h2> |
| <p class="lead">One photo flows through four models. A car-presence <b>gate</b> runs first; then a make/model |
| <b>identifier</b> and a <b>damage</b> model run; their signals feed an <b>XGBoost</b> cost regressor that is |
| calibrated to a swappable parts-price catalog and converted to the chosen currency. The dots below animate the |
| data actually moving between stages.</p> |
| <div class="card"><canvas id="flowCanvas" height="430"></canvas></div> |
| <div class="legend"> |
| <span><i class="sw" style="background:#5cc8ff"></i>CNN / detector</span> |
| <span><i class="sw" style="background:#b692ff"></i>classifier head</span> |
| <span><i class="sw" style="background:#7dffc0"></i>gradient-boosted trees</span> |
| <span><i class="sw" style="background:#243049;border:1px solid #3a4a6b"></i>non-ML stage</span> |
| </div> |
| <div class="warnbox"><b>About this build (checkpoint-16):</b> Mask R-CNN appears <b>only</b> as the |
| car-presence gate (COCO weights, inference only — it answers "is there a car, and where?"). Damage itself is |
| recognised by the <b>ResNet-50 multi-label classifier (Variant A)</b> and the <b>YOLOv8 detector (Variant B)</b>. |
| A dedicated Mask R-CNN <i>damage segmenter</i> exists on a separate branch and is not part of this deployable build.</div> |
| </section> |
|
|
| |
| <section id="data"> |
| <h2><span class="n">02</span> How the data is parsed</h2> |
| <p class="lead">Two datasets, two parsers, one canonical pipeline. Stanford Cars trains the identifier; CarDD |
| (COCO format) trains the damage models. Every image is decoded, cropped, augmented, tensorised and normalised |
| to ImageNet statistics before it touches a network.</p> |
|
|
| <div class="card"> |
| <h3>Real samples from the data</h3> |
| <p class="kv">Left: Stanford Cars (make/model/year). Right: CarDD (damage types). Thumbnails embedded from the local datasets.</p> |
| <div class="samples"><figure><img alt="Stanford Cars sample" src="data:image/jpeg;base64,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"/><figcaption><b>Audi Tts</b> · 2012</figcaption></figure> |
| <figure><img alt="Stanford Cars sample" src="data:image/jpeg;base64,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"/><figcaption><b>Acura Tl</b> · 2012</figcaption></figure> |
| <figure><img alt="Stanford Cars sample" src="data:image/jpeg;base64,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"/><figcaption><b>Dodge Dakota Club</b> · 2007</figcaption></figure> |
| <figure><img alt="CarDD sample" src="data:image/jpeg;base64,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"/><figcaption><b>CarDD</b> · scratch, tire_flat</figcaption></figure> |
| <figure><img alt="CarDD sample" src="data:image/jpeg;base64,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"/><figcaption><b>CarDD</b> · crack, tire_flat</figcaption></figure> |
| <figure><img alt="CarDD sample" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA8Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gMTAwCv/bAEMACgcICQgGCgkICQwLCgwPGhEPDg4PHxYYExolIScmJCEkIykuOzIpLDgsIyQzRjQ4PT9CQ0IoMUhNSEBNO0FCP//bAEMBCwwMDw0PHhERHj8qJCo/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P//AABEIAKAA8AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOQvJ5IFjXdj5RkZycVGt1FAW/dBhIuNw4PJ4OP0qKXZOyqwISMEjHGTUEsDR2yBp/nV9xLHIx6V5sUrWOaNiVroSXUZbaFiXGD69vwq/ZNBPG0TKm1j94jDDHWs0ReWY5otrsSSFOMEVDlml8x2Jkk5yO1VKCasjV7JFiZkR5lgHmDBUjB4Pt/9enA2xTy41YScYDNkEY5FSvaQWwR7fIkkGVRxuB9c1WkiYRlRtGxtpQgZ4PT9aE0yDW0+DzYjNG4JjZWlhQAPgjBI9ae9urwy3ELHJTzPoM8Z7npnpS6c1uYFurd2t7qDJO9/vHHJHt2xV2zhttQkjkykchZt5HygE85UDt14rCcrO7FqRyyTwKiW7jdlDJEowDnJyp7EjqDWqt6htZkfy1dGAQEbRg/z/HvV77Dpzm3JlWJRGUkDJ970J+mKz7Yx2hn3PFKzvyUBxt57eucVjCMq2sIseyKkt8kd35RX5UO0Mv3Tms2/sLk+e9rGgjLZZEbc2PVfWtaKys7ycOilwrYzGyqPxxn+lV5PEml2e6GC3ZgMjGzI/Uj+Vd0cJUXvOyJRiPAYFcmMiYKBgfoMVbsIb6C4kjeBvN2ZGFOWx296s/8ACaYctHZLuI+8wTP/AKCatw+Mb0KsktlOkXZ12gfhlOa1+q3VnL8B2ZIsFy2mpIYljz8vzcE/lUUErb0M7FpORgfTj8a3tM8W296BERDKTwYbhfLY/Q8qfyFb1lpPhrWJCgtxZ3oGTCfkP1A6H6is5YJpaMqJyLNDCN5CkAggtgjJzgY96dujFuxmRjKclkVep7AfnXcT+Cbd0+S6YEDgOuQD6+tZF14XvY1ZwkcpQY3cr078/wA65JYWrHp9xoznrfJjV5NqheJAWx9BVvVpZLWziIBc3CKQHXHAHJHtyKgu9OuCDHLA21WHIGRj61d1eD7Vdt5flvAluiJID6ZJxj34/DFY6Rd5kq/KzEklgFt8gG5E5bqevSqdxK0djlfmWRsKOwwKv6fprXaXEfmmMqGDqQPqOfxqTWdFtbLSPOjuXkEajdhcgNnoOeOtae2pqShfUizZStjMIl2ooJT5snHB9PrWjNK8+mW8MlyMKFXydu3aB1PHB+prPthZf2VJLNLMbx2CxBPujH97NWWMn2F2muysaKRGi8c5Hr1/CutLlRLGajJEtknl5HlLnaOc8ZJzVTSYhqEyKzLGruBhj8xOR2q5q01u1pFFZbrgxDdPLjg5A/LGKf4Nga48UWRWPy2UmQNjgACklrYfWxd8SkJrsvySCMHah27QUAAGM1iWcCLLmRsHGRz0IrQ8R6rJqN6N5YpGoWMFQMcc/rWOk7AqF+8pGMdAaUn7zsEtzSkncGVy3zyPkBgcjH/66higDzl1xG+GYAjrx/Oo54Lldlzcb8u2dxXkk85H+e9WreJZNIllW4JfeqAZJ6nJP6Vm00xHAwu+CSCCo4OcGpCZZU35JQHJ+ta95ZyR4jUDnn2B6VVn04pLtJOQOcdK1jVjLUuxTWRmYCQM245yTV5GQ5wAdowM8mqksE0a/KvGCcZ5FNjZg4+U7x1wKp67A07mrvG6NSucEfL2NQS2s3mAxggK2Q3rjnk+tPtmLIGcncnQCrsZW1Xzr35VXOU6bgfX6+nWphGTdojuSwQr5O2Q5IbO5h6jqDUc2qWVkcRDe65+VOQM1SnlutQtQsEJTzXwo6bUHr6ZPb2qzb6LbxWh81meQjkg4AHoPWuhU4Q1erEkkZ0+v3UpIhjWNR9D/wDW/SoL29kv2RIUYBQM5csSfp/hWwNAiLfupXjY9M/NViw0SWO/t3meDyI2B+VcEn1NaqfM7FXRoxINJ8OyY4aOPaCB1du/61xV1aRwsztI7DOFyoBP613XiBM6VaxxvGGkcSMGYA8nA4PXGe1cXdTRNqMryQmUcrt3lVB9c9fetZ76EooDBcbRsH16VYWS4MgLPv7AFs4pGUSu8kMQRMjCctj8cVJaBVurczoWiDglCcBhnke1QM6HTI9Za3zFp0jwqSVMFl5gY+hOORWqmt6rABHquk3X2VWyFEDR+Uf7yHHy/Tp9K7m28a6MUhhWK3ChBgRyBQvsBWza+IdNmK7ZSgJ5DtuWr5uUapN6ox/D/iiIWqG5uDPZk7Uuccxn+7IOx9+n0rrw8c8QZSJEPRh2rkvF+j6fPp8uqWUkME4wHI+7KM4AOO/PWsPQtYudLuWgkfNuqqQRyFBz/wCO8fhVq09UJpx3O9udPEyZUIecgqMH86wL3RJkUyRDK9cqMd+uP/rV0lvdRzxiSORUfAyueD/jVnIkA3qVYdD6fSsp0ozVpK5Nk9nY8z1HT5o7MpCGJll8yRlwQfXA/pReafDLpw+0B0BVSyKcA4PH6etehX1ikoLhgHxxwM/nXP3dnJ8ySKGjcYbywBn6ivNq5fd3ou3rqLmcH72pxmiafAusTB54Ht4HX93IxUyE9vwGc/hXReLLC0Ezy3N3GFUBDD5e0ITnaRg/e4FQtbPBJvs5IQdxEgkX5iD1GRyOmKyb2Cb+1LV7+aQhjvRFG8LznBPvzT/eQioSWvcacWZWuRBbuNLVm2hmUhQDu+Y9APWtTwIoF/dTzMVWG1c5P6/jjNYetq/21GAZhKN5BBAUsT3rU0ULH4Z1IowAjVc8Hkk460Rb5k2P7Rl6jMsoURRSxxBfk8w5J5ODn6Y/Kks4d+pRqSDh1424z7+1aEqN/wAI/aBQC0sjckZOBn/GpL2CK3a0ktHaVGgHmkZHmNznbkDgHj6im0ybak+sCMapHZqSYLUBWZyMsep+vQD8KrW9hHDaTBZclQsmR0yMf4msy6vlaMmWFXcsGSYEgj1GO4PFSpdyPCvmbVikO4KDyw96l33G27nXtpVtdHayFXPTIxk1SufCgLkhtrDjBHBFdJhnCslwhUc7XGO1OAmk3vvYdBlDux9RXkptbM9FxT0OJu/D7xIfMiyDkZAzWfNoHkATg7CQS7EYx/niu0u/Edlp2+O4uVuZMYwsYJB964/VNbk1OWISRqtsh/1SfLu+pruw9CvUt0Rz1FCOxmWVr5c6kZYMT82McDk4qtNbjU9aKNmKBAZEydwA9SO5NdDaJNKJWjt2ZipQchQo9AOwxn86y7fTIrOaUQySlidsmJQQT6HA969pU+WPLEwTRDqd6mmWdv5KZZ2J2YwuB+NVYvE0cmFksjk/885P8a3J7aK4hEc0MZUDbt68dfWlg0yzTBW2hB/65g/zoVJvcTaLsUCvaQypHsZ08wb8hiD7HpRI/wC7EaheIzk7ADk/zqQtOWA81mx6gGrCqHA3sVZjxtO327UoUHGV2yboxdfSSXULZUiZljTJ2qSBwW/qK5NNPvrnaDZ3JPtEcV6XaJcTyzJ9ku0SMbjK6na345q0kNsVy0iA+hbNb8ilrcV7HB2mhvHEAtvepdMSAw/doo9zyT+VLDpGp+cJ7mzjuNrELHKgw3ucEcf5xXoKRWi9ZIc9zuFTo9khH7+Hj1cUezXcXN5HncPhK5aZ2nhibcchYm2qM9vWhvCV4Z5Npkt4QPkKzA8++e1ekm9sMkvdQA+0qiqGrzwz2xS1aGUN13XAx+hFL2aT3KUpHlOoTatY37adBfy3Ea7WGCducemT0zXU6C95DH/pSTySMgOfJb17ce9bXhvw7ZRTiW4mi3dSS4J/nXaK8MOoRhfJYeRhAHGB836mqUVEpz5tDH8NJdx2TzpFcQSIzCHehYbeCBjPyjOe3SuhtNauHAW7sJN3QmMf0NTs5QZM0EJP+2BUkRglI8y7glb2YH+tJ26iu+hbQQ3UWTHlT1WRMfoaqzaHps2N1pGMDA2jb/Kr0YQfcxx6U+s7mqS6mHH4V0mCUywWqxyHOWUDnPWiTw9bnO13APbqPyrcoouJwTOMu/BdtKXxK43LtwCMAfSq0Xg1bfSLnT1nm8q4dXY5weO3TFd2QD1FJsHbip5YdiXBnBN4cKQxRLFIwiQov77qCcmorXw9PZN5kFouV6CSdzjr26dzXfvHkdj9RmoGhx/CB/ukitFGHYh3R5lPoCBQn9lQsB0xOxP86hubCNVUXGlbAgwu2V1wPxr02RcjD5I9HUMKqtbQt91Ap/6ZSGM/l0rTkg/sojmOZsJ1ETG7XliRtLbsEfyrN8RXZsNJiFvPIsk+1doPO3r1psKtuLhwJG9PQfz+lYfiWfF5aWr7F8uNnYIScE8Dr7V8zRpp1EejGelmjAcSxnc37wH07VLa6vd2uUgKxqevyBs9ucjmk3FTk8jvnvTXiG7hhjtzXuxl3OaUbbGhBqlyskRllHMf3zGG28ntx6Cmvqk726ROI0KknMMSp+uMn86hkG2GEjH3Sv65/rUIk9RV3FYnN1IzAmWX/vqnrcNnmaX/AL7NVxJn0pVcmncViwtySeZpvf8AetVi1uVICSPcCISFmEcxUnt1/CqQbJ6CpLf/AFY9+f1o3HsSTSSsGY3M7gnGJJCePpVSJkDYKJ/3zVuTmM/WqRXD/jSa7FepeXy8jEaflUi7d/8Aq06f3RVWIDpk1bjHNMmwkxQD/Vj8BT7eby+QB+VOdRjmmbRimFjasNUMTKcDI6dsVtjXlnuG8yNWfygDnucnniuKThzzU1tPtvCSfQU73I5bbHQ3V7NIxLBQOwCjAqj/AGnNC454rUtkSZQcA/WszVLFlBKjpWjIR02j+K3CBbj94B6nn866C01yG4ckE7O+RggV5BDPLBIdsTyY9On51dPjCS0jSM/YomRidztljnqDzyKzdjVcx7SrBlDKcg9DQ2BXkmn/ABJuIY1iV7CVF6DcQf51v2fxEtZAPtto8RP8cR3LU2KbdjtXR1LukjsccITkVg3Op3cMx85duegGQKu2OuWF9EHtLlZAf7p5H19Kh1lftMalioAzhicCtYLXUwkxLfXfl2yR5PY5q9BqUE3qvucVyDzrEcbQ3ueakgu15bA+mcVbhFiuztGG5cgggjrWRrNw9hbeesPmrnBUcHJPByeAPWorTV4kVYzGQBwSGzWgZoLnZtZXXPIIzxipScRaM424ijS8OyJVRj8o/vfSuF8STLNqxVGIESBOMdv/ANddQlyWZX3lmXldwwCPTNcHqD/8TG6J4/et/OvBwcP3l32Ot1VPYrXF8LaMlyXJ4UVj/wBr3PmZwmM/dxU80ct5frBCu5zhVHua2be3s9OkESJHJtO15Hx8574z0r1BpEmm3i3tg2OGRslT1HY/0qVh6Cku7ZLK6hvbdCkEx8uWPspPQ/zFPdcEjOf61a1RDWpGMA0uRQAO9OyMUwsCt8wq2key3iYHIKjiqIYbiK0bOeaBIzBK8bbRyrYoGJnKkVXYZNaa3DnJkjifPdol5/GrSy6G9uxvre4inU/L9kxtb67ulMRihWjILAgHoatQkkjAJPtSzTacCwtYZwD0Mzg5/AY/rUtpqC26mOS2trmM/wB+PBH0YYI/OkA6cGNFMqmPcMqWBGfp61XMgHSrl1eW9xYNEJbtMcrE8glQH2zgisgPx1oAmEh3sajSbE7n3/oKZv5aq6kF2Of4jQOx1+jX3y7TyR29azte8YwQh1i23EqHB5/dqff+8fYfnXMahqUttGYoGKkj5z7elcvIXmdVUFmJwqqOtDm9kJU1uy3qWuahqLN51w4iJyI0+VfyFZldfpPgyWdVl1KUwqT/AKtev4mtyPw7pdsjFTGx2/KCvf6k1JR5uiow+Z9v4ZqeO5ntmBguZBjt2/KvSLbS9Jnib7RCinJwyMQAP5Vm6n4RjKeZYssob7qPwT9COKduwXF8P38JEEouRBcMAfMLkLkdQcdPpXotvrCXJFu8lrFKcfM0mFYeo4Of/rV4mBd6TJNDH8m7iSGVA35Z710/h3W5DI0M64hTaUdePLz3HoufyoTadrg0nrY9CvpfLuBAxjZj82QCQF65BxyMU6NEQqXvbbGM7UcsT9AMmpbDWLS5tVS9hiaSIBTvUHp0IqWzuNPt1dI2hjAPykEAkHn+dapPuZNrsLbS2kq5a9hILALuXb3Gc5q5LPHFbq+mv5pViHCYz/8AqqlEti6LvlgYohAIYEg+1bVoIpkjRJkUgZ+XGM/hRaXcTcex5lrLTWkivF5jQEYYhgGX6YGMZ9q5O+Mct1JJFkJJ8y7jk/jXRm/Z7dYrjapPO3OcD3rjb+Ywzl4TtyT05FcFGKWqN3CG8S/oVuqand3Tjm3hJH1PH8s1Tuzvu9xkCZbYhIzz3NXdEuXutN1Z2UeZ5SDIGOMmnRrutEmN39mRiw+VCSWyfQf5zXQk9x30sWdouNAuIwR5sUTLIo6K6nIx+VV7a4e4so5fKfpjPHNGjM39m6rI27aoxz2+U1R0a6KWpTI/dtyD0xVX1Ja0LxZgTlHH/AaaXHuPqDU0s8e792SvqG7fiOtIsm4/eX/vr/GqEQLIu4fMPxq5FcFAhLDgYGaYo34OA30w38qnIUoF2qQFGdy47UgJTO0p3PJvPuak3sYyUYj6VTJthwyR5J496dsgOSgI/wB1jTFYWR2eTc5yT14xSE4FII4v70gI7hqdsjIx5jfpQMb5lRF+TUxhUniU9O4qB4HDHZIpHbIoAFflh7VHC2R9cn9aBFMNxABOOxpkKTYjHksdy9vpRcDG1GXfGGByZOf8K63wtoKWFr9uvV/0h1+QEfcH+NZWl6fHfa8kZQGC3G5l9fT/AD7V2OoSiGIyuSqoMgZ/KsdjR6uxTur4oP3rhVzkIOKyJdXhimPyopPPz/8A16y7y/eYkRnDE/fz0HoP8agsLKa+WI20RLO+JA55K55pqLYNpHS22rW8wCssTDGDtI6fhWmJVdY2hcqM9fx79vxrmb7Skt9TnF1a/Y7JI90cnJYnH/66ZpmpNAEbzDJbSHCOwx36Gm4uJPMmdBrljFqjyRyJ5d0OUbHXA6e4NcQqtbvIkjNEyAgsDjArvA5nKyK37yNTsB6Ed/8APtWD4stlniW+iAyOHwMZ9DVfEhbFvwprLXlkolOZoDtf/aXsf8+ldJKU6jn0rzPw5cfZddiGcJONhH8v1r0FJPkAPatIvQiUdRsoDnJUVCUA6cfSpmcVG7gCgLEEttDAsAuItvnISWhjIx6Z4H+Nc7qtlJd4XT9LliKEgyOCNw9ea7qSzuMjoccZyaiMF2uQv6muCEOTVM0jR5XuzivDNpdWeqPBeIyQ3EZjPHUnpTru1niikEWdsTHevpz1x7HiupltJ3GSiZHp1+tV7mxedmMkClyMFw3zV0KWhbgY8yDTfCHlONs105LKeoz2/KuOkkaORtrYB6iu3vdHkuxGk0tyEiXaoBU4H5VmP4Yts/Nd3Cn3jB/kaVwcWc99qYLxKc465NPjvXHBm49SK1pfDMS8R3pY9g0eKrv4ZvQu5EZ19VGR+lO6JsyuL5h0kQ/pUqX0vUMPwbFQzaDfw/ft3/KqclnPGfmjYfUUfMDYXULrP+sm/Bs1OmpOq4eRTnqJIgf6VzfluvYilDyr0dh+NVd9xWR1SagpbJS3b6Ern8iKuxXtmSFaCQcYGyXP881xX2iYdWB+oFKt0wOdifhkUXYWR2zXNtvztmGfXaf6ClSS2cn9669xui/wauNW/Yf31/3XNTDVJOP3sn/AgDT5n2FY6yRR9nLRTRuehxuB784I/rTrY4LqwOFGP0rmI9ZkXaMo3rlcfrW3ouordExSDZKR8pzkNxRzBY1vCcUi6fe3cMfmSyPhVzywA7VP4zkZLIqrbSBuP4VL4GdDpYKspHnN+dZfj5ZDdoo+75O4/g3P86z3Za2ORt8M4Yk7k5I/CpWu55DsicouexwBTbWN57jyFGC2QPetrSWE0FpZTWsIiWVizon71jnufatNibXJEvbrTZzY6hPFewEDftbeq59/Wn6jCJLR0WWKO2RMJEE+Zjk9+2KiuYtNlgu7n7UbZkISO3Cly/HXOeB+dZrTJvhNwzFEPKhsbuOlUpNoTVmb/hO/Etv5c/zNF1z7f5/Wt7UrWF7e7twn3kyCR7cY/WuQ8HqZNWmAwEJOc/T/APVXY2dxJdrJLPAYXQ+XzzuHrn8az2K3PK2c29ykg+9FIG/I/wD1q7wai5UH7JMFYZBAzXDaooW8nA6Bz/Ou2sJwdOtiTyYl/lVolkv25Tj93Kv1Q0eeHHGfxGKRph61GXHrTEd4LSaRtoTaepDsBSTaddKgKLGDjuasR3dxIAvlheMHqatLJc7VH2cSvt4I4rkOsxGsr0thoogB26ZoNrN9nl3xOsmRs24wPr3rX3X0n/LvGUz1LelSNaNtJMSebnoJCPrTuGhzMlneKuZEPr161A1pIpxLakk9GJrrzMFbbMsaRAc/PyfyqpMbRywCO/IHOc/hTTFY5OW3j53Wqg+npVNrTbysZU57GuwfyThYoF3A4+Zif0qq8pUBUjjU9Dx1/WquS0clJbXDHHIBzgHJqB9PZ2/e22/1ILD+VdeSwxkAjODgjn6UxpZCgBwv+0F5ouFjlU0yyMeybT5uvLBt39Kifw3psoOHlib/AGkrqGViOHPP0wKr+U0hOWznpSuKxyNz4TUZMF1ER2ycVmnwxfsW8tFdF/iXkV3jiXy9qNgY4BA4+lUZIJ/MDrIyHJPyZGad0TynBT6ReQ/ejyB3FVGt5F6qRXpBe9CFTKGB4yyg/wBKoXFn5vMhk6cEADmnzBynBmIjtSxmSKVZIyVdTkEetdY+kQM2GnkH/ABVefQkCbobkytn7nlYI/WnzCsa3gG5JtLiFiA0cwkwewNbvjGy+1WUVwOi5RiPQ9643QJJtI1mN5IXWF/kkLDjHbNekDbdW/k+WzQOPT1pPe4I8vaGW3Ed8jBdnyyD+44P9f61r2WpPBcPd6bdxWk8ykPHKOCT1KtU+p2RsNQmtpxuVwC6kffXsw9x0/Ssm50uaNzLb5eEDogyB9e4/Gtb29CLEFxKQSZGWV3JO4HOef0qhIyST7GjJZBuyelTLbTTKyOzFs/L5SHP8qu2Vs32i3ieETHeP3OeZMHoT2pXHY3vCOmfZ1Fw5YSmIyuMcDOdo/IZ/EV1V3tithuOERR/KmWdt5EDeYwaaQ+ZKw6Z9B7dAB6AVmeJdQWLT5VVvnc7NoPQn/61Zt3ZaPNtSbfNI/8AfYn9a6W0SSOwhVjysYzj6Vzd+QD/ACqos0i/dlcfRqq7JOyYyAA84NMMzE49Otcr9sucYE7D6Gj7RdH/AJeH/Ondisj29NQuzkeYQvfjinCed2c9AcjPemxOgIOAueeMHn+lPjdOhIYAdO2PwrE6LDCZiqguxPXJyKasDsxBB57k8VcT512jBPpu60MhIOwr9PSi47EC256h84GM7qk8lwoZXAGOnWpi/O3AGBjnpTSrHAC4BPXn8KVwI/szYBMhzS/ZyzH5t3bjrT/KcAlmB52kmpkRgCVIYjjAOaLjsUXthyGwAD360z7KOADkfoav+WzOdwyB0xztpV25C89eOOtK4Gb9jUIOg54J5pjWgZfvJleuK2MBidxB44AxTmjQJkgYODxRcLGAbcOw6E9AD2qGS19euenYV0TQxyYOAPUVFLbAjgZ9cnPHtRcVjBa2AXBAJHfHWopLYhsuNpxnOOvtW8LaNAxC8N69qrtCDwM5LcZOM0gsYxtFIJ2j1PtUH2NVI2jDDpxmtwwNn5lGwe9RrCHkO8gAH1oCxmhI8/PCh454ByPpSJaIj77G8ntW/uI25PxVqvTRRIMJ8wHRv/rdqiNupUsG+QZAJ607tCaRBewX19CkN0LS88v7kgJikX8RxWS2lXsXMYuYgvcKHx+R/pWv5YHCod31604CYOSrsp9C1UptC5Ezn5bGSZxFd6xFAPSZJEIz9RitnStM0jTYWaPU7aa5YY3mVenoOeBVoyTEYkPmKOzAVFNZ2shxPZQMc/N8gp899xchPNILeEv58LoBuLLIG/E4rhdXvlu7kyMwWMcLnrj1rp/7G0xW/wCPU5OCQCQMUPoulbs/Y0z75P8AWlzBynmtw/mykqDtHTNRrGWbG39K9Lk0KwzhLdIyPTJqD+wIyRtijYegGDT50S4M8++zvkjb0p/2Zu5rvx4etW++ZI29Mbh+lQSeGInJ8q4U+zfL/OjnDkOvGAw3ZY8kDOCfqKeoXJIHzYA4FC75FC/MTn5VBOPypEeSJmw23PY84H40jQn2Erv2iNCcDjjPpT0HHDDdgEdyRVYS71G9zjPPWnGQMm8MUx8vBpDLbsucjlc4JPFOEkeMBueRjHJFQ4aNe6j6ZP0OOn40m3nr8pXd8vP60WC5a83KMUIK4xwOB6ChHBCAsVBb7xPSq4/e5IJBGAOeRT9gzsQ5YnGWGaVh3HiVRu+8e24gUMxZgIyWB9qib90+1mUoRn7pPP07UkpBJyu3nJIHaiwrk8bhZMKB1znOQRTjcAkgpls9j2qsc7kVdwBPy5XrSKAJCkMhbb/EoIx9aLDLbS5PJwew9PWkAyPkYkjr/wDWNVmaVA+/D5yMHuPamrv3Rh3BA5+9RYLlsgKP4nzyV70K4YFccKcDNMRXZdxVsnoRz/n6UqOvmAKpDEc84xQA6Nd/Ixtwep56ewqBLYRF2YbgV4KHg/WrLuoVg+T0+ZT1zSqU3DHTPyknH86AM+WCNWyg3Y5wAcU17dyFZEIbgHPWtNosv8pYp6dye9SMiNKzNGFIHZt2B+P+eaVwMd41ZeGYlTjDd/pSPAqMcKw2scg/1z3rSmR5JGIIwwwCO34Ux0kXcsi49eB0pgZlxDuUbVIXjgDp/jTEtWKHeh2jnd3P/wBatLySUwfvfw+/tTTb5ynKkHBBODmgDL+z4yQowTkknoPp6Uq24cEyME4yDj8qvyqThMKWyWJAyeO1MMSnLlHK5xyePzoEZ8sOQ3zHcBjO7qaRbfC8nJVv4eoHtV4RrtzwoHfHSm/u1OFIPb7oNMCi0Th+C3P3c9/yprJMDgyDIPQmr29T/CDkDIPTIpmA67dwJI7nGKLCuf/Z"/><figcaption><b>CarDD</b> · dent, scratch</figcaption></figure></div> |
| </div> |
|
|
| <div class="card"> |
| <h3>Datasets at a glance</h3> |
| <table> |
| <tr><th>Dataset</th><th>Role in ccdp</th><th>Size</th><th>Classes</th><th>Annotation</th><th>License</th></tr> |
| <tr><td><b>Stanford Cars</b><br><span class="kv">Krause et al. 2013</span></td> |
| <td>Make/model/year identifier</td><td class="mono">16,185 imgs</td> |
| <td class="mono">196 (make·model·year)</td><td>bbox + class (.mat devkit)</td><td>research / academic</td></tr> |
| <tr><td><b>CarDD</b><br><span class="kv">Wang et al. 2023</span></td> |
| <td>Damage classifier (A) + detector (B)</td><td class="mono">~4,000 imgs</td> |
| <td class="mono">6 damage types</td><td>COCO-format bbox + masks</td><td>academic (verify)</td></tr> |
| </table> |
| <p class="note"><b>These two are the only datasets trained on.</b> CarDD's 6 damage types: |
| <code>dent · scratch · crack · glass_shatter · lamp_broken · tire_flat</code>. (CarDD ships its labels in |
| <i>COCO format</i> — that's the file format, not the COCO dataset.) Full attributions in |
| the <a href="#cite">Citations</a> section.</p> |
| <p class="note"><b>Pretrained weights — not a training set:</b> the car gate uses torchvision's |
| <b>COCO-pretrained Mask R-CNN</b> (weights only), run at inference to find <code>car/truck/bus</code>. |
| Nothing in this project downloads or trains on the COCO dataset.</p> |
| </div> |
|
|
| <div class="grid2"> |
| <div class="card"> |
| <h3>Stanford Cars → identifier</h3> |
| <p>Class names and per-image boxes live in MATLAB <code>.mat</code> devkit files, read with |
| <code>scipy.io.loadmat</code>. Each car is cropped to its annotation box, then transformed. A deterministic |
| stratified 90/10 split makes train/val.</p> |
| </div> |
| <div class="card"> |
| <h3>CarDD → damage models</h3> |
| <p>COCO JSON (<code>instances_*2017.json</code>) is parsed into canonical <code>Record</code>s. Variant A |
| uses the whole image with a multi-label target; Variant B uses normalised YOLO boxes derived from the |
| COCO bboxes.</p> |
| </div> |
| </div> |
|
|
| <div class="card"> |
| <h3>The transform pipeline (training)</h3> |
| <canvas id="tformCanvas" height="150"></canvas> |
| <div class="legend" style="margin-top:6px"> |
| <span class="mono">Resize/RandomResizedCrop → RandAugment(2,9) → MixUp/CutMix → ToTensor → Normalize(μ,σ)</span> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="arch"> |
| <h2><span class="n">03</span> Network architecture</h2> |
| <p class="lead">The identifier and the Variant A damage classifier share the same skeleton: an ImageNet |
| <b>ResNet-50</b> backbone (<code>conv1 → layer1…layer4 → avgpool</code>) with the final fully-connected layer |
| replaced by a small custom head. The two-stage fine-tune controls which blocks receive gradients.</p> |
| <div class="card"><canvas id="archCanvas" height="360"></canvas></div> |
| <div class="grid2"> |
| <div class="card"> |
| <h3>Custom head — identifier (196 classes)</h3> |
| <div class="formula">Dropout(0.2) → <b>Linear(2048 → 512)</b> → ReLU → Dropout(0.3) → <b>Linear(512 → 196)</b> → Softmax</div> |
| <p class="note">The 2048-d vector after <code>avgpool</code> is also reused as a frozen feature extractor for |
| the XGBoost cost regressors.</p> |
| </div> |
| <div class="card"> |
| <h3>Custom head — damage classifier A (6 types)</h3> |
| <div class="formula">Dropout(0.3) → <b>Linear(2048 → 512)</b> → ReLU → Dropout(0.4) → <b>Linear(512 → 6)</b> → Sigmoid</div> |
| <p class="note">Multi-label: each damage type fires independently, so the output is a sigmoid per class, not a softmax.</p> |
| </div> |
| </div> |
| <div class="grid2"> |
| <div class="card"> |
| <h3>Variant B — YOLOv8 detector</h3> |
| <p class="lead">A single-stage detector: a CSP-Darknet backbone + PAN neck + a decoupled head predicts boxes, |
| objectness and the 6 damage classes in one pass. Trained on CarDD via Ultralytics.</p> |
| <canvas id="yoloCanvas" height="150"></canvas> |
| </div> |
| <div class="card"> |
| <h3>The car gate — COCO Mask R-CNN (ResNet-50-FPN)</h3> |
| <p class="lead">Same ResNet-50 family, wrapped in a Feature Pyramid Network + Region Proposal Network. Used |
| <b>only at inference</b> to find <code>car/truck/bus</code> — masks are ignored, the box is used to crop.</p> |
| <canvas id="maskCanvas" height="150"></canvas> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="act"> |
| <h2><span class="n">04</span> Activation functions</h2> |
| <p class="lead">Four non-linearities appear across the models. Hover a plot to read its value.</p> |
| <div class="grid2"> |
| <div class="card"><h3><span class="pill relu">ReLU</span> hidden layers (ResNet + heads)</h3> |
| <canvas id="reluCanvas" height="190"></canvas> |
| <div class="formula">f(x) = max(0, x)</div></div> |
| <div class="card"><h3><span class="pill sig">Sigmoid</span> Variant A multi-label output</h3> |
| <canvas id="sigCanvas" height="190"></canvas> |
| <div class="formula">σ(x) = 1 / (1 + e<sup>−x</sup>)</div></div> |
| <div class="card"><h3><span class="pill soft">Softmax</span> identifier output (196-way)</h3> |
| <canvas id="softCanvas" height="190"></canvas> |
| <div class="formula">softmax(x)<sub>i</sub> = e<sup>x<sub>i</sub></sup> / Σ<sub>j</sub> e<sup>x<sub>j</sub></sup></div></div> |
| <div class="card"><h3><span class="pill silu">SiLU</span> YOLOv8 detector (internal)</h3> |
| <canvas id="siluCanvas" height="190"></canvas> |
| <div class="formula">silu(x) = x · σ(x)</div></div> |
| </div> |
| </section> |
|
|
| |
| <section id="train"> |
| <h2><span class="n">05</span> How the model is trained</h2> |
| <p class="lead">The CNNs use a <b>two-stage transfer-learning</b> recipe; YOLOv8 trains end-to-end via Ultralytics. |
| Below: the freeze schedule, optimisers, and the augmentation that fights overfitting on small datasets.</p> |
| <div class="card"><canvas id="stageCanvas" height="220"></canvas></div> |
| <div class="grid3"> |
| <div class="card"><h3>Optimisers</h3> |
| <p class="kv">Identifier / classifier (A)</p><p><b>AdamW</b>, lr 1e-3 → 1e-4, wd 1e-4, <code>ReduceLROnPlateau</code></p> |
| <p class="kv">Detector (B)</p><p>Ultralytics <b>SGD/AdamW</b> auto, cosine LR, mosaic aug</p></div> |
| <div class="card"><h3>Regularisation</h3> |
| <p>Dropout (0.2–0.4), weight decay, label smoothing 0.1, gradient clipping (‖g‖ ≤ 5.0), early stopping on val metric.</p></div> |
| <div class="card"><h3>Augmentation</h3> |
| <p><b>RandAugment</b>(2 ops, mag 9), <b>MixUp</b>(α=0.2) & <b>CutMix</b>(α=1.0) per-batch with probability 0.8 — |
| targets become soft labels.</p></div> |
| </div> |
| <div class="card"> |
| <h3>MixUp / CutMix — what the network actually sees</h3> |
| <canvas id="mixCanvas" height="170"></canvas> |
| <p class="note">Two images and their labels are blended (MixUp) or one is pasted into the other (CutMix); the loss |
| is computed against the mixed soft target — which is why training uses a soft cross-entropy.</p> |
| </div> |
| </section> |
|
|
| |
| <section id="backprop"> |
| <h2><span class="n">06</span> Backpropagation logic</h2> |
| <p class="lead">PyTorch autograd records the forward graph; <code>loss.backward()</code> walks it in reverse, |
| multiplying local gradients via the chain rule. Frozen blocks (Stage 1) get no gradient; gradients are clipped |
| and applied by the optimiser.</p> |
| <div class="card"><canvas id="bpCanvas" height="300"></canvas></div> |
| <div class="grid2"> |
| <div class="card"><h3>The chain rule, per layer</h3> |
| <div class="formula">∂L/∂W<sub>k</sub> = ∂L/∂a<sub>out</sub> · <b>∏</b> (∂a<sub>i+1</sub>/∂a<sub>i</sub>) · ∂a<sub>k</sub>/∂W<sub>k</sub></div> |
| <p class="note">Stage 1 freezes <code>layer1…layer4</code> (requires_grad=False) so the product stops at the head. |
| Stage 2 unfreezes <code>layer3</code>+<code>layer4</code> and gradients flow deeper.</p></div> |
| <div class="card"><h3>Stabilisers in the loop</h3> |
| <table> |
| <tr><th>Step</th><th>Call</th></tr> |
| <tr><td>Zero grads</td><td class="mono">optimizer.zero_grad()</td></tr> |
| <tr><td>Backward</td><td class="mono">loss.backward()</td></tr> |
| <tr><td>Clip</td><td class="mono">clip_grad_norm_(…, 5.0)</td></tr> |
| <tr><td>Step</td><td class="mono">optimizer.step()</td></tr> |
| <tr><td>Schedule</td><td class="mono">scheduler.step(val_loss)</td></tr> |
| </table></div> |
| </div> |
| </section> |
|
|
| |
| <section id="loss"> |
| <h2><span class="n">07</span> Loss / error functions</h2> |
| <p class="lead">Each task minimises a different objective. The plots show how loss grows as the prediction drifts |
| from the truth.</p> |
| <div class="grid2"> |
| <div class="card"><h3>Identifier — Cross-Entropy (+ label smoothing)</h3> |
| <div class="formula">L = − <b>Σ</b><sub>c</sub> y<sub>c</sub> · log( softmax(x)<sub>c</sub> )</div> |
| <canvas id="ceCanvas" height="170"></canvas></div> |
| <div class="card"><h3>Damage classifier A — Binary Cross-Entropy</h3> |
| <div class="formula">L = − <b>Σ</b><sub>c</sub> [ y<sub>c</sub> log σ(x<sub>c</sub>) + (1−y<sub>c</sub>) log(1−σ(x<sub>c</sub>)) ]</div> |
| <canvas id="bceCanvas" height="170"></canvas></div> |
| </div> |
| <div class="grid2"> |
| <div class="card"><h3>Detector B — YOLOv8 multi-part loss</h3> |
| <div class="formula">L = λ<sub>box</sub>·L<sub>CIoU</sub> + λ<sub>cls</sub>·L<sub>BCE-cls</sub> + λ<sub>dfl</sub>·L<sub>DFL</sub></div> |
| <p class="note">Box regression uses Complete-IoU, classification uses BCE per class, and distribution focal loss |
| sharpens box edges. Ultralytics sums them per image.</p></div> |
| <div class="card"><h3>XGBoost cost — squared error</h3> |
| <div class="formula">L = <b>Σ</b><sub>i</sub> ( ŷ<sub>i</sub> − y<sub>i</sub> )² · <span class="muted">objective = reg:squarederror</span></div> |
| <p class="note">The target is a synthetic, catalog-derived repair cost; the booster fits residuals stage by stage |
| with early stopping on validation RMSE.</p></div> |
| </div> |
| </section> |
|
|
| |
| <section id="acc"> |
| <h2><span class="n">08</span> How accuracy is measured</h2> |
| <p class="lead">Different heads need different metrics. These are the production numbers reported in the repo.</p> |
| <div class="card"><canvas id="metricCanvas" height="300"></canvas></div> |
| <table> |
| <tr><th>Model</th><th>Metric</th><th>Why this metric</th><th>Value</th></tr> |
| <tr><td>Make/model identifier</td><td>Top-1 accuracy</td><td>single correct class out of 196</td><td class="mono">77.0%</td></tr> |
| <tr><td>Damage classifier (A)</td><td>Macro-F1</td><td>multi-label, class-imbalanced</td><td class="mono">0.834</td></tr> |
| <tr><td>Damage detector (B)</td><td>mAP@50 / @50-95</td><td>localisation quality</td><td class="mono">0.687 / 0.540</td></tr> |
| <tr><td>Cost regressor XGBoost(A)</td><td>R² · MAPE</td><td>regression fit & % error</td><td class="mono">0.642 · 32.9%</td></tr> |
| <tr><td>Cost regressor XGBoost(B)</td><td>R² · MAPE</td><td>+ bbox features</td><td class="mono">0.736 · 24.4%</td></tr> |
| </table> |
| <div class="note">Macro-F1 = mean over classes of F1 = 2·P·R/(P+R). mAP = area under precision–recall averaged over IoU |
| thresholds. R² = 1 − SS<sub>res</sub>/SS<sub>tot</sub>. MAPE = mean(|ŷ−y| / |y|).</div> |
| </section> |
|
|
| |
| <section id="out"> |
| <h2><span class="n">09</span> The final output & how the image is shown</h2> |
| <p class="lead">The Gradio app returns an <b>annotated image</b> plus structured text. The original photo is redrawn |
| with a green car-box (from the gate) and coloured damage boxes (Variant B); a JSON blob carries full |
| provenance. The boxes below draw in sequence to mirror how the result is assembled.</p> |
| <div class="grid2"> |
| <div class="card"> |
| <h3>Annotated image (animated)</h3> |
| <canvas id="outCanvas" height="300"></canvas> |
| <div class="legend" style="margin-top:6px"> |
| <span><i class="sw" style="background:#00c800"></i>car box (gate)</span> |
| <span><i class="sw" style="background:#ff6347"></i>dent</span> |
| <span><i class="sw" style="background:#ffd700"></i>scratch</span> |
| <span><i class="sw" style="background:#1e90ff"></i>glass</span> |
| </div> |
| </div> |
| <div class="card"> |
| <h3>Returned payload</h3> |
| <div class="formula" style="white-space:pre">{ |
| "car_check": { "label": "car", "score": 0.99 }, |
| "identified": { "make": "audi", "model": "tts", |
| "year": 2012, "confidence": 0.51 }, |
| "variant_b": { |
| "damage_types": ["dent","scratch"], |
| "parts": ["front_bumper","hood"], |
| "detections": [ {"damage_type":"dent","confidence":0.88}, … ] |
| }, |
| "cost_usd": 1284.0, |
| "cost": 107312.0, "currency": "INR", |
| "tier": "exact", |
| "provenance": "xgb_b(exact); calibrated to …" |
| }</div> |
| <p class="note">If the identifier's confidence is below the 0.30 floor, <code>make</code> becomes |
| <code>null</code> and the cost falls back to body-type/segment pricing instead of a wrong label.</p> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="cite"> |
| <h2><span class="n">10</span> Citations & credits</h2> |
| <p class="lead">This project is built entirely on others' datasets and tools. Full credit to the sources below; |
| the project's <code>CITATIONS.md</code> carries the complete list and license notes.</p> |
|
|
| <h3>Datasets</h3> |
| <div class="cite"><b>Stanford Cars</b> — Krause, J., Stark, M., Deng, J., & Fei-Fei, L. (2013). |
| <i>3D Object Representations for Fine-Grained Categorization.</i> 4th IEEE Workshop on 3D Representation and |
| Recognition (3dRR-13), Sydney, Australia. |
| <a href="https://ai.stanford.edu/~jkrause/cars/car_dataset.html">stanford.edu/cars</a> · |
| mirror: <a href="https://www.kaggle.com/datasets/eduardo4jesus/stanford-cars-dataset">Kaggle</a>. License: research/academic use.</div> |
| <div class="cite"><b>CarDD: A New Dataset for Vision-Based Car Damage Detection</b> — Wang, X., Li, W., & Pan, Z. |
| (2023). <i>IEEE Transactions on Intelligent Transportation Systems, 24(7), 7202–7214.</i> |
| <a href="https://doi.org/10.1109/TITS.2023.3258480">doi:10.1109/TITS.2023.3258480</a> · |
| mirror: <a href="https://www.kaggle.com/datasets/nasimetemadi/car-damage-detection">Kaggle</a>. License: academic research.</div> |
| <div class="cite"><b>COCO</b> (gate weights) — Lin, T.-Y., et al. (2014). <i>Microsoft COCO: Common Objects in |
| Context.</i> ECCV. <a href="https://cocodataset.org">cocodataset.org</a>. Images CC BY 4.0.</div> |
|
|
| <h3>Models & frameworks</h3> |
| <div class="cite"><b>Mask R-CNN</b> — He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). <i>Mask R-CNN.</i> ICCV. |
| (Car-presence gate, via torchvision COCO weights.)</div> |
| <div class="cite"><b>Deep Residual Learning (ResNet)</b> — He, K., Zhang, X., Ren, S., & Sun, J. (2016). |
| <i>Deep Residual Learning for Image Recognition.</i> CVPR. (Identifier + Variant A backbone.)</div> |
| <div class="cite"><b>YOLOv8 / Ultralytics</b> — Jocher, G., Chaurasia, A., & Qiu, J. (2023). <i>Ultralytics YOLOv8.</i> |
| <a href="https://github.com/ultralytics/ultralytics">github.com/ultralytics</a>. (Variant B detector.)</div> |
| <div class="cite"><b>XGBoost</b> — Chen, T., & Guestrin, C. (2016). <i>XGBoost: A Scalable Tree Boosting System.</i> |
| KDD. (Cost regressors A/B.)</div> |
| <div class="cite"><b>PyTorch / torchvision</b> — Paszke, A., et al. (2019). <i>PyTorch: An Imperative Style, |
| High-Performance Deep Learning Library.</i> NeurIPS.</div> |
| </section> |
|
|
| </main> |
|
|
| <footer> |
| Generated explainer for <b>Car Crash Fix Amount Predictor (ccdp)</b>, build <code>checkpoint-16</code>. Open |
| <code>docs/network-architecture.html</code> in any browser — no build step. Numbers reflect the repo's reported |
| production metrics; cost targets are synthetic (catalog-derived), so estimates are indicative, not insurable quotes. |
| Sample thumbnails are low-res excerpts of the cited datasets, shown for documentation under academic use. |
| </footer> |
|
|
| <script> |
| |
| function setup(id){ |
| const c=document.getElementById(id); if(!c) return null; |
| const dpr=Math.max(1,window.devicePixelRatio||1); |
| const w=c.clientWidth||c.parentElement.clientWidth, h=c.height/(c._dpr||dpr); |
| c._dpr=dpr; c._w=w; c._h=h; c.width=w*dpr; c.height=h*dpr; c.style.height=h+'px'; |
| const x=c.getContext('2d'); x.scale(dpr,dpr); x._w=w; x._h=h; return x; |
| } |
| function ctxOf(id){const c=document.getElementById(id);if(!c)return null; |
| const dpr=Math.max(1,window.devicePixelRatio||1);const w=c.clientWidth||c.parentElement.clientWidth,h=c.height; |
| c.width=w*dpr;c.height=h*dpr;c.style.height=h+'px';const x=c.getContext('2d');x.scale(dpr,dpr);x._w=w;x._h=h;return x;} |
| const F='13px ui-monospace,Menlo,monospace'; |
| function rrect(x,X,Y,W,H,r){x.beginPath();x.moveTo(X+r,Y);x.arcTo(X+W,Y,X+W,Y+H,r); |
| x.arcTo(X+W,Y+H,X,Y+H,r);x.arcTo(X,Y+H,X,Y,r);x.arcTo(X,Y,X+W,Y,r);x.closePath();} |
| function box(x,X,Y,W,H,fill,stroke,label,sub,tcol,lw){ |
| rrect(x,X,Y,W,H,9);x.fillStyle=fill;x.fill();x.lineWidth=lw||1.5;x.strokeStyle=stroke;x.stroke(); |
| x.fillStyle=tcol||'#e6edf6';x.font='600 13px system-ui';x.textAlign='center'; |
| x.fillText(label,X+W/2,Y+(sub?H/2-2:H/2+4)); |
| if(sub){x.fillStyle='#93a3bd';x.font='11px ui-monospace,monospace';x.fillText(sub,X+W/2,Y+H/2+14);} |
| x.textAlign='left'; |
| } |
| function arrow(x,x1,y1,x2,y2,col){ |
| x.strokeStyle=col||'#3a4a6b';x.fillStyle=col||'#3a4a6b';x.lineWidth=2; |
| x.beginPath();x.moveTo(x1,y1);x.lineTo(x2,y2);x.stroke(); |
| const a=Math.atan2(y2-y1,x2-x1); |
| x.beginPath();x.moveTo(x2,y2);x.lineTo(x2-9*Math.cos(a-.4),y2-9*Math.sin(a-.4)); |
| x.lineTo(x2-9*Math.cos(a+.4),y2-9*Math.sin(a+.4));x.closePath();x.fill(); |
| } |
| |
| |
| (function(){ |
| const id='flowCanvas';const c=document.getElementById(id);if(!c)return; |
| let W=0,H=430,nodes=[],edges=[]; |
| function layout(){ |
| W=c.clientWidth; |
| nodes=[ |
| {id:'in', x:W/2-120,y:12, w:240,h:40, t:'📷 Input photo', s:'preprocess · EXIF · resize', f:'#1a2336',st:'#3a4a6b',tc:'#e6edf6'}, |
| {id:'gate',x:W/2-120,y:74,w:240,h:42, t:'Car gate', s:'COCO Mask R-CNN → box', f:'#10243a',st:'#5cc8ff',tc:'#cfeaff'}, |
| {id:'idn', x:40, y:150,w:250,h:46, t:'Make/model identifier', s:'ResNet-50 → 196 softmax', f:'#181f33',st:'#b692ff',tc:'#e7dcff'}, |
| {id:'dmg', x:W-290, y:150,w:250,h:46, t:'Damage model', s:'A: ResNet-50 · B: YOLOv8', f:'#10243a',st:'#5cc8ff',tc:'#cfeaff'}, |
| {id:'feat',x:40, y:214,w:250,h:40, t:'2048-d image features', s:'shared ResNet embedding', f:'#141a28',st:'#2a3550',tc:'#e6edf6'}, |
| {id:'reg', x:W-290, y:214,w:250,h:40, t:'region stats', s:'bbox area % · counts', f:'#141a28',st:'#2a3550',tc:'#e6edf6'}, |
| {id:'xgb', x:W/2-150,y:300,w:300,h:46,t:'XGBoost cost regressor', s:'feats + tabular + region → cost', f:'#10261c',st:'#3fd07f',tc:'#cdf6e0'}, |
| {id:'out', x:W/2-150,y:362,w:300,h:40,t:'Calibrator → FX → Cost (USD / INR)', s:'catalog-relative price', f:'#1a2336',st:'#3a4a6b',tc:'#e6edf6'}, |
| ]; |
| const N=Object.fromEntries(nodes.map(n=>[n.id,n])); |
| const mid=n=>({x:n.x+n.w/2,y:n.y});const bot=n=>({x:n.x+n.w/2,y:n.y+n.h}); |
| edges=[ |
| [bot(N.in),mid(N.gate),'#5cc8ff'], |
| [{x:N.gate.x+N.gate.w/2-30,y:N.gate.y+N.gate.h},{x:N.idn.x+120,y:N.idn.y},'#b692ff'], |
| [{x:N.gate.x+N.gate.w/2+30,y:N.gate.y+N.gate.h},{x:N.dmg.x+130,y:N.dmg.y},'#5cc8ff'], |
| [bot(N.idn),mid(N.feat),'#3a4a6b'], |
| [bot(N.dmg),mid(N.reg),'#3a4a6b'], |
| [{x:N.feat.x+N.feat.w/2,y:N.feat.y+N.feat.h},{x:N.xgb.x+60,y:N.xgb.y},'#3fd07f'], |
| [{x:N.reg.x+N.reg.w/2,y:N.reg.y+N.reg.h},{x:N.xgb.x+N.xgb.w-60,y:N.xgb.y},'#3fd07f'], |
| [bot(N.xgb),mid(N.out),'#3a4a6b'], |
| ]; |
| } |
| const x=setup(id);layout(); |
| let t0=performance.now(); |
| function frame(now){ |
| const X=setup(id);if(!X)return; layout(); |
| const T=(now-t0)/1000; |
| X.clearRect(0,0,W,H); |
| |
| edges.forEach(e=>{X.strokeStyle='#2a3550';X.lineWidth=2; |
| X.beginPath();X.moveTo(e[0].x,e[0].y);X.lineTo(e[1].x,e[1].y);X.stroke(); |
| arrow(X,e[0].x,e[0].y,e[1].x,e[1].y,'#2a3550');}); |
| |
| nodes.forEach((n,i)=>{const pulse=0.5+0.5*Math.sin(T*1.6 - i*0.5); |
| X.save();X.shadowColor=n.st;X.shadowBlur=4+8*pulse; |
| box(X,n.x,n.y,n.w,n.h,n.f,n.st,n.t,n.s,n.tc, 1.5+1.2*pulse);X.restore();}); |
| |
| edges.forEach((e,i)=>{const p=((T*0.6)+(i*0.12))%1; |
| const px=e[0].x+(e[1].x-e[0].x)*p, py=e[0].y+(e[1].y-e[0].y)*p; |
| X.fillStyle=e[2];X.shadowColor=e[2];X.shadowBlur=10; |
| X.beginPath();X.arc(px,py,4,0,7);X.fill();X.shadowBlur=0;}); |
| requestAnimationFrame(frame); |
| } |
| requestAnimationFrame(frame); |
| })(); |
| |
| |
| (function(){const x=ctxOf('tformCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,150); |
| const steps=[['Resize','224×224'],['RandAugment','2 ops · m9'],['MixUp/CutMix','α .2 / 1.0'], |
| ['ToTensor','0–1 float'],['Normalize','μ,σ ImageNet']]; |
| const n=steps.length, gap=14, bw=(W-(n-1)*gap-20)/n; |
| steps.forEach((s,i)=>{const X=10+i*(bw+gap); |
| box(x,X,40,bw,60,'#141a28', i%2?'#5cc8ff':'#b692ff', s[0], s[1]); |
| if(i<n-1)arrow(x,X+bw,70,X+bw+gap,70);}); |
| })(); |
| |
| |
| (function(){const x=ctxOf('archCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,360); |
| const blocks=[['conv1','7×7,64'],['layer1','×3'],['layer2','×4'],['layer3','×6'],['layer4','×3'],['avgpool','2048-d']]; |
| const n=blocks.length, gap=12, bw=(W-(n-1)*gap-40)/n, Y=60, H=70; |
| x.fillStyle='rgba(92,200,255,.06)';rrect(x,20,Y-22,W-40,H+44,10);x.fill(); |
| blocks.forEach((b,i)=>{const X=20+i*(bw+gap);const frozen=i<3; |
| box(x,X,Y,bw,H, frozen?'#161d2b':'#10243a', frozen?'#3a4a6b':'#5cc8ff', b[0], b[1], frozen?'#9fb0cc':'#cfeaff'); |
| if(i<n-1)arrow(x,X+bw,Y+H/2,X+bw+gap,Y+H/2);}); |
| x.fillStyle='#93a3bd';x.font=F; |
| x.fillText('ImageNet ResNet-50 backbone — grey = frozen in Stage 1 · blue (layer3/4) unfreezes in Stage 2',24,Y-30); |
| const hy=200; |
| box(x,W/2-260,hy,120,46,'#1c1730','#b692ff','Dropout','p=0.2/0.3','#e7dcff'); |
| box(x,W/2-130,hy,120,46,'#1c1730','#b692ff','Linear','2048→512','#e7dcff'); |
| box(x,W/2,hy,90,46,'#10243a','#5cc8ff','ReLU','','#cfeaff'); |
| box(x,W/2+100,hy,150,46,'#1c1730','#b692ff','Linear','512→196 / 6','#e7dcff'); |
| arrow(x,W/2-140,hy+23,W/2-130,hy+23);arrow(x,W/2-10,hy+23,W/2,hy+23);arrow(x,W/2+90,hy+23,W/2+100,hy+23); |
| arrow(x,W/2,Y+H,W/2-200,hy,'#b692ff'); |
| x.fillStyle='#93a3bd';x.fillText('custom classification head (replaces ResNet fc)',W/2-260,hy+78); |
| })(); |
| |
| |
| (function(){const x=ctxOf('yoloCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,150); |
| const s=[['Backbone','CSP-Darknet'],['Neck','PAN-FPN'],['Head','box·obj·cls']]; |
| const n=s.length,gap=16,bw=(W-(n-1)*gap-20)/n; |
| s.forEach((b,i)=>{const X=10+i*(bw+gap);box(x,X,45,bw,55,'#10243a','#5cc8ff',b[0],b[1],'#cfeaff'); |
| if(i<n-1)arrow(x,X+bw,72,X+bw+gap,72);}); |
| x.fillStyle='#93a3bd';x.font=F;x.fillText('single pass · 6 damage classes',12,128); |
| })(); |
| (function(){const x=ctxOf('maskCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,150); |
| const s=[['ResNet-50','backbone'],['FPN','pyramid'],['RPN+heads','car box']]; |
| const n=s.length,gap=16,bw=(W-(n-1)*gap-20)/n; |
| s.forEach((b,i)=>{const X=10+i*(bw+gap);box(x,X,45,bw,55,'#10243a','#5cc8ff',b[0],b[1],'#cfeaff'); |
| if(i<n-1)arrow(x,X+bw,72,X+bw+gap,72);}); |
| x.fillStyle='#93a3bd';x.font=F;x.fillText('inference only · masks ignored · uses car/truck/bus',12,128); |
| })(); |
| |
| |
| function plot(id,f,dom,rng,col){const x=ctxOf(id);if(!x)return;const W=x._w,H=x._h; |
| let hov=null;const c=document.getElementById(id); |
| function draw(){x.clearRect(0,0,W,H);const pad=28; |
| const X=v=>pad+(v-dom[0])/(dom[1]-dom[0])*(W-2*pad); |
| const Y=v=>H-pad-(v-rng[0])/(rng[1]-rng[0])*(H-2*pad); |
| x.strokeStyle='#243049';x.lineWidth=1; |
| x.beginPath();x.moveTo(pad,Y(0));x.lineTo(W-pad,Y(0));x.stroke(); |
| if(dom[0]<0&&dom[1]>0){x.beginPath();x.moveTo(X(0),pad);x.lineTo(X(0),H-pad);x.stroke();} |
| x.strokeStyle=col;x.lineWidth=2.5;x.beginPath(); |
| for(let i=0;i<=160;i++){const v=dom[0]+i/160*(dom[1]-dom[0]);const y=f(v); |
| i?x.lineTo(X(v),Y(y)):x.moveTo(X(v),Y(y));}x.stroke(); |
| if(hov!=null){const v=dom[0]+hov*(dom[1]-dom[0]);const y=f(v); |
| x.fillStyle=col;x.beginPath();x.arc(X(v),Y(y),4,0,7);x.fill(); |
| x.fillStyle='#e6edf6';x.font=F;x.fillText('f('+v.toFixed(2)+') = '+y.toFixed(3),pad+4,pad+4);} |
| } |
| c.onmousemove=e=>{const r=c.getBoundingClientRect();hov=(e.clientX-r.left)/r.width;draw();}; |
| c.onmouseleave=()=>{hov=null;draw();};draw(); |
| } |
| plot('reluCanvas',v=>Math.max(0,v),[-4,4],[-.5,4],'#5cc8ff'); |
| plot('sigCanvas',v=>1/(1+Math.exp(-v)),[-6,6],[0,1],'#7dffc0'); |
| plot('siluCanvas',v=>v/(1+Math.exp(-v)),[-6,6],[-.5,6],'#ffd166'); |
| (function(){const x=ctxOf('softCanvas');if(!x)return;const W=x._w,H=x._h; |
| const logits=[2.1,0.4,1.6,-0.8,0.9];const ex=logits.map(Math.exp);const s=ex.reduce((a,b)=>a+b); |
| const p=ex.map(v=>v/s);const n=p.length,gap=16,bw=(W-40-(n-1)*gap)/n;x.clearRect(0,0,W,H); |
| p.forEach((v,i)=>{const X=20+i*(bw+gap),h=v*(H-50); |
| x.fillStyle='#b692ff';rrect(x,X,H-25-h,bw,h,5);x.fill(); |
| x.fillStyle='#93a3bd';x.font=F;x.textAlign='center'; |
| x.fillText((v*100).toFixed(0)+'%',X+bw/2,H-25-h-6);x.fillText('c'+(i+1),X+bw/2,H-8);});x.textAlign='left'; |
| })(); |
| |
| |
| (function(){const x=ctxOf('stageCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,220); |
| function row(y,title,froz,note){x.fillStyle='#e6edf6';x.font='600 13px system-ui';x.fillText(title,10,y-8); |
| const parts=['conv1','layer1','layer2','layer3','layer4','head'];const bw=(W-40-5*8)/6; |
| parts.forEach((p,i)=>{const X=10+i*(bw+8);const train=!froz[i]; |
| box(x,X,y,bw,40, train?'#10243a':'#161d2b', train?'#5cc8ff':'#3a4a6b', p, train?'train ✓':'frozen', train?'#cfeaff':'#8a99b5');}); |
| x.fillStyle='#93a3bd';x.font='12px ui-monospace,monospace';x.fillText(note,10,y+58);} |
| row(40,'Stage 1 — warm-up head',[1,1,1,1,1,0],'backbone frozen · only the new head learns · lr 1e-3'); |
| row(130,'Stage 2 — fine-tune',[1,1,1,0,0,0],'unfreeze layer3 + layer4 + head · lower lr 1e-4'); |
| })(); |
| |
| |
| (function(){const x=ctxOf('mixCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,170); |
| function img(X,col,lbl){rrect(x,X,30,90,90,8);x.fillStyle=col;x.fill(); |
| x.fillStyle='#0c1018';x.font='600 12px system-ui';x.textAlign='center';x.fillText(lbl,X+45,80);x.textAlign='left';} |
| img(20,'#5cc8ff','car A');img(140,'#b692ff','car B'); |
| x.fillStyle='#93a3bd';x.font='22px system-ui';x.fillText('+',135,82); |
| arrow(x,235,75,300,75); |
| rrect(x,310,30,90,90,8);x.fillStyle='#7d9fde';x.fill();x.fillStyle='#0c1018';x.font='600 11px system-ui'; |
| x.textAlign='center';x.fillText('MixUp',355,72);x.fillText('0.7·A+0.3·B',355,88);x.textAlign='left'; |
| rrect(x,420,30,90,90,8);x.fillStyle='#5cc8ff';x.fill();x.fillStyle='#b692ff';rrect(x,455,55,45,45,4);x.fill(); |
| x.fillStyle='#0c1018';x.font='600 11px system-ui';x.textAlign='center';x.fillText('CutMix',465,128);x.textAlign='left'; |
| x.fillStyle='#93a3bd';x.font=F;x.fillText('soft target y = 0.7·y_A + 0.3·y_B → soft cross-entropy loss',310,150); |
| })(); |
| |
| |
| (function(){const x=ctxOf('bpCanvas');if(!x)return;const W=x._w;x.clearRect(0,0,W,300); |
| const L=['input','conv','layer3/4','head','loss'];const n=L.length,gap=(W-40-5*90)/4,bw=90,Y=70; |
| L.forEach((l,i)=>{const X=20+i*(bw+gap);box(x,X,Y,bw,50,'#141a28','#2a3550',l,''); |
| if(i<n-1)arrow(x,X+bw,Y+20,X+bw+gap,Y+20,'#5cc8ff');}); |
| x.fillStyle='#5cc8ff';x.font='600 13px system-ui';x.fillText('forward → activations',20,Y-14); |
| const Yb=180; |
| L.forEach((l,i)=>{if(i>0)arrow(x,20+i*(bw+gap),Yb+20, 20+(i-1)*(bw+gap)+bw, Yb+20,'#ff7b72');}); |
| x.fillStyle='#ff7b72';x.font='600 13px system-ui';x.fillText('backward ← ∂L/∂W via chain rule',20,Yb-14); |
| L.forEach((l,i)=>{const X=20+i*(bw+gap);const froz=i<2; |
| box(x,X,Yb,bw,50, froz?'#161d2b':'#2a1620', froz?'#3a4a6b':'#ff7b72', froz?'no grad':'∂L/∂W', froz?'frozen':'update', froz?'#8a99b5':'#ffd0cc');}); |
| x.fillStyle='#93a3bd';x.font=F;x.fillText('frozen blocks receive no gradient (Stage 1) — grad clipped to ‖g‖≤5, then optimiser.step()',20,Yb+78); |
| })(); |
| |
| |
| function lossPlot(id,f,col,lbl){const x=ctxOf(id);if(!x)return;const W=x._w,H=x._h,pad=30; |
| x.clearRect(0,0,W,H);const X=v=>pad+v*(W-2*pad);const Y=v=>H-pad-Math.min(v,5)/5*(H-2*pad); |
| x.strokeStyle='#243049';x.beginPath();x.moveTo(pad,pad);x.lineTo(pad,H-pad);x.lineTo(W-pad,H-pad);x.stroke(); |
| x.strokeStyle=col;x.lineWidth=2.5;x.beginPath(); |
| for(let i=0;i<=120;i++){const p=0.001+i/120*0.997;const y=f(p);i?x.lineTo(X(p),Y(y)):x.moveTo(X(p),Y(y));}x.stroke(); |
| x.fillStyle='#93a3bd';x.font=F;x.fillText(lbl,pad+4,pad+12);x.fillText('pred prob for true class →',pad+4,H-10);} |
| lossPlot('ceCanvas',p=>-Math.log(p),'#b692ff','−log(p): loss explodes as p→0'); |
| lossPlot('bceCanvas',p=>-Math.log(p),'#7dffc0','per-class log loss (y=1 shown)'); |
| |
| |
| (function(){const x=ctxOf('metricCanvas');if(!x)return;const W=x._w,H=x._h;x.clearRect(0,0,W,H); |
| const d=[['Identifier top-1',0.77,'#b692ff'],['Classifier macroF1',0.834,'#7dffc0'], |
| ['Detector mAP@50',0.687,'#5cc8ff'],['XGBoost(A) R²',0.642,'#ffd166'],['XGBoost(B) R²',0.736,'#3fd07f']]; |
| const n=d.length,gap=24,bw=(W-60-(n-1)*gap)/n,base=H-40; |
| d.forEach((m,i)=>{const X=30+i*(bw+gap),h=m[1]*(H-80); |
| x.fillStyle=m[2];rrect(x,X,base-h,bw,h,6);x.fill(); |
| x.fillStyle='#e6edf6';x.font='600 14px ui-monospace,monospace';x.textAlign='center'; |
| x.fillText(m[1].toFixed(3),X+bw/2,base-h-8); |
| x.fillStyle='#93a3bd';x.font='11.5px system-ui'; |
| m[0].split(' ').forEach((w,k)=>x.fillText(w,X+bw/2,base+16+k*13));});x.textAlign='left'; |
| })(); |
| |
| |
| (function(){const id='outCanvas';const c=document.getElementById(id);if(!c)return; |
| const dmgs=[['#00c800',0.15,0.26,0.70,0.56,'car 99%',1], |
| ['#ff6347',0.20,0.58,0.16,0.12,'dent 88%',1], |
| ['#ffd700',0.55,0.40,0.14,0.10,'scratch 74%',1], |
| ['#1e90ff',0.40,0.32,0.12,0.08,'glass 81%',1]]; |
| let t0=performance.now(); |
| function frame(now){const x=ctxOf(id);if(!x)return;const W=x._w,H=x._h;const T=(now-t0)/1000; |
| x.clearRect(0,0,W,H); |
| rrect(x,10,10,W-20,H-20,10);x.fillStyle='#1b2740';x.fill(); |
| x.fillStyle='#2a3a5c';rrect(x,W*0.18,H*0.45,W*0.64,H*0.32,16);x.fill(); |
| x.fillStyle='#22304e';rrect(x,W*0.30,H*0.30,W*0.40,H*0.22,10);x.fill(); |
| x.fillStyle='#0c1018';x.beginPath();x.arc(W*0.30,H*0.78,18,0,7);x.fill(); |
| x.beginPath();x.arc(W*0.70,H*0.78,18,0,7);x.fill(); |
| |
| const cycle=(T%5); |
| dmgs.forEach((d,i)=>{const appear=i*0.9; if(cycle<appear)return; |
| const a=Math.min(1,(cycle-appear)/0.5); |
| x.globalAlpha=a;x.strokeStyle=d[0];x.lineWidth=i?2.5:3; |
| x.strokeRect(W*d[1],H*d[2],W*d[3],H*d[4]); |
| x.fillStyle=d[0];x.font='600 11px system-ui'; |
| const tw=x.measureText(d[5]).width+10;x.fillRect(W*d[1],H*d[2]-16,tw,16); |
| x.fillStyle='#04210b';x.fillText(d[5],W*d[1]+5,H*d[2]-4);x.globalAlpha=1;}); |
| requestAnimationFrame(frame); |
| } |
| requestAnimationFrame(frame); |
| })(); |
| </script> |
| </body> |
| </html> |
|
|