当前位置: 首页 > news >正文

基于YOLOv8的无人机高空红外(HIT-UAV)检测算法,新的混合型扩张型残差注意力(HDRAB)助力涨点(二)

 💡💡💡本文内容:针对基于YOLOv8的无人机高空红外(HIT-UAV)检测算法进行性能提升,加入各个创新点做验证性试验。

 💡💡💡一种新的混合型扩张型残差注意力(HDRAB),去除图像采集或传输过程中产生的真实噪声(即空间变异噪声)

1)混合型扩张型残差注意力(HDRAB):mAP从原始的0.773 提升至 0.779

1.无人机高空红外数据集介绍    

无人机高空红外检测数据集大小,训练集2008,验证集287,测试集571张,类别

  0: Person
  1: Car
  2: Bicycle
  3: OtherVehicle
  4: DontCare

细节图如下:

 

1.1 split_train_val.py

# coding:utf-8import os
import random
import argparseparser = argparse.ArgumentParser()
#xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default='Annotations', type=str, help='input xml label path')
#数据集的划分,地址选择自己数据下的ImageSets/Main
parser.add_argument('--txt_path', default='ImageSets/Main', type=str, help='output txt label path')
opt = parser.parse_args()trainval_percent = 0.9
train_percent = 0.8
xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')for i in list_index:name = total_xml[i][:-4] + '\n'if i in trainval:file_trainval.write(name)if i in train:file_train.write(name)else:file_val.write(name)else:file_test.write(name)file_trainval.close()
file_train.close()
file_val.close()
file_test.close()

1.2 voc_label.py生成适合YOLOv8训练的txt

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os
from os import getcwdsets = ['train', 'val', 'test']
classes = ["Person","Car","Bicycle","OtherVehicle","DontCare"]   # 改成自己的类别
abs_path = os.getcwd()
print(abs_path)def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(image_id):in_file = open('Annotations/%s.xml' % (image_id), encoding='UTF-8')out_file = open('labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').text#difficult = obj.find('Difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
for image_set in sets:if not os.path.exists('labels/'):os.makedirs('labels/')image_ids = open('ImageSets/Main/%s.txt' % (image_set)).read().strip().split()list_file = open('%s.txt' % (image_set), 'w')for image_id in image_ids:list_file.write(abs_path + '/images/%s.png\n' % (image_id))convert_annotation(image_id)list_file.close()

2.基于YOLOv8的无人机高空红外识别

2.1 原始结果

原始mAP为0.773

YOLOv8n summary (fused): 168 layers, 3006623 parameters, 0 gradients, 8.1 GFLOPsClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 9/9 [00:07<00:00,  1.13it/s]all        287       2460      0.818      0.707      0.773      0.525Person        287       1168      0.933      0.799      0.908      0.495Car        287        719      0.942      0.945      0.979      0.743Bicycle        287        554      0.911      0.756      0.885      0.513OtherVehicle        287         12      0.865       0.75      0.781      0.722DontCare        287          7      0.439      0.286      0.314      0.152

2.2 一种新颖的双分支残差注意,助力低光照、红外小目标检测

原文链接:YOLOv8独家原创改进:图像去噪 |一种新颖的双分支残差注意,助力低光照、红外小目标检测 | 2024年最新发表(全网独家首发)_yolo双分支网络-CSDN博客

 💡💡💡解决什么问题:许多网络不能很好地去除图像采集或传输过程中产生的真实噪声(即空间变异噪声),这严重阻碍了它们在实际图像去噪任务中的应用。

 💡💡💡创新点:提出了一种新的双分支残差注意网络用于图像去噪,它具有广泛的模型架构和注意引导特征学习的优点。该模型包含两个不同的并行分支,可以捕获互补特征,增强模型的学习能力。我们分别设计了一种新的残差注意力(RAB)和一种新的混合型扩张型残差注意力(HDRAB)

  改进1结构图如下:

mAP有原始的0.773提升至0.779

YOLOv8-HDRAB summary (fused): 248 layers, 10410279 parameters, 0 gradients, 23.2 GFLOPsClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 9/9 [00:09<00:00,  1.02s/it]all        287       2460      0.832      0.754      0.779      0.498Person        287       1168      0.841      0.887      0.904      0.489Car        287        719      0.911      0.962      0.978      0.746Bicycle        287        554        0.8      0.843      0.892       0.52OtherVehicle        287         12      0.869      0.667      0.729      0.611DontCare        287          7      0.738      0.408      0.392      0.125

3.系列篇

1)   魔改SimAM注意力助力涨点

2) 新的混合型扩张型残差注意力(HDRAB)助力涨点

3) 一种基于YOLOv8的高精度无人机高空红外检测算法(原创自研)

关注下方名片点击关注,源码获取途径。   

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 小琳AI课堂:AIGC
  • 香蕉梨:自然的甜蜜宝藏
  • C\C++ Sqlite3使用详解
  • 云计算实训34——docker环境配置、镜像基本操作、容器基本操作、设置远程连接管理
  • wpf DynamicResource的ResourceKey值进行绑定
  • vue2版本空目录下创建新项目的方法2024
  • RocketMQ~刷盘机制、主从复制方式、存储机制
  • Nginx - 反向代理、缓存详解
  • msxml*.dll 错误 ‘80072f7d‘ 安全频道支持出错 解决方案
  • Linux网络配置和系统管理
  • 【发邮件】 在邮件中添加 (mailto:) 链接的返回电子邮件
  • 【Python】机器学习中的 K-均值聚类算法及其优缺点
  • 解决在IIS下typecho访问网址为localhost的问题
  • MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(3)《MySQL系列篇-05》
  • Lua 迭代器
  • CSS盒模型深入
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • gf框架之分页模块(五) - 自定义分页
  • LeetCode18.四数之和 JavaScript
  • LeetCode算法系列_0891_子序列宽度之和
  • MD5加密原理解析及OC版原理实现
  • MySQL-事务管理(基础)
  • rabbitmq延迟消息示例
  • React-redux的原理以及使用
  • Redis的resp协议
  • SpingCloudBus整合RabbitMQ
  • - 概述 - 《设计模式(极简c++版)》
  • 给初学者:JavaScript 中数组操作注意点
  • 让你的分享飞起来——极光推出社会化分享组件
  • 手机端车牌号码键盘的vue组件
  • 首页查询功能的一次实现过程
  • 写代码的正确姿势
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 通过调用文摘列表API获取文摘
  • ​zookeeper集群配置与启动
  • !!java web学习笔记(一到五)
  • ###C语言程序设计-----C语言学习(6)#
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (3)llvm ir转换过程
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (苍穹外卖)day03菜品管理
  • (二)fiber的基本认识
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转载)利用webkit抓取动态网页和链接
  • .NET 中创建支持集合初始化器的类型
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • /3GB和/USERVA开关