ubuntu20下yolov4训练多目标实战

news2025/4/5 18:16:55

1、安装nvidia驱动和cudnn,不熟悉的小伙伴请移步:Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制_ubuntu20.04安装显卡驱动_BetterJason的博客-CSDN博客

2、编译opencv,不熟悉的小伙伴请移步:ubuntu20.04 和centos8平台opencv4.5.3&opencv_contrib编译_BetterJason的博客-CSDN博客

3、编译yolov4,不熟悉的小伙伴请移步:ubuntu20下yolov4的编译_BetterJason的博客-CSDN博客

4、使用Labelimg工具标注文件,每个图片文件将会产生一个对应的xml文件

5、建立训练文件的目录结构:在darkent目录下建立如下文件夹:

将标注产生的xml文件复制到Annotations目录下

将训练图片复制到JPEGImages目录下

6、使用 genfiles.py(脚本文件在文末给出)将标注的xml文件转换为yolov4标注格式的txt文件,执行genfile.py之前,请打开genfiles.py将如下内容改为自己训练类的内容:

然后执行: python3 genfiles.py

执行genfiles.py后的文件布局:

在darkent目录下产生:2007_test.txt  2007_train.txt

2007_train.txt:用于训练

2007_test.txt :用于测试

最终训练使用到文件:

darkent/2007_train.txt   (训练文件信息)

darkent/2007_test.txt    (测试文件信息)

/darknet/VOCdevkit/VOC2007/JPEGImages (训练的图片文件)

darknet/VOCdevkit/VOC2007/labels   (yolov4格式的标注有文件)

7、训练参数设置:

在darknet/data目录下修改文件

将 voc.names 复制为 voc-xxx.names,  voc-xxx.names是你自己重新命名的配置文件

sudo vim voc-xxx.names

 将voc.data 复制为voc-xxx.data,voc-xxx.data是你自己重新命名文件

sudo vim voc-xxx.data

8、下载训练的权重文件 yolov4.conv.137 (下载地址文末给出)

9、修改训练的cfg文件

darknet/cfg目录下

将 yolov4-custom.cfg 复制为 yolov4-xxx.cfg , yolov4-xxx.cfg是你自己命名的训练配置文件名字

修改 yolov4-xxx.cfg

sudo vim /cfg/ yolov4-xxx.cfg

ps:

batch要能够被subdivisions整除

 width 和height是训练时把训练图片resize的大小,就是把训练图片resize为width和height在送往训练器,其中width和height必须能被32整除。

修改三个yolo层前面的卷积层参数:

 10、开始训练

cd darknet
./darknet detector train data/voc-xxx.data  cfg/yolov4-xxx.cfg  yolov4.conv.137 -map

 11、训练完成后,在darknet/backup目录下保存训练的权重用带best的权重

12、测试修改 darknet/cfg/yolov4-xxx.cfg

# 对图片进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights data/dog.jpg
# 对视频进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights  test.mp4
# 对摄像头进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights -c 0

相关文件下载:

链接:https://pan.baidu.com/s/1eGL616eVGWeHCuRpDqqSTQ?pwd=31wq
提取码:31wq
--来自百度网盘超级会员V6的分享

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【八大排序(九)】计数排序-非比较排序法

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:八大排序专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 计数排序 1. 前言2. 计数排序基本思路3. …

6.19 Nginx网站服务——服务基础

文章目录 一.Nginx服务基础1.关于Nginx的特点2.简述Nginx和Apache的差异3.Nginx 相对于 Apache 的优点4.Apache 相对于 Nginx 的优点5.阻塞与非阻塞6.同步与异步7.nginx的应用场景 二.编译安装nginx服务1.在线安装nginx1.1 yum部署Nginx1.2 扩展源安装完后直接安装Nginx 2.ngin…

【Red Hat 7.9---详细安装Oracle 11g】---静默方式安装

【Red Hat 7.9---详细安装Oracle 11g】---静默方式安装 🔻 一、安装前规划🔻 二、安装前准备一(系统参数修改)⛳ 2.1 内核版本、系统版本查看⛳ 2.2 修改主机名-重启生效⛳ 2.3 关闭selinux⛳ 2.4 防火墙设置1521端口开放⛳ 2.5 系…

哈希密码的加盐强化

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、什么是哈希加密? 二、哈希加密…

讯飞星火大模型详细内测体验:看它能否应对这些挑战?

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍二、分类问题测试0️⃣自我介绍1️⃣语言理解2️⃣知识问答3️⃣逻辑推…

“房地一体”专用系列:DG3M、D2M产品发布

