我运行了你的最新代码三个分支保存下来的debug图片在三个分支debug图片 下面这是我在公司运行的代码后对着公司电脑的屏幕拍照后截图获得的所以你不用太在意图片大小关注图片内容即可。我发现存在下列问题1. det-psd分支.jpg psd分支的输出上可以看导检测框延伸到了粉红色mask区理论上粉红色区域是不包含任务物体和车位的这样是否会影响训练2. fsd分支.jpg fsd分支的可视化结果里为什么mask变成灰色的而不是粉红色3. rm分支.jpg rm分支的结果中并没有看导我想要的粉红色色块我希望rm分支也加上粉红色色块并且色块区域内视为不存在任何路面标识你这三个现象判断得很准确目前 PSD 用“中心点”过滤会漏掉部分跨界框FSD 的叠加色盘把可行驶类显示成了绿色RM 很可能是该分辨率没命中车辆位置配置导致没触发粉色增强。我准备一次性修三点检测框过滤改为“与粉色区有交集就删”、FSD 可视化强制把粉色区显示为粉色、并给 RM/全分支加“未命中分辨率时的自动车辆框推断兜底框”。你这 3 个问题都是真问题我已经按你说的方向修了并说明原因1) PSD 检测框延伸到粉色区会影响训练已修你之前看到的情况是因为旧逻辑按bbox 中心点过滤中心点不在粉色区但框有一部分跨进粉色区就不会被删。这会给检测头带来噪声监督。我已经改成只要 bbox 与粉色区有交集就删除更严格符合你“粉色区无目标”的定义。datasets.pyLines 224-249def _apply_mirror_fold_det(img, labels, car_box):...keep np.ones((labels.shape[0],), dtypebool)for i, row in enumerate(labels):x1, y1, x2, y2 [int(v) for v in row[1:5]]...if pink_mask[y1:y2, x1:x2].any():keep[i] Falsereturn img, labels[keep]2) FSD mask 变灰/非粉色是可视化配色问题已修这是 debug 可视化的调色盘导致的不是标签没改。我已把 FSD debug 显示里 FSD_PINK_VALUE 对应区域强制显示成粉色便于直观看增强是否生效。SegmentationDataset.pyLines 65-89def _overlay_seg_mask_rgb(..., branch: str ):...if branch fsd:pink_idx (mask FSD_PINK_VALUE)color[pink_idx] np.array([255, 0, 255], dtypenp.uint8)3) RM 没看到粉色块是车体位置未命中导致部分样本不触发已增强鲁棒性你这个现象通常是分辨率没配到 MIRROR_FOLD_CAR_BOXES。我加了两层兜底保证 RM以及其他分支更容易触发自动从图像中推断车辆黑块框中心暗区域推断失败时用比例默认框mirror_fold.pyLines 95-150def infer_car_box_from_image(img): ...def get_car_box_with_fallback(width, height, imgNone): ...RM/FSD 已改用这个兜底接口SegmentationDataset.pyLines 848-855car_box get_car_box_with_fallback(w, h, img_np)...如果你愿意我下一步可以再加一个小功能在 debug 图上把“推断到的 car_box 矩形也画出来”这样你能马上判断某一张图为什么粉色块位置不对。对了补充一点我的psd车位检测分支检测的是车位格子的4个角点我看你可视化的图片上画的还是矩形因为psd车位检测分支训练和预测的都是4个角点目前的程序需要对应修改吗目前的数据增强方案是如何在psd、fsd、rm三个分支上实现的请详细说明说明需要附上具体代码或者代码位置方便我检查你的实现是否合理你这个问题提得很专业。按你当前代码的“真实执行路径”来看我给你做一个逐分支、带代码位置的说明并指出一个关键不一致点RM主分支当前并未真正接入粉色增强。总体机制3个分支共用后视镜折叠增强的核心都在 utils/mirror_fold.py包括车辆位置配置按分辨率粉色区域生成是否在 val 阶段应用自动推断车辆黑块位置配置缺失时兜底mirror_fold.pyLines 1-35MIRROR_FOLD_CAR_BOXES { ... }MIRROR_FOLD_ENABLE TrueMIRROR_FOLD_PROB 1.0MIRROR_FOLD_APPLY_TO_VAL TrueMIRROR_FOLD_AUTO_INFER_CAR_BOX TrueMIRROR_FOLD_DEFAULT_CAR_BOX_RATIOS (0.42, 0.30, 0.58, 0.72)FSD_PINK_VALUE 1RM_PINK_VALUE 0mirror_fold.pyLines 58-77def get_car_box_for_shape(width, height): ...def build_pink_mask(width, height, car_box):mask np.zeros((height, width), dtypebool)if x1 0:mask[y1:y2, :x1] Trueif x2 width:mask[y1:y2, x2:] Truemirror_fold.pyLines 101-153def infer_car_box_from_image(img): ...def get_car_box_with_fallback(width, height, imgNone):car_box get_car_box_for_shape(...)if car_box is None: car_box infer_car_box_from_image(...)if still None: 用默认比例框PSD 分支检测角点入口是 utils/datasets.py 的 LoadImagesAndLabels_v5face.__getitem__。增强插入时机在 mixup 后、几何增强(random_perspective)前。datasets.pyLines 1046-1139def __getitem__(...):...if (self.augment or MIRROR_FOLD_APPLY_TO_VAL) and should_apply_mirror_fold():if mosaic:car_box get_car_box_with_fallback(w, h, img)else:car_box _mirror_fold_box_for_letterbox((h0, w0), (h, w), ratio, pad)if car_box is None:car_box get_car_box_with_fallback(img.shape[1], img.shape[0], img)if car_box is not None:img, labels _apply_mirror_fold_det(img, labels, car_box)_apply_mirror_fold_det 的行为这是训练标签修改核心1) 给图像涂粉色2) 删除粉色区相关目标优先看角点角点无效再看 bbox 与粉色区交集datasets.pyLines 228-264def _apply_mirror_fold_det(img, labels, car_box):pink_mask build_pink_mask(...)img[pink_mask] MIRROR_FOLD_PINK_COLOR_BGR...lmk row[5:13].reshape(4, 2)valid (lmk[:, 0] 0) (lmk[:, 1] 0)if valid.any():if pink_mask[ys, xs].any():keep[i] Falseelse:if pink_mask[y1:y2, x1:x2].any():keep[i] FalsePSD debug 可视化目前是“矩形 4角点 连线”datasets.pyLines 267-294def _draw_det_labels_xyxy(img, labels):cv2.rectangle(...)lmk row[5:13].reshape(4, 2)cv2.circle(...)cv2.line(...)FSD 分支可行驶区域分割入口是 SegmentationDataset.py 的 CustomSegmentation.__getitem__。增强逻辑是粉色区写入图像同时把 mask 粉色区改为 FSD_PINK_VALUE你现在设为 1。SegmentationDataset.pyLines 888-899if (self.mode train or (self.mode val and MIRROR_FOLD_APPLY_TO_VAL)) and should_apply_mirror_fold():img_np np.array(img)mask_np np.array(mask)car_box get_car_box_with_fallback(w, h, img_np)pink_mask build_pink_mask(w, h, car_box)img_np[pink_mask] MIRROR_FOLD_PINK_COLOR_RGBmask_np[pink_mask] FSD_PINK_VALUEFSD debug 叠加图也做了“可行驶类固定粉色显示”SegmentationDataset.pyLines 65-88def _overlay_seg_mask_rgb(..., branch):...if branch fsd:pink_idx (mask FSD_PINK_VALUE)color[pink_idx] np.array([255, 0, 255], dtypenp.uint8)RM 分支路面标识分割你当前代码的关键现状train2.py 默认走 get_rm_loader(..., siftingFalse)也就是 RMSegmentation 主类train2.pyLines 451-477seg_rm_val_dataloder SegmentationDataset.get_rm_loader(...)seg_rm_train_dataloder SegmentationDataset.get_rm_loader(...)SegmentationDataset.pyLines 2015-2027dataset RMSegmentation(...)if sifting:dataset RMSegmentation_sifting(...)但 RMSegmentation.__getitem__ 里目前没有 mirror_fold 注入块没有 should_apply_mirror_fold() 那段所以主 RM 训练流并未真正应用粉色增强SegmentationDataset.pyLines 1212-1217# synchrosized transformif self.mode train:img, mask self._sync_transform(img, mask)你文件里有一段 RM_PINK_VALUE 的增强逻辑出现在 CustomSegmentation_sifting而不是 RMSegmentationSegmentationDataset.pyLines 1053-1063if (...) and should_apply_mirror_fold():...mask_np[pink_mask] RM_PINK_VALUE合理性结论供你快速检查PSD实现是合理的且已经考虑角点任务不再只是 bbox 中心点过滤。FSD实现合理粉色区-可行驶已正确改标签。RM主训练路径目前不完整默认类 RMSegmentation 没接入 mirror_fold这是需要修正的点。如果你同意我下一步可以直接把 RMSegmentation / RMSegmentation_sifting 按 FSD 同样方式补齐含 val 与 debug 保存这样三分支在默认训练路径就完全一致。