YOLOv8目标检测模型——遥感小目标检测经验分享
小目标检测——YOLOV8
一、引言
- 背景介绍
(1)目标检测的重要性
目标检测在许多领域都具有极其重要的作用。在自动驾驶中,目标检测能够识别道路上的障碍物和行人,确保行车安全。在视频监控中,目标检测能够实时发现异常情况,提高安全防范能力。在工业自动化中,目标检测能够准确识别物料和产品,提高生产效率。在医疗影像中,目标检测能够辅助医生诊断疾病,提高诊断准确率。在各个领域都发挥着不可或缺的作用。
(2)深度学习在目标检测领域的应用
深度学习在目标检测领域应用广泛,通过训练深度神经网络识别图像中的目标并定位其位置。卷积神经网络(CNN)是目标检测的基础,通过滑动窗口和候选区域等方法提取特征,结合分类器和回归器实现目标检测和定位。
(3)YOLOv8模型介绍
Yolov8是一种目标检测算法,它通过独特的双路径预测和紧密的连接的卷积网络进行目标检测。该算法采用了轻量级网络结构,同时保持了较高的性能,因此具有高效的特点。此外,Yolov8还采用了级联和金字塔的思想,使算法能够处理不同大小的目标。
在Yolov8中,目标检测任务被分解为两个独立的子任务,即分类和定位。每个子任务都有自己的网络路径,这使得算法能够更好地处理不同大小的目标。在网络结构方面,Yolov8采用了轻量级网络结构,如MobileNetV2等,使得它能够在移动设备上运行得更加流畅。
- 实验目的
(1)探究YOLOv8模型在自定义数据集上的性能
(2)通过模型改进、数据增强和迁移学习提高模型性能
二、实验环境与数据集
- 实验环境配置
(1)硬件配置
Linux
GeForce RTX 2080 Ti
- 软件配置
Pycharm 2018 Community
- 自定义数据集介绍
- 数据集来源
比赛数据集:第五届全国高校计算机能力挑战赛-人工智能
- 数据集规模
决赛数据集:
大小:2.1 GB
类别:2
检测类型:遥感图像 舰船、飞机
- 数据集预处理
对原有标签进行数据集转换。
三、模型改进方法
- BiFNP-p2
(1)简介
BiFPN是一种用于目标检测和语义分割的神经网络架构,旨在改善FPN的性能。 以下是BiFPN的关键特点和工作原理:①双向连接:BiFPN引入了双向连接,允许信息在不同分辨率级别之间双向传播。②自适应特征调整:BiFPN采用自适应的特征调整机制,可以学习权重,以调整不同层级的特征以更好地匹配不同任务的需求。③模块化设计:BiFPN的模块化设计使其易于嵌入到各种深度神经网络架构中。④高效性:BiFPN被设计为高效的模型,适用于嵌入式设备和实际部署。⑤提高性能:BiFPN的引入通常能够显著提高对象检测和分割任务的性能。
(2)改进YOLOv8模型,包括更换BiFPN和融合yolov8-P2小目标检测层,以下是更改后的配置文件
- CA注意力机制
(1)简介
CA(Coordinate Attention)注意力机制用于加强深度学习模型对输入数据的空间结构理解。
CA注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系。具体流程如下:①输入特征②全局平均池化③合并宽高特征④卷积+标准化+激活函数⑤再次分开⑥转置⑦通道调整和Sigmoid - 应用注意力
(2)YOLOv8添加CA注意力机制
CA注意力机制代码包括h_sigmoid、h_swish、CoordAtt等组件,用于处理空间结构信息。
- 在conv.py文件中添加CA注意力机制
- 注册和引用CA注意力机制
- 更改yaml配置文件
- SCConv
- 简介
SCConv(Spatial and Channel Reconstruction Convolution)是一种用于卷积神经网络(CNN)的新型卷积模块,旨在减少特征图中的冗余信息,从而提高模型的效率和性能。它通过空间重建单元(SRU)和通道重建单元(CRU)来抑制空间和通道上的冗余信息,可轻松替代标准卷积层,降低模型参数和计算复杂度,同时保持或提高模型性能。
- YOLOv8 C2f融合SCConv模块
- 加入融合ScConv的C2f模块,在ultralytics包中的nn包的modules中的block.py文件中添加改进模块。
- 注册和引用融合ScConv的C2f模块
- 更改后的配置文件
四、数据增强
- 数据增强方法
- 随机丢弃 (Dropout)
- 锐化 (Sharpen)
- 仿射变换 (Affine)
- 亮度调整 (AddToBrightness)
- 色调调整 (AddToHue)
- 水平翻转 (Fliplr)
- 数据增强效果
通过坐标转换、标签处理和图像增强,有效的扩充了数据集,将原来的1500个图像和标签文件,扩充到了9000个,目的是①增加训练数据数量②提高模型性能③增强模型鲁棒性。
五、迁移学习
- 迁移学习方法
(1)预训练模型与训练模型的构建
- 实现思路
使用yolov8x.yaml的模型配置作为教师模型,学生模型采用yolov8n.yaml
- 预训练模型参数
模型结构:268 layers
参数数量:68125494 parameters
计算性能:257.4 GFLOPs
- 训练模型参数
模型结构:400 layers
参数数量:1336652 parameters
计算性能:13.2 GFLOPs
六、实验结果与分析
- 超参数设置
- Epochs=500
- Device=GPU
- Imgsz=640
- Batch=16
- 实验结果展示
(1)改进前后的模型性能对比
- 原始模型
模型结构:168 layers
参数数量:3006038 parameters
计算性能:8.1 GFLOPs
训练时间:0.209小时
最终模型大小:6.3 MB
- BiFNP-p2
模型结构:215 layers
参数数量:2225880 parameters
计算性能:17.2 GFLOPs
训练时间:0.181小时
最终模型大小:4.9 MB
- CA注意力机制
模型结构:198 layers
参数数量:3017758 parameters
计算性能:8.1 GFLOPs
训练时间:0.118小时
最终模型大小:6.3MB
- SCConv
模型结构:222 layers
参数数量:2813846 parameters
计算性能:7.5 GFLOPs
训练时间:0.144小时
最终模型大小:5.9 MB
在综合模型大小、速度和精度之下,最终了选择BiFNP-p2改进后的网络模型,作为最优的网络模型。
- 数据增强对模型性能的影响——以原始模型为例
数据增强前:
数据增强后:
可以看出使用数据增强技术之后,对模型的性能有了较为明显的提升,mAP50从0.927,提升到了0.938;mAP50-95从0.65提升到了0.669。因此,根据检测类型,选择合适的网络模型配合数据增强技术可以有效的提高模型的性能。
- 迁移学习对模型性能的提升——以原始模型为例
模型结构:168 layers
参数数量:3006038 parameters
计算性能:8.1 GFLOPs
训练时间:0.109小时
最终模型大小:6.3 MB
由此可见,迁移学习也对模型性能有较大的提升。
- 结果分析讨论
在上面进行的改进中,可以看到,不同的检测类别有不同的网络模型,通过找到合适的网络模型可以有效的提升模型在目标检测中的性能;同时,在样本量不足的情况下,数据增强技术也能够有效地提升模型的性能;最后,迁移学习中的预训练模型能够很好地辅助模型进行训练,从能提高模型的性能。
通过结合三种方法,最终能够得到一个性能相对较好的模型。只不过,对于不同的检测类别来说,探索的时间大不相同。在本例的实验中,由于是遥感图像小目标检测,难度相对来说较大,并且有一定的概率问题,所以时间较长(11天),并且还没有达到最好的效果。
当然上面提到的改进方法,只是选取的一部分,在实验中还有很多没有成功的案例(例如ghostNet等等)。如果想要达到最好的效果,应该多花费一些功夫在网络模型的改进上面,能够找到最适合自己的目标检测网络模型。因为目标的种类繁多,所以对于不同的目标肯定有不同的网络模型,所以我认为直接改进网络模型是最有效的办法,能够大大减少工作量。
相关文章:

YOLOv8目标检测模型——遥感小目标检测经验分享
小目标检测——YOLOV8 一、引言 背景介绍 (1)目标检测的重要性 目标检测在许多领域都具有极其重要的作用。在自动驾驶中,目标检测能够识别道路上的障碍物和行人,确保行车安全。在视频监控中,目标检测能够实时发现异…...

构建响应式 Web 应用:Vue.js 基础指南
构建响应式 Web 应用:Vue.js 基础指南 一 . Vue 的介绍1.1 介绍1.2 好处1.3 特点 二 . Vue 的快速入门2.1 案例 1 : 快速搭建 Vue 的运行环境 , 在 div 视图中获取 Vue 中的数据2.2 案例 2 : 点击按钮执行 vue 中的函数输出 vue 中 data 的数据2.3 小结 三 . Vue 常…...

计算机毕业设计选题推荐-在线投票系统-Java/Python项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

【C/C++】程序的构建(编译)过程概述
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:C_小米里的大麦的博客-CSDN博客 🎁代码托管:C: 探索C编程精髓,打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、预处理(Preprocessi…...

ElasticSearch-2-核心语法集群高可用实战-Week2
ES批量操作 1.批量获取文档数据 这里多个文档是指,批量操作多个文档,搜索查询文档将在之后的章节讲解 批量获取文档数据是通过_mget的API来实现的 (1)在URL中不指定index和type 请求方式:GET 请求地址:_mget 功能说明 &#…...

STM的CAN通信学习
显性电平:0 隐性电平:1 一、帧结构 1.帧类型 1)数据帧:发送设备主动发送数据(广播式) 2)请求帧:接收设备主动请求数据(请求式) 2.帧结构 1ÿ…...

