window 10
GTX 1650Ti
anaconda with python 3.8
pytorch 1.10
cuda 11.3
1)下载Anconda软件,创建一个新的沙盒环境,自己命名(yolo)
2)可通过cmd中的命令进行创建
conda create -n yolo python=3.8
conda info -e
模型下载地址:https://github.com/ultralytics/yolov5
1)下载zip格式压缩包,解压后文件为yolov5-master,其根目录下有一个名为requirements.txt的文本文件。里面是程序需要的一些扩展包,可通过pip命令统一安装。在yolov5-master根目录下通过cmd命令进入命令框中。
2)激活yolo环境,安装扩展包
activate yolo
pip install -r requirements.txt
1)新建一个文件夹用来存放自己的数据集,文件夹我命名为yolo_A,图片格式我统一为jpg格式,图片由自己统一命名。图片我存放在其子目录的images文件夹里面,labels我用来之后存放标签信息,A.yaml文件可先新建暂时不存放内容,可用文本编辑器打开。
图片标注工具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']
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
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
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版本不一致。底层版本要高于应用版本。
1.(23条消息) YOLOV5训练自己的数据集(踩坑经验之谈)_a_cheng_的博客-CSDN博客
2.(23条消息) 教程:超详细从零开始yolov5模型训练_抛到海里的博客-CSDN博客_yolov5