保姆级复现yolov7(论文复现)

news2024/9/28 11:49:59

保姆级复现yolov7(论文复现)

本文所涉及所有资源均在传知代码平台可获取

所需环境

当然深度学习环境的搭建是基础,详情可见(win10):
【深度学习】windows10环境配置详细教程anaconda3环境变量配置win10-CSDN博客
Unbutun搭建深度学习环境可以参考:
Ubuntu20.04配置pytorch深度学习环境(亲测有效)_ubuntu20.04 cuda 11.6 torch安装哪个版本-CSDN博客
PyCharm:2022.2.2版本
torch==1.2.0+
为了使用amp混合精度,推荐使用torch1.7.1以上的版本。
其他所需依赖包可见:requirements.txt

训练步骤

a、训练VOC07+12数据集
数据集的准备
本文使用VOC格式进行训练,训练前需要下载好VOC07+12的数据集,解压后放在根目录
VOC数据集下载地址如下,里面已经包括了训练集、测试集、验证集(与测试集一样),无需再次划分:

在这里插入图片描述

数据集链接请见readme.txt文件

数据集的处理
修改工程主目录中的voc_annotation.py里面的annotation_mode=2,运行voc_annotation.py生成根目录下的2007_train.txt和2007_val.txt

在这里插入图片描述

在这里插入图片描述

开始网络训练
train.py的默认参数用于训练VOC数据集,直接运行train.py即可开始训练。
不出意外,接下来就一定有意外:

在这里插入图片描述

很明显,我的笔记本显卡不行哦,显卡内存太小,可以调整batch_size。

在这里插入图片描述

看到batch_size等于Freeeze_batch_size,将Freeze_batch_size=2

在这里插入图片描述

开始训练

在这里插入图片描述

训练结果预测
训练结果预测需要用到两个文件,分别是yolo.py和predict.py。我们首先需要去yolo.py里面修改model_path以及classes_path,这两个参数必须要修改。
model_path指向训练好的权值文件,在logs文件夹里。
classes_path指向检测类别所对应的txt。
完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测

训练自己的数据集

数据集的准备
本文使用VOC格式进行训练,训练前需要自己制作好数据集,
训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

数据集的处理
在完成数据集的摆放之后,我们需要利用voc_annotation.py获得训练用的2007_train.txt和2007_val.txt。
修改voc_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。
训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
model_data/cls_classes.txt文件内容为

在这里插入图片描述

预测

a、使用预训练权重

下载完库后解压,在百度网盘下载权值,放入model_data,运行predict.py,输入img/street.jpg

在这里插入图片描述

在predict.py里面进行设置也可以进行fps测试和video视频检测。

在这里插入图片描述

b、使用自己训练的权重
按照训练步骤训练。
在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类。
更改位置如下:

在这里插入图片描述

四、评估步骤
a、评估VOC07+12的测试

本文使用VOC格式进行评估。VOC07+12已经划分好了测试集,无需利用voc_annotation.py生成ImageSets文件夹下的txt。
在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。
b、评估自己的数据集
本文使用VOC格式进行评估。
如果在训练前已经运行过voc_annotation.py文件,代码会自动将数据集划分成训练集、验证集和测试集。如果想要修改测试集的比例,可以修改voc_annotation.py文件下的trainval_percent。trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1。train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1。
利用voc_annotation.py划分测试集后,前往get_map.py文件修改classes_path,classes_path用于指向检测类别所对应的txt,这个txt和训练时的txt一样。评估自己的数据集必须要修改。
在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。

文章代码资源点击附件获取

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

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

相关文章

正则表达式的使用示例--Everything文件检索批量重命名工具

一、引言 Everything是一款非常实用的文件搜索工具,它可以帮助您快速定位并查找计算机中的文件和文件夹。Everything搜索文件资料之神速,有使用过的朋友们都深有体会,相对于Windows自带的搜索功能,使用Everything,可以…

C语言 | Leetcode C语言题解之第442题数组中重复的数据

题目&#xff1a; 题解&#xff1a; int* findDuplicates(int* nums, int numsSize, int* returnSize) { int *ans (int *)malloc(sizeof(int) * numsSize);int pos 0;for (int i 0; i < numsSize; i) {int x abs(nums[i]);if (nums[x - 1] > 0) {nums[x - 1] -…

$attrs 和 $listeners

通常情况下&#xff0c;父子组件之间的数据是通过 props 由父向子传递的&#xff0c;当子组件想要修改数据时&#xff0c;则需要通过 $emit 以事件形式交由父组件完成&#xff0c;而这种交互方式只存在于父子组件之间&#xff0c;多层嵌套的时候&#xff0c;处于内层的组件想要…

OpenAI o1与GPT-4o究竟强在哪里

OpenAI 的 O1 模型与 GPT-4o 相比&#xff0c;具有显著的技术进步和性能提升。以下是两者的主要区别和 O1 的进步之处&#xff1a; 推理能力&#xff1a;O1 模型在处理复杂问题&#xff08;如编程和数学&#xff09;方面表现出更强的推理能力。例如&#xff0c;在国际数学奥林匹…

使用ffmpeg合并视频和音频

使用ffmpeg合并视频和音频 - 哔哩哔哩 简介 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0…

【项目文档】软件系统培训方案(Doc原件2024)

1. 培训概述 2. 培训目的 3. 培训对象及要求 3.1. 培训对象 3.2. 培训人员基本要求 4. 培训方式 5. 培训内容 6. 培训讲师 7. 培训教材 8. 培训质量保证 8.1. 用户培训确认报告 8.2. 培训疑问解答 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报…

