一、深度学习:YOLOV3-WIN11环境搭建
本篇文字是【深度学习】YOLOV5-WIN11环境搭建(配置+训练),首先介绍win11下 基于Anaconda、pytorch的YOLOV5深度学习环境搭建,环境配置顺序:显卡驱动 - CUDA - cudnn - Anaconda - pytorch - pycharm,按这个顺序配置可以避免很多莫名其妙的错误出现。另外不用单独安装python,使用Anaconda里的python环境。
1、虚拟环境搭建
本文默认 CUDA - cudnn已经安装,未安装的同学见深度学习环境搭建:Win11+CUDA 11.7+Pytouch1.12.1+Anaconda中1-4
虚拟环境安装pytorch详细见: 深度学习环境搭建:Win11+CUDA 11.7+Pytouch1.12.1+Anaconda中5-8
2、OpenCv安装:
主要用来更好的对图显示进行可视化,也可以不按照。本文使用opencv4.3.0版本。
- 命令安装方式
pip install opencv-python(默认使用最新版本)或
pip install opencv-python==4.3.0(可以自己指定版本)
- 下载安装方式
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/
进入虚拟环境,执行命令安装
- 安装校验
3、Pycharm安装:
自行搜索,此处不做介绍。
至此在WIN10下的YOLOV5深度学习环境安装完成。接下来可以在此环境下进行深度学习的实验了。
二、【深度学习】准备个人数据集、YOLOV3 模型的训练和测试
1、前置知识
YOLO3 的网络结构使用的是 darknet 网络,因此完成 YOLO3 模型就是 通过darknet配置文件(后面会详细讲)完成darknet网络搭建,而 Darknet 文件结构如下:
- include:存Darknet源码(由C语言编写)
- cfg:网络配置文件(例如YoloV3的网络配置文件)、数据信息配置文件
- data:数据集
- script:下载数据集的脚本,一般在linux环境下使用
- python:针对Darknet框架编译后的接口
- example:模型测试脚本的例子
2、数据集的准备
1.1 数据集资源介绍(了解)
数据集资源:分为现有的数据集和自定义的数据集。我们先介绍现有的数据集,最后面再介绍如何使用自定义数据集。
- PascalVOC:20个类别,在 YOLOV1 中使用的是此数据集。
- COCO:91个类别,小目标多、单幅图片目标多、物体大多非中心分布、更符合日常环境,coco检测难度更大
- ILSVRC2012:magenet数据集有1400多万幅图片,涵盖2万多个类别;其中有超过百万的图片有明确的类别标注和图像中物体位置的标注
- 自定义数据集(后面介绍)
区别:
- PascalVOC使用 YOLOV1, YOLOV3使用需要进行转换,数据量少,针对大目标
- ILSVRC2012数据量太大,下载时间长,训练时间长
- COCO是PascalVOC、COCO、ILSVRC2012的折中方式
1.2 COCO数据集介下载
COCO从复杂的日常场景中截取,包括91类目标,3.28万个影像和250万个label标签。训练集和验证集下载地址如下:
- http://images.cocodataset.org/zips/val2014.zip
- http://images.cocodataset.org/zips/train2014.zip
预训练权重:https://link.csdn.net/?target=https%3A%2F%2Fpjreddie.com%2Fmedia%2Ffiles%2Fyolov3.weights
3、资源下载
3.1代码下载
项目代码:https://github.com/eriklindernoren/PyTorch-YOLOv3?from=singlemessage
整个项目的结构如下图:
3.2 权重下载
预训练权重:https://pjreddie.com/media/files/yolov3.weights
将下载的权重放入weight文件夹,如下图:
4、部署YOLOV3的环境
4.1 用pycharm打开yolov3文件,并配置相应的虚拟环境
4.2 修改train.py
打开根目录下的train.py
Ctrl+f搜索--data
将coco128.yaml改为你自己配置文件的文件名**.yaml
4.3 修改yolov5s.yaml yolov3.yaml
model/yolov5s.yaml 或yolov3.yaml的nc值为自己数据集的class数目 nc
4.4、修改dataloaders.py(如果你的图片文件夹名是images可以略过)
打开utils/dataloaders.py
Ctrl+f搜索Define label ,找到下面的一行内容:
sa, sb =f'{os.sep}images{os.sep}',f'{os.sep}labels{os.sep}' # /images/,/labels/ substrings
把JPEGImages替换掉images
4.5 运行
pycharm打开终端,如果你选择了相应的虚拟环境,()内就会显示你的虚拟环境名称
4.6 在终端粘贴指令
yolov3选择指令(有gpu):
python train.py --img 640 --batch 32 --epochs 100 --data data/***.yaml--weights yolov3.pt --device 0
Enter运行即可
4、文件说明
4.1 config 文件夹
4.1.1 coco.data
coco数据集的信息:类别数量,训练集路径、验证集路径、类别名称路径…
classes= 80 # 类别
train=data/coco/trainvalno5k.txt # 训练集图片的存放路径
valid=data/coco/5k.txt # 测试集图片的存放路径
names=data/coco.names # 类别名
backup=backup/ # 记录checkpoint存放位置
eval=coco # 选择map计算方式
4.1.2 create_custom_model.sh
脚本文件:用户自定义自己的模型,运行此文件用来生成自定义模型的配置文件yolov3-custom.cfg,可对比yolov3.cfg。
4.1.3 custom.data
自己数据集的信息,用来训练自己的检测任务:类别数量,训练集路径、验证集路径、类别名称路径,可对比coco.data。
4.1.4 yolov3.cfg
yolov3网络模型的配置信息:卷积层(归一化、卷积核尺寸、卷积核数、步长、填充、激活函数.....)、yolo层(类别、bounding box数量、控制是否参与损失计算的阈值......)及其他层的配置信息。
[convolutional] #卷积层
batch_normalize=1 #每层归一化
size=3 #卷积核尺寸
stride=1 #滑动步长
pad=1 #填充边框
filters=256 #卷积核个数
activation=leaky #激活函数
[convolutional] #卷积层
size=1 #卷积核尺寸
stride=1 #滑动步长
pad=1 #填充边框
filters=255 #卷积核个数
activation=linear #激活函数
[yolo]
mask = 0,1,2 #指定使用anchors时候索引,表示采用前三个尺寸:10,13, 16,30, 33,23
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 #指定anchors box 尺寸
classes=80 #指定类别数量
num=9 #指定每个anchor的bounding box数量
jitter=.3 #指定数据增强随机调整宽高比
ignore_thresh = .7#指定预测检测框与真值检测框IOU>0.7不参与损失计算,常用设置0.5-0.7
truth_thresh = 1 #指定真值
random=1 #指定训练时候采用随机多尺度训练,0表示使用固定尺度训练
4.1.5 yolov3-custom.cfg
自定义的网络模型的配置信息,由create_custom_model.sh脚本文件生成。
4.1.6 yolov3-tiny.cfg
yolov3的tiny版本网络模型的配置信息。
4.2 data 文件夹
4.2.1 coco文件夹
是coco训练集、验证集的数据集,是运行get_coco_dataset.sh脚本文件(自动下载数据集,并解压)后的结果。
4.2.2 custom文件夹
custom文件夹是自定义数据集的信息。
- images文件夹:所有训练集、验证集的图片,如图
- labels文件夹:使用图片标记软件对images文件夹里的图片进行标注得到对应的标签文件。每个标签文件为一个txt文件,txt文件的每一行数据为一个groundthuth信息:类别序号,边界框坐标信息。如图示例,0代表类别索引号,后面为边界框坐标信息。
- classes.names是自定义数据集的类别名称文件。例
- train.txt文件和valid.txt分别是训练集图片与验证集图片路径的集合,如图,每行数据是训练集/验证集某图像的路径。
4.2.3 samples文件夹
samples文件夹是模型测试图片所在的文件夹,用来看模型的检测结果。
4.2.4 coco.names
coco数据的类别信息,类似classes.names。如图部分截图
4.2.5 get_coco_dataset.sh
脚本文件,用来获取coco数据,生成coco文件夹及其内容。
1、个人数据集的准备
做深度学习,YOLOV5模型的图像识别,我们需要大量的数据集来进行训练,才能达到准确识别的效果。
制作数据集需要用到 lebelimg 来将我们的数据图片做数据标注生成xml文件。
见:【深度学习】准备个人数据集、YOLOV5 模型的训练和测试_yolov5 测试集_Life&Dream的博客-CSDN博客