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

一、深度学习: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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/139254.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux实现HTTP服务器

在Linux系统中,我们可以利用HTTP服务器代理来实现网络请求的转发和加速,从而提高网站的访问速度和性能。本文将为您详细介绍如何搭建HTTP服务器代理,让您在网络世界中畅通无阻,更加快速高效地进行数据通信。 一、了解HTTP服务器代…

李宏毅机器学习第一课

机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的 如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification (在…

4+机器学习+实验验证

今天给同学们分享一篇4机器学习实验验证的生信文章“Identification and Analysis of Neutrophil Extracellular Trap-Related Genes in Osteoarthritis by Bioinformatics and Experimental Verification”,这篇文章于2023年8月31日发表在 J Inflamm Res 期刊上&am…

上网行为监管软件(上网行为管理软件通常具有哪些功能)

在我们的日常生活中,互联网已经成为了我们获取信息、交流思想、进行工作和娱乐的重要平台。然而,随着互联网的普及和使用,网络安全问题也日益突出,尤其是个人隐私保护和网络行为的规范。在这个背景下,上网行为审计软件…

21 mysql ref 查询

前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…

AOSP源码中Android.mk文件中的反斜杠符号(\)的作用和使用

简介 在AOSP(Android Open Source Project)源码中的Android.mk文件中,反斜杠符号(\)的主要作用是将一行代码拆分成多行,以提高可读性并帮助组织较长的代码块。这对于定义复杂的构建规则和变量时特别有用。…

若依DataScopeAspect数据权限解析和ew.customSqlSegment源码解析

目录 一、DataScopeAspect使用场景二、ew.customSqlSegment${ew.customSqlSegment}build:this.normal : queryWrapper where 条件不为空的时候,才有normalget第二次 进来add(), 已经拼接完 ew.customSqlSegment 了, 因为DataPermission 注解进…

Mybatis 映射器与XML配置职责分离

之前我们介绍了使用XML配置方式完成对数据的增删改查操作,使用此方式在实际调用时需要使用【命名空间.标签编号】的方式执行,此方式在编写SQL语句时很方便,而在执行SQL语句环节就显得不太优雅;另外我们也介绍了使用映射器完成对数…

内网穿透,轻松实现PostgreSQL数据库公网远程连接!

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统(RDBMS),下…

TCP协议中常见的问题

文章目录 TCP协议中常见的问题谈一谈对OSI七层模型和TCP/IP四层模型的理解?谈谈TCP协议的3次握手过程?TCP协议为什么要3次握手?2次,4次不行吗?谈谈TCP协议的四次挥手过程?什么是流量控制?什么是…

软考软件设计师-存储管理-文件管理-计算机网络(中

文章目录 一、存储管理页面置换算法 (最佳OPT)存储页面-先进先出置换算法(FIFO)最久未使用算法(最近最久未使用LRU) 二、文件管理初识文件管理文件目录-绝对路径文件管理-文件的结构文件管理-索引的分配 空闲存储空间的管理(位示图法)三、计算…

精品Python数字藏品购物商城爬虫-可视化大屏

《[含文档PPT源码等]精品基于Python实现的数字藏品爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js&a…

视频编解码器H.264和H265有什么区别?

对于大型视频文件来说,视频编解码器至关重要,它可以将文件压缩为较小的尺寸,从而可以更轻松地存储和加快传输速度。而两种最常用的编解码器是H.264和H.265,那么它们两者之间有什么区别,哪一个更好呢? 1. 什…

【Linux网络编程】gdb调试技巧

这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。 使用方法 可以使用如下代码 gcc -g test.c -o test 或者 gcc test.c -o test ​ -g的选项最好添加,如果不添加,l指令无法被识别 …

zabbix学习3--zabbix6.x-proxy

文章目录 proxy proxy # 安装mysql 8.0# 获取源码包【https://www.zabbix.com/cn/download_sources】 mkdir -p /data/zabbix_proxy/{data,install,logs,php} mkdir -p /var/run/zabbix_proxy tar xf zabbix-6.4.3.tar.gz -C /data/zabbix_proxy/install/ cd /data/zabbix_pro…

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

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

基于骨架的动作识别:SkeleTR: Towrads Skeleton-based Action Recognition in the Wild

论文作者:Haodong Duan,Mingze Xu,Bing Shuai,Davide Modolo,Zhuowen Tu,Joseph Tighe,Alessandro Bergamo 作者单位:The Chinese University of Hong Kong; AWS AI Labs. 论文链接:http://arxiv.org/abs/2309.11445v1 内容简介&#xff1…

leetcode刷题笔记——位运算

C/C语言中逻辑右移和算数右移共享同一个运算符>> 如果运算数类型是unsigned则采用逻辑右移,而signed则采用算数右移。对于signed类型的数据,如果需要使用算数右移,或者unsigned类型的数据需要使用逻辑右移,都需要进行类型转…

《从菜鸟到大师之路 ElasticSearch 篇》

《从菜鸟到大师之路 ElasticSearch 篇》 (一):ElasticSearch 基础概念、生态和应用场景 为什么需要学习 ElasticSearch 根据 DB Engine 的排名显示, ElasticSearch 是最受欢迎的 企业级搜索引擎 。下图红色勾选的是我们前面的系…

数据结构与算法(六)--链表的遍历,查询和修改,删除操作

一、前言 上篇文章我们了解了链表的概念以及链表底层的搭建以及向链表中添加元素的操作。本次我们继续学习链表剩余的操作:遍历,查询和修改、删除操作。 二、链表查询以及遍历 ①获得链表的第index(0-based)个位置的元素(不常用&#xff0…