项目说明
这是一个基于 YOLOv3 的姿态分类项目,在原版 keras-yolo3 基础上增加了以下功能:
- gitee:LJJ/yolov3_姿态分类
1. 资源下载
- 预训练模型和权重文件:
- 通过百度网盘分享的文件:yolov3 链接:https://pan.baidu.com/s/1z_RnKMHS4fl7oOkrrsqd4A?pwd=6666 提取码:6666
model_data/yolo_weights.h5
model_data/tiny_yolo_weights.h5
model_data/darknet53.weights
logs/pose_detection/*.h5 # 训练好的模型
converted_models/*.pb # 转换后的部署模型
- MPII数据集:
data/mpii_human_pose_v1_u12_1.mat # 标注文件
data/images/ # 图片目录
2. 新增工具脚本
download_cfg.py
: 自动下载 YOLOv3 配置文件download_weights.py
: 自动下载预训练权重convert_h5_to_pb.py
: 将 Keras 的 .h5 模型转换为 TensorFlow 的 .pb 格式test_pose.py
: 批量测试姿态分类效果data/mpii_to_voc.py
: MPII数据集转VOC格式data/create_pose_dataset.py
: 创建训练集和测试集
3. 项目结构
├── model_data/ # 模型配置文件
│ ├── pose_classes.txt # 姿态类别定义
│ ├── yolov3.cfg # YOLOv3 配置
│ ├── yolov3-tiny.cfg # YOLOv3-tiny 配置
│ └── darknet53.cfg # Darknet53 配置
├── logs/ # 训练日志和权重
│ ├── pose_detection/ # 完整训练模型
│ └── fine_tune/ # 微调模型
├── results/ # 测试结果输出
├── test_images/ # 测试图片目录
└── data/ # 数据集处理
├── mpii_to_voc.py # MPII转换脚本
└── create_pose_dataset.py # 数据集划分脚本
4. 环境要求
python==3.7
tensorflow==1.14.0
keras==2.2.4
opencv-python==4.10.0.84
pillow==9.5.0
scipy # 用于处理MPII数据集
numpy # 数据处理
5. 数据集准备
- MPII数据集转换:
# 将MPII数据集转换为VOC格式
python data/mpii_to_voc.py
# 支持的姿态类别:
- standing (站立)
- sitting (坐着)
- lying (躺着)
- unknown (未知)
- 创建训练集和测试集:
python data/create_pose_dataset.py
6. 模型训练
- 完整训练:
# 从头开始训练模型
python train.py
- 快速微调:
# 使用预训练模型进行微调
python train.py --fine-tune \
--weights logs/pose_detection/ep015-loss16.844-val_loss16.818.h5 \
--epochs 5 \
--batch-size 16 \
--lr 1e-4
# 微调参数说明:
--weights: 预训练权重路径
--epochs: 训练轮次,默认5
--batch-size: 批次大小,默认16
--lr: 学习率,默认0.0001
7. 模型测试
批量测试:
python test_pb.py
8. 模型部署
转换模型格式:
# 将训练好的模型转换为TensorFlow的.pb格式
python convert_h5_to_pb.py
9. 注意事项
- 支持 GPU 训练和推理
- 自动内存管理,避免显存溢出
- 详细的日志输出
- 完整的错误处理
- MPII数据集转换支持自动姿态分类
- 支持模型快速微调
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。