@@ -1783,45 +1783,6 @@ function JobDiagnostics({ job }: { job: Job }) {
);
}
-function DatasetPipelineGuide({ selectedDataset, validation }: { selectedDataset?: UploadedDataset; validation?: DatasetValidation }) {
- const activeName = selectedDataset?.name ?? "未选择";
- return (
-
-
-
-
Label Pipeline
-
彩色 Label 到训练数据
-
-
-
-
-
- 现有样例
- DataSet_Own/A_Ori + A_Label_Ori
- 同名图片先配对,再生成 A_Label_pro_label_fold 与 A_Label_GT_label_fold。
-
-
- YOLO 样例
- Seg_All_In_One_YoloModel/Yolo数据集构建
- ORI/Label 生成 ORI_GT_label_fold,再输出 Data/images 与 Data/labels/*.txt。
-
-
-
-
1原图与彩色标注同名例如 `xxx.png` 对 `xxx.png`,或 label 后缀为 `_label` 时由配对脚本剥离后缀匹配。
-
2彩色 label 先清理成 pro label`4_deal_labels.py` 使用边缘检测、连通域和分水岭填充,输出 `*_label.png`。
-
3pro label 转训练 mask按 `Annotate_PALETTE` 精确匹配 RGB,背景为 0,类别从 1 开始写入灰度 GT mask。
-
4YOLO 再转多边形 txt`2_Check_and_Gen_Txt_Label_sort_label.py` 从灰度 GT 提轮廓,写入归一化 polygon 坐标。
-
-
-
当前数据集{activeName}
-
Image/Label{validation?.pairs.image_label ?? 0}
-
Image/Mask{validation?.pairs.image_mask ?? 0}
-
YOLO Ready{validation?.ready.yolo ? "OK" : "Check"}
-
-
- );
-}
-
function WeightPanel({
catalog,
manifest,
@@ -2011,13 +1972,13 @@ function DatasetQuality({ validation }: { validation: DatasetValidation }) {
{validation.dataset}
- {validation.ready.yolo ? "YOLO READY" : validation.ready.mask ? "MASK READY" : "CHECK"}
+ {validation.ready.mask ? "MASK READY" : "CHECK"}
-
Image/Label{validation.pairs.image_label}
Image/Mask{validation.pairs.image_mask}
Classes{validation.classes.length || 0}
Annotations{validation.counts.annotations}
+
Images{validation.counts.images}
{validation.checks.map((check) => (
diff --git a/frontend/src/styles.css b/frontend/src/styles.css
index 57d531e..55c0cd9 100644
--- a/frontend/src/styles.css
+++ b/frontend/src/styles.css
@@ -720,7 +720,7 @@ textarea {
.segmented {
display: grid;
- grid-template-columns: repeat(3, 1fr);
+ grid-template-columns: repeat(2, 1fr);
gap: 6px;
padding: 4px;
border: 1px solid var(--line);
@@ -742,7 +742,7 @@ textarea {
}
.drop {
- min-height: 118px;
+ min-height: 128px;
display: grid;
place-items: center;
gap: 8px;
@@ -755,6 +755,14 @@ textarea {
overflow: hidden;
}
+.drop small {
+ max-width: 100%;
+ padding: 0 12px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
.drop input {
position: absolute;
inset: 0;
@@ -1073,6 +1081,16 @@ textarea {
background: #0b0d0b;
}
+.sampleStrip img {
+ display: block;
+ width: 100%;
+ aspect-ratio: 1.4 / 1;
+ margin-bottom: 7px;
+ border-radius: 4px;
+ object-fit: cover;
+ background: #060806;
+}
+
.sampleStrip span,
.sampleStrip small {
display: block;