Spaces:
Running
Running
info dots added for inference config, shdes removed from KPIs
Browse files- frontend/vehicles.html +30 -55
frontend/vehicles.html
CHANGED
|
@@ -142,7 +142,7 @@
|
|
| 142 |
}
|
| 143 |
|
| 144 |
.shadow-sm {
|
| 145 |
-
box-shadow:
|
| 146 |
}
|
| 147 |
|
| 148 |
/* Controls */
|
|
@@ -243,9 +243,8 @@
|
|
| 243 |
}
|
| 244 |
|
| 245 |
.s-row.disabled {
|
| 246 |
-
opacity: 0.
|
| 247 |
pointer-events: none !important;
|
| 248 |
-
filter: grayscale(1);
|
| 249 |
}
|
| 250 |
|
| 251 |
#btn-start-processing {
|
|
@@ -671,7 +670,12 @@
|
|
| 671 |
<div class="px-6 py-2" id="settings-params">
|
| 672 |
<div class="s-row" data-param="imgsz">
|
| 673 |
<div>
|
| 674 |
-
<div class="text-xs font-semibold text-slate-700">Image Size
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 675 |
<div class="text-[10px] text-slate-400">Model input resolution</div>
|
| 676 |
</div>
|
| 677 |
<div class="s-stepper"><button onclick="stepParam('imgsz',-32)">‹</button><span
|
|
@@ -680,7 +684,12 @@
|
|
| 680 |
</div>
|
| 681 |
<div class="s-row" data-param="conf">
|
| 682 |
<div>
|
| 683 |
-
<div class="text-xs font-semibold text-slate-700">Confidence
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 684 |
<div class="text-[10px] text-slate-400">Minimum detection threshold</div>
|
| 685 |
</div>
|
| 686 |
<div class="s-stepper"><button onclick="stepParam('conf',-0.01)">‹</button><span
|
|
@@ -689,7 +698,12 @@
|
|
| 689 |
</div>
|
| 690 |
<div class="s-row" data-param="iou">
|
| 691 |
<div>
|
| 692 |
-
<div class="text-xs font-semibold text-slate-700">IoU Threshold
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 693 |
<div class="text-[10px] text-slate-400">Non-max suppression overlap</div>
|
| 694 |
</div>
|
| 695 |
<div class="s-stepper"><button onclick="stepParam('iou',-0.05)">‹</button><span
|
|
@@ -698,7 +712,12 @@
|
|
| 698 |
</div>
|
| 699 |
<div class="s-row" data-param="stride">
|
| 700 |
<div>
|
| 701 |
-
<div class="text-xs font-semibold text-slate-700">Frame Stride
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 702 |
<div class="text-[10px] text-slate-400">Frames skipped between detections</div>
|
| 703 |
</div>
|
| 704 |
<div class="s-stepper"><button onclick="stepParam('stride',-1)">‹</button><span
|
|
@@ -1058,18 +1077,7 @@
|
|
| 1058 |
},
|
| 1059 |
animation: { duration: 0 }
|
| 1060 |
},
|
| 1061 |
-
plugins: [
|
| 1062 |
-
id: 'glow',
|
| 1063 |
-
beforeDatasetsDraw: (chart) => {
|
| 1064 |
-
const ctx = chart.ctx;
|
| 1065 |
-
ctx.save();
|
| 1066 |
-
ctx.shadowBlur = 12;
|
| 1067 |
-
ctx.shadowColor = activePalette.congestion;
|
| 1068 |
-
},
|
| 1069 |
-
afterDatasetsDraw: (chart) => {
|
| 1070 |
-
chart.ctx.restore();
|
| 1071 |
-
}
|
| 1072 |
-
}]
|
| 1073 |
});
|
| 1074 |
|
| 1075 |
const doughChart = new Chart(document.getElementById('doughnutChart').getContext('2d'), {
|
|
@@ -1091,18 +1099,7 @@
|
|
| 1091 |
},
|
| 1092 |
animation: { duration: 0 }
|
| 1093 |
},
|
| 1094 |
-
plugins: [
|
| 1095 |
-
id: 'glow',
|
| 1096 |
-
beforeDatasetsDraw: (chart) => {
|
| 1097 |
-
const ctx = chart.ctx;
|
| 1098 |
-
ctx.save();
|
| 1099 |
-
ctx.shadowBlur = 12;
|
| 1100 |
-
ctx.shadowColor = activePalette.doughOut;
|
| 1101 |
-
},
|
| 1102 |
-
afterDatasetsDraw: (chart) => {
|
| 1103 |
-
chart.ctx.restore();
|
| 1104 |
-
}
|
| 1105 |
-
}]
|
| 1106 |
});
|
| 1107 |
|
| 1108 |
const domChart = new Chart(document.getElementById('dominanceChart').getContext('2d'), {
|
|
@@ -1117,18 +1114,7 @@
|
|
| 1117 |
},
|
| 1118 |
animation: { duration: 0 }
|
| 1119 |
},
|
| 1120 |
-
plugins: [
|
| 1121 |
-
id: 'glow',
|
| 1122 |
-
beforeDatasetsDraw: (chart) => {
|
| 1123 |
-
const ctx = chart.ctx;
|
| 1124 |
-
ctx.save();
|
| 1125 |
-
ctx.shadowBlur = 12;
|
| 1126 |
-
ctx.shadowColor = activePalette.dominance;
|
| 1127 |
-
},
|
| 1128 |
-
afterDatasetsDraw: (chart) => {
|
| 1129 |
-
chart.ctx.restore();
|
| 1130 |
-
}
|
| 1131 |
-
}]
|
| 1132 |
});
|
| 1133 |
|
| 1134 |
const flowChart = new Chart(document.getElementById('flowChart').getContext('2d'), {
|
|
@@ -1143,18 +1129,7 @@
|
|
| 1143 |
},
|
| 1144 |
animation: { duration: 0 }
|
| 1145 |
},
|
| 1146 |
-
plugins: [
|
| 1147 |
-
id: 'glow',
|
| 1148 |
-
beforeDatasetsDraw: (chart) => {
|
| 1149 |
-
const ctx = chart.ctx;
|
| 1150 |
-
ctx.save();
|
| 1151 |
-
ctx.shadowBlur = 12;
|
| 1152 |
-
ctx.shadowColor = activePalette.flow;
|
| 1153 |
-
},
|
| 1154 |
-
afterDatasetsDraw: (chart) => {
|
| 1155 |
-
chart.ctx.restore();
|
| 1156 |
-
}
|
| 1157 |
-
}]
|
| 1158 |
});
|
| 1159 |
|
| 1160 |
// =========== Update functions ===========
|
|
|
|
| 142 |
}
|
| 143 |
|
| 144 |
.shadow-sm {
|
| 145 |
+
box-shadow: none !important;
|
| 146 |
}
|
| 147 |
|
| 148 |
/* Controls */
|
|
|
|
| 243 |
}
|
| 244 |
|
| 245 |
.s-row.disabled {
|
| 246 |
+
opacity: 0.7 !important;
|
| 247 |
pointer-events: none !important;
|
|
|
|
| 248 |
}
|
| 249 |
|
| 250 |
#btn-start-processing {
|
|
|
|
| 670 |
<div class="px-6 py-2" id="settings-params">
|
| 671 |
<div class="s-row" data-param="imgsz">
|
| 672 |
<div>
|
| 673 |
+
<div class="text-xs font-semibold text-slate-700 flex items-center">Image Size
|
| 674 |
+
<span class="info-wrap ml-1">
|
| 675 |
+
<span class="info-btn"><i class="fa-solid fa-info"></i></span>
|
| 676 |
+
<span class="info-tip">Input resolution fed to the detection model. Locked to the value compiled into the OpenVINO graph.</span>
|
| 677 |
+
</span>
|
| 678 |
+
</div>
|
| 679 |
<div class="text-[10px] text-slate-400">Model input resolution</div>
|
| 680 |
</div>
|
| 681 |
<div class="s-stepper"><button onclick="stepParam('imgsz',-32)">‹</button><span
|
|
|
|
| 684 |
</div>
|
| 685 |
<div class="s-row" data-param="conf">
|
| 686 |
<div>
|
| 687 |
+
<div class="text-xs font-semibold text-slate-700 flex items-center">Confidence
|
| 688 |
+
<span class="info-wrap ml-1">
|
| 689 |
+
<span class="info-btn"><i class="fa-solid fa-info"></i></span>
|
| 690 |
+
<span class="info-tip">Minimum score a detection must reach to be counted. Lower values detect more but may include false positives.</span>
|
| 691 |
+
</span>
|
| 692 |
+
</div>
|
| 693 |
<div class="text-[10px] text-slate-400">Minimum detection threshold</div>
|
| 694 |
</div>
|
| 695 |
<div class="s-stepper"><button onclick="stepParam('conf',-0.01)">‹</button><span
|
|
|
|
| 698 |
</div>
|
| 699 |
<div class="s-row" data-param="iou">
|
| 700 |
<div>
|
| 701 |
+
<div class="text-xs font-semibold text-slate-700 flex items-center">IoU Threshold
|
| 702 |
+
<span class="info-wrap ml-1">
|
| 703 |
+
<span class="info-btn"><i class="fa-solid fa-info"></i></span>
|
| 704 |
+
<span class="info-tip">Controls how aggressively overlapping detections are merged. Higher values allow more overlap before suppression.</span>
|
| 705 |
+
</span>
|
| 706 |
+
</div>
|
| 707 |
<div class="text-[10px] text-slate-400">Non-max suppression overlap</div>
|
| 708 |
</div>
|
| 709 |
<div class="s-stepper"><button onclick="stepParam('iou',-0.05)">‹</button><span
|
|
|
|
| 712 |
</div>
|
| 713 |
<div class="s-row" data-param="stride">
|
| 714 |
<div>
|
| 715 |
+
<div class="text-xs font-semibold text-slate-700 flex items-center">Frame Stride
|
| 716 |
+
<span class="info-wrap ml-1">
|
| 717 |
+
<span class="info-btn"><i class="fa-solid fa-info"></i></span>
|
| 718 |
+
<span class="info-tip">Number of frames skipped between each detection pass. Higher values trade accuracy for speed.</span>
|
| 719 |
+
</span>
|
| 720 |
+
</div>
|
| 721 |
<div class="text-[10px] text-slate-400">Frames skipped between detections</div>
|
| 722 |
</div>
|
| 723 |
<div class="s-stepper"><button onclick="stepParam('stride',-1)">‹</button><span
|
|
|
|
| 1077 |
},
|
| 1078 |
animation: { duration: 0 }
|
| 1079 |
},
|
| 1080 |
+
plugins: []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1081 |
});
|
| 1082 |
|
| 1083 |
const doughChart = new Chart(document.getElementById('doughnutChart').getContext('2d'), {
|
|
|
|
| 1099 |
},
|
| 1100 |
animation: { duration: 0 }
|
| 1101 |
},
|
| 1102 |
+
plugins: []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1103 |
});
|
| 1104 |
|
| 1105 |
const domChart = new Chart(document.getElementById('dominanceChart').getContext('2d'), {
|
|
|
|
| 1114 |
},
|
| 1115 |
animation: { duration: 0 }
|
| 1116 |
},
|
| 1117 |
+
plugins: []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1118 |
});
|
| 1119 |
|
| 1120 |
const flowChart = new Chart(document.getElementById('flowChart').getContext('2d'), {
|
|
|
|
| 1129 |
},
|
| 1130 |
animation: { duration: 0 }
|
| 1131 |
},
|
| 1132 |
+
plugins: []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1133 |
});
|
| 1134 |
|
| 1135 |
// =========== Update functions ===========
|