目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录

  • 一、目标检测介绍
  • 二、YOLOX介绍
  • 三、源码获取
  • 四、环境搭建
    • 4.1 环境检测
  • 五、数据集准备
  • 六、模型训练
  • 七、模型验证
  • 八、模型测试

一、目标检测介绍

目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防监控、自动驾驶、智能零售等领域具有广泛应用前景。

二、YOLOX介绍

论文链接:YOLOX: Exceeding YOLO Series in 2021

背景:随着物体检测的发展,YOLO系列始终追求实时应用的最佳速度和精度权衡。而且在过去两年中,目标检测学术界的主要进展都集中在无锚检测器 、高级标签分配策略 和端到端(无 NMS)检测器。而YOLOV4和YOLOV5仍然是基于锚的检测器。由于计算资源的限制导致这些优秀的检测器并不能广泛运用。

创新与贡献

  1. Backbone。使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;
  2. PAN-FPN。毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块
  3. Decoupled-Head。是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;
  4. Anchor-Free。YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;
  5. 损失函数。YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;
  6. 样本匹配。YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

三、源码获取

  1. 源码:点击
  2. bubbliiiing的代码:点击

四、环境搭建

我这里的环境安装的方式是根据源码安装的,但是我的代码是下载的bubbliiiing的。
第一步:Install YOLOX from source
cd YOLOX
pip install -v -e . # or python setup.py develop

第二步:安装cuda、torch、torchvision重要的环境。参考这个博客

环境版本
python3.7.11
cuda10.1
torch1.8.0+cu101
torchvision0.9.0+cu101

第三步:安装之后进入到此环境下的代码主目录,在终端运行

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

4.1 环境检测

下载YOLOX-S:点击
在这里插入图片描述
下载之后将模型放在下图位置,并修改predict.py路径
在这里插入图片描述
然后运行predict.py即可,输入图片路径,将得到下面的结果。在这里插入图片描述

五、数据集准备

通过labelImg标注图片得到xml和原图,分别放置在这两个文件夹下(labelImg的使用可查看这个博客)
在这里插入图片描述
这时候就需要将此数据集转换成VOC格式的数据集,方可训练。

通过voc_annotation.py来将数据集进行划分,注意几个地方:

  • annotation_mode为0/1/2的时候的区别,代码里面有备注
  • classes_path:数据集的类别情况,要改为自己的类别
  • 其他地方就是修改路径的问题,改成自己数据集对应的路径

运行后发现在这里插入图片描述

六、模型训练

这时候你会发现在主目录下会得到两个txt文件,一个用于训练一个用于验证。
然后你运行train.py,model_path修改为自己的类别文件路径。然后就可以运行。

python train.py

在这里插入图片描述
训练的同时我们也可以通过tensorboard来查看训练损失和其他指标的图
在这里插入图片描述
在这里插入图片描述

七、模型验证

通过get_map.py来验证模型的准确率、召回率、F1和mAP。(若想要测试集多点,需通过voc_annotation.py来划分数据集的测试集)

python get_map.py

修改的地方

  • map_mode:第一次使用需要设置为0
  • classes_path:为自己的类别文件路径
  • VOCdevkit_path:为自己的数据集路径
  • 还有其他的相关路径的修改
    在这里插入图片描述
    第一次必须使用map_mode = 0才能运行。因为后面有些模式需要结合检测的结果来进行绘制,

由于训练时间问题,我只是简单测试了一下训练效果,没有进行大量的epoch训练,所以效果并不是很好
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

八、模型测试

通过predict.py来对模型测试。

修改的地方

  • mode:可选择图片、视频、fps、热力图、转换成onnx模型等
  • 还有model_path和classes_path也需要改为自己的(和训练情况一样,model_path为训练好的模型文件)
    单张图片
    在这里插入图片描述
    热力图
    在这里插入图片描述

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

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

相关文章

单元测试与自测

单元测试在百度百科的定义: 自测在百度百科的定义: 单元测试是测一个类或一个函数,自立门第main函数,不依赖于项目,预期的是这个类或函数是没有问题的。程序编码完成之后至各种测试再到用户使用一二十年出现的任何bug都…

娱乐时间 —— 用python将图片转为excel十字绘

最近看蛮多朋友在玩,要么只能画比较简单的,要么非常花时间。想了下本质上就是把excel对应的单元格涂色,如果能知道哪些格子要上什么颜色,用编程来实现图片转为excel十字绘应该是很方便的。 图片的每一个像素点都可以数值化&#x…

Jmeter如何设置中文版

第一步:找到 apache-jmeter-5.4.3\bin目录下的 jmeter.properties 第二步:打开 三,ctrf 输入languageen,注释掉,增加以行修改如下 四,ctrs 保存修改内容,重新打开jmeter就可以了

微信小程序Day2笔记

1、WXML模板语法 1. 数据绑定 数据绑定的基本原则 在data中定义数据在WXML中使用数据 2. 在data中定义页面的数据 在页面对应的.js文件中,把数据定义到data对象中。 3. Mustache语法的格式 把data中的数据绑定到页面中渲染,使用Mustache语法&…

PHP8中获取并删除数组中最后一个元素-PHP8知识详解

在php8中&#xff0c;array_pop()函数将返回数组的最后一个元素&#xff0c;并且将该元素从数组中删除。语法格式如下&#xff1a; array_pop(目标数组) 获取并删除数组中最后一个元素&#xff0c;参考代码&#xff1a; <?php $stu array(s001>明明,s002>亮亮,s…

