YOLOv5简单训练和测试

YOLOv5简单训练和测试

window 10
GTX 1650Ti
anaconda with python 3.8
pytorch 1.10
cuda 11.3

1.准备工作

(1)环境搭建

​ 1)下载Anconda软件,创建一个新的沙盒环境,自己命名(yolo)

在这里插入图片描述

​ 2)可通过cmd中的命令进行创建

conda create -n yolo python=3.8 
conda info -e

(2)模型下载

​ 模型下载地址:https://github.com/ultralytics/yolov5

​ 1)下载zip格式压缩包,解压后文件为yolov5-master,其根目录下有一个名为requirements.txt的文本文件。里面是程序需要的一些扩展包,可通过pip命令统一安装。在yolov5-master根目录下通过cmd命令进入命令框中。

​ 2)激活yolo环境,安装扩展包

activate yolo
pip install -r requirements.txt

(3)自定义数据集准备

​ 1)新建一个文件夹用来存放自己的数据集,文件夹我命名为yolo_A,图片格式我统一为jpg格式,图片由自己统一命名。图片我存放在其子目录的images文件夹里面,labels我用来之后存放标签信息,A.yaml文件可先新建暂时不存放内容,可用文本编辑器打开。
在这里插入图片描述
在这里插入图片描述

(4)人工标识

​ 图片标注工具labelimg:https://github.com/tzutalin/labelImg

​ 1)下载图片标注工具,解压后,找到labelImg-master\data\predefined_classes.txt,用文本编辑器打开并删除里面的内容。

​ 2)然后在labelimg-master文件根目录下进入命令提示框,先激活yolo环境,在下载一些图片标注需要用到的一些扩展包。

activate yolo
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelimg.py

​ 3)进入图片标注工具界面后,需要进行一些设置。

在这里插入图片描述
在这里插入图片描述
​ 4)点击Open Dir按钮选择yolo_A子目录下的images文件,点击Change Dir按钮选择子目录下的labels文件夹用来存放标定信息。然后软件右上角我们打开这个选项,并且在右边输入A,当我们标记图片后,就会自动帮我们归类到A了,A就当作此类别的标识。
在这里插入图片描述

​ 5)开始进行标识,按w键可出现锚定框,在用鼠标拖拽大小。所有图片标注好之后,我们再来看我们的labels文件夹,可以看到很多txt文件。每个文件都对应着我们标记的类别和框的位置:

在这里插入图片描述在这里插入图片描述

​ 6)文件里面内容如下,其中train和val都是我们images的目录,labels的目录不用写进去,会自动识别。nc代表识别物体的种类数目,names代表种类名称,如果多个物体种类识别的话,可以自行增加。

注:‘A meng’名字可以自由更改你想要的名字

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../yolo_A/images/
val: ../yolo_A/images/
# number of classes
nc: 1

# class names
names: ['A meng']

2.模型训练

​ 1)修改训练模型,models下有四个模型,smlx需要训练的时间依次增加,按照需求选择一个文件进行修改即可,这里修改了yolov5s.yaml,只需要将nc的类别修改为自己需要的即可

在这里插入图片描述
在这里插入图片描述

​ 2)下载权重文件,这里只用到了yolov5s.pt

在这里插入图片描述

​ 3)开始训练,A.yaml更改为对应的名字,weights/yolov5s.pt改成对应的文件位置即可最好都放到yolov5-master下,训练轮数和batch可自己设定。

python train.py --data A.yaml --cfg yolov5s.yaml --weights weights/yolov5s.pt --epochs 10 --batch-size 32

3.初步预测

​ 1)开始训练,runs/train/exp3/weights/best.pt改成你best.pt真正的位置即可,source data/Samples/里面是用于测试的图片改成你对应文件夹的图片位置即可。

python detect.py --weights runs/train/exp/weights/best.pt --source data/samples/ --device 0 --save-txt --conf-thres 0.02

4.问题解决项

​ 1)AssertionError: CUDA unavailable, invalid device 0 requested


(yolo) F:\论文文件夹\yolov5-master>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
False

​ 注:若出现false,则证明cuda有问题,可重新安装pytorch。

​ pytorch官网:https://pytorch.org/

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
(yolo) F:\论文文件夹\yolov5-master>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> exit()

​ 2)AssertionError: Image Not Found F:\论文文件夹\yolov5-master\test\test1.jpg

​ 注:图片存在却提示找不到。

​ 解决:将 datasets.py 中 p = str(Path(path).absolute()) 或 p = str(Path(path).resolve()) # os-agnostic absolute path 改为 p = str(Path(path))
在这里插入图片描述
3)RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling cublasCreate(handle)
注:可能是底层cuda版本和应用pytorch版本不一致。底层版本要高于应用版本。

5.参考博客

​ 1.(23条消息) YOLOV5训练自己的数据集(踩坑经验之谈)_a_cheng_的博客-CSDN博客

​ 2.(23条消息) 教程:超详细从零开始yolov5模型训练_抛到海里的博客-CSDN博客_yolov5

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单Yolov8 训练测试程序的示例代码: ``` import torch from torchvision import datasets from torch.utils.data import DataLoader from torchvision import transforms from models import Yolov8 # 导入 Yolov8 模型 from utils import load_classes, non_max_suppression, plot_boxes # 设置训练测试数据集路径 train_data_path = "path/to/train/data" test_data_path = "path/to/test/data" # 设置训练超参数 batch_size = 16 num_epochs = 10 learning_rate = 0.001 # 加载数据集并进行预处理 transform = transforms.Compose([ transforms.Resize((416, 416)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) train_dataset = datasets.ImageFolder(train_data_path, transform=transform) train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) test_dataset = datasets.ImageFolder(test_data_path, transform=transform) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) # 加载类别标签 class_names = load_classes("path/to/class/labels") # 初始化模型并定义损失函数和优化器 model = Yolov8(num_classes=len(class_names)) criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) # 训练模型 for epoch in range(num_epochs): for images, targets in train_loader: outputs = model(images) loss = criterion(outputs, targets) optimizer.zero_grad() loss.backward() optimizer.step() print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}") # 在测试集上评估模型性能 model.eval() with torch.no_grad(): for images, targets in test_loader: outputs = model(images) boxes = non_max_suppression(outputs) plot_boxes(images, boxes, class_names) ``` 请注意,这只是一个简单的示例代码,实际使用 Yolov8 进行训练测试需要更多的配置和调整。你需要根据自己的数据集和需求进行相应的修改和优化。同时,你还需要下载 Yolov8 模型文件、定义模型结构和辅助函数等。这个示例代码提供了一个基本的框架,供你参考和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值