【yolofastest上手】

一、前言

yolofastest网上资料比较少,也没有视频教学,所以想要使用参考了很多资料,只能说各资料都不尽全,让刚接触的小白无从下手。
参考资料:
github地址
yolo-fastest 快速上手
修改参数遇到的问题
能在ARM-CPU上实时识别图像的深度学习算法之yolo-fastest
手把手教你在服务器上用YOLOv4训练和测试数据集(保姆级)最好的一集
VOC2007数据集详细分析
训练的时候遇到的问题

二、准备工作

环境首先要配置好,否则一行代码也运行不了,而且遇到各种错误还是那种无法解决的,忙活一天结果发现是环境的问题,全是无用功了是,我研一同学都这么说,明明忙乎一天,但实际没什么进度,真是要功劳有苦劳,但除你自己外都是唯结果论,还好师兄很耐心容忍我的菜。本人环境如下:
1.linux
2.cuda11.8+cudnn
3.opencv
4.vscode

三、测试

1、克隆代码

git clone https://github.com/dog-qiuqiu/Yolo-Fastest
然后你就获得到名为Yolo-Fastest的文件夹,文件目录结构如下在这里插入图片描述

2、编辑makefile文件并make

切换到Yolo-Fastest文件目录下,编辑makefile文件(重点)

GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
AVX=1
OPENMP=0
LIBSO=0
ZED_CAMERA=0
ZED_CAMERA_v2_8=0# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)
# set ZED_CAMERA=1 to enable ZED SDK 3.0 and above
# set ZED_CAMERA_v2_8=1 to enable ZED SDK 2.XUSE_CPP=0
DEBUG=0# ARCH= -gencode arch=compute_35,code=sm_35 \
#       -gencode arch=compute_50,code=[sm_50,compute_50] \
#       -gencode arch=compute_52,code=[sm_52,compute_52] \
# 	    -gencode arch=compute_61,code=[sm_61,compute_61]OS := $(shell uname)# GeForce RTX 3070, 3080, 3090
ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]#后面的内容我就不写了

我修改的地方如下,别的地方都没动
1、ARCH参数,makefile文件里都有自己显卡相对应的参数,找到自己显卡型号然后把相应的注释去掉就行,然后把上面的ARCH注释掉,只保留自己显卡对应的ARCH,比如我的RTX3090就是上面。
2、NVCC=/usr/local/cuda-11.8/bin/nvcc nvcc修改成自己的cuda相对应版本
3、全局搜索,makefile文件中的cuda修改成cuda-11.8,例如CFLAGS+= -DCUDNN -I/usr/local/cuda-11.8/include
修改完成之后,执行make -j,这时候可能会遇到一些错误,报什么错误就搜索一下,我之前遇到的错误就是显卡驱动未更新、ARCH未修改、opencv没安装之类的错误,总之就是环境错误,一定要把环境先配置好。执行完之后会出现darknet文件,这时候就可以进行测试了。

3、进行测试

官方文档上写bash image_yolov4.sh,那看一下这个文件里写了什么内容:

./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights data/dog.jpg -i 0 -thresh 0.25

在看一下啊,但是咱没有yolov4.weights这个权重文件呀,这个文件还是我之前上网搜索然后下载粘贴到文件下的,官方文档也不怎么靠谱。这个权重文件也放下面吧。
链接:https://pan.baidu.com/s/1xzsaSzV7jLoBTZA-JLXXfA
提取码:s5zw
测试没什么问题就可以训练自己的数据了,在这里只写图片。
在这里插入图片描述

训练数据

1、获取预训练权重文件

文档上是这么写的:
./darknet partial yolo-fastest.cfg yolo-fastest.weights yolo-fastest.conv.109 109
但是欸,看一下咱们的文件目录结构,这个什么yolo-fastest.cfg、yolo-fastest.weights,没有这俩文件啊!报错就是cant open file,你说说这怎么办,文档写的个啥,cfg文件里也没有这俩啊,我就找了挺久,以为这俩文件也能上网跟yolov4.weights一样能搜到下载呢,但是搜不到,寄。后来查看文件夹,找到了。
在这里插入图片描述
藏得挺深,在这个文件夹里,好了,咱们把上面的权重文件和cfg放到Yolo-Fastest的目录下并重命名在执行代码。
在这里插入图片描述
这样就获取到yolo-fastest.conv.109文件了,也不知道为啥一定要这样命名。
在这里插入图片描述

2、准备数据集

要准备哪些?步骤省略,我是师兄给我的,我也不知道怎么制作数据集。最终需要的文件如下(红色框框):
在这里插入图片描述

其中重要的是obj.data文件
在这里插入图片描述

准备好之后,把这些文件都放入data文件夹中。

3、修改cfg文件

