【yolofastest上手】

news2025/1/23 10:26:24

一、前言

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.X

USE_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.coloradmin.cn/o/1344076.html

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

相关文章

Halcon颜色通道的处理decompose3/image_to_channels/channels _to _image

Halcon颜色通道的处理 文章目录 Halcon颜色通道的处理一. 图像的通道二. 访问通道1.访问通道2.获取通道的数量 三. 通道分离与合并1. decompose3算子2. image_to_channels 算子3. compose3算子4. channels_to_image算子 四. 处理RGB信息 由于彩色图像通常包含不止一个通道&…

广播信道的局域网

目录 一. 局域网的数据链路层二. 广播信道局域网三. 以太网标准四. CSMA/CD协议五. 以太网最短的帧六. 冲突解决方法-―退避算法 \quad 一. 局域网的数据链路层 \quad 局域网的特点 \quad 局域网的拓扑结构 \quad 局域网传输媒体 \quad \quad 媒体共享技术 \quad 二. 广播信道…

【前端面经】即时设计

目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优…

交叉编译aarch64架构支持openssl的curl、libcurl

本文档旨在指导读者在x86_64平台上交叉编译curl和openssl库以支持aarch64架构。在开始之前,请确保您的系统环境已正确配置。 1. 系统环境准备 系统是基于Ubuntu 20.04 LTS,高版本可能会有问题。首页,安装必要的开发工具和库文件。打开终端并…

[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …

C++:第十一讲DFS深搜

Everyday English Your optimal career is simply this: Share the real you with physical world through th e process of creative self-expression. 你的最佳职业很简单,就是这样:通过创造性自我表达的途径和世界分享真实的你。 前言 今天带着大家…

【音视频 ffmpeg 学习】 跑示例程序 持续更新中

环境准备 在上一篇文章 把mux.c 拷贝到main.c 中 使用 attribute(unused) 消除警告 __attribute__(unused)/** Copyright (c) 2003 Fabrice Bellard** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated docu…

scanf函数返回值被忽略

心怀希望的前进 前言 最近在复习c语言,发现了许多之前不了解的知识,今天想来与大家分享一下scanf返回值值被忽略的问题。 很多人应该都在vs中见到过,我们先说原因,再说改进方法 原因: scanf函数在读取数据时不会检…

kafka实现延迟消息

背景 我们知道消息中间件mq是支持延迟消息的发送功能的,但是kafka不支持这种直接的用法,所以我们需要独立实现这个功能,以下是在kafka中实现消息延时投递功能的一种方案 kafka实现延时消息 主要的思路是增加一个检测服务,这个检…

Python武器库开发-武器库篇之上传本地仓库到Git(三十八)

武器库篇之上传本地仓库到Git(三十八) 当我们在Git中创建远程仓库和进行了SSH key免密登陆之后,我们点击 Your respositories 可以查看我们所创建的远程仓库,如图所示: 如果我们需要将本地的仓库上传到Git,首先我们需要建立一个本…

数据结构与算法 - 查找

文章目录 第1关:实现折半查找第2关:实现散列查找 第1关:实现折半查找 代码如下: /*************************************************************date: April 2009copyright: Zhu EnDO NOT distribute this code. ***********…

Python实现的面部健康特征识别系统

Python实现的面部健康特征识别系统 引言1. 数据集获取与准备2. 模型训练3. Flask框架的应用4. 前台识别测试界面 结论与展望 引言 本文将介绍一个基于Python的面部健康特征判别系统,该系统利用互联网获取的公开数据集,分为健康、亚健康和不健康三个类别…

蓝牙曝底层安全漏洞,数十亿设备受影响

内容概括: Eurecom的研究人员近期分享了六种新型攻击方式,统称为"BLUFFS",这些攻击方式能够破坏蓝牙会话的保密性,使设备容易受到冒充和中间人攻击(MitM)。攻击发现者Daniele Antonioli解释道,"BLUFFS…

Sentinel-3如何处理并下载LST数据-陆地表面温度”(Land Surface Temperature)

LST 通常指的是“陆地表面温度”(Land Surface Temperature)。陆地表面温度是指地球表面上陆地部分的温度,而不包括水体表面。LST 是遥感技术中一个重要的参数,可以通过卫星遥感等手段进行测量和监测。 陆地表面温度对于许多领域…

WPF 漂亮长方体、正文体简单实现方法 Path实现长方体 正方体方案 WPF快速实现长方体、正方体的方法源代码

这段XAML代码在WPF中实现了一个类似长方体视觉效果的图形 声明式绘制:通过Path、PathGeometry和PathFigure等元素组合,能够以声明方式精确描述长方体每个面的位置和形状,无需编写复杂的绘图逻辑,清晰直观。 层次结构与ZIndex控制…

利用 IntelliJ IDEA 整合 GitHub 实现项目版本控制与协作管理

目录 前言1 设置GitHub登录账号2 将项目分享到GitHub3 IntelliJ IDEA 中导入Github项目4 往GitHub推送代码4.1 Commit Change(提交到本地库)4.2 Git -> Repository -> Push(推送到远程库) 5 拉取远程库代码到本地6 克隆远程…

Python列表的介绍与操作 增改查,连接,赋值,复制,清空

列表 在日常中我们通过给变量赋值来存储数据,比如 a "hello" b "world" c "你好啊" d "....."由于变量一次只能存储一个数据,但我们如果想一次存储多个数据,的话这样存储会很复杂,所以,我们可以通过列表 列表(List)是Python中的…

彻底解决可视化:中文字体显示「豆腐块」问题!

问题复现 # 导入必要的包 library(ggplot2)# 设置主题样式 theme_set(theme_minimal(base_size 15))# 创建一个简单的折线图 ggplot(data data.frame(x c(1, 2, 3), y c(1, 2, 3)), aes(x x, y y)) geom_line(color "blue") labs(title "欢迎关注公众号…

鸿蒙HarmonyOS-图表应用

简介 随着移动应用的不断发展,数据可视化成为提高用户体验和数据交流的重要手段之一。在HarmonyOS应用开发中,一个强大而灵活的图表库是实现这一目标的关键。而MPChart就是这样一款图表库,它为开发者提供了丰富的功能和灵活性,使得…

从0到1浅析Redis服务器反弹Shell那些事

文章目录 前言Redis服务1.1 特点与应用1.2 安装与使用1.3 语法和配置1.4 未授权访问 反弹Shell2.1 Web服务写入Webshell2.2 Linux定时任务反弹shell2.3 /etc/profile.d->反弹shell2.4 写入ssh公钥登录服务器2.5 利用Redis主从复制RCE2.6 SSRF漏洞组合拳->RCE 总结 前言 …