LibFaceDetection 训练程序指南
1. 项目目录结构及介绍
LibFaceDetection 的训练程序目录结构如下:
libfacedetection.train/
├── wider_face_split/ # WIDER Face数据集的划分文件
│ ├── WIDER_test/
│ ├── WIDER_train/
│ ├── WIDER_val/
└── labelv2/ # SCRFD数据集标签
├── train/
│ └── labelv2.txt # 训练集标签文件
└── val/
├── gt/ # 测试集 ground truth 目录
└── labelv2.txt # 验证集标签文件
这些文件夹包含了用于训练和验证模型的数据集。wider_face_split
包含了从 WIDER Face 数据集中分割出的训练、测试和验证集子集。labelv2
文件夹则包含 SCRFD 数据集的标签。
2. 项目的启动文件介绍
主要的训练脚本位于 tools
目录下:
dist_train.sh
: 分布式训练脚本,通过设置 CUDA_VISIBLE_DEVICES 和指定配置文件路径进行多GPU训练。detect_image.py
: 图像检测脚本,用于在单个图像上运行检测模型并可视化结果。test_widerface.py
: WIDER Face 测试脚本,用于评估模型在 WIDER Face 数据集上的性能。
你可以通过以下命令行调用它们,例如:
CUDA_VISIBLE_DEVICES=0 1 bash tools/dist_train.sh /configs/yunet_n.py 2 12345 # 开始训练
python tools/detect_image.py /configs/yunet_n.py /weights/yunet_n.pth /path/to/image.jpg # 图像检测
python tools/test_widerface.py /configs/yunet_n.py /weights/yunet_n.pth --mode 2 # WIDER Face 测试
3. 项目的配置文件介绍
配置文件如 yunet_n.py
是基于 PyTorch 的模型参数配置。这些文件定义了网络架构、优化器设置、学习率策略和其他训练相关的参数。例如,它可能包含如下内容:
model = dict(
type=' Yunet',
pretrained=None,
backbone=dict(
type='ResNet',
depth=50,
num_stages=4,
out_indices=(1, ),
frozen_stages=1,
norm_cfg=dict(type='BN', requires_grad=False),
style='pytorch'),
neck=dict(type='FPN', in_channels=[256]),
head=dict(
type='YunetHead',
num_classes=2,
stacked_convs=4,
in_channels=256,
feat_channels=256))
optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
# learning policy
lr_config = dict(policy='step', step=[8, 11])
runner = dict(type='EpochBasedRunner', max_epochs=12)
在此配置中,模型结构、优化器和训练计划都已被详细定义。你可以根据你的需求修改这些参数以调整模型的训练过程。
以上就是 LibFaceDetection 训练程序的基本结构和关键组件的介绍,希望对你理解和使用该项目有所帮助。在实际操作中,请确保已经正确安装了所有依赖项并准备好了相应的数据集。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考