拉緹娜 2023-10-31 18:53 采纳率: 50%
浏览 111
已结题

YOLO8训练自定义数据集后,预测结果没有显示正确的标签,而是claa_0、class_1

YOLO8训练自定义数据集后,预测结果没有显示正确的标签,而是claa_0、class_1
参考YOLO8最新教程,自己试着弄了个识别墨镜和普通眼镜
数据集是手动划分的,并没有使用大部分教程的脚本,也没有txt文件

img

新建了data.yaml,设定了数据集的路径和标签,

train: /home/nwh/file/ultralytics-main/data/images/train
val: /home/nwh/file/ultralytics-main/data/images/val
nc: 2
name: ["normalglasses", "sunglasses"]

然后命令行输入开始训练

yolo train data=data.yaml model=yolov8x.pt epochs=200 imgsz=320 batch=10 workers=4 device=0

得到了best.pt拿去用命令行预测

yolo predict model=best.pt source='/home/nwh/file/ultralytics-main/dataset/images/test/'

虽然预测结果正确了,但是显示的不是我的自定义标签名,而是class_0、class_1

img

因为YOLO8看到的都是命令行来操作,也不知道从哪里入手改预测代码,怎么办

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-31 18:53
    关注
    获得0.90元问题酬金

    引自强大而免费的微信小程序:皆我百晓生

    如果你使用的是YOLOv5,你可以尝试以下方法来解决预测结果显示不正确的标签问题:

    1. 检查data.yaml文件中的标签名是否正确。确保在"names"部分中按照你的数据集顺序列出了正确的标签名,对应于你的类别索引(例如,第一个标签对应类别索引0,第二个标签对应类别索引1,以此类推)。

    2. 确保训练和预测使用的data.yaml配置文件是相同的。请检查预测命令中的data参数,确保指向正确的data.yaml路径。

    3. 检查预测命令中的source参数,确保指向正确的测试图像文件夹路径。

    如果上述方法都没有解决问题,你可以尝试修改YOLOv5的源代码来显示自定义标签名。

    在yolo.py文件的detect()函数中,可以找到以下代码:

    box_labels = []
    if labels is not None:
        l = labels[i].tolist()
        if l[0] >= 0:
            box_labels.append(f'{names[l[0]]} {l[1]:.2f}')
    

    在这段代码后面,你可以添加以下代码,用你的自定义标签名替换class_0和class_1:

    box_labels = [label.replace("class_0", "normalglasses").replace("class_1", "sunglasses") for label in box_labels]
    

    这将把预测结果中的class_0替换为normalglasses,将class_1替换为sunglasses。

    请确保在修改源代码前备份文件,并在更改完毕后重新编译YOLOv5。重新运行预测命令,预测结果应该显示正确的标签名。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入