如何用 InsightFace DML-CSR 在 CelebAMask-HQ 上训练人脸解析模型?
发布时间:2026/9/12 7:06:14 锦皓数字建站

如何用 InsightFace DML-CSR 在 CelebAMask-HQ 上训练人脸解析模型【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightfaceInsightFace 仓库的 parsing/dml_csr 目录包含 CVPR 2022 论文Decoupled Multi-task Learning with Cyclical Self-Regulation for Face Parsing的官方训练代码。README 声明运行环境为 PyTorch 1.7.1 Python 3.6.2。下面的操作路径全部取自 parsing/dml_csr/README.md 与训练、测试代码的实际内容配好 CelebAMask-HQ 数据 → 放置 ResNet-101 预训练权重 → 启动多 GPU 训练 → 用 mIoU/f1 和test.py验证结果。1. 准备环境README 的安装部分只有一条命令pip install -r requirements.txt实际执行时需要注意两点当前parsing/dml_csr/目录下没有独立的requirements.txt整个仓库唯一的 requirements.txt 在根目录只包含Cython0.29.28、cmake3.22.3、numpy1.22.3三项远不覆盖训练依赖。直接看 train.py 和 test.py 的导入训练代码还依赖inplace_abnInPlaceABN/InPlaceABNSync、tensorboardX、cv2OpenCV等。因此需要按 README 声明的 PyTorch 1.7.1 Python 3.6.2 组合自行安装第三方库上面的命令可以理解为最小兜底装完仍会缺依赖。2. 准备 CelebAMask-HQ 数据README 的 Data 一节列出了 Helen、LaPa、CelebAMask-HQ 三个数据集的下载地址见 parsing/dml_csr/README.md本文不复述外部链接。本任务只需要 CelebAMask-HQ。数据集类真正读取的目录结构在 dataset/datasets.py 的文档字符串中给出CelebAMask-HQ/ ├── train/ │ ├── images/ # 0.jpg, 1.jpg ... │ ├── labels/ # 0.png, 1.png ... │ └── edges/ # 0.png, 1.png ... ├── test/ ├── train_list.txt └── test_list.txt两个必须核对的细节数据集类从{dataset}_list.txt读取样本列表datasets.pydataset取train/test。每行格式为images/0.jpg labels/0.png即图像路径与解析掩码路径以空白分隔。训练时除图像、标签外还会加载edges/下的边缘掩码见 datasets.py 的__getitem__。README 说边缘生成代码在generate_edge.py中提供但该文件目前不在仓库内边缘掩码需要自行随数据集准备或另行生成。3. 放置 ResNet-101 预训练权重从零训练时主干网络用 ImageNet 预训练的 ResNet-101 权重初始化。train.py 第 47 行硬编码了文件名RESTORE_FROM resnet101-imagenet.pthREADME 说明该权重需从提供的网盘地址下载百度盘链接为空Google Drive 链接可用具体地址见 README 的 Usage 一节并放入 snapshot 文件夹。由于代码按工作目录的相对路径加载该文件把resnet101-imagenet.pth放在运行训练命令的工作目录即parsing/dml_csr/即可。4. 启动多 GPU 训练README 只给出一种多 GPU 分布式训练命令README 说明 InplaceABN 需要 PyTorch 的分布式数据并行GPU4,5,6,7 Node4 dataset./datasets/CelebAMask-HQ/ snapshot./work_dirs/ CUDA_VISIBLE_DEVICES$GPU python -m torch.distributed.launch --nproc_per_node$Node --master_port295002 train.py --data-dir $dataset --random-mirror --random-scale \ --gpu $GPU --batch-size 7 --input-size 473,473 --snapshot-dir $snapshot --num-classes 19 --epochs 200 --schp-start 150在parsing/dml_csr/目录下运行相对导入与权重文件都以此为基准。四个变量需要按机器情况替换变量说明GPUGPU 设备号列表同时传给CUDA_VISIBLE_DEVICES与--gpuNode启动的进程数需与 GPU 数量一致dataset第 2 步准备的 CelebAMask-HQ 目录snapshot模型快照、日志、TensorBoard 文件的保存目录关键参数及取值依据--num-classes 19CelebAMask-HQ 为 19 类含背景。train.py 该参数默认 11、test.py 默认 20默认值互不一致必须按 README 显式传 19。--random-mirror --random-scale训练期随机翻转与随机缩放增广。--input-size 473,473模型输入尺寸训练与测试保持一致。--epochs 200 --schp-start 150共 200 个 epoch从第 150 个 epoch 起进入周期性自校正SCHP阶段——代码在每--cycle-epochs默认 10个 epoch 对主模型做滑动平均生成 SCHP 模型、重新估计 BN并额外评估保存 SCHP 检查点见 train.py。--batch-size 7分布式模式下每 GPU 的 batch。损失由Criterion的解析、边缘与一致性项构成权重由--lambda-s/--lambda-e/--lambda-c控制默认 1 / 1 / 0.1见 train.py 与 loss/criterion.py。README 只验证了分布式启动方式。train.py 本身存在非分布式分支单卡时用SingleGPU包装模型见 train.py只有一张卡时可以省略torch.distributed.launch前缀直接运行python train.py ...其余参数不变该路径不是 README 给出的命令属于可选尝试。5. 判断训练进度与产物训练每--eval_epochs默认 1个 epoch 在 test 集上评估一次并向 snapshot 目录下的output.log写入一行格式见 train.pymIoU {...}, and f1 {...} of epoch 19, util now, best_f1 ...这是代码中的日志模板括号内的数值取决于实际训练不是固定预期。同时产生以下文件checkpoint_{epoch}.pth每个评估 epoch 保存best.pth对数据目录名不含 Helen 的情况即 CelebAMask-HQ当f1[Mean_F1]超过历史最佳时更新schp_{n}_checkpoint.pthSCHP 周期完成时额外保存TensorBoard 事件文件learning_rate、loss、mIoU、f1 曲线写入 snapshot 目录的时间戳子目录。训练中的观察方式就是output.log中 mIoU/f1 是否随 epoch 上升训练结束后的最终产物是最新的best.pth。6. 用 test.py 评估模型tests.py 可加载检查点并在 test 集上评估。README 给出的测试命令为python test.py --data-dir $dataset --out-dir $out_dir --restore-from $snapshot --gpu $GPU --batch-size 7 --input-size 473,473 --dataset test --num-classes 19其中$dataset、$GPU沿用训练时定义的值$snapshot换成训练保存的目录或官方预训练模型文件$out_dir需自行定义例如./test_out/。README 同时提供了官方预训练模型的下载地址下载后可用--restore-from直接评估。test.py 的两个行为值得注意--gpu的值会直接写入CUDA_VISIBLE_DEVICES权重固定加载到cuda:0评估完成后向 stdout 打印mIoU和f1两个字典并把每张图像的解析掩码写到{out_dir}/test/parsing/{图像名}.png。7. 已知限制按当前仓库状态复现时有四点必须先知道边缘生成脚本缺失README 提到的generate_edge.py不在仓库中训练必需的edges/目录需自行准备。依赖清单不完整根目录requirements.txt覆盖不了训练依赖inplace_abn、tensorboardX等需按环境说明自行安装。train.py 现存缺陷验证集构建引用了参数解析器中未定义的args.model_typetrain.py数据加载器使用了未导入的data.DataLoadertrain.py。README 命令是预期用法实际运行前需要在自己的代码副本中处理这两处。类别数默认值不一致train.py 默认 11、test.py 默认 20CelebAMask-HQ 上训练与测试都必须显式传--num-classes 19否则与 README 口径不符。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。