下面给你一个针对后视镜折叠场景的可落地方案目标是在缺少标注的前提下优先提升 FSD 分支效果并尽量不破坏 PSD/RM 的现有性能。方案分为数据、训练、评估与落地四个部分尽量贴合你现在的工程结构train2.py 多任务训练。1. 数据策略用“几何纹理遮挡”三类增强模拟后视镜折叠后视镜折叠导致视野变窄车辆本体遮挡出现在左右两侧并形成“粉色块黑色车体遮挡”的结构。针对这一特性建议分层做增强1) 几何裁剪模拟视野变化最关键左右裁剪或缩放重映射从正常俯视图裁掉两侧区域模拟“视野缩小”。拼接遮挡用“车辆轮廓遮挡块”覆盖左右模拟后视镜折叠后的车体遮挡区域遮挡区域可用固定模板或随机多边形。车辆本体遮挡在图中间加入大面积黑色块模拟车体遮挡与场景中真实车辆比例相近。2) 纹理与颜色扰动亮度、对比度、色温变化HDR 模拟局部过曝/欠曝黑色块添加轻微纹理噪声避免模型过度依赖“纯黑”3) FSD 专项增强仅对 FSD 分支强制对遮挡区域生成“不可行驶”mask或忽略区域对遮挡边缘随机扩张/腐蚀提高边界鲁棒性2. 训练策略多任务不动FSD 增强优先1) 保持多任务结构但提高 FSD 权重loss 权重中提升 FSD 的权重例如FSD:PSD:RM 3:1:1或前期 FSD 权重大后期逐步回调至均衡2) 冻结 PSD/RM backbone 的低层若共享 backbone冻结前几层或使用低学习率FSD 分支学习率可略大如 2x3) “两阶段微调”阶段1只用增强数据训练 FSD其他分支冻结阶段2正常多任务训练加入少量增强数据混合3. 标注缺失情况下的伪标签策略可选如果你有未标注后视镜折叠图1) 用原模型推断 FSD生成伪标签2) 只保留高置信度区域比如置信度 0.73) 伪标签区域与遮挡增强混合训练这种方法可以让 FSD 更快适应新场景。4. 评估与验收指标为了快速验证 FSD 改进效果建议用 20~50 张折叠场景图人工粗标只需 FSD评估指标mIoU、F1、边界误差特别观察车辆两侧遮挡边界是否被误判为可行驶中央车体区域是否被正确屏蔽粉色块边缘是否稳定推荐的最小实现路线低成本做遮挡视野裁剪增强最关键FSD loss 权重提高训练 1~2 个 epoch 观察 FSD 提升趋势视效果决定是否引入伪标签如果你希望我可以进一步结合 train2.py 的具体训练流程帮你指出具体插入数据增强的位置给出 FSD loss 权重修改建议帮你写出可执行的增强代码模块你只要告诉我现在的 train2.py 数据加载与增强结构即可。关于 训练策略因为我的三个分支是共用backbone的然后三个任务分别使用三个不同的头去输出这样的话有什么好的训练方案吗 yolov5s_custom_seg_big.yaml你这个结构共享 backbone 多头输出是标准多任务范式完全可以做“阶段式微调 任务权重动态”来优先适配 FSD同时尽量不损伤 PSD/RM。结合你现在的 yolov5s_custom_seg_big.yaml建议如下从可实施到进阶1) 最稳妥的训练策略推荐阶段 A只优化 FSD冻结 backbone 的前半部分低层特征保稳定只训 FSD 相关头与高层 backbone。PSD/RM 头不更新或极低学习率。目的让模型快速适应“后视镜折叠”对可行驶区域的改变。阶段 B多任务联合FSD 权重更大恢复多头训练但 FSD loss 权重大例如 3:1:1 或 4:1:1。继续保持 PSD/RM 的小学习率避免退化。2) 任务权重与梯度冲突处理多任务下常见问题是“任务互相抢 backbone 的梯度”简单有效做法固定权重loss 3*FSD 1*PSD 1*RM或使用 前期 FSD 权重大后期平衡warmup 调整进阶做法如有实现成本GradNorm按任务学习难度自动调 loss 权重PCGrad在反向传播时消除任务冲突梯度这两种要改训练代码效果通常优于手动权重3) 共享 backbone 下的稳定技巧1) 任务专用 BN共享卷积但 BN 分支独立可显著减少任务间分布冲突尤其折叠场景分布变化大2) Adapter / 插拔层成本低在 backbone 高层加一个 FSD 专用轻量 adapter1×1 Conv 或小 MLPFSD 走 adapterPSD/RM 走原 backbone4) 数据混合策略非常关键FSD 使用“折叠增强数据 原始数据混合”PSD/RM 只用原始或轻度增强数据这样能防止 PSD/RM 被折叠增强污染。5) 如果只能做最少改动的方案冻结 backbone 前半段FSD loss 提高到 3 倍折叠增强只喂给 FSD这三个动作成本最低、效果通常最明显。如果你愿意我可以直接帮你改 train2.py 的 loss 权重、冻结策略并加一个 FSD 专用的数据增强开关。只需要你告诉我loss 权重目前在哪里定义backbone/head 在训练中如何冻结数据增强在哪个类/函数里做已按你的要求把“后视镜折叠粉色色块”增强接入到检测(PSD)、FSD分割、RM分割三条分支并提供了可配置车辆位置的入口。关键实现位置新增统一配置与工具utils/mirror_fold.py检测数据增强与标签过滤utils/datasets.pyFSD/RM 分割图像与mask同步增强SegmentationDataset.py你需要配置的地方在 utils/mirror_fold.py 里配置 4 种分辨率的车辆位置MIRROR_FOLD_CAR_BOXES {# (width, height): (x1, y1, x2, y2),}说明(x1, y1, x2, y2) 是车辆黑色区域在原图上的像素坐标粉色色块会自动在车辆左右两侧从车头到车尾y1~y2延伸到图像边缘如果某些分辨率没填默认不会应用也可启用比例兜底 MIRROR_FOLD_CAR_BOX_RATIOS。标签处理策略已实现FSD粉色色块区域 → 视为可行驶FSD_PINK_VALUE1RM粉色色块区域 → 视为背景RM_PINK_VALUE0PSD粉色色块区域内的目标 → 删除按 bbox 中心点判断 如果你的 FSD/RM 类别 id 不一致只需修改 utils/mirror_fold.py 里的 FSD_PINK_VALUE、RM_PINK_VALUE。额外说明现在默认 MIRROR_FOLD_PROB1.0即训练中每张图都强制应用。如果你希望以概率方式混合真实/模拟数据可调成 0.5 等。如果你愿意我可以继续帮你自动统计每种分辨率对应的车辆位置从样例图自动估计在训练日志里打印当前生效的分辨率与车辆位置做一个可视化预览脚本快速验增强效果只要把你 4 种分辨率对应的车辆坐标告诉我即可。详细解释下对于每一个分支的训练你都是怎么实现模拟数据的已按“分支维度”说明三条训练里模拟数据的具体实现方式并标出关键代码位置。统一配置与粉色遮挡生成所有分支共用 utils/mirror_fold.py 的配置和工具函数配置不同分辨率的车辆黑色区域生成粉色遮挡区域车头~车尾高度左右延伸到边缘控制启用与概率mirror_fold.pyLines 1-64MIRROR_FOLD_CAR_BOXES {# (width, height): (x1, y1, x2, y2),}MIRROR_FOLD_ENABLE TrueMIRROR_FOLD_PROB 1.0FSD_PINK_VALUE 1RM_PINK_VALUE 0def get_car_box_for_shape(width: int, height: int) - Optional[Tuple[int, int, int, int]]:...def build_pink_mask(width: int, height: int, car_box: Tuple[int, int, int, int]) - Optional[np.ndarray]:...def should_apply_mirror_fold() - bool:return MIRROR_FOLD_ENABLE and random.random() MIRROR_FOLD_PROBPSD检测分支实现位置utils/datasets.py 的 LoadImagesAndLabels_v5face.__getitem__流程正常加载图像与检测标签含 letterbox/mosaic/mixup在几何增强前插入折叠模拟计算车体框在当前图上的位置生成粉色遮挡删除落在粉色区内的检测框按 bbox 中心点判断关键代码datasets.pyLines 189-240def _mirror_fold_box_for_letterbox(orig_hw, resized_hw, ratio, pad):...def _apply_mirror_fold_det(img, labels, car_box):...img[pink_mask] MIRROR_FOLD_PINK_COLOR_BGR...keep ~pink_mask[cy, cx]return img, labels[keep]datasets.pyLines 992-1088if self.augment and should_apply_mirror_fold():if mosaic:car_box get_car_box_for_shape(w, h)else:car_box _mirror_fold_box_for_letterbox((h0, w0), (h, w), ratio, pad)if car_box is not None:img, labels _apply_mirror_fold_det(img, labels, car_box)效果PSD 在粉色区域“看不到任何东西”训练时这些区域中的目标自动被过滤掉。FSD可行驶区域分割实现位置SegmentationDataset.py 的 CustomSegmentation.__getitem__流程读图 读 mask若训练阶段且启用折叠增强生成粉色遮挡图像粉色覆盖mask 粉色区域直接置为 FSD_PINK_VALUE1关键代码SegmentationDataset.pyLines 787-855if self.mode train and should_apply_mirror_fold():img_np np.array(img)mask_np np.array(mask)h, w img_np.shape[:2]car_box get_car_box_for_shape(w, h)if car_box is not None:pink_mask build_pink_mask(w, h, car_box)if pink_mask is not None:img_np[pink_mask] MIRROR_FOLD_PINK_COLOR_RGBmask_np[pink_mask] FSD_PINK_VALUEimg Image.fromarray(img_np)mask Image.fromarray(mask_np)效果FSD 学到“粉色遮挡区可行驶”。RM路面标识分割实现位置SegmentationDataset.py 的 RMSegmentation.__getitem__流程同 FSD但 mask 粉色区域置为背景SegmentationDataset.pyLines 1004-1015if self.mode train and should_apply_mirror_fold():img_np np.array(img)mask_np np.array(mask)h, w img_np.shape[:2]car_box get_car_box_for_shape(w, h)if car_box is not None:pink_mask build_pink_mask(w, h, car_box)if pink_mask is not None:img_np[pink_mask] MIRROR_FOLD_PINK_COLOR_RGBmask_np[pink_mask] RM_PINK_VALUEimg Image.fromarray(img_np)mask Image.fromarray(mask_np)效果RM 学到“粉色遮挡区无路面标识”。小结每个分支的模拟方式PSD粉色遮挡 删除遮挡区域内目标FSD粉色遮挡 mask 设为可行驶RM粉色遮挡 mask 设为背景如果你希望让 PSD 也保留“遮挡区域”但将目标缩小/裁剪让 FSD 粉色区域是“ignore”而不是可行驶我可以继续帮你改。删除落在粉色区内的检测框按 bbox 中心点判断和训练时这些区域中的目标自动被过滤掉是怎么实现的实现就在 utils/datasets.py 的 _apply_mirror_fold_det。逻辑是先生成粉色遮挡布尔 mask然后用 bbox 中心点坐标索引 mask落在粉色区域的框被过滤掉。datasets.pyLines 224-240def _apply_mirror_fold_det(img, labels, car_box):h, w img.shape[:2]pink_mask build_pink_mask(w, h, car_box)if pink_mask is None:return img, labelsimg[pink_mask] MIRROR_FOLD_PINK_COLOR_BGRif labels is None:return img, labelslabels labels if isinstance(labels, np.ndarray) else np.array(labels)if labels.size 0:return img, labelscx ((labels[:, 1] labels[:, 3]) * 0.5).round().astype(int)cy ((labels[:, 2] labels[:, 4]) * 0.5).round().astype(int)cx np.clip(cx, 0, w - 1)cy np.clip(cy, 0, h - 1)keep ~pink_mask[cy, cx]return img, labels[keep]要点pink_mask[cy, cx] 表示 bbox 中心是否落在粉色区keep ~pink_mask[cy, cx] 只保留不在粉色区的框labels[keep] 就是“自动过滤掉”后的检测目标已加好“预处理后可视化保存”的功能三条分支都会把预处理后的图像保存并且把标签画在图上。你只需打开开关即可。如何启用在 utils/mirror_fold.py把 MIRROR_FOLD_DEBUG_SAVE False 改为 True可选调整保存目录、数量与透明度mirror_fold.pyLines 1-40MIRROR_FOLD_DEBUG_SAVE FalseMIRROR_FOLD_DEBUG_DIR runs/mirror_fold_debugMIRROR_FOLD_DEBUG_MAX 200MIRROR_FOLD_DEBUG_EVERY 1MIRROR_FOLD_DEBUG_ALPHA 0.45保存路径示例检测runs/mirror_fold_debug/detFSDruns/mirror_fold_debug/fsdRMruns/mirror_fold_debug/rmPSD 检测分支保存带框图在 utils/datasets.py 的 LoadImagesAndLabels_v5face.__getitem__ 中完成所有增强含 mirror_fold、随机透视、HSV后绘制 bbox按当前的 xyxy 像素坐标并保存关键代码datasets.pyLines 1068-1088debug_path get_debug_save_path(det, self.img_files[index], jpg) if self.augment else Noneif debug_path:debug_img _draw_det_labels_xyxy(img, labels)cv2.imwrite(debug_path, debug_img)绘制框逻辑datasets.pyLines 224-240def _draw_det_labels_xyxy(img, labels):...cv2.rectangle(out, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.putText(out, str(cls_id), (x1, max(0, y1 - 4)), ...)FSD 分割分支保存叠加 mask 的图在 SegmentationDataset.py 的 CustomSegmentation.__getitem__训练阶段完成 _sync_transformmask 处理完成后保存mask 用透明度叠加在图上关键代码SegmentationDataset.pyLines 857-885mask[mask 127] -1mask[mask255] -1_save_seg_debug(fsd, img, mask, imagepath)RM 分割分支保存叠加 mask 的图在 SegmentationDataset.py 的 RMSegmentation.__getitem__训练阶段处理完 mask 后保存关键代码SegmentationDataset.pyLines 1187-1196mask[mask 127] -1mask[mask 14] 0mask[mask 15] 0mask[mask255] 7_save_seg_debug(rm, img, mask, imagepath)如果你希望只保存经过后视镜折叠增强的样本或加上“原图 vs 预处理图对比拼接”我可以继续帮你扩展。下面给你一个2页 PPT 的汇报结构聚焦“用数据增强解决后视镜折叠数据不足”简洁可直接套用。第1页问题与思路Why标题后视镜折叠场景数据不足的挑战与方案现象后视镜折叠导致视野缩窄车辆两侧出现粉色遮挡区影响FSD 误判明显PSD/RM 也受遮挡干扰困难缺少折叠场景标注数据方案基于现有数据构造“折叠模拟增强”用伪场景替代真实标注目标快速适配新场景同时保持原有分支性能图示建议一张正常图 折叠示例图粉色遮挡对比第2页算法实现How标题后视镜折叠增强策略与标签规则1) 视觉增强图像层根据不同分辨率配置车辆位置生成粉色遮挡块从车头到车尾左右延伸到图像边缘可控概率/数量混合原始数据训练2) 标签适配任务层PSD遮挡区域内目标删除避免错误监督RM粉色区视为背景无路面标识FSD粉色区视为可行驶无遮挡、无标识3) 训练策略简述即可三分支一起训练保持任务一致性保留原有增强叠加折叠模拟图示建议一张“增强后图像 PSD框 FSD/RM mask叠加”用箭头标注 “粉色区 → 标签规则”如果你愿意我可以帮你把这两页 PPT 的文字排版直接写成可用模板标题要点图示说明或者帮你做一版更“报告风”的表述。帮你做一版更“报告风”的表述。我又让同事帮我采集一部分带有粉色色块的数据去标主但是大头还是在我的数据增强这边。我想体现出模型从数据采集到训练验证的全流程下面是更“报告风”的 2 页 PPT 文案强调“少量真实采集 大量增强模拟”的闭环流程并覆盖“采集→标注→训练→验证”的全流程。你可以直接放到 PPT 里。第1页项目背景与数据策略标题后视镜折叠场景适配数据不足下的双轨方案问题背景后视镜折叠后视野发生结构性变化模型输入出现粉色遮挡区现有训练数据主要来自正常场景泛化能力不足数据策略双轨并行真实采集 少量精标同事补采一批折叠场景作为真实锚点数据增强模拟为主基于原始数据构造“粉色遮挡”场景扩大覆盖核心目标用较低标注成本完成模型适配兼顾 FSD 强化与 PSD/RM 稳定性第2页全流程闭环与落地路径标题采集-标注-训练-验证全流程闭环数据准备原始数据正常俯视图数据主干数据真实折叠数据小批量人工标注模拟数据基于车辆位置生成粉色遮挡区域训练流程三分支统一训练增强样本与真实样本混合任务标签规则同步适配PSD遮挡区目标过滤RM遮挡区视为背景FSD遮挡区视为可行驶验证与评估真实折叠样本作为重点评估集关注指标FSD 可行驶区域完整性、遮挡区误报率、PSD/RM 稳定性落地输出算法在“折叠输入”下稳定输出三分支结果支持后续持续采集 → 迭代优化如果你需要我还可以给你补一页“结果展示页”指标提升 可视化对比或者直接帮你排成 PPT 页面的版式草图。