在进行训练之前,要修改cfg中的参数
cfg文件中的参数注释
我在这里修改了通道数以及classes,注意修改了classes之后还需要修改filters参数,我之前就没修改filters参数,就会报错Error: l.outputs == params.inputs filters= in the [convolutional]-layer doesn't correspond to classes= or mask= in [yolo]-layer
以下是解决方案,参考一下触类旁通举一反三。filters=(classes+5)×3。
吐槽一下, 还vip收费文章被恶心到了gdx
在这里插入图片描述
但是我在cfg文件里,看到有非常多的filters怎么办,另外classes有两处,都需要修改的,filters就是在两个classes上面,这两处。
在这里插入图片描述
在这里插入图片描述
好了准备工作都完成了。

4、训练

文档上是这么写的
./darknet detector train voc.data ./Yolo-fastest/VOC/yolo-fastest.cfg yolo-fastest.conv.109
但是,咱们的data和cfg文件不是上面写的,需要改成自己的。
./darknet detector train data/obj.data yolo-fastest.cfg yolo-fastest.conv.109
运行,结果报错了!
在这里插入图片描述
它说了,If error occurs- run training with flag: -dont show好,那么就加上这句
./darknet detector -dont_show train data/obj.data yolo-fastest.cfg yolo-fastest.conv.109
好了没有错误了,训练好的模型文件将会保存在backup文件夹下面。训练的差不多了,打开backup文件夹看一下。
在这里插入图片描述
感觉差不多了就ctrl+c停止训练,然后看一下成果。

5、检验成果

获取mAP指标
./darknet detector map data/obj.da ta ModelZoo/yolo-fastest-1.1_coco/yolo-fastest-1.1.cfg backup/yolo-fastest-1_10000.weights -points 11

./darknet detector map data/obj.data yolo-fastest.cfg backup/yolo-fastest_1000.weights -points 11
在这里插入图片描述
坏了,他这个怎么显示,mAP是0呢,中间肯定出错了。
从头梳理一遍,我生成darknet,进行小狗图片测试成功,darknet文件是没错的;
其次是获取预训练权重文件、准备数据集和修改cfg文件。好,我就直接说之前错误的原因吧:
1、没有准备test.txt(一开始只有train.txt),obj.data中没有valid这一行。
2、我先修改了cfg再获取的预训练权重文件。
这两个错误以后要避免!另外不一定要等到训练很久之后检验mAP的时候才发现错误。出现如下错误就要及时停止:
1、Yolo-Fastest/chart_yolo-fastest.png这个文件的图像不正常,正常的如下,否则停止修改错误再训练
在这里插入图片描述
2、控制台出现以下错误
在这里插入图片描述

重新修改好错误重新训练,获取mAP数据如下,效果不错。
./darknet detector map data/obj.data yolo-fastest.cfg backup/yolo-fastest_last.weights -points 11
在这里插入图片描述

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

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

相关文章

销售转行上位机编程:我的学习与职业经历分享

同学们好,我是杨工,原先是一名销售。 通过在华山编程培训中心学习,成功转行上位机编程,对此我想分享学习和职业经历。 在职业生涯的早期,我并没有考虑将技术融入到我的工作中。然而,在几次创业的失败后&a…

{MySQL}索引事务和JDBC

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、索引1.1索引是什么1.2作用1.3代码 二、事务2.1什么是事务2.2使用 三.JDBC总结 前言 接着上次,继续讲下MySQL 提示:以下是本篇文章正…

Jmeter吞吐量控制器总结

吞吐量控制器(Throughput Controller) 场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B …

用CSS中的动画效果做一个转动的表

