03【深度学习】YOLOV3-WIN11环境搭建(配置+训练)

news/2024/7/10 23:01:38 标签: 深度学习, YOLO, 人工智能

一、深度学习YOLOV3-WIN11环境搭建

YOLOV5%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA">      本篇文字是【深度学习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博客


http://www.niftyadmin.cn/n/5044085.html

相关文章

HTML常用基本元素总结

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title> biao qian</title> </head> <body><h1>这是标题1</h1> <h2>这是标题2</h2> <h3>这是标题3</h3><p> 这…

iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据

目录 转载&#xff1a;怎么保护苹果手机移动应用程序ipa中文件安全&#xff1f; 前言 1. 对敏感文件进行文件名称混淆 2. 更改文件的MD5值 3. 增加不可见水印处理 3. 对html&#xff0c;js&#xff0c;css等资源进行压缩 5. 删除可执行文件中的调试信息…

[JAVAee]spring-Bean对象的作用域

分类 Bean对象的作用域分成六大类: singleton&#xff1a;单例作⽤域 prototype&#xff1a;原型作⽤域&#xff08;多例作⽤域&#xff09; request&#xff1a;请求作⽤域 session&#xff1a;回话作⽤域 application&#xff1a;全局作⽤域 websocket&#xff1a;HTTP Web…

(1) ESP32获取图像,并通过电脑端服务器显示图像

目录​​​​​​​ 一、所需器件工具 二、客户端与服务器进行UDP通信 1、客户端代码 2、服务器端代码 3、效果展示 三、客户端拍照&#xff0c;通过UDP传输到服务器进行显示 1、客户端获取图像并UDP传输 2、电脑端服务器显示图像 3、效果展示 四、代码链接 一、所需器…

Linux系统-Ubuntu的下载和安装

第一章 Linux系统-Ubuntu的下载和安装 1.下载Ubuntu ​ 进入https://cn.ubuntu.com/download中文官网下载iso映像文件&#xff1a; 2.安装Ubuntu 1.打开虚拟机&#xff0c;点击创建新的虚拟机&#xff1a; 2.选择“典型”&#xff0c;然后点击“下一步”&#xff1a; 3.选择…

Maven3.6.1下载和详细配置

1.下载maven 说明&#xff1a;以下载maven3.6.1为例 1.1网址 Maven – Welcome to Apache Maven 1.2点击下载 1.3点击Maven 3 archives 1.4 点击相应的版本 1.5 点击binaries下载 说明&#xff1a;binaries是二进制的意思 1.6点击zip格式 1.7 蓝奏云获取 说明&#xff1a…

python中使用多线程批量导入包

问题放到前面&#xff0c;目前发现一个问题&#xff0c;importlib对于c/c编译过来的包&#xff0c;只支持导入最顶层的包&#xff0c;不过也够了。 因为有些项目的依赖太多&#xff0c;所以导致每个文件头部都包含大量import语句&#xff0c;用来导入必要的包&#xff0c;如果量…

面试算法10:和为k的子数组

题目 输入一个整数数组和一个整数k&#xff0c;请问数组中有多少个数字之和等于k的连续子数组&#xff1f;例如&#xff0c;输入数组[1&#xff0c;1&#xff0c;1]&#xff0c;k的值为2&#xff0c;有2个连续子数组之和等于2。 分析 在从头到尾逐个扫描数组中的数字时求出前…