赞
踩
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
默认已安装Pycharm和Conda,相关准备工作都已经做好。如需要安装MiniConda可参考:https://blog.csdn.net/m0_49663564/article/details/125889670
首先下载YoloV5源码,下载解压后的文件夹目录如下所示(记住项目路径,例如D:\PythonPrj\yolov5-master):
打开Anaconda Prompt对话框,输入如下命令展示出当前所有的环境。
conda env list
然后输入以下命令新建一个名字为yolov5的环境。
conda create -n yolov5 python=3.7
在对话框内输入以下命令来激活yolov5环境。
conda activate yolov5
为了下载包的速度更快,需要配置国内镜像源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
首先手动安装pytorch,至于如何选择cuda版本等信息可以去官网参考一下。我是按照B站UP主的推荐安装的版本,详情见此链接https://www.bilibili.com/video/BV1YL4y1J7xz/?p=4&spm_id_from=pageDriver&vd_source=94f79d8adeec4791b8751d7cb539ce55
pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
执行安装pytorch的命令后发现如下报错:
上述错误可以通过更新pip命令解决,执行以下命令即可。
python -m pip install --upgrade pip
随后再次执行安装pytorch的命令就可以顺利安装pytorch。
pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
验证pytorch安装结果的步骤为:1、使用Pycharm打开yolov5项目:点击File→Settings→Project:yolov5-master→Python Interpreter,然后再点击右侧齿轮旁边的下拉箭头,点击Show All,选择刚刚新建的yolov5环境
2、然后新建一个python文件执行以下代码,通过代码的返回结果即可验证pytorch的安装结果。
import torch
if __name__ == '__main__':
print(torch.__version__)
print(torch.cuda.is_available())
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print("using {} device".format(device))
接下来安装yolov5项目所需要的包,路径为一开始所说的项目路径,requirements.txt中需要将numpy的版本固定改为numpy==1.20.3。
pip install -r D:\PythonPrj\yolov5-master\requirements.txt
稍等片刻,安装完之后可使用以下命令来展示当前环境下所有的包。
pip list
至此,yolov5环境的安装过程已经完成。在pycharm中或者Anaconda Prompt对话框成功运行detect.py文件,得到两张测试图片的检测结果,就表示环境没有问题。
首先将图片数据集分为训练集train、验证集val、测试集test三类,然后通过三个txt文件定义三类集合图片的路径(可以是绝对路径也可以是相对路径),如下图所示。
三个label文件夹内存放的是各自集合所对应的标签。
如果下载的数据集或者自己制作的数据集数据量较大,并且未区分训练集验证集测试集的话,可以参考以下代码自行进行拆分(训练集、验证集、测试集的比例为7:2:1):
import os import random import shutil def mkdir(path): folder = os.path.exists(path) if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹 os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径 if __name__ == '__main__': dataset_dir = 'D:/PythonPrj/Dataset/dataset_v0_data/' label_dir = 'D:/PythonPrj/Dataset/dataset_v0_label/' ship_dataset_path = 'D:/PythonPrj/yolov5-master/data/' val_rate = 0.2 # 从全部数据集中选择20%作为验证集 test_rate = 0.1 img_files = os.listdir(dataset_dir) val_path = random.sample(img_files, k=int(len(img_files) * val_rate)) test_path = random.sample(img_files, k=int(len(img_files) * test_rate)) train_images_path = [] # 存储训练集的所有图片路径 train_images_label = [] # 存储训练集图片对应索引信息 val_images_path = [] # 存储验证集的所有图片路径 val_images_label = [] # 存储验证集图片对应索引信息 test_images_path = [] # 存储测试集的所有图片路径 test_images_label = [] # 存储测试集图片对应索引信息 for img_name in img_files: label_name = img_name.split('.')[0] + '.txt' if img_name in val_path: # 如果该路径在采样的验证集样本中则存入验证集 shutil.move(dataset_dir+img_name, ship_dataset_path+'images/val') shutil.move(label_dir+label_name, ship_dataset_path+'labels/val') elif img_name in test_path: shutil.move(dataset_dir+img_name, ship_dataset_path+'images/test') shutil.move(label_dir+label_name, ship_dataset_path+'labels/test') else: # 否则存入训练集 shutil.move(dataset_dir+img_name, ship_dataset_path+'images/train') shutil.move(label_dir+label_name, ship_dataset_path+'labels/train')
在制作好自己的数据集之后,下一步就是修改yolov5-master\data目录下的yaml文件,将其中的train和val路径改为自己数据集的路径,将其中的class改为自己数据集包含的数据类型和对应的名称。
然后在train.py文件中将以下几个配置根据自己数据集、电脑配置的实际情况进行修改:
parser.add_argument('--data', type=str, default=ROOT / 'data/mydata.yaml', help='dataset.yaml path')
parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')
parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--epochs', type=int, default=100, help='total training epochs')
parser.add_argument('--batch-size', type=int, default=4, help='total batch size for all GPUs, -1 for autobatch')
然后就可以开始训练了~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。