From 2952edd7c387c06f6fb971b294246089eed4ed6a Mon Sep 17 00:00:00 2001 From: mshe <666666666@666666666.666666666> Date: Sat, 27 Sep 2025 18:07:18 +0800 Subject: [PATCH] bak --- 14.训练模型-姿态估计-base.py | 26 +++++++++++++++ 14.训练模型-姿态估计-mac.py | 34 ++++++++++++++++++++ 14.训练模型-姿态估计-windows.py | 48 +++++++++++++++++++++++++++ 14.训练模型-姿态估计.py | 57 --------------------------------- requirements.txt | 5 +-- 5 files changed, 111 insertions(+), 59 deletions(-) create mode 100644 14.训练模型-姿态估计-base.py create mode 100644 14.训练模型-姿态估计-mac.py create mode 100644 14.训练模型-姿态估计-windows.py delete mode 100644 14.训练模型-姿态估计.py diff --git a/14.训练模型-姿态估计-base.py b/14.训练模型-姿态估计-base.py new file mode 100644 index 0000000..f5cbbf1 --- /dev/null +++ b/14.训练模型-姿态估计-base.py @@ -0,0 +1,26 @@ +from ultralytics import YOLO +# 加载预训练模型 +model = YOLO('models/yolov8n-pose.pt') +# model = YOLO('models/yolo11x-pose.pt') +# model = YOLO('models/yolov8n-pose.pt') +# model = YOLO('runs/pose/train2/weights/last.pt') + + +# 训练模型 +# data:数据集路径 +# epochs:训练轮数 +# imgsz: 图片大小 +# batch: 批次大小 +# device: 使用设备 0:GPU 'cpu':CPU +# workers: 使用的进程数 +# verbose: 训练进度条 +# resume: 恢复训练 +# name: 训练结果保存名称 +# plot: 绘制训练曲线 +# save: 保存训练结果 +# save_period: 每隔多少轮保存一次模型 +# save_dir: 训练结果保存路径 +# weights: 预训练模型路径 +model.info() +model.train(data='./dataset1/train.yaml', epochs=300, imgsz=640, batch=32, device=0) +print("训练完成") diff --git a/14.训练模型-姿态估计-mac.py b/14.训练模型-姿态估计-mac.py new file mode 100644 index 0000000..dcd1cc9 --- /dev/null +++ b/14.训练模型-姿态估计-mac.py @@ -0,0 +1,34 @@ +from ultralytics import YOLO +import torch + +# 加载预训练模型 +model = YOLO('models/yolov8n-pose.pt') +# model = YOLO('models/yolo11x-pose.pt') +# model = YOLO('models/yolov8n-pose.pt') +# model = YOLO('runs/pose/train2/weights/last.pt') + +model.info() +# 检查MPS可用性 +print(f"MPS available: {torch.backends.mps.is_available()}") +print(f"MPS built: {torch.backends.mps.is_built()}") +# MPS优化配置 +model.train(data='./dataset1/train.yaml', epochs=300, + imgsz=320, # M2 Pro上建议减小尺寸 + batch=8, # 根据内存调整 + device='mps', # 使用Apple Metal Performance Shaders + workers=2, # MPS下建议2个worker + patience=50, + lr0=0.01, + lrf=0.01, + momentum=0.9, # MPS上动量稍小 + weight_decay=0.0005, + warmup_epochs=5.0, + box=7.5, + pose=1.0, # 增加姿态损失权重 + kobj=1.5, + save=True, + exist_ok=True, + verbose=True, + amp=False # MPS上关闭自动混合精度 + ) +print("训练完成") diff --git a/14.训练模型-姿态估计-windows.py b/14.训练模型-姿态估计-windows.py new file mode 100644 index 0000000..1a10fc2 --- /dev/null +++ b/14.训练模型-姿态估计-windows.py @@ -0,0 +1,48 @@ +from ultralytics import YOLO +import torch + +# 检查GPU信息 +print(f"CUDA可用: {torch.cuda.is_available()}") +print(f"GPU数量: {torch.cuda.device_count()}") +print(f"当前GPU: {torch.cuda.get_device_name(0)}") +print(f"GPU内存: {torch.cuda.get_device_properties(0).total_memory / 1024 ** 3:.1f} GB") + +model = YOLO('models/yolov8n-pose.pt') + +# 3080优化配置 +model.train( + data='./dataset1/train.yaml', + epochs=300, + imgsz=640, # 3080可以处理原尺寸 + batch=32, # 根据12GB内存调整 + device=0, # 使用GPU 0 + workers=8, # 充分利用CPU核心 + patience=50, + lr0=0.01, + lrf=0.01, + momentum=0.937, + weight_decay=0.0005, + warmup_epochs=3.0, + + # 损失权重调整(重点解决姿态问题) + box=7.5, + pose=1.5, # 提高姿态损失权重 + kobj=2.0, # 提高关键点目标权重 + cls=1.0, + + # 性能优化 + amp=True, # 自动混合精度训练 + cos_lr=True, # 余弦学习率调度 + close_mosaic=10, # 最后10epoch关闭马赛克增强 + + # 数据增强 + hsv_h=0.015, + hsv_s=0.7, + hsv_v=0.4, + fliplr=0.5, # 水平翻转对姿态很重要 + + save=True, + exist_ok=True, + verbose=True +) +print("训练完成") diff --git a/14.训练模型-姿态估计.py b/14.训练模型-姿态估计.py deleted file mode 100644 index 2d6f410..0000000 --- a/14.训练模型-姿态估计.py +++ /dev/null @@ -1,57 +0,0 @@ -from ultralytics import YOLO -import torch -# 加载预训练模型 -model = YOLO('models/yolov8n-pose.pt') -# model = YOLO('models/yolo11x-pose.pt') -# model = YOLO('models/yolov8n-pose.pt') -# model = YOLO('runs/pose/train2/weights/last.pt') - - -# 训练模型 -# data:数据集路径 -# epochs:训练轮数 -# imgsz: 图片大小 -# batch: 批次大小 -# device: 使用设备 0:GPU 'cpu':CPU -# workers: 使用的进程数 -# verbose: 训练进度条 -# resume: 恢复训练 -# name: 训练结果保存名称 -# plot: 绘制训练曲线 -# save: 保存训练结果 -# save_period: 每隔多少轮保存一次模型 -# save_dir: 训练结果保存路径 -# weights: 预训练模型路径 -model.info() -model.train(data='./dataset1/train.yaml', epochs=300, imgsz=640, batch=32, device=0) - - - -# -# # 检查MPS可用性 -# print(f"MPS available: {torch.backends.mps.is_available()}") -# print(f"MPS built: {torch.backends.mps.is_built()}") -# -# model = YOLO('models/yolov8n-pose.pt') -# -# # MPS优化配置 -# model.train( data='./dataset1/train.yaml', epochs=300, -# imgsz=320, # M2 Pro上建议减小尺寸 -# batch=8, # 根据内存调整 -# device='mps', # 使用Apple Metal Performance Shaders -# workers=2, # MPS下建议2个worker -# patience=50, -# lr0=0.01, -# lrf=0.01, -# momentum=0.9, # MPS上动量稍小 -# weight_decay=0.0005, -# warmup_epochs=5.0, -# box=7.5, -# pose=1.0, # 增加姿态损失权重 -# kobj=1.5, -# save=True, -# exist_ok=True, -# verbose=True, -# amp=False # MPS上关闭自动混合精度 -# ) -# print("训练完成") diff --git a/requirements.txt b/requirements.txt index 630497f..2727165 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ ultralytics~=8.3.198 opencv-python~=4.12.0.88 numpy~=2.0.2 -pyautogui -moviepy \ No newline at end of file +pyautogui~=0.9.54 +moviepy~=2.2.1 +torch~=2.8.0 \ No newline at end of file