从0开始安装并运行yolov5(仅供自己学习使用)

1.创建环境 conda create -n yolo python = 3.8
2.安装pytorch1.7以上,这边安装了1.7.1版本的
pip install torch1.7.1+cu101 torchvision0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
用下列指令安装其他包

git clone https://github.com/ultralytics/yolov5
pip install -U -r yolov5/requirements.txt

建议一个一个安装,这样保证不会出错。
3.下载权重,运行检测代码
去官网https://github.com/ultralytics/yolov5/releases
下载自己需要的模型权重,放到./weights里面
然后运行下列代码测试

    python detect.py --source data/images --weights yolov5s.pt --conf 0.25

运行成功的话,生成图片放在./runs/detect/exp里面

4.train自己的数据集。
(弄成VOC格式)
首先,自己的训练集格式要有voc的一样
在这里插入图片描述
images里面放自己训练的图片
labels里面放yolo格式的txt文件。
下面附xml格式转化为txt格式代码。

import os
import xml.etree.ElementTree as ET
dirpath = '/home/zhoutianyang/yolov5/tianchi2/train_an/Annotations/'     #原来存放xml  文件的目录
newdir = '/home/zhoutianyang/yolov5/YG/labels/train/'  #修改label后形成的txt目录
if not os.path.exists(newdir):
os.makedirs(newdir) 
for fp in os.listdir(dirpath):
air = [‘自己训练的类’]	#目的是为了将xml文件中的字符名字转化为yolo形式中txt的数字标记

root = ET.parse(os.path.join(dirpath,fp)).getroot()
# import pdb;pdb.set_trace()
xmin, ymin, xmax, ymax = 0,0,0,0
sz = root.find('size')

width = float(sz[0].text)
height = float(sz[1].text)
filename = root.find('filename').text
for child in root.findall('object'):         #找到图片中的所有框
    #print(child.find('name').text)

    sub = child.find('bndbox')               #找到框的标注值并进行读取
    label = child.find('name').text

    for i in range(len(air)):           #对应数字
        #import pdb;pdb.set_trace()

        if air[i] == label:
            break
    label = i 
    xmin = float(sub[0].text)
    ymin = float(sub[1].text)
    xmax = float(sub[2].text)
    ymax = float(sub[3].text)
    try:                                     #转换成yolov3的标签格式,需要归一化到(0-1)的范围内
        x_center = (xmin + xmax) / (2 * width)
        y_center = (ymin + ymax) / (2 * height)
        w = (xmax - xmin) / width
        h = (ymax - ymin) / height
    except ZeroDivisionError:
        print(filename,'的 width有问题')

    with open(os.path.join(newdir, fp.split('.')[0]+'.txt'), 'a+') as f:
        f.write(' '.join([str(label), str(x_center), str(y_center), str(w), str(h) + '\n']))
print('ok')

数据集处理完之后,修改voc.yaml文件,新建一个xxx.yaml,复制voc.yaml东西,然后注释掉download部分,因为我们已经生成本地的数据集格式文件,修改文件路径和classes类别。

python train.py --data xxx.yaml --cfg yolov5s.yaml --weights yolov5s.pt --batch-size 64

就能成功了。

版权声明:本文为CSDN博主「Tz..」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41456654/article/details/115533152

Tz..

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

玩转KITTI3D目标检测:KITTI评估工具evaluate的使用

近期因实验需要利用kitti数据集,发现关于评估工具使用的部分网上教程不够详细,特此记录. 文末为了方便对数据结果观看,附上了修改代码. 1. KITTI评估工具来源 官网评估工具 下载后文件目录包含: matlab(2D/3D框显示和

yolov5训练数据集划分

yolov5训练数据集划分 按照默认8:1:1划分训练集,测试集,验证集。 txt文件出现在imageset文件夹。 import os import randomtrainval_pe