参考过程:主页 -Ultralytics YOLO 文档、【干货】两小时带你训练和使用yolov5,yolov5详细教学,yolov5环境配置,2024年_哔哩哔哩_bilibili
数据的标签格式:class x_center y_center width height,均是归一化的值(0~1)之间。
- 下载yolov5的代码和模型:
选择yolov5的6.0版本的代码和模型,下载代码:
Release v6.0 - YOLOv5n 'Nano' models, Roboflow integration, TensorFlow export, OpenCV DNN support · ultralytics/yolov5 (github.com)找到Assets,在倒数第二行:source code.zip
下载权重模型:找到Pretrained Checkpoints,选择yolov5s权重,也可以选择其他模型。
- 安装anaconda,创建python环境
网址:Download Anaconda Distribution | Anaconda,需要邮箱验证,在邮箱内点击验证链接直接下载。
双击运行,路径自择,选择安装包Add anaconda3 to my PATH environment variable ,其他尽可能打对勾。
将第一步下载的源码解压到:D:\pyproject\yolov5-6.0;建议新建一个文件夹pyproject,将yolov5-6.0放进入,这是所有训练结果、文件的根目录。
Win+R,cmd进入命令提示窗口:
命令提示窗口命令步骤:
1.查看当前存在的环境(anaconda中存在的):conda env list,可以省略。
2.创建yolo_v5环境:conda create -n yolo_v5 python==3.8 。注意这里选择的是python3.8版本,此前版本需要各种依赖包,此后的版本有很多软件需要自己编译。3.8很稳。这个过程一般很快,创建完成之后:activate yolo_v5进入此环境。
3.去yolov5-6.0文件夹中,cd /d D:\pyproject\yolov5-6.0,注意这两个斜杠的方向不同。
注意:在命令提示窗口中按CTRL+C可以打断当前运行程序。
- 处理源码中的requriements.txt中的安装包
准备步骤:将requriements.txt用vs code或记事本打开,vs code用着比较舒服,启动快,电脑配置要求不高,pycharm有些会启动不了。打开之后,改成如下格式:(将所有”>”改成“=”,opencv-python==4.1.2.30),这里将torch和torchvision注释掉了,因为这里会自动下载cpu版本,如果有显卡的话还是用显卡比较好,接下来会独自安装pytorch。
安装pytorch,进入pytorch官网,在Previous PyTorch Versions | PyTorch中寻找requirements中的版本号,我们找不到此版本,因此安装1.8.1版本号,windows系统建议使用pip安装。
注意:cuda版本选择,如果是30系显卡以上选择cuda 11.1,其他显卡试着选择以下版本,没有显卡选择cpu版本,我安装的是cpu版本,速度很慢,比30系显卡慢了十几倍。
复制上述连接:pip install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
然后粘贴到第二步的环境中,我们所有安装包是安装在环境中的,并不是D:\pyproject\yolov5-6.0这个文件夹,可以在D:\anaconda\envs\yolo_v5\Lib\site-packages,路径中找到torch安装包。
如果速度太慢,后面可以加上清华源、阿里源等,但是校园网飞快的。
安装完成之后,命令提示窗口输入python,可以看到python版本3.8,在python中输入import torch,没有显示错误就是对的,exit()退出python,回到yolo_v5环境。
也可以输入torch.cpu.is_available(),显示为True即为正确。
安装requriements.txt其他安装包,后面也可以加其他源提高速度。注释掉torch和torchversion,在命令提示窗口继续输入:pip install -r requirements.txt
如果opencv-python没有改成4.1.2.30,此时会出现opency_python找不到4.1.2版本,将requriements.txt中的此安装包的版本改成4.1.2.30,再次执行上述命令。
安装 pip install protobuf==3.19.0,如果不安装会在执行train.py时出现错误。也可需要时在安装。
- 用vscode打开yolov5-6.0文件夹
打开左侧栏中的第五个安装两个插件1、chinese,2、python
按Ctrl+Shift+p,在顶端弹出列表,选择解释器,所有的程序均在这个解释器的环境中运行。
选择python,进入之后选择刚下载的python(yolo_v5),也就是anaconda环境中安装的python版本。如果没有conda,也没有其他的python,说明环境变量没有配置好。
配置环境(不一定需要配置):打开设置-搜索环境-选择系统环境配置-右下角环境变量-双击用户变量中的path添加anaconda的路径,这里是添加了四个anaconda环境。应该是要重启,重启之后重新进入环境即可。
- 下载数据集
数据集下载地址:keremberke/valorant-object-detection · Datasets at Hugging Face,也可以自己选择下载数据集,关注两个信息,width、height,这里是416*416。往后翻可以看到数据集是coco格式,需要对数据进行处理,以便yolo能够使用。
点击files and version 也可以点这个 keremberke/valorant-object-detection at main (huggingface.co)连接,下载test、train、valid压缩包,有可能会进不去这个网站,需要一点魔法。
在路径:D:\pyproject\yolov5-6.0\data 新建文件夹,data_org(随意,记住就行了),将下载的三个压缩包解压到里面,我建立的是csgo文件,因为这个压缩包是csgo的。
打开test文件夹,可以看到只有一个coco标签,不是yolo,需要对此进行处理。如果是yolo格式可以跳过第六步。
这个数据集处理起来非常慢,也可以直接在Roboflow官网上,animals trained model | Roboflow Universe Search下载yolo格式的数据。使用yolo格式直接跳过第六步数据处理过程即可。
当然也可以自己创建数据集:安装labelimg,执行下述三行代码
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
安装好之后输入:python labelimg.py
按照下图进行操作即可。
- 处理数据集(coco格式转换成yolo格式)
观察coco标签字典中:id、name、supercategory这三个键(比较难找),也就是下面这一块,id键从0开始数,一共有0、1、2、3四个,然后记住name键的每一个值。
在yolo_v5根目录中新建文件夹:data_process,内部创建一个data_process.ipynb文件,.ipynb文件不能直接打开,因为环境中没有安装jupyter,在命令提示窗口需要安装一下jupyter,如果出现错误,很大原因就是网络不好,其次是pip版本不够。pip更新命令:python -m pip install --upgrade pip
1. 安装完成之后,进入文件data_process.ipynb,使用ipynb格式会很方便,也可以使用py格式,每一个单元要按顺序运行:
2. 验证是否正确
3.在data跟目录下创建一个新的文件夹csgo_dingdang,分别创建train、test、valid单个子文件夹,并在每一个子文件夹中分别创建images、labels两个文件夹,将图片复制到csgo_dingdang中,不复制_annotations.coco,因为这是coco标签,记住所在路径即可。注意路径的格式双斜线
输入下面程序,图片所在文件夹、标签所在文件夹,可以看到图片所在文件是新建立的,标签还在原文件夹中。
4.新建空白标签。首先需要新建立空白txt标签,然后往这些空白标签里添加对应图片的yoyo标签信息。建立的空白标签在新建的对应文件夹中,名称由iamges替换成labels,文件格式由jpg替换成txt。
可以检查一下valid/labels中的空白标签,
5.遍历_annotations.coco中的字典,
使用:注意上述的x_center和y_center,一定要和图片的大小一致。其余两个文件夹步骤一致。
- 路径处理、第一节下载的权重路径
复制coco.128文件,改名为mydate,改成下面的文字,path为要训练的数据集的根路径,接着三个为根目录下的三个文件夹,nc为类别个数,为4,names为每一个类别的名字。文件中只需保存11-18行即可。保存。
在yolov5-6.0文件夹中新建一个weihgt文件夹,将第一节下载的yolov5权重模型放进去。
权重路径: D:\pyproject\yolov5-6.0\weight
- 打开train.py文件,
划到第436行,更改路径,D:\\pyproject\\yolov5-6.0\\weight\\yolov5s.pt
437行为yolov5-6.0中的模型D:\\pyproject\\yolov5-6.0\\models\\yolov5s.yaml
438行为所建立的数据文件,D:\\pyproject\\yolov5-6.0\\data\\mydate.yaml
parser.add_argument('--epochs', type=int, default=300)
parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')
这两行为训练多少轮,一次给gpu多少个数据。
训练完成后,可以从D:\pyproject\yolov5-6.0\runs\train\exp中看到训练结果。
D:\pyproject\yolov5-6.0\runs\train\exp2\weights目录中存放的是训练最好的一次和最坏的一次。
- 测试训练的结果
如下打开detect.py文件,找到如下几行改成:
parser.add_argument('--weights', nargs='+', type=str, default="D:\\pyproject\\yolov5-6.0\\runs\\train\\exp4\\weights\\best.pt", help='model path(s)')
parser.add_argument('--source', type=str, default="D:\\pyproject\\yolov5-6.0\\data\\Cat_Dog\\test\\images", help='file/dir/URL/glob, 0 for webcam')
parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w')
第一行:训练最好的结果路径
第二行:test数据集的路径
第三行:测试图片的大小
程序执行完后会给出执行结果路径:D:\pyproject\yolov5-6.0\runs\detect\exp6
检测的结果不是很好,需要对算法进行改进。