从零部署YOLOv5人脸检测:环境搭建、数据标注到实时应用

发布时间:2026/6/29 9:14:01
从零部署YOLOv5人脸检测:环境搭建、数据标注到实时应用 1. 环境准备从零搭建YOLOv5开发环境第一次接触YOLOv5时我花了两天时间才把环境配好主要卡在CUDA和PyTorch版本兼容问题上。后来发现其实用conda管理环境特别方便这里分享我的踩坑经验。建议使用Ubuntu 20.04系统实测NVIDIA驱动安装最稳定。先确保你的显卡驱动正常运行nvidia-smi能看到显卡信息。安装Anaconda后创建一个专门的环境conda create -n yolov5 python3.8 conda activate yolov5关键依赖安装顺序很重要先装PyTorch建议1.7.1版本conda install pytorch1.7.1 torchvision0.8.2 torchaudio0.7.2 cudatoolkit11.0 -c pytorch再装其他依赖pip install opencv-python matplotlib pandas tqdm seaborn克隆YOLOv5官方仓库时推荐用国内镜像加速git clone https://gitee.com/mirrors/YOLOv5.git cd yolov5 pip install -r requirements.txt注意如果遇到SSL证书错误可以尝试在pip命令后加--trusted-host pypi.org --trusted-host files.pythonhosted.org2. 数据准备高效标注人脸数据集我用过三种标注工具最终发现LabelImg最适合新手。安装很简单pip install labelImg labelImg打开软件后记得设置两点右下角选择YOLO格式保存目录选labels文件夹标注技巧框选时尽量贴近人脸边缘遇到侧脸时以可见面部区域为准遮挡超过50%的人脸建议不标注数据集划分我建议按7:2:1的比例训练集70%验证集20%测试集10%目录结构示例CASIA-FaceV5/ ├── images │ ├── train │ ├── val │ └── test └── labels ├── train ├── val └── test3. 模型配置定制化YOLOv5s网络在yolov5/models目录下复制yolov5s.yaml重命名为face.yaml。只需修改两个参数nc: 1 # 只有人脸一个类别 names: [face] # 类别名称数据配置文件data/face.yaml示例train: ../CASIA-FaceV5/images/train val: ../CASIA-FaceV5/images/val nc: 1 names: [face]训练参数建议小显存6GB以下batch-size设为8-12中等显存8GBbatch-size 16-24大显存可以尝试324. 模型训练从预训练模型迁移学习启动训练的命令详解python train.py \ --data data/face.yaml \ --cfg models/face.yaml \ --weights yolov5s.pt \ --epochs 100 \ --batch-size 16 \ --img-size 640 \ --device 0 # 使用第一块GPU训练过程常见问题Loss不下降检查学习率默认0.01可能太大CUDA内存不足减小batch-size验证集mAP低检查标注质量实时监控训练进度tensorboard --logdir runs/train5. 模型验证与测试验证模型性能python val.py \ --data data/face.yaml \ --weights runs/train/exp/weights/best.pt \ --batch-size 8 \ --task test # 在测试集上验证测试单张图片python detect.py \ --weights runs/train/exp/weights/best.pt \ --source test.jpg \ --conf 0.5 # 置信度阈值6. 实时人脸检测部署摄像头实时检测命令python detect.py \ --weights best.pt \ --source 0 \ # 0表示默认摄像头 --view-img \ # 实时显示窗口 --conf-thres 0.6 # 调高阈值减少误检性能优化技巧添加--half参数使用半精度推理使用TensorRT加速需导出ONNX对于多摄像头可以用--source rtsp://url7. 常见问题解决方案检测框闪烁问题使用ByteTrack等跟踪算法在detect.py中添加帧间缓存小脸检测效果差修改model.yaml中的anchor尺寸数据增强中添加更多小脸样本侧脸漏检增加侧脸训练数据调整非极大抑制参数iou-thres最后分享一个实用技巧在detect.py中添加以下代码可以保存检测结果if save_img: cv2.imwrite(save_path, im0)