实践航拍小目标检测,基于轻量级YOLOv8n开发构建无人机航拍场景下的小目标检测识别分析系统

这篇具有很好参考价值的文章主要介绍了实践航拍小目标检测,基于轻量级YOLOv8n开发构建无人机航拍场景下的小目标检测识别分析系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践,感兴趣的话可以自行移步阅读即可:

《deepLabV3Plus实现无人机航拍目标分割识别系统》

《基于目标检测的无人机航拍场景下小目标检测实践》

《助力环保河道水质监测,基于yolov5全系列模型【n/s/m/l/x】开发构建不同参数量级的无人机航拍河道污染漂浮物船只目标检测识别系统,集成GradCAM对模型检测识别能力进行分析》

《基于YOLO开发构建红外场景下无人机航拍车辆实例分割检测识别分析系统》

《基于轻量级YOLO模型开发构建大疆无人机检测系统》

《基于轻量级YOLOv5n/s/m三款模型开发构建基于无人机视角的高空红外目标检测识别分析系统,对比测试分析性能》

《基于目标检测实现遥感场景下的车辆检测计数》

《共建共创共享》

《助力森林火情烟雾检测预警,基于YOLOv5全系列模型[n/s/m/l/x]开发构建无人机航拍场景下的森林火情检测识别系统》

《UAV 无人机检测实践分析》

《助力森林火情预警检测,基于YOLOv7-tiny、YOLOv7和YOLOv7x开发构建无人机航拍场景下的森林火情检测是别预警系统》

 《无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv5开发构建电力设备螺母缺销小目标检测识别系统》

《无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统》

随着科技社会的发展,无人机在越来越多领域中扮演者越来越重要的作用,基于无人机航拍的质检是一个很有潜力的发展方向,一方面代替传统纯人工的方式可以降低人工成本,另一方面可以在危险场合下降低人员受伤的风险,可谓是一举两得。

本文的主要想法是想要基于最新的YOLOv8系列中最为轻量级的n系列的模型来开发构建无人机航拍场景下的小目标检测识别系统,首先看下实例效果:

无人机小目标检测,YOLO,无人机

简单看下实例数据集:

无人机小目标检测,YOLO,无人机

如果对YOLOv8开发构建自己的目标检测项目有疑问的可以看下面的文章,如下所示:

《基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例》

非常详细的开发实践教程。本文这里就不再展开了,因为从YOLOv8开始变成了一个安装包的形式,整体跟v5和v7的使用差异还是比较大的。

非常详细的开发实践教程。本文这里就不再展开了,因为从YOLOv8开始变成了一个安装包的形式,整体跟v5和v7的使用差异还是比较大的。

YOLOv8核心特性和改动如下:
1、提供了一个全新的SOTA模型(state-of-the-art model),包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于YOLACT的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
2、骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是一套参数应用所有模型,大幅提升了模型性能。
3、Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从Anchor-Based 换成了 Anchor-Free
4、Loss 计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss
5、训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度

YOLOv8官方项目地址在这里,如下所示:

无人机小目标检测,YOLO,无人机

无人机小目标检测,YOLO,无人机

目前已经收获超过1.7w的star量了。官方提供的预训练模型如下所示:

Model size
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

另外一套预训练模型权重地址如下:

Model size
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n 640 18.4 142.4 1.21 3.5 10.5
YOLOv8s 640 27.7 183.1 1.40 11.4 29.7
YOLOv8m 640 33.6 408.5 2.26 26.2 80.6
YOLOv8l 640 34.9 596.9 2.43 44.1 167.4
YOLOv8x 640 36.3 860.6 3.56 68.7 260.6

是基于Open Image V7数据集构建的,可以根据自己的需求进行选择使用即可。

YOLOv8的定位不仅仅是目标检测,而是性能强大全面的工具库,故而在任务类型上同时支持:姿态估计、检测、分类、分割、跟踪多种类型,可以根据自己的需要进行选择使用,这里就不再详细展开了。

简单的实例实现如下所示:

from ultralytics import YOLO
 
# yolov8n
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8s
model = YOLO('yolov8s.yaml').load('yolov8s.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8m
model = YOLO('yolov8m.yaml').load('yolov8m.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8l
model = YOLO('yolov8l.yaml').load('yolov8l.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8x
model = YOLO('yolov8x.yaml').load('yolov8x.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)

这里给出yolov8n的模型文件如下:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
 

# Parameters
nc: 10   # number of classes
scales: [0.33, 0.25, 1024] 


# YOLOv8.0n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]]  # 9
 
# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  - [-1, 3, C2f, [512]]  # 12
 
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  - [-1, 3, C2f, [256]]  # 15 (P3/8-small)
 
  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 12], 1, Concat, [1]]  # cat head P4
  - [-1, 3, C2f, [512]]  # 18 (P4/16-medium)
 
  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]]  # cat head P5
  - [-1, 3, C2f, [1024]]  # 21 (P5/32-large)
 
  - [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)

这里因为时间有限,暂时没有能够开发完成五款不同参数量级的模型来进行综合全面的对比分析,后面找时间再进行,这里选择的是YOLOv8下最为轻量级的n系列的模型,等待训练完成后我们来详细看下结果。

【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

无人机小目标检测,YOLO,无人机

【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
绘制召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的召回率和对应的精确率。
将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。

无人机小目标检测,YOLO,无人机

【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。

无人机小目标检测,YOLO,无人机

