
计算机视觉深度学习媒体生成【免费下载链接】IDM-VTON[ECCV2024] IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild项目地址https://gitcode.com/GitHub_Trending/id/IDM-VTON点击查看免费下载导读本文围绕 IDM-VTON 仓库内置的 detectron2 命令行工具集preprocess/humanparsing/mhp_extension/detectron2/tools/展开系统讲解train_net.py、plain_train_net.py、benchmark.py、visualize_json_results.py、visualize_data.py五个核心脚本的定位、用法与底层实现并结合本仓库人体解析Human Parsing预处理链路中实际使用的配置文件与 shell 脚本说明如何用这套工具完成模型训练、推理评测、速度基准测试与数据可视化帮助你在虚拟试穿Virtual Try-on项目中快速上手 detectron2 的命令行工作流。一、tools 目录在 IDM-VTON 中的作用IDM-VTON 的虚拟试穿流水线在预处理阶段需要精确的人体解析human parsing结果——即把人体图像分割为衣服、裤子、头发、皮肤等语义区域作为后续 Diffusion 模型的条件输入。该能力由preprocess/humanparsing/下的 mhp_extension 提供其中内嵌了一份完整的 detectron2 代码树而preprocess/humanparsing/mhp_extension/detectron2/tools/正是面向命令行的入口集合。从仓库目录结构看tools/ 下实际包含以下可执行脚本脚本用途train_net.py基于DefaultTrainer的标准训练 / 评测入口plain_train_net.py手写训练循环的极简版训练脚本benchmark.py训练 / 推理 / 数据加载速度基准测试visualize_json_results.py将 COCO/LVIS 格式 JSON 评测结果可视化为图片visualize_data.py可视化标注原始数据或经预处理 / 增强后的训练数据analyze_model.py统计模型的 FLOPs、激活量、参数量与结构finetune_net.py微调网络本仓库人体解析训练 / 推理实际使用convert-torchvision-to-d2.py将 torchvision 预训练权重转换为 detectron2 格式inference.sh 与 run.sh解析模型的推理与微调一键脚本deploy/Caffe2 / TorchScript 部署转换相关脚本与说明其中train_net.py、plain_train_net.py、benchmark.py、visualize_json_results.py、visualize_data.py是官方 README 明确讲解的五个通用工具下面逐一展开。二、train_net.py面向内置模型的标准训练入口2.1 脚本定位train_net.py是一个读取配置并执行训练或评测的通用入口脚本官方在 README 中明确说明它是为训练 detectron2 内置builtin模型而设计的因此脚本内包含许多与这些内置模型绑定的逻辑如按数据集元数据自动选择评估器如果你的项目需求比较特殊官方建议把 detectron2 当作库来使用并以本脚本为 API 调用示例。2.2 工作流setup → Trainer → launch从源码看脚本的执行链路非常清晰train_net.pysetup(args)通过get_cfg()创建默认配置 →cfg.merge_from_file(args.config_file)合并 YAML 配置 →cfg.merge_from_list(args.opts)合并命令行覆盖项 →cfg.freeze()冻结 →default_setup(cfg, args)完成日志、随机种子等基础设置main(args)分支处理评测模式--eval-onlyTrainer.build_model(cfg)构建模型DetectionCheckpointer(...).resume_or_load(cfg.MODEL.WEIGHTS)加载权重Trainer.test评测若cfg.TEST.AUG.ENABLED为真还会追加 TTA测试时增强评测并输出_TTA后缀的结果训练模式实例化Trainer(cfg)resume_or_load支持断点续训trainer.train()启动训练同样支持TEST.AUG.ENABLED时注册EvalHook周期性做 TTA 评测入口统一走launch(...)多机多卡启动函数传入args.num_gpus、num_machines、machine_rank、dist_url。2.3 Trainer 子类按数据集自动选择评估器脚本中的Trainer(DefaultTrainer)只重写了build_evaluator和test_with_TTA两个类方法train_net.py。build_evaluator的核心逻辑是读取MetadataCatalog.get(dataset_name).evaluator_type据此分发sem_seg/coco_panoptic_seg→SemSegEvaluatorcoco/coco_panoptic_seg→COCOEvaluatorpanoptic 还叠加COCOPanopticEvaluatorcityscapes_instance/cityscapes_sem_seg→ Cityscapes 系列评估器要求 GPU 数量不小于 rankpascal_voc→PascalVOCDetectionEvaluatorlvis→LVISEvaluator。评测输出默认写入cfg.OUTPUT_DIR/inferenceTTA 评测写入inference_TTA子目录。2.4 命令行用法官方 README GETTING_STARTED 原文继承在配置好数据集见 datasets/README.md后8 卡训练cd tools/ ./train_net.py --num-gpus 8 \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml官方配置默认按 8 卡设计。改为 1 卡训练时需同步调整学习率与 batch sizedetectron2 官方建议线性缩放学习率./train_net.py \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \ --num-gpus 1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.0025注意对大多数模型detectron2不支持 CPU 训练。仅评测--eval-only配合权重路径./train_net.py \ --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml \ --eval-only MODEL.WEIGHTS /path/to/checkpoint_file更多选项查看./train_net.py -h。三、plain_train_net.py手写训练循环的极简替代3.1 与 train_net.py 的区别plain_train_net.py与train_net.py功能等价都能训练标准模型但不再使用Trainer而是把训练循环完整展开。README 的评价是功能更少但对想深度修改逻辑的开发者更友好more friendly to hackers。对比源码可发现具体差异训练循环显式化do_train中依次手动执行model.train()→build_optimizer→build_lr_scheduler→DetectionCheckpointer带 optimizer 与 scheduler支持断点续训→for data, iteration in zip(data_loader, range(start_iter, max_iter))逐轮迭代手动losses.backward()/optimizer.step()/scheduler.step()plain_train_net.py评测独立成函数do_test对cfg.DATASETS.TEST中每个数据集构建测试 loader 与评估器inference_on_dataset产出结果并以 CSV 格式打印plain_train_net.py功能取舍源码注释明确说明不支持精确计时与精确 BNprecise BN训练循环内loss_dict经comm.reduce_dict聚合后写入CommonMetricPrinter/JSONWriter输出metrics.json/TensorboardXWriter三类事件写入器。3.2 适用场景如果你需要给人体解析模型插入自定义的数据增强、损失函数或调度逻辑从plain_train_net.py复制框架再改动远比逆向理解DefaultTrainer的 hook 机制更省事。这正是官方在脚本 docstring 中推荐的做法把 detectron2 当作库自定义自己的训练循环。四、benchmark.py训练 / 推理 / 数据加载三合一测速4.1 基本用法README 原文继承python benchmark.py --config-file config.yaml --task train/eval/data [optional DDP flags]--task为必选参数choices 限定train/eval/data三选一见 benchmark.pydata只测数据加载速度train测训练速度源码注释特别提醒训练速度可能不具备代表性R-CNN 模型的训练开销随数据内容与模型质量变化eval只测单卡推理脚本内部断言num_gpus 1 and num_machines 1。4.2 源码级细节额外依赖脚本头部注明需要psutil用于打印 RAM 占用psutil.virtual_memory()输出已用/总内存单位 GBdata 任务build_detection_train_loader(cfg)构建 loader先 warmup 10 轮记录启动时间startup time再跑 1000 轮计时并额外做 10 轮重复计时取稳定性参考train / eval 任务源码将cfg.DATALOADER.NUM_WORKERS置为 0并先把 loader 取出的前 100 个 batch 固化为dummy_dataDatasetFromList循环供给从而在固定输入下衡量模型吞吐避免 IO 抖动干扰eval 前还做 5 轮 warmup。setup 阶段还会强制cfg.SOLVER.BASE_LR 0.001避免 NaN注释说明该值在本脚本中无实际意义。这一设计非常实用调优人体解析模型的 batch size / dataloader worker 数量时benchmark.py --task data可以快速定位数据管线的瓶颈。五、visualize_json_results.py评测结果的 JSON 可视化5.1 基本用法README 原文继承python visualize_json_results.py --input x.json --output dir/ --dataset coco_2017_val参数说明--input指定由COCOEvaluator或LVISEvaluator落盘的 JSON 结果文件必填--output为输出目录必填--dataset指定数据集名默认coco_2017_val另有--conf-threshold控制置信度过滤阈值默认0.5visualize_json_results.py。若你的数据集不是 detectron2 内置数据集README 明确提示需要自写注册脚本或直接修改本脚本主要改动点就是DatasetCatalog.get(args.dataset)与MetadataCatalog.get(args.dataset)所依赖的数据集注册。5.2 工作原理解读读取 JSON 后按image_id聚合预测pred_by_image defaultdict(list)通过DatasetCatalog.get(args.dataset)拿到每张图的原始标注 dict类别 ID 映射逻辑优先用元数据thing_dataset_id_to_contiguous_id否则若数据集名含lvis按ds_id - 1映射LVIS 类别 ID 约定否则报错create_instances把预测 dict 转成Instances结构按置信度阈值筛选 → bbox 由BoxMode.XYWH_ABS转BoxMode.XYXY_ABS→ 重建Boxes/pred_classes/ 可选的pred_masks用Visualizer分别绘制预测框draw_instance_predictions与真实标注draw_dataset_dict左右拼接成一张图np.concatenate(..., axis1)后写入输出目录方便直接对比模型输出与 ground truth。六、visualize_data.py标注与预处理数据的可视化6.1 基本用法README 原文继承python visualize_data.py --config-file config.yaml --source annotation/dataloader --output-dir dir/ [--show]--source必填二选一annotation直接可视化数据集的原始标注dataloader可视化经预处理 / 增强之后的训练数据即真正喂给模型的 batch--config-file配置文件路径可选若不填则只有命令行 opts--output-dir输出目录默认./--show是否在 OpenCV 窗口中即时显示启用时可视化缩放倍率scale 2.0否则为1.0。6.2 两个模式的实现差异dataloader 模式build_detection_train_loader(cfg)构造训练 loader逐 batch 取出per_image[image]PyTorch 的 C,H,W 张量permute(1,2,0)转回 H,W,C 后用utils.convert_image_to_rgb(img, cfg.INPUT.FORMAT)按配置的输入格式还原 RGB再调用visualizer.overlay_instances叠加 gt 框 / 掩码 / 关键点visualize_data.pyannotation 模式遍历cfg.DATASETS.TRAIN下所有数据集的标注 dict用visualizer.draw_dataset_dict(dic)绘制若cfg.MODEL.KEYPOINT_ON开启还会先经filter_images_with_few_keypoints(dicts, 1)过滤掉关键点过少的样本。6.3 重要注意事项README 特别警告使用--source dataloader时脚本不会自行停止因为训练 dataloader 通常是无限循环的。实践中应配合--show逐张查看或搭配管道限流如head截断使用。七、IDM-VTON 实战这套工具在本仓库解析链路中的真实用法本仓库并未停留在工具展示层面——preprocess/humanparsing/mhp_extension/detectron2/tools/下的两个 shell 脚本与configs/Misc/中的解析配置构成了 IDM-VTON 人体解析模型的实际训练 / 推理入口。7.1 解析模型推理inference.shinference.sh 内容如下python finetune_net.py \ --num-gpus 1 \ --config-file ../configs/Misc/parsing_inference.yaml \ --eval-only MODEL.WEIGHTS ./model_final.pth TEST.AUG.ENABLED False它复用finetune_net.py基于 train_net 系列的微调变体单卡加载 parsing_inference.yaml 做纯评测。该配置的关键点继承cascade_mask_rcnn_X_152_32x8d_FPN_IN5k_gn_dconv.yaml的骨干结构Cascade Mask R-CNN X-152 FPN GN DCNMASK_ON: TrueROI_HEADS.NUM_CLASSES: 1人体解析任务被建模为单类实例分割只区分人体区域NMS_THRESH_TEST: 0.95、SCORE_THRESH_TEST: 0.5推理阶段的 NMS 与置信度阈值SOLVER.IMS_PER_BATCH: 1、MAX_ITER: 50000、BASE_LR: 0.02、STEPS: (30000, 45000)微调阶段的调度参数数据集为CIHP_trainval/CIHP_test输出目录./inference_output。命令行中TEST.AUG.ENABLED False显式关闭 TTA保证推理速度与结果确定性。7.2 解析模型微调run.shrun.sh 内容如下python finetune_net.py \ --config-file ../configs/Misc/parsing_finetune_cihpvip.yaml \ --num-gpus 8对应 8 卡微调配置 parsing_finetune_cihp.yaml 中IMS_PER_BATCH: 16、MAX_ITER: 200000、STEPS: (140000, 180000)、BASE_LR: 0.02输入短边在(640, 864)范围内随机采样MIN_SIZE_TRAIN_SAMPLING: range最长边 1440并开启随机裁剪CROP.ENABLED: True即通过 resize crop 增强适配 CIHP 数据集。可见官方 tools 工作流被完整复用到了本项目的人体解析模型训练中。7.3 与整条预处理链路的衔接在本仓库中解析结果由 run_parsing.py 及 parsing_api.py 包装供虚拟试穿管线调用如配合 utils_mask.py 生成衣物掩码。tools/中的脚本正是这一能力训练与调优阶段的底层支撑——理解它们就能完全掌控从数据可视化、模型微调到批量推理的每一步。八、命令速查表与选型建议需求推荐脚本关键参数标准训练 / 评测train_net.py--config-file、--num-gpus、--eval-only MODEL.WEIGHTS ...自定义训练循环plain_train_net.py同上手动管理 optimizer / scheduler / checkpoint速度基准测试benchmark.py--task train\|eval\|data需psutil评测 JSON 可视化visualize_json_results.py--input、--output、--dataset、--conf-threshold数据 / 标注可视化visualize_data.py--source annotation\|dataloader、--show模型结构 / 开销分析analyze_model.py--tasks flop,activation,parameter,structure、--num-inputs解析模型训练 / 推理finetune_net.pyinference.sh/run.sh搭配 parsing_inference.yaml 等配置选型建议若你只是复用 IDM-VTON 现有解析模型做推理直接执行inference.sh即可若要在 CIHP 等自有数据集上重训解析头以run.sh为起点并修改 parsing_finetune_cihp.yaml 中的数据集与调度参数若需排查增强是否合理优先用visualize_data.py --source dataloader逐张确认预处理后的训练样本。九、延伸阅读与相关源码工具集官方用法说明tools/README.md完整上手指南训练、评测、演示 Demo 参数GETTING_STARTED.md模型仓库说明MODEL_ZOO.md数据集注册说明data/datasets/README.md人体解析整体入口run_parsing.py 与 parsing_api.py部署转换工具tools/deploy/README.md赞分享计算机视觉深度学习媒体生成【免费下载链接】IDM-VTON[ECCV2024] IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild项目地址https://gitcode.com/GitHub_Trending/id/IDM-VTON点击查看免费下载相关推荐Astro 集成 Svelte 指南astrojs/svelte 的安装配置、Svelte 5 支持与版本演进全解析Astro 集成 Svelte 指南astrojs/svelte 的安装配置、Svelte 5 支持与版本演进全解析 astrojs/svelte 是 A计算机视觉深度学习媒体生成IDM-VTON 人体解析评测指南深入解读 detectron2 的 DatasetEvaluator 与 inference_on_dataset 评估机制IDM VTON 人体解析评测指南深入解读 detectron2 的 DatasetEvaluator 与 inference_on_dataset 评估机制计算机视觉深度学习媒体生成IDM-VTON 人像解析栈中的 detectron2 基准评测Mask R-CNN 训练吞吐量对比与复现指南IDM VTON 人像解析栈中的 detectron2 基准评测Mask R CNN 训练吞吐量对比与复现指南 本文面向在 IDM VTON 中从事人体解析计算机视觉深度学习媒体生成上一篇Enzyme ShallowWrapper 的 .update() 方法同步浅渲染快照与组件树的权威指南下一篇Handsontable Checkbox 单元格类型完全指南从 true/false 布尔值到自定义模板与动态标签创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考