电脑高手不会遇到的YOLOv5笨蛋问题

一、如何将xml文件转化为txt文件:

  1. 首先存在编译器IDE
  2. 下载东北大学钢材损耗数据集
  3. 在数据集文件夹中创建py脚本,如图

  1. 编写代码,此代码为最终可运行版本。
  2. import xml.etree.ElementTree as ET
    import os
    from os import getcwd
    from tqdm import tqdm

    classes = [
    "crazing", "inclusion", "patches", "pitted_surface", "rolled-in_scale", "scratches"]

    def convert(size, box):
        dw =
    1. / size[0]
        dh =
    1. / size[1]
        x = (box[
    0] + box[1]) / 2.0
       
    y = (box[2] + box[3]) / 2.0
       
    w = box[1] - box[0]
        h = box[
    3] - box[2]
        x = x * dw
        w = w * dw
        y = y * dh
        h = h * dh
       
    return (x, y, w, h)

    def convert_annotation(image_id):
        in_file =
    './ANNOTATIONS/%s.xml' % (image_id)
        out_file =
    open('./labels/%s.txt' % (image_id), 'w')
        tree = ET.parse(in_file)
        root = tree.getroot()
        size = root.find(
    'size')
        w =
    int(size.find('width').text)
        h =
    int(size.find('height').text)

       
    for obj in root.iter('object'):
            difficult = obj.find(
    'difficult').text
            cls = obj.find(
    'name').text
           
    if cls not in classes or int(difficult) == 1:
               
    continue
           
    cls_id = classes.index(cls)
            xmlbox = obj.find(
    'bndbox')
            b = (
    float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
                 
    float(xmlbox.find('ymax').text))
            bb = convert((w, h), b)
            out_file.write(
    str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')

    if __name__ == "__main__":
        wd = getcwd()
       
    print(wd)
       
    if not os.path.exists('./labels/'):
            os.makedirs(
    './labels/')
        image_ids = os.listdir(
    'ANNOTATIONS')
       
    for image_id in tqdm(image_ids):
            convert_annotation(image_id.split(
    '.')[0])
  3. 运行脚本,

产生label文件夹,    

产生txt文件,至此,转化工作完成。

下面是对过程中遇到的一些问题的自认为的片面解答

本代码参考了代码实战:YOLOv5实现钢材表面缺陷检测 - 掘金 (juejin.cn)在原本的代码中,我们并没有xml为名的文件夹,语句为打开文件夹寻找xml格式(相对路径),我们的xml格式文件放在了ANNOTATIONS文件夹中,故将其改为

修改完之后会出现ERROR

这个是因为我当时存放py程序的位置不在NEU—DET中,在编辑器中将py文件拖拽到NEU文件夹就可以解决,解决后图为

再次运行,产生

定位为:

通过ChatGPT告知,可能会对字母大小写敏感,

我修改了大小写之后,成功运行

至此,程序可以运行,txt文件应该是这种样子的:

二、配置环境

存在YOLO-master的requirements.TXT文件无法pip安装,如图(例)

会报错:找不到相应的文件

解决方法:将requirements文件改名(换个名字就行),然后采用csdn论坛上的error2解决方法,成功(或者直接pip也行)

PyTorch安装 pip即可,我认为个人的电脑没有必要安装anconda。挂上全局梯子或者采用清华的镜像网站即可。

未来程序的修改将以yolov5——train.py代码【注释、详解、使用教程】-CSDN博客 为基础,进行修改调整,下次数据训练前需要把之前的权重函数文件删去,我现在非常怀疑并没有训练默认的而是训练自己的模型,到时候运行一下detect.py文件即可

关于:

ImportError: Bad git executable.

The git executable must be specified in one of the following ways:

    - be included in your $PATH

    - be set via $GIT_PYTHON_GIT_EXECUTABLE

    - explicitly set via git.refresh()

All git commands will error until this is rectified.

This initial warning can be silenced or aggravated in the future by setting the

$GIT_PYTHON_REFRESH environment variable. Use one of the following values:

    - quiet|q|silence|s|none|n|0: for no warning or exception

    - warn|w|warning|1: for a printed warning

    - error|e|raise|r|2: for a raised exception

Example:

    export GIT_PYTHON_REFRESH=quiet

采用了CSDN论坛上的方法

加入

即可。

三、训练和测试

采用csdn论坛中windows+Pycharm+yolov5 配置环境以及本地训练自己的模型-CSDN博客的方法,但是现在遇到了训练自己的数据集,但是程序还是训练的默认自带的数据集。可能是因为某些地方博主没有给明。

三个重点要修改的地方:改为自己数据集的绝对地址,采用相对地址可能会导致数据集不在yolo文件夹中而报错。

同时,yaml文件里也要是绝对地址比较好

YOLOV5训练数据出现:no labels found

采用了CSDN论坛上一步真实解决AssertionError: train: No labels in /xxx/xxx/xxx/datasets/VOC_To_YOLO/train.cache._assertionerror怎么解决-CSDN博客

将框内改成自己的文件名就行(我这个是已经改过的,因为我的文件名就是这个,只是变了大写,另外 这个只要相应的文件夹名字就行 不用绝对地址)

四、结果

这不可能有什么问题了,这些改改就行

训练

测试结果

看上去好像还可以······

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
YOLOv5是一种用于目标检测的深度学习模型,可以用于数字识别等任务。下面是一个简单的教程,从安装YOLOv5开始逐步介绍。 1. 安装YOLOv5: - 首先,确保你已经安装了Python和PyTorch。 - 打开终端或命令提示符,使用以下命令克隆YOLOv5的代码库: ``` git clone https://github.com/ultralytics/yolov5.git ``` - 进入克隆的代码库目录: ``` cd yolov5 ``` - 安装所需的Python依赖项: ``` pip install -r requirements.txt ``` 2. 准备数据: - 准备包含数字的图像数据集。可以使用自己的数据集或者使用公开可用的数据集。 - 将图像数据集划分为训练集和测试集,并将其放置在适当的文件夹中。 3. 训练模型: - 在终端或命令提示符中运行以下命令来训练模型: ``` python train.py --img 640 --batch 16 --epochs 50 --data your_data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt ``` 其中,`--img`指定输入图像的大小,`--batch`指定批量大小,`--epochs`指定训练的轮数,`--data`指定数据集的配置文件,`--cfg`指定模型的配置文件,`--weights`指定预训练的权重文件。 4. 测试模型: - 在终端或命令提示符中运行以下命令来测试模型: ``` python test.py --img 640 --batch 16 --data your_data.yaml --weights runs/train/exp/weights/best.pt ``` 其中,`--img`指定输入图像的大小,`--batch`指定批量大小,`--data`指定数据集的配置文件,`--weights`指定训练得到的权重文件。 5. 进行数字识别: - 使用训练得到的模型进行数字识别。可以使用以下命令来对单张图像进行识别: ``` python detect.py --source your_image.jpg --weights runs/train/exp/weights/best.pt ``` 其中,`--source`指定输入图像的路径,`--weights`指定训练得到的权重文件。 希望这个简单的教程能帮助你入门YOLOv5实现数字识别。如果有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值