【PR曲线】
精确率-召回率曲线(Precision-Recall Curve)是一种用于评估二分类模型性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)和召回率(Recall)之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率-召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率-召回率曲线。
根据曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
精确率-召回率曲线提供了更全面的模型性能分析,特别适用于处理不平衡数据集和关注正例预测的场景。曲线下面积(Area Under the Curve, AUC)可以作为评估模型性能的指标,AUC值越高表示模型的性能越好。
通过观察精确率-召回率曲线,我们可以根据需求选择合适的阈值来权衡精确率和召回率之间的平衡点。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。

无人机小目标检测,YOLO,无人机

【训练可视化】

无人机小目标检测,YOLO,无人机

【Batch实例】

无人机小目标检测,YOLO,无人机

无人机小目标检测,YOLO,无人机

【离线推理实例】

无人机小目标检测,YOLO,无人机

感兴趣的话也都可以试试看!

如果自己不具备开发训练的资源条件或者是没有时间自己去训练的话这里我提供出来对应的训练结果可供自行按需索取。

单个模型的训练结果默认YOLOv8n文章来源地址https://www.toymoban.com/news/detail-838428.html

到了这里,关于实践航拍小目标检测,基于轻量级YOLOv8n开发构建无人机航拍场景下的小目标检测识别分析系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Leangoo领歌轻量级协作-OKR目标管理

    ​ 本场景是OKR目标管理模板,用Leangoo管理和跟踪OKR可以提升OKR的透明度和传递的即时性,驱动团队的积极性、促进共享和协作、提升沟通和协作的效率,帮助企业快速落地OKR。 OKR(Objectives and Key Results目标与关键结果)是关于目标管理的一种最佳实践,是企业实践的管理理

    2024年02月02日
    浏览(29)
  • 一种基于YOLO改进的高效且轻量级的表面缺陷检测网络, NEU-DET和GC10-DET涨点明显

    💡💡💡 本文摘要: 一种基于YOLO改进的高效且轻量级的表面缺陷检测, 在NEU-DET和GC10-DET任务中涨点明显 目录 1.轻量且高效的YOLO 1.1 SCRB介绍 1.1.1 ScConv介绍  1.2 GSConvns  1.3 od_mobilenetv2_050 1.4  对应yaml 2.实验结果 3.源码获取 轻量且高效的YOLO网络结构  其实ScConv和Bottleneck的基

    2024年01月19日
    浏览(26)
  • 实践航拍小目标检测,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

    关于无人机相关的场景在我们之前的博文也有一些比较早期的实践,感兴趣的话可以自行移步阅读即可: 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测,基于yolov5全系列模型【n/s/m/l/x】开发构

    2024年03月18日
    浏览(48)
  • 实践航拍小目标检测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

    关于无人机相关的场景在我们之前的博文也有一些比较早期的实践,感兴趣的话可以自行移步阅读即可: 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测,基于yolov5全系列模型【n/s/m/l/x】开发构

    2024年03月21日
    浏览(40)
  • 基于 Linux 的轻量级多线程 HTTP 服务

          使用基本的Linux系统调用来创建一个TCP socket,监听端口8080,并在接受到客户端连接时创建一个新的线程来处理连接。每个连接处理函数都是一个独立的线程,读取客户端请求并发送固定的HTTP响应。      代码: 代码解析: 这段代码实现了一个简单的基于Linux的轻量级

    2024年02月16日
    浏览(35)
  • golang一个轻量级基于内存的kv存储或缓存

    golang一个轻量级基于内存的kv存储或缓存 go-cache是一个轻量级的基于内存的key:value 储存组件,类似于memcached,适用于在单机上运行的应用程序。 它的主要优点是,本质上是一个具有过期时间的线程安全map[string]interface{}。interface的结构决定了它不需要序列化。基于内存的特性

    2024年02月02日
    浏览(44)
  • 在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

    整个文章分为以下几个内容,打 * 的是必须要安装的 latex的下载安装可参考:LaTex(2021)安装教程 VSCode下载:VSCode官网 VSCode的安装非常简单,几乎不需要什么操作 先把中文包下载下来,重启生效 下载 LaTex Workshop 下载完之后,在界面下按下 Ctrl+Shift+P,然后键入“setjson”,点

    2024年02月06日
    浏览(47)
  • YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

    本文给大家带来的改进机制是轻量级的变换器模型: Illumination Adaptive Transformer (IAT) ,用于图像增强和曝光校正。其基本原理是通过 分解图像信号处理器(ISP)管道到局部和全局图像组件 ,从而 恢复在低光或过/欠曝光条件下的正常光照sRGB图像 。具体来说,IAT使用注意力查

    2024年04月26日
    浏览(31)
  • 文字识别(OCR)专题——基于NCNN轻量级PaddleOCRv4模型C++推理

    PaddleOCR 提供了基于深度学习的文本检测、识别和方向检测等功能。其主要推荐的 PP-OCR 算法在国内外的企业开发者中得到广泛应用。在短短的几年时间里,PP-OCR 的累计 Star 数已经超过了32.2k,常常出现在 GitHub Trending 和 Paperswithcode 的日榜和月榜第一位,被认为是当前OCR领域最

    2024年03月11日
    浏览(72)
  • Lucene轻量级搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封装

    1、Lucene 是什么 Lucene 是一个本地全文搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封装 Lucene 适合那种轻量级的全文搜索,我就是服务器资源不够,如果上 ES 的话会很占用服务器资源,所有就选择了 Lucene 搜索引擎 2、倒排索引原理 全文搜索的原理是使用了倒排索引,那么什么是倒

    2024年03月15日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包