基于“房地一体”项目的作业特点,睿铂听取客户作业过程中的需求反馈,在D2PSDK、D3PSDK基础之上推出全新中端产品:D2M和DG3M。 D2M适用于地势平坦区域的房地一体项目,DG3M适用于落差较大场景的房地一体项目和智慧城市三维建模项目…

【面试】标准库相关题型(二)

文章目录 1. deque底层实现原理1.1 概述1.2 原理图1.3 类结构1.4 操作函数 2. 什么时候使用vector、list、deque2.1 vector2.2 list2.3 deque 3. priority_queue的底层实现原理3.1 一句话概括:用堆来实现优先级队列3.2 堆结构3.3 底层容器3.4 STL对堆结构提供的接口…

计算机网络-物理层

目录 一、物理层的基本概念 二、物理层下的传输媒体 (一)引导型传输媒体 (二)非引导型传输媒体 三、传输方式 (一)串行传输和并行传输 (二)同步传输和异步传输 (…

STL之位图(bitset)

目录 位图bitset介绍bitset使用 模拟实现位图的应用——题目总结 位图 bitset介绍 参考文档:bitset 在 C STL 中,std::bitset 是一个固定大小的容器类,用于表示二进制位序列。它可以被看作是一个长度固定为 N 的布尔数组,其中每个元素只有两…

[Selenium] 通过Java+Selenium查询文章质量分

文章目录 前言一、环境准备二、查询文章质量分2.1、修改pom.xml配置2.2、配置Chrome驱动2.3、引入浏览器配置2.4、设置无头模式2.5、启动浏览器实例,添加配置信息2.6、访问质量分地址2.7、窗口设置2.8、定位到输入框并输入博文地址2.9、定位到查询按钮并点击2.10、强…

三、Docker的基本组成和常用命令(二)

文章目录 容器命令创建并启动容器列举运行的容器退出容器命令启动容器重启容器停止容器强制停止容器删除容器 常用其他命令后台启动容器查看运行日志查看容器中的进程信息查看容器或镜像的元数据进入当前正在运行的容器从容器内拷贝文件到主机上 容器命令 说明:有镜…

【Linux】常用指令(二)

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 man指令 echo指令 补充: echo和cat的区别? CP指令 mv命令 ctrlc 指令 which指令 学习中遇到得问题: 1.如何看待指令? 2.在执行指令之前&#xf…

【MySQL】不就是MySQL——子查询

前言 今天我们来学习多表查询的下一个模块——子查询,子查询包括了标量子查询、列子查询、行子查询、表子查询,话不多说我们开始学习。 目录 前言 目录 一、子查询 1. 子查询的概念 2. 子查询语法格式 2.1 根据子查询结果不同可以分为:…

全志V3S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 说到了用usb otg来实现spi nand flash的烧入,这中间主要用到了PhoenixSuit软件。那么怎么用usb otg来实现spi nor flash的烧入呢&#…

从零开始 Spring Boot 47:缓存

从零开始 Spring Boot 47:缓存 图源:简书 (jianshu.com) Spring 提供一个简单但使用的缓存(Cache)机制,我们可以利用它来优化代码执行效率。 简单示例 老规矩,我们从一个简单示例开始: Serv…

RedHat红帽认证---RHCSA

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! RHCSA node1 1.配置网络设置 将 node1 配置为具有以下网络配置:主机名:node1.domain250.example.comIP 地址:172.25.250.100子网…

基于Java+Swing实现聊天室

基于JavaSwing实现聊天室 一、系统介绍二、功能展示三、其它1.其他系统实现 四、获取源码 一、系统介绍 Java聊天室系统主要用于实现在线聊天,基本功能包括:服务端和客户端。本系统结构如下: (1)服务端: 1…

SpringBoot中使用Tomcat、Undertow、jetty等容器

文章目录 SpringBoot中使用Tomcat、Undertow、jetty等容器;1. 默认使用Tomcat容器,直接运行项目即可:Java -jar xxx.jar2. 使用undertow容器2-1 引入Maven依赖,同时屏蔽内置Tomcat2-2 Undertow容器的常用配置参考2-3 一个特别的报…

人工智能---D分离

D分离(D-Separation)是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法,D-Separation更加直观,且计算简单。对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点…

c++11 标准模板(STL)(std::basic_streambuf)(三)

定义于头文件 <streambuf> template< class CharT, class Traits std::char_traits<CharT> > class basic_streambuf; 类 basic_streambuf 控制字符序列的输入与输出。它包含下列内容并提供到它们的访问&#xff1a; 1) 受控制字符序列&#xff…