我的目标是训练 Yolov10 模型来检测火灾、人类和烟雾。我在 roboflow 上找到了一个 数据集 来帮助我做到这一点。我使用以下代码训练了模型:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="./datasets/fire-smoke-human/data.yaml", epochs=30, device="cuda:0")
# Export the model
model.export(format="onnx", int8=True)
模型似乎训练得非常好,训练后的图表、验证图像看起来相当准确:
但是,当我尝试使用
model = YOLO(f"./runs/detect/train/weights/best.onnx")
运行模型时,我不断得到关键错误。测试 Yolov8 模型时使用相同的代码。有不同的方法来使用 Yolov10 还是我必须以不同的方式训练它?我将不胜感激任何帮助。谢谢你!
你遇到的问题在于,你试图用 YOLOv8 的加载方法来加载 YOLOv10 模型。尽管 Ultralytics 努力保持 API 的一致性,但 YOLOv10 相较于 YOLOv8 有着重大的架构变化,导致加载方式有所不同。
以下是测试 YOLOv10 模型的正确步骤:
-
不要导出模型: 与 YOLOv8 不同,你不需要为了测试而将 YOLOv10 模型导出为 ONNX 格式。训练好的模型可以直接使用。
-
使用
model
对象进行预测: 在训练完成后,model
对象已经包含了训练好的权重,可以直接用于预测。
以下是修正后的代码:
from ultralytics import YOLO
# 加载 YOLOv10n 模型
model = YOLO("yolov10n.yaml")
# 训练模型
model.train(data="./datasets/fire-smoke-human/data.yaml", epochs=30, device="cuda:0")
# 在图像、视频或网络摄像头上运行模型
results = model("path/to/your/image.jpg") # 用你的图像路径替换
# 打印结果
print(results)
# 可选:保存结果
results.save()
代码解释:
-
训练完成后,无需重新加载模型,直接使用已有的
model
对象。 -
使用
model("path/to/your/image.jpg")
进行预测,将图片路径替换为你的实际路径。 -
results
对象包含了预测结果,可以使用print(results)
查看,或使用results.save()
保存结果。
其他建议:
-
确保你使用的是最新版本的 Ultralytics YOLO。可以通过
pip install -U ultralytics
更新。 - 参考 Ultralytics YOLOv10 的官方文档和示例代码: https://docs.ultralytics.com/
通过以上步骤,你应该能够成功测试你的 YOLOv10 模型。
标签:python,tensorflow,object-detection,yolo From: 78833344