
人工智能计算机视觉深度学习模型评测【免费下载链接】mmdetectionOpenMMLab Detection Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmdetection点击查看免费下载MMDetectionOpenMMLab 检测工具箱基于 MMEngine 的Visualizer机制提供了一套从训练日志记录、验证结果绘制到数据集检查的完整可视化方案。本文以 docs/zh_cn/user_guides/visualization.md 为主线结合仓库源码与配置系统讲解如何在 MMDetection 中配置可视化后端本地/TensorBoard/WandB、通过DetVisualizationHook绘制并存储预测结果以及如何借助tools/test.py与tools/analysis_tools/browse_dataset.py在不改配置的情况下快速可视化。读完本文你将能够独立完成检测模型的训练监控、验证/测试结果可视化与数据集质量检查。一、可视化体系概览MMEngine Visualizer 与 MMDet 的预构建工具MMDetection 的可视化能力构建在 MMEngine 的Visualizer之上。建议先了解 MMEngine 对Visualizer的定义与用法它本质上承担三类职责通用绘图 API例如draw_bboxes绘制边界框、draw_lines绘制线条为上层算法库提供统一的绘图原语多后端写入支持将可视化结果、学习率曲线、损失函数曲线以及验证精度曲线写入本地磁盘以及 TensorBoard、WandB 等常见深度学习训练日志工具任意位置调用支持在代码的任何位置调用以可视化或记录模型在训练或测试期间的中间状态如特征图、验证结果。基于此MMDet 在仓库中提供了多种预构建的可视化工具用户只需修改配置文件即可启用tools/analysis_tools/browse_dataset.py数据集可视化脚本可在数据经过数据转换pipeline后绘制图像和相应注释用于检查数据增强效果与标注质量详细说明见 可视化数据集LoggerHook来自 MMEngine使用Visualizer将学习率、损失和评估结果写入后端。通过修改配置中Visualizer的vis_backends为TensorboardVISBackend或WandbVISBackend即可将日志记录到对应训练工具方便分析和监控训练过程DetVisualizationHookMMDet 实现在验证或预测阶段使用Visualizer将预测结果可视化或存储到后端同样可通过修改vis_backends将预测图像写入 TensorBoard 或 WandB。二、配置 Visualizer默认配置与两大组成由于 MMDet 采用注册机制Visualizer的行为完全可以通过配置文件定制。默认配置定义在 configs/base/default_runtime.pyvis_backends [dict(typeLocalVisBackend)] visualizer dict( typeDetLocalVisualizer, vis_backendsvis_backends, namevisualizer)从上面的例子可以看到Visualizer的配置由两个主要部分组成配置项说明typeVisualizer的类型默认为DetLocalVisualizer可直接用于可视化检测任务目标检测、实例分割、语义分割、全景分割的标签或预测结果vis_backends可视化后端列表MMDet 默认使用本地可视化后端LocalVisBackend将所有可视化结果与训练信息保存在本地文件夹与visualizer配套的还有日志处理器与默认钩子同样位于 configs/base/default_runtime.pydefault_hooks dict( timerdict(typeIterTimerHook), loggerdict(typeLoggerHook, interval50), param_schedulerdict(typeParamSchedulerHook), checkpointdict(typeCheckpointHook, interval1), sampler_seeddict(typeDistSamplerSeedHook), visualizationdict(typeDetVisualizationHook)) log_processor dict(typeLogProcessor, window_size50, by_epochTrue)其中default_hooks.visualization即训练/测试阶段负责绘制预测结果的钩子默认启用但drawFalse见下文第四节。若需了解配置文件的继承与覆盖机制可参考 配置教程。2.1 DetLocalVisualizer 支持的完整参数从源码 mmdet/visualization/local_visualizer.py 看DetLocalVisualizer除继承 MMEngineVisualizer的name、image、vis_backends、save_dir参数外还支持以下绘图参数参数默认值说明bbox_colorNone边界框线条颜色为None时自动从数据集palette获取BGR 顺序text_color(200, 200, 200)标注文本颜色BGR 顺序mask_colorNone掩码颜色为None时自动从数据集palette获取line_width3边界框线条宽度int 或 floatalpha0.8边界框或掩码的透明度三、存储可视化后端与输出目录结构MMDet 默认使用LocalVisBackend作为可视化后端。由VisualizerHook和LoggerHook存储的模型损失、学习率、模型评估精度和可视化信息默认保存到{work_dir}/{config_name}/{time}/{vis_data}文件夹中。除本地后端外MMDet 还支持TensorboardVisBackend和WandbVisBackend等常见后端只需要在配置文件中更改vis_backends类型即可。例如在继承_base_的配置中插入以下代码块即可同时将数据存储到本地、TensorBoard 与 WandB_base_.visualizer.vis_backends [ dict(typeLocalVisBackend), dict(typeTensorboardVisBackend), dict(typeWandbVisBackend)]3.1 三种后端的适用场景后端类型保存位置适用场景LocalVisBackend{work_dir}/{config_name}/{time}/{vis_data}默认后端离线查看可视化文件无第三方依赖TensorboardVisBackendTensorBoard 事件文件配合tensorboard --logdir在浏览器中监控训练曲线与预测图像WandbVisBackendWandB 云端项目团队协作、远程实验管理与对比需配置 WandB 账号需要说明的是切换后端只影响可视化与日志数据的出口即存储位置并不影响DetVisualizationHook的绘制逻辑本身绘制后的图像会以add_image的方式推送到所有已配置的后端。四、绘图DetVisualizationHook 的参数与工作原理MMDet 主要使用 mmdet/engine/hooks/visualization_hook.py 中注册的DetVisualizationHook来绘制验证和测试的预测结果。默认情况下该钩子处于关闭绘图状态其默认配置如下visualization dict( # 用户可视化验证和测试结果 typeDetVisualizationHook, drawFalse, interval1, showFalse)4.1 支持的参数参数描述draw通过该 enable 参数打开和关闭钩子默认状态为关闭Falseinterval控制在钩子启用时存储或显示验证/测试结果的间隔单位为迭代次数show控制是否直接弹出窗口可视化验证或测试的结果结合源码 visualization_hook.pyDetVisualizationHook的完整构造参数还包括score_thr默认0.3可视化边界框和掩码的置信度阈值低于该阈值的预测框不会被绘制wait_time默认0.showTrue时每个窗口的停留时间秒test_out_dir默认None测试过程中绘制图像的保存目录backend_args默认None实例化文件后端file client的参数用于读取远程/云存储中的图像。4.2 钩子的内部工作流程源码级DetVisualizationHook通过两个回调方法挂载在 Runner 的验证与测试流程中after_val_iterL79-L110每interval次验证迭代取当前 batch 的第一张图outputs[0]通过mmcv.imfrombytes以 RGB 顺序读取原图然后调用self._visualizer.add_datasample(...)绘制。step取runner.iter batch_idx用于在曲线与图像时间轴上对齐after_test_iterL112-L151测试阶段会遍历整个 batch 的每个样本for data_sample in outputs每张图递增_test_index。若指定了test_out_dir则会拼接到{runner.work_dir}/{runner.timestamp}/{test_out_dir}下创建目录并逐张保存图像。源码注释还明确了测试阶段三档行为的优先级L26-L37showTrue仅弹窗展示预测结果不存储数据钩子会清空_vis_backends以避免同时写入后端指定test_out_dir预测结果保存到该目录同样排除vis_backends两者均未指定vis_backends生效可将预测结果存储到 WandB 或 TensorBoard。此外同一文件中还注册了面向多目标跟踪/视频实例分割任务的TrackVisualizationHookL154-L315使用frame_interval控制抽帧间隔以及面向开放词汇检测的GroundingVisualizationHookL345 起说明可视化体系对不同任务均有专门实现。五、在训练或测试期间启用预测结果可视化如果您想在训练或测试期间启用DetVisualizationHook相关功能只需修改配置文件。以 configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py 为例同时绘制注释GT和预测pred并弹窗显示图像配置文件可以修改如下visualization _base_.default_hooks.visualization visualization.update(dict(drawTrue, showTrue))这里的visualization.update会覆盖基类配置_base_继承自rtmdet_s_8xb32-300e_coco.py再向上继承default_runtime.py中的默认钩子设置drawTrue打开绘图showTrue在验证/测试时弹窗展示。5.1 不修改配置test.py 的 --show 与 --show-dirtools/test.py提供了--show和--show-dir参数可以在测试过程中可视化注释和预测结果而不需要修改配置文件从而进一步简化测试过程# 展示测试结果 python tools/test.py configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py https://download.openmmlab.com/mmdetection/v3.0/rtmdet/rtmdet_tiny_8xb32-300e_coco/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --show # 指定存储预测结果的位置 python tools/test.py configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py https://download.openmmlab.com/mmdetection/v3.0/rtmdet/rtmdet_tiny_8xb32-300e_coco/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --show-dir imgs/注意第一条命令中的 checkpoint 参数为官方预训练权重下载地址实际使用时应替换为本地或自训的权重文件路径。这两个参数生效的底层机制在 mmdet/engine/hooks/utils.py 的trigger_visualization_hook函数中当传入--show或--show-dir时tools/test.py 会调用该函数将default_hooks.visualization中的draw置为True并根据命令行参数设置show、wait_time或test_out_dir。也就是说命令行参数最终仍是通过改写配置中的可视化钩子来实现的。tools/test.py还支持以下相关参数见 parse_args参数类型默认值说明--showstore_trueFalse弹窗展示预测结果--show-dirstr无绘制图像的保存目录实际保存到work_dir/timestamp/show_dir--wait-timefloat2弹窗展示的间隔时间秒--work-dirstr无评估结果等文件的保存目录不指定时默认使用./work_dirs/{config_name}六、数据集可视化browse_dataset.pytools/analysis_tools/browse_dataset.py用于检查数据集在经过数据转换 pipeline 之后的图像和标注帮助排查数据增强配置或标注问题。其完整用法见 useful_tools.mdpython tools/analysis_tools/browse_dataset.py ${CONFIG} [-h] [--output-dir ${OUTPUT_DIR}] [--not-show] [--show-interval ${SHOW_INTERVAL}]支持的命令行参数对应 parse_args参数默认值说明config必填训练配置文件路径脚本会从cfg.train_dataloader.dataset构建数据集--output-dirNone无显示接口时将绘制结果保存到该目录--not-showFalse不弹窗展示配合--output-dir在无 GUI 的服务器上使用--show-interval2弹窗展示间隔秒--cfg-options无覆盖配置文件中的任意设置格式为keyvalue脚本主流程main值得注意的实现细节从配置中构建数据集DATASETS.build(cfg.train_dataloader.dataset)与可视化器VISUALIZERS.build(cfg.visualizer)并把数据集的metainfo类别、调色板绑定到可视化器遍历数据集将 pipeline 输出的inputsCHW 张量转为 HWC 的 RGB 图像取出data_sample.gt_instances中的bboxes与masksBitmapMasks/PolygonMasks统一转为布尔 ndarray调用visualizer.add_datasample(..., draw_predFalse, ...)只绘制 GTdraw_predFalse是因为数据集浏览场景没有预测结果。七、深入源码DetLocalVisualizer 如何绘制一幅检测图DetLocalVisualizer.add_datasamplelocal_visualizer.py#L392-L506是检测可视化的核心入口理解它有助于掌握可视化结果的形态与行为GT 与预测并列显示当 GT 和预测同时绘制时最终图像为np.concatenate((gt_img_data, pred_img_data), axis1)——左侧是 ground truth右侧是预测结果L485-L486支持多任务数据add_datasample会依次检查data_sample中的gt_instances实例级调_draw_instances、gt_sem_seg语义分割调_draw_sem_seg与gt_panoptic_seg全景分割调_draw_panoptic_seg预测侧同理pred_instances/pred_sem_seg/pred_panoptic_seg置信度过滤预测实例会先按pred_score_thr默认0.3过滤pred_instances pred_instances[pred_instances.scores pred_score_thr]L465-L467低分框不会出现在图中自适应文本标注在_draw_instancesL108-L235中类别文本会附加置信度如person: 92.3字号根据框的面积自适应缩放_get_adaptive_scales文本框带半透明黑底以提高可读性掩码则先转为多边形绘制白色轮廓再以alpha透明度叠加彩色掩码不同实例颜色由数据集palette生成并经jitter_color抖动纯掩码模型兼容对 SOLO 这类没有 bbox 分支的模型代码通过connectedComponentsWithStats计算掩码连通域质心把类别标签画在实例中心L196-L234展示与保存分流showTrue时调用self.show(...)弹窗显示指定out_file时用mmcv.imwrite(drawn_img[..., ::-1], out_file)写入注意内部 BGR 转 RGB 的通道顺序否则调用add_image推送到所有vis_backendsL500-L506。八、常见配置与使用要点小结只想在验证时看几眼结果在配置中修改default_hooks.visualization设drawTrue, showTrue或直接使用tools/test.py --show想把预测图保存成文件tools/test.py --show-dir imgs/图像会落到work_dir/timestamp/imgs/也可以直接设置钩子的test_out_dir想用 TensorBoard/WandB 看预测图和训练曲线把visualizer.vis_backends追加TensorboardVisBackend/WandbVisBackend训练、验证、测试的曲线与图像会自动同步想检查数据增强后标注是否对齐运行tools/analysis_tools/browse_dataset.py ${CONFIG} --output-dir ${OUTPUT_DIR} --not-show在无 GUI 服务器上批量导出可视化图默认行为提醒DetVisualizationHook默认drawFalse即训练/验证过程默认不会额外绘制预测图不会带来额外的 IO 开销需要时再显式打开。本文涉及的核心实现均可在本仓库中继续深入可视化器源码 mmdet/visualization/local_visualizer.py、绘制钩子 mmdet/engine/hooks/visualization_hook.py、命令行入口 tools/test.py 与 tools/analysis_tools/browse_dataset.py以及默认配置 configs/base/default_runtime.py。赞分享人工智能计算机视觉深度学习模型评测【免费下载链接】mmdetectionOpenMMLab Detection Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmdetection点击查看免费下载相关推荐MMDetection 可视化全指南Visualizer 配置、结果存储与 DetVisualizationHook 实战MMDetection 可视化全指南Visualizer 配置、结果存储与 DetVisualizationHook 实战 本指南以 MMDetection人工智能计算机视觉深度学习模型评测MMDetection3D 可视化功能详解从数据到预测结果的可视化指南MMDetection3D 可视化功能详解从数据到预测结果的可视化指南 引言 在3D目标检测和点云处理领域可视化是理解模型行为、验证数据质量和调试模型性能的人工智能计算机视觉深度学习自动驾驶AlphaFold 3蛋白质结构预测完整指南从环境配置到结果分析AlphaFold 3蛋白质结构预测完整指南从环境配置到结果分析 AlphaFold 3是DeepMind推出的革命性蛋白质结构预测工具能够准确预测蛋白质、人工智能深度学习生物信息学科学计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考