【FPGA】通俗理解从VGA显示到HDMI显示

注&#xff1a;大部分参考内容来自“征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10&#xff08;上&#xff09;” 贴个下载地址&#xff1a; 野火FPGA-Altera-EP4CE10征途开发板_核心板 — 野火产品资料下载中心 文档 hdmi显示器驱动设计与验证 — …

前端list.push,封装多个对象

js var fruit [apple, banana];fruit.push(pear);console.log(fruit); // [apple, banana, pear]现在为对象 data1:{addUser: 1,editUser: 1,addTime: null,editTime: 1527410579000,userId: 3,systemNo: mc,userName: zengzhuo,userPassword: e10adc3949ba59abbe56e057f20f88…

【广州华锐互动】AR远程协助技术提供实时远程协作和指导

随着科技的不断发展&#xff0c;企业的运营管理模式也在不断地进行创新和升级。在这个过程中&#xff0c;AR&#xff08;增强现实&#xff09;技术的应用逐渐成为了企业运维管理的新兴趋势。AR远程协助平台作为一种结合了AR技术和远程协助理念的技术手段&#xff0c;为企业运维…

Netty-NIO

文章目录 一、NIO-Selector1.处理accept2.cancel3.处理read4.处理客户端断开5. 处理消息的边界6. 写入内容过多的问题7. 处理可写事件 二、多线程优化三、NIO概念剖析1. stream 和 channel2. IO模型2.1 阻塞IO2.2 非阻塞IO2.3多路复用2.4 同步异步 3. 零拷贝3.1 NIO优化3.2 sen…

hive葵花宝典:hive函数大全

文章目录 版权声明函数1 函数分类2 查看函数列表3 数学函数取整函数: round指定精度取整函数: round向下取整函数: floor向上取整函数: ceil取随机数函数: rand幂运算函数: pow绝对值函数: abs 4 字符串函数字符串长度函数&#xff1a;length字符串反转函数&#xff1a;reverse…

autoware.ai感知随笔--地面滤波

autwoware.ai中点云预处理–points_preprocessor points_preprocessor cloud_transformer: 点云坐标转换,将输入的点云转化为velodyne坐标系下的点云。 compare_map_filter: 对比激光雷达点云和点云地图&#xff0c;然后提取&#xff08;或去除&#xff09;一致的点。 |input_…

机器学习实战-系列教程7:SVM分类实战2线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读

&#x1f308;&#x1f308;&#x1f308;机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 SVM分类实战1之简单SVM分类 SVM分类实战2线性SVM SVM分类实战3非线性SVM 3、不同软间隔C值 3.1 数据标准化的影响 如图左边是没…

css 左右宽固定,中间自适应——双飞翼布局

最近面试的时候遇到一个提问说&#xff0c;如何做到一个左右宽度固定&#xff0c;中间自适应的布局&#xff0c;我的答案不重要&#xff0c;重要的是不是面试官想听到的答案&#xff0c;这样问大概率他想听到的答案一定是双飞翼布局&#xff0c;所以今天就手敲一个双飞翼布局让…

ES-索引管理

前言 数据类型 ​ 搜索引擎是对数据的检索&#xff0c;所以我们先从生活中的数据说起。我们生活中的数据总体分为两种&#xff1a; 结构化数据非结构化数据 结构化数据&#xff1a; 也称作行数据&#xff0c;是由二维表结构来逻辑表达和实现的数据&#xff0c;严格地遵循数…

html 学习 之 文本标签

下面是一些常见的HTML文本标签&#xff08;&#xff0c;&#xff0c;&#xff0c;&#xff0c;和&#xff09;以及它们的作用&#xff1a; 标签 (Emphasis - 强调): 作用&#xff1a;用于在文本中表示强调或重要性。 示例&#xff1a; <p>这是一段文本&#xff0c;&l…

数据资产管理:数据目录怎么搞?

经过了站在业务视角的自上而下的数据梳理&#xff0c;以及站在IT视角的自下而上的数据盘点&#xff0c;一套“热腾腾”的数据资产清单终于新鲜出炉了。 通过数据资产盘点&#xff0c;企业终于知道他们拥有哪些数据、如何使用数据、是否安全以及数据在哪里。 然而&#xff0c;据…

TortoiseGit设置作者信息和用户名、密码存储

前言 Git 客户端每次与服务器交互&#xff0c;都需要输入密码&#xff0c;但是我们可以配置保存密码&#xff0c;只需要输入一次&#xff0c;就不再需要输入密码。 操作说明 在任意文件夹下&#xff0c;空白处&#xff0c;鼠标右键点击 在弹出菜单中按照下图点击 依次点击下…

【数据结构】二叉树基础入门

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

makefile之目标文件生成

目标文件:源码经过编译还没有链接那些中间文件.linux .o文件 gcc $(CFLAGS) -c xxx.c -o xx.o include Makefile.config SRC : $(wildcard *.c wildcard ./audio_module/*.c) SRC_OBJ $(patsubst %.c,%.o,$(SRC))all:$(SRC_OBJ) $(info contents $(SRC))$(info objfiles $(SR…

获取板块分类并展示

板块分类也会变动&#xff0c;偶尔看下&#xff0c;利于总体分析大盘 https:dapanyuntu.com/ 该网站含有板块信息 分析接口 搜素关键字 拷贝curl到curl解析工具&#xff0c;去掉无用的参数&#xff0c;生成requests代码 尝试nginx反代接口 server {listen 443;loca…