【JAVA开源】基于Vue和SpringBoot的师生健康管理系统

博主说明&#xff1a;本文项目编号 T 052 &#xff0c;文末自助获取源码 \color{red}{T052&#xff0c;文末自助获取源码} T052&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

【数据结构】排序算法系列——计数排序(附源码+图解)

计数排序 顾名思义&#xff1a;统计每个数据出现的次数。 算法思想 我们根据《算法导论》中给出对于计数排序的讨论&#xff1a; 对每一个输入元素 x, 确定小于 x 的元素个数。利用这一信息&#xff0c;就可以直接把 x 放到它在输出数组中的位置上了。例如&#xff0c;如果…

秋招即将来临,AIGC 产品经理 快速入门方法论

AIGC 产品经理是什么 AIGC 产品经理是人工智能与大数据技术融合背景下应运而生的一种新型职业&#xff0c;负责从 AI 产品的设计、开发到推广的全过程&#xff0c;确保其顺利推向市场并实现良好的商业价值。 更具体地说&#xff0c;AIGC 产品经理就是将 AI 能生产内容的能力完…

【高景一号卫星】

高景一号卫星 高景一号卫星是中国自主研发的一系列高分辨率商业遥感卫星&#xff0c;旨在满足全球民用遥感影像市场的需求。以下是对高景一号卫星的详细介绍&#xff1a; 一、基本信息 名称&#xff1a;高景一号&#xff08;SuperView-1, SV-1&#xff09;发射时间&#xf…

数据库管理-第244期 一次无法switchover的故障处理(20240928)

数据库管理244期 2024-09-28 数据库管理-第244期 一次无法switchover的故障处理&#xff08;20240928&#xff09;1 问题展现2 问题排查与处理2.1 问题12.2 问题2 3 问题分析4 总结 数据库管理-第244期 一次无法switchover的故障处理&#xff08;20240928&#xff09; 作者&…

TimeMOE: 使用稀疏模型实现更大更好的时间序列预测

传统上,预测这些趋势涉及针对每种情况的专门模型。最近的进展指向了可以处理广泛预测问题的"基础模型"。 这是9月份刚刚发布的论文TimeMOE。它是一种新型的时间序列预测基础模型,“专家混合”(Mixture of Experts, MOE)在大语言模型中已经有了很大的发展&#xff0c…

如何在ChatGPT的帮助下,使用“逻辑回归”技巧完成论文写作?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 逻辑回归作为一种统计分析工具广泛应用&#xff0c;以解决研究中的分类问题。其主要作用在于探讨和量化自变量对因变量的影响&#xff0c;从而揭示潜在的因果关系。 在论文写作中&…

无人驾驶车联网5G车载路由器应用

无人驾驶车联网中&#xff0c;5G车载路由器的应用起到了至关重要的作用。以下是关于5G车载路由器在无人驾驶车联网中应用的详细分析&#xff1a; 5G车载路由器具备极低的时延特性&#xff0c;能够实现车与车之间、车与基础设施之间的快速通信。这对于无人驾驶技术尤为重要&…

策略模式与工厂模式的区别

《策略模式与工厂模式的区别》 策略模式&#xff08;Strategy Pattern&#xff09; 和 工厂模式&#xff08;Factory Pattern&#xff09; 都是常见的设计模式&#xff0c;虽然它们在设计目标上有一些相似之处&#xff0c;如解耦代码、增强扩展性&#xff0c;但它们的应用场景和…

做中视频计划,哪里找素材?推荐几个热门中视频素材下载网站

在做中视频计划时&#xff0c;寻找合适的素材至关重要。抖音上那些热门的中视频素材都是从哪里下载的呢&#xff1f;以下五大高清素材库值得收藏&#xff0c;赶紧来看看吧&#xff01; 蛙学网 蛙学网提供了百万级的中视频素材&#xff0c;质量高且是4K高清无水印&#xff0c;视…

crypt.h:No such file or directory 报错处理

crypt.h&#xff1a;No such file or directory 报错处理 前言&#xff1a;本文初编辑于2024年9月28日 CSDN主页&#xff1a;https://blog.csdn.net/rvdgdsva 博客园主页&#xff1a;https://www.cnblogs.com/hassle 博客园本文链接&#xff1a;https://www.cnblogs.com/has…

0基础学前端 day6 -- 搭建github pages静态网址

标题&#xff1a;如何通过 GitHub Pages 创建一个静态网站 GitHub Pages 是 GitHub 提供的一项免费服务&#xff0c;允许用户从 GitHub 仓库中托管静态网站。对于开发者和非开发者来说&#xff0c;这都是一个极其便利的工具&#xff0c;用于创建和发布个人博客、项目文档或作品…

[leetcode刷题]面试经典150题之9python哈希表详解(知识点+题合集)

为了方便理解哈希表&#xff0c;我们先从python中的字典讲起。 字典 (Dictionary) 字典是 Python 中一种内置的数据结构&#xff0c;它是一种 键值对&#xff08;key-value pair&#xff09;存储形式。每个键&#xff08;key&#xff09;都有一个对应的值&#xff08;value&a…

100个Transformer面试题,附答案!收藏这一篇就够了!

前言 Transformer是一种用于自然语言处理&#xff08;NLP&#xff09;和其他序列到序列&#xff08;sequence-to-sequence&#xff09;任务的深度学习模型架构&#xff0c;它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制&#xff08;self-attention mec…