<!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title></title><style>*{margin:0;padding:0;} /*制作表的样式*/.clock{width: 500px;height: 500px;margin:0 auto;margin-top:100px;border-rad…

【数据结构】双向带头循环链表的实现

前言&#xff1a;在前面我们学习了顺序表、单向链表&#xff0c;今天我们在单链表的基础上进一步来模拟实现一个带头双向链表。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的…

USB -- STM32F103复合设备(HID+MassStorage)传输讲解(十)

目录 链接快速定位 前沿 1 描述符讲解 1.1 设备描述符 1.2 配置描述符 1.3 接口描述符 1.4 功能描述符 1.5 端点描述符 1.6 字符串描述符 1.7 报告描述符 2 运行演示 链接快速定位 USB -- 初识USB协议&#xff08;一&#xff09; 源码下载请参考链接&#xff1a;…

java中PhantomReference WeakReference SoftReference垃圾回收触发时机以及使用场景

java 中对象引用一般引用分为四种情况 强引用 即我们平常创建的对象 Object obj new Object() 垃圾回收触发时机 在没设置 jvm 参数 -XX:PretenureSizeThreshold 和 -XX:MaxTenuringThreshold 的情况下 -XX:PretenureSizeThreshold 的值为 0&#xff0c;即未设置大对象直接…

三巨头对决:深入了解pnpm、yarn与npm

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 三巨头对决&#xff1a;深入了解pnpm、yarn与npm 前言包管理器简介npm&#xff08;Node Package Manager&#xff09;&#xff1a;Yarn&#xff1a;pnpm&#xff08;Performant Npm&#xff09;&#…

基于Mapify的在线艺术地图设计

地图是传递空间信息的有效载体&#xff0c;更加美观、生动的地图产品也是我们追求目标。 那么&#xff0c;我们如何才能制出如下图所示这样一幅艺术性较高的地图呢&#xff1f;今天我们来一探究竟吧&#xff01; 按照惯例&#xff0c;现将网址给出&#xff1a; https://www.m…

SpringBoot知识

1、Spring和SpringBoot对比 2、版本调整 &#xff08;1&#xff09;先排除是否是JDK与SpringBoot的版本不一致导致的&#xff1a;如JDK1.8和SpringBoot3.1.5冲突&#xff1b; &#xff08;2&#xff09;调整编译版本 &#xff08;3&#xff09;调整maven的jdk &#xff08;4&…

Vscode运行调试文件

文章目录 vscode调试运行流程vscode 执行报错settings.json成功截图 vscode调试运行流程 vscode左侧菜单栏点击运行调试icon&#xff0c;点击菜单右侧栏运行和调试按钮&#xff0c;选择node调试器&#xff0c;js文件行数左边点击添加红色断点&#xff0c;运行当前文件 vscode…

【docker实战】01 Linux上docker的安装

Docker CE是免费的Docker产品的新名称&#xff0c;Docker CE包含了完整的Docker平台&#xff0c;非常适合开发人员和运维团队构建容器APP。 Ubuntu 14.04/16.04&#xff08;使用 apt-get 进行安装&#xff09; # step 1: 安装必要的一些系统工具 sudo apt-get update sudo ap…

湘潭大学-2023年下学期-c语言-作业0x0a-综合1

A 求最小公倍数 #include<stdio.h>int gcd(int a,int b) {return b>0?gcd(b,a%b):a; }int main() {int a,b;while(~scanf("%d%d",&a,&b)){if(a0&&b0) break;printf("%d\n",a*b/gcd(a,b));}return 0; }记住最大公约数的函数&…

如何编写一个javaAgent jar工具包超详细教程

介绍 Java Agent技术 Java Agent技术是JDK提供的用来编写Java工具的技术&#xff0c;使用这种技术生成一种特殊的jar包&#xff0c;这种jar包可以让Java程序 运行其中的代码。 Java Agent技术的两种模式 Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码…

【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 前言&#xff1a; 最近在备战期末考试&#xff0c;所以本专栏主要是为了备战期末计算机组成原理这门考试&#xff0c;讲的比较浅显&…

详解Keras3.0 Layer API: Dropout layer

Dropout layer 图1 标准的神经网络 图2 加了Dropout临时删除部分神经元 Dropout层的作用是在神经网络中引入正则化&#xff0c;以防止过拟合。它通过随机丢弃一部分神经元&#xff08;如图2&#xff09;的输出来减少模型对训练数据的依赖性。这样可以提高模型的泛化能力&#x…

C++初阶——基础知识(函数重载与引用)

目录 1.命名冲突 2.命名空间 3.缺省参数 4.函数重载 1.函数重载的特点包括&#xff1a; 2.函数重载的好处包括&#xff1a; 3.引用 引用的特点包括 引用的主要用途包括 引用和指针 引用 指针 类域 命名空间域 局部域 全局域 第一个关键字 命名冲突 同一个项目之间冲…

二分查找--二分查找算法(朴素二分模板)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题题目链接https://leetcode.cn/problems/binary-search/description/ 算法原理 二段性&#xff0c;我们发现这个数组可以找到某种规律将其分为两段&#xff0c;不断划分下去&#xff0c;最终可以找到target 图示 我们分…

图灵日记之java奇妙历险记--继承和多态

目录 继承概念继承语法父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法 super关键字子类构造方法super和this初始化protected关键字继承方式final 关键字继承与组合 多态条件向上转型重写动态绑定&&静态绑定多态再理解向下转型多态的优缺点好处缺陷 继承…

Element|InfiniteScroll 无限滚动组件的具体使用方法

目录 InfiniteScroll 无限滚动 基本用法 详细说明 v-infinite-scroll 指令 infinite-scroll-disabled 属性 infinite-scroll-distance 属性 总结 需求背景 &#xff1a; 项目统计管理列表页面&#xff0c;数据量过多时在 IE 浏览器上面会加载异常缓慢&#xff0c;导致刚…