我正在尝试使用
yolov8n-pose.pt
预训练模型来训练 YOLOv8 模型,并在 config.yaml 中使用以下配置:
# Data
path: C:\Users\Denis\OneDrive\Documents\Project\Workout Assistant\data
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
# Keypoints
kpt_shape: [8, 0] # [number of keypoints, number of dim]
flip_idx: [0, 1, 2, 3, 4, 5, 6, 7] # keypoints to flip
# Classes
names:
0: starting_pos
1: lifting
这是我训练模型的代码
from ultralytics import YOLO
model = YOLO('yolov8n-pose.pt') # load a pretrained model (recommended for training)
model.train(data='config.yaml', epochs=1, imgsz=640)
我收到以下错误
RuntimeError: Given groups=1, expected weight to be at least 1 at dimension 0, but got weight of size [0, 16, 1, 1] instead
我尝试过的步骤:
- 验证预训练模型文件以确保其未损坏。
- 仔细检查 config.yaml 文件是否存在任何格式问题。
- 确保正确指定了数据集路径和类名。|| |我怀疑该问题可能与
或
kpt_shape
设置有关,但我不确定如何解决它。
flip_idx
有关如何修复此错误的任何帮助或指示将不胜感激。
Any help or pointers on how to fix this error would be greatly appreciated.
出现“RuntimeError: Given groups=1, expected weight to be at least 1 at dimension 0, but got weight of size [0, 16, 1, 1] instead”错误的原因是你在尝试训练一个用于关键点检测的 YOLOv8 模型,而你的自定义数据集中没有带标注的关键点。
具体来说,
kpt_shape: [8, 0]
这一行表明你希望模型检测到每个对象有 8 个关键点。但是,当你训练模型时,它并没有在数据集中找到任何关键点信息。这会导致模型中的某个卷积层出现维度不匹配的错误,因为该层期望输入的关键点数据为空。
要解决此错误,你需要执行以下操作之一:
-
为你的数据集标注关键点: 这是最直接的解决方案。你需要使用标注工具(例如 makesense.ai、CVAT 或 LabelImg)为数据集中的每个对象标注 8 个关键点。标注完成后,确保你的数据加载器能够正确解析和加载这些关键点信息。
-
使用不带关键点检测的 YOLOv8 模型: 如果你不需要进行关键点检测,可以使用没有关键点检测头的 YOLOv8 模型(例如
yolov8n.pt
)。这将确保模型中没有层期望关键点数据,从而避免错误。 -
修改模型以移除关键点检测头: 如果你想使用
yolov8n-pose.pt
预训练模型但不需要关键点检测,你可以修改模型以移除关键点检测头。这需要对 YOLOv8 架构有一定的了解。你可以参考 Ultralytics 文档和代码示例来了解如何修改模型。
一旦你选择了合适的解决方案并相应地更新了代码和/或数据集,该错误应该得到解决,你就可以开始训练模型了。
标签:python,tensorflow,pytorch,yolov8 From: 78793385