【高等数学学习记录】函数
【高等数学&学习记录】函数 从事测绘工作多年,深刻感受到基础知识的重要及自身在这方面的短板。 为此,打算重温测绘工作所需基础知识。练好基本功,为测绘工作赋能。 1 知识点 1.1 函数 设数集 D ⊂ R D\subset R D⊂R,称映射…...

【springboot过ingress后无法获取X-Forwarded-For头信息】
springboot过ingress后无法获取X-Forwarded-For头信息 一、现象结论修改步骤ingressspringboot 排查流程本文参考 一、现象 项目使用spring boot 2.7.18,有个新需求是校验X-Forwarded-For头的所有来源ip合法性,线上环境出现取不到X-Forwarded-For头的问…...

表格标记<table>
一.表格标记、 1table:表格标记 2.caption:表单标题标记 3.tr:表格行标记 4.td:表格中数据单元格标记 5.th:标题单元格 table标记是表格中最外层标记,tr表示表格中的行标记,一对<tr>表示表格中的一行,在<tr>中可…...

Rust练手项目,写个有趣的小工具定时从一言网获取一段有趣的话并推送通知
Rust练手项目,写个有趣的小工具 代码 继续练习Rust, 写个小工具定时从一言网获取一段有趣的话并提示,如下 练习以下Rust点 并发编程 Mutex, Arc指针使用HTTP请求Windows Gui 代码 Cargo.toml [package] name "funny_word" edition "20…...

【隐私计算】Paillier半同态加密算法
一、何为同态加密(HE)? HE是一种特殊的加密方法,它允许直接对加密数据执行计算,如加法和乘法,而计算过程不会泄露原文的任何信息。计算的结果仍然是加密的,拥有密钥的用户对处理过的密文数据进…...
判断数字的奇偶[中秋快乐~]
题目描述 给定一个整数 n,编写程序判断数字 n 是奇数还是偶数,是奇数则输出 “odd”,偶数则输出 “even”。 输入格式 一行,一个整数 n。 输出格式 一行,如果 n 是奇数则输出 “odd”; 如果 nn 是偶数则输出 “even”。 样例…...
文件操作及重定向详解
1、linux下一切皆文件: 在linux中,一切皆文件是一个重要的概念,用于描述linux操作系统中所有资源和设备都以文件的形式进行访问和处理。 这个概念可以理解为,无论是硬盘上的文件、网卡、设备、进程等,都被抽象为文件的形式存在。在linux系统中,通…...

鸿蒙next json解析 ArkUI 带你玩转 arkts json解析
前言导读 相信很多同学再开发过程中都会遇到json解析的处理,不管是跟服务端交互 或者是读取本地的json 都会遇到json解析 那么正好今天有空正好讲一下鸿蒙next里面的json解析 JSON解析与生成 本模块提供了将JSON文本转换为JSON对应对象或值,以及将对象…...
东土科技加码芯片业务投资,携手神经元共建新型工业生态
为抢抓国产化芯片发展的重大机遇,东土科技决定进一步加大对神经元信息技术(成都)有限公司的投资。这一战略布局有利于东土科技鸿道Intewell工业操作系统与神经元公司芯片的深度协同,推动实现“信息技术、网络技术、控制技术、数字…...

指纹与指甲检测系统源码分享
指纹与指甲检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…...

C++3D迷宫
目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好,我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(char strmaze[5][5][5]) {cout << "-----" << endl;int i 0;int ia 0…...

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例
在数字化时代,地理信息系统(GIS)技术正以其独特的空间分析和可视化能力,为游戏产业带来革命性的变革。《黑神话:悟空》作为中国首款3A级别的动作角色扮演游戏,不仅在游戏设计和技术上取得了突破,…...

【计网】从零开始使用TCP进行socket编程 --- 客户端与服务端的通信实现
阵雨后放晴的天空中, 出现的彩虹很快便会消失。 而人心中的彩虹却永不会消失。 --- 太宰治 《斜阳》--- 从零开始使用TCP进行socket编程 1 TCP与UDP2 TCP服务器类2.1 TCP基础知识2.2 整体框架设计2.3 初始化接口2.4 循环接收接口与服务接口 3 服务端与客户端测试…...
Imagen:重塑图像生成领域的革命性突破
目录 引言 一、Imagen模型的技术原理 1. 模型概述 2. 工作流程 3. 技术创新 二、Imagen模型的应用实例 1. 创意设计 2. 虚拟角色制作 3. 概念可视化 三、Imagen模型的优势与挑战 1. 优势 2. 挑战 四、Imagen模型的未来发展方向 1. 图像生成质量的提升 2. 多模态…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...