YOLOv5简单训练和测试

YOLOv5简单训练和测试

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

1.准备工作

(1)环境搭建

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

YOLOv5简单训练和测试_第1张图片

​ 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文件可先新建暂时不存放内容,可用文本编辑器打开。
YOLOv5简单训练和测试_第2张图片
YOLOv5简单训练和测试_第3张图片

(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)进入图片标注工具界面后,需要进行一些设置。

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

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

在这里插入图片描述YOLOv5简单训练和测试_第6张图片

​ 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的类别修改为自己需要的即可

YOLOv5简单训练和测试_第7张图片
YOLOv5简单训练和测试_第8张图片

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

YOLOv5简单训练和测试_第9张图片

​ 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))
YOLOv5简单训练和测试_第10张图片
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

你可能感兴趣的:(YOLOv5模块,目标检测,深度学习,计算机视觉)