公司网站建设总结,wordpress实现投稿功能,网页设计手机端,搞个网站要多少钱小目标检测——YOLOV8
一、引言
背景介绍
#xff08;1#xff09;目标检测的重要性
目标检测在许多领域都具有极其重要的作用。在自动驾驶中#xff0c;目标检测能够识别道路上的障碍物和行人#xff0c;确保行车安全。在视频监控中#xff0c;目标检测能够实时发现异…小目标检测——YOLOV8
一、引言
背景介绍
1目标检测的重要性
目标检测在许多领域都具有极其重要的作用。在自动驾驶中目标检测能够识别道路上的障碍物和行人确保行车安全。在视频监控中目标检测能够实时发现异常情况提高安全防范能力。在工业自动化中目标检测能够准确识别物料和产品提高生产效率。在医疗影像中目标检测能够辅助医生诊断疾病提高诊断准确率。在各个领域都发挥着不可或缺的作用。
2深度学习在目标检测领域的应用
深度学习在目标检测领域应用广泛通过训练深度神经网络识别图像中的目标并定位其位置。卷积神经网络CNN是目标检测的基础通过滑动窗口和候选区域等方法提取特征结合分类器和回归器实现目标检测和定位。
3YOLOv8模型介绍
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简介
CACoordinate Attention注意力机制用于加强深度学习模型对输入数据的空间结构理解。
CA注意力机制的核心思想是引入坐标信息以便模型可以更好地理解不同位置之间的关系。具体流程如下①输入特征②全局平均池化③合并宽高特征④卷积标准化激活函数⑤再次分开⑥转置⑦通道调整和Sigmoid - 应用注意力
2YOLOv8添加CA注意力机制
CA注意力机制代码包括h_sigmoid、h_swish、CoordAtt等组件用于处理空间结构信息。
在conv.py文件中添加CA注意力机制 注册和引用CA注意力机制更改yaml配置文件 SCConv
简介
SCConvSpatial 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
六、实验结果与分析 超参数设置
Epochs500DeviceGPUImgsz640Batch16
实验结果展示
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.938mAP50-95从0.65提升到了0.669。因此根据检测类型选择合适的网络模型配合数据增强技术可以有效的提高模型的性能。
迁移学习对模型性能的提升——以原始模型为例
模型结构168 layers
参数数量3006038 parameters
计算性能8.1 GFLOPs
训练时间0.109小时
最终模型大小6.3 MB 由此可见迁移学习也对模型性能有较大的提升。
结果分析讨论
在上面进行的改进中可以看到不同的检测类别有不同的网络模型通过找到合适的网络模型可以有效的提升模型在目标检测中的性能同时在样本量不足的情况下数据增强技术也能够有效地提升模型的性能最后迁移学习中的预训练模型能够很好地辅助模型进行训练从能提高模型的性能。
通过结合三种方法最终能够得到一个性能相对较好的模型。只不过对于不同的检测类别来说探索的时间大不相同。在本例的实验中由于是遥感图像小目标检测难度相对来说较大并且有一定的概率问题所以时间较长11天并且还没有达到最好的效果。
当然上面提到的改进方法只是选取的一部分在实验中还有很多没有成功的案例例如ghostNet等等。如果想要达到最好的效果应该多花费一些功夫在网络模型的改进上面能够找到最适合自己的目标检测网络模型。因为目标的种类繁多所以对于不同的目标肯定有不同的网络模型所以我认为直接改进网络模型是最有效的办法能够大大减少工作量。