Show dataset YOLO training curves

This commit is contained in:
2026-06-30 15:35:25 +08:00
parent b60fcc5112
commit 90dccbea0e
5 changed files with 61 additions and 4 deletions

View File

@@ -1289,6 +1289,8 @@ function DatasetQuality({ validation }: { validation: DatasetValidation }) {
function DatasetYoloOutputs({ dataset, outputs }: { dataset: UploadedDataset; outputs: DatasetYoloOutputsPayload }) {
const previewItems = [...outputs.heatmaps.slice(0, 3), ...outputs.predictions.slice(0, 3)].slice(0, 6);
const primaryCurve = outputs.curves[0];
const curveSeries = primaryCurve?.series.slice(0, 4) ?? [];
return (
<div className="datasetOutputBox">
<div className="qualityHead">
@@ -1315,6 +1317,15 @@ function DatasetYoloOutputs({ dataset, outputs }: { dataset: UploadedDataset; ou
</a>
))}
</div>
{primaryCurve && !!curveSeries.length && (
<div className="datasetOutputCurve">
<div>
<strong>{primaryCurve.name}</strong>
<span>{primaryCurve.row_count} epochs · {primaryCurve.family}</span>
</div>
<MiniCurvePlot series={curveSeries} />
</div>
)}
{!!previewItems.length && (
<div className="datasetOutputPreview">
{previewItems.map((item) => (

View File

@@ -853,6 +853,48 @@ textarea {
white-space: nowrap;
}
.datasetOutputCurve {
display: grid;
gap: 8px;
padding: 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
}
.datasetOutputCurve > div {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.datasetOutputCurve strong,
.datasetOutputCurve span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.datasetOutputCurve strong {
flex: 1 1 auto;
}
.datasetOutputCurve span {
flex: 0 1 auto;
color: var(--muted);
font-size: 11px;
}
.datasetOutputCurve .curveSvg,
.datasetOutputCurve .curveEmpty {
min-height: 96px;
aspect-ratio: 2.6 / 1;
border-radius: 6px;
}
.datasetOutputPreview {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));