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

无人机识别比赛记录与分析

芜湖大赛-算法赛道-基于视觉的反无人机检测与预警(出题方:大连理工大学)

评测标准

针对参赛队伍提交的算法模型,组委会将从准确性、效率、资源消耗等维度进行综合评估,常用量化指标包括:

  1. 检测性能指标

    (1)Precision / Recall(精确率 / 召回率):用于评估误报与漏报情况;

    (2)F1-score:综合考察模型平衡性。

  2. 跟踪与行为识别指标(复赛/决赛)

    (1) MOTA、IDF1:评估多目标跟踪准确性;

    (2) 行为识别准确率 / 预警正确率:评估异常行为识别与预警机制的有效性;

    (3) 预警延迟:衡量系统响应的实时性。

  3. 模型运行效率与复杂度

    (1) 推理速度(FPS):模型在指定设备上的帧处理速度;

    (2) 模型大小(MB):模型存储所需空间;

    (3) 参数量(Params)与FLOPs:衡量计算资源消耗和推理复杂度;

yolov11-n-C3k2-WL

在这里插入图片描述


import sys
import os#sys.path.append('.')  # 将当前目录添加到系统路径
from ultralytics.models.yolo.model import YOLOdef train_yolo12():# 1. 加载模型配置文件(yolo12.yaml)model = YOLO("/mnt/Virgil/YOLO/yolo11-SOD/ultralytics/cfg/models/11/yolo11-C3k2-WT.yaml")  # 从当前目录加载模型结构# model = YOLO("C3k2-fix.yaml", task='detect')  # 从当前目录加载模型结构# 2. 手动加载预训练权重(yolo12n.pt)model.load("yolo11n.pt")  # 确保权重文件在当前目录或指定路径# 3. 配置训练参数results = model.train(# data="ppq_dataset.yaml",  # 数据集配置文件data="/mnt/Virgil/YOLO/drone_dataset/drone_dataset.yaml",  # 数据集配置文件imgsz=640,  # 输入图像尺寸epochs=140,  # 训练轮次batch=32,  # 批次大小(根据GPU内存调整)workers=0,  # 数据加载线程数(设为0避免多线程问题)pretrained=False,  # 已手动加载权重,此处设为Falsedevice='0',  # 指定使用GPU 0(空字符串为自动选择)seed=0,  # 随机种子,确保结果可复现optimizer='SGD',  # 优化器选择amp=False,  # 关闭混合精度训练project='runs/C3k2-WT',  # 训练结果保存项目名resume=False,  # 不恢复训练name='C3k2-WT',  # 训练任务名称
#        warmup_epochs=2, # 前2个epoch使用较小学习率预热
#         patience=20 # 早停机制,连续20个epoch无提升则停止)return resultsif __name__ == "__main__":train_yolo12()

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

YOLO(You Only Look Once)是一种目标检测算法,在训练完成后会输出一系列文件,这些文件用于评估模型性能、观察训练过程中的状态等,以下是对图中常见输出文件的解释:

  1. weights 文件夹 通常存放训练好的模型权重文件,可能包含不同训练阶段(比如最后一轮训练得到的权重,以及中间表现最好的权重等 )的.pt文件。在后续使用模型进行推理、预测目标时,就会加载这个文件夹中的权重文件。

  2. args.yaml 记录了训练时使用的所有参数配置,包括数据集路径、模型架构、训练轮数(epochs)、批量大小(batch size)、学习率、数据增强方式等。它有助于复现训练过程,或者在后续分析时了解训练的具体设置。

  3. 混淆矩阵相关文件 - confusion_matrix.pngconfusion_matrix_n... :混淆矩阵是评估分类和目标检测模型性能的重要工具。它展示了模型预测结果与真实标签之间的关系,每一行代表真实类别,每一列代表预测类别。通过混淆矩阵,可以直观地看出模型在不同类别上的分类准确性,以及错分类的情况。 在这里插入图片描述

  4. 性能曲线相关文件

    • F1_curve.png:F1值是精确率(Precision)和召回率(Recall)的调和平均值,F1曲线展示了在不同阈值下模型的F1值变化情况,帮助找到最佳的预测阈值。
    • P_curve.png:精确率曲线,显示了模型预测为正类的样本中,真正正类的比例随某个条件(如置信度阈值)变化的情况。
    • PR_curve.png:精确率 - 召回率曲线,以召回率为横轴,精确率为纵轴,直观展示模型在不同召回率水平下的精确率表现,用于评估模型的性能优劣。
    • R_curve.png:召回率曲线,反映了模型能够正确检测出的正样本占所有正样本的比例随某个条件变化的趋势。 在这里插入图片描述
  5. 标签相关文件

    • labels_correlogram.jpg:可能展示了标签之间的相关性,帮助了解数据集中不同目标类别之间的出现关系,比如某些类别是否经常同时出现等。
    • labels.jpg:可能是数据集中标签分布的可视化文件,比如不同类别目标在数据集中出现的数量统计图表,有助于判断数据集是否存在类别不均衡问题。 在这里插入图片描述
  6. results.csvresults.png

    • results.csv:以表格形式记录了训练过程中的各种指标数据,比如每个训练轮次(epoch)的损失值(包括目标检测损失、分类损失等)、验证集上的精确率、召回率、F1值等,方便进行详细的数据对比和分析。
    • results.png:通常是对results.csv中数据的可视化,以折线图等形式展示训练和验证过程中关键指标的变化趋势,便于直观地观察模型的训练效果和是否出现过拟合等情况。在这里插入图片描述
  7. 训练和验证批次相关图片文件

    • train_batch*.jpg:展示了训练过程中部分批次(batch)的图像及其对应的真实标签,通过这些图片可以观察模型在训练时输入数据的样子,以及标注情况是否正确。 在这里插入图片描述
    • val_batch*_labels.jpgval_batch*_pred.jpg:分别展示了验证集上部分批次图像的真实标签和模型预测结果。对比这两种图片,可以直观地评估模型的预测效果,比如查看模型是否正确检测出目标、定位是否准确等。在这里插入图片描述

yolov11-n-C3k2-DBB

训练集用了大概1万7千张

在这里插入图片描述

def train_yolo12():# 1. 加载模型配置文件(yolo12.yaml)model = YOLO("/mnt/Virgil/YOLO/yolo11-SOD/ultralytics/cfg/models/11/yolo11-C3k2-DBB.yaml")  # 从当前目录加载模型结构# 2. 手动加载预训练权重(yolo12n.pt)model.load("yolo11l.pt")  # 确保权重文件在当前目录或指定路径# 3. 配置训练参数results = model.train(data="/mnt/Virgil/YOLO/drone_dataset/drone_dataset.yaml",  # 数据集配置文件imgsz=640,  # 输入图像尺寸epochs=160,  # 训练轮次batch=12,  # 批次大小(根据GPU内存调整)workers=0,  # 数据加载线程数(设为0避免多线程问题)pretrained=False,  # 已手动加载权重,此处设为Falsedevice='0',  # 指定使用GPU 0(空字符串为自动选择)seed=0,  # 随机种子,确保结果可复现optimizer='SGD',  # 优化器选择amp=False,  # 关闭混合精度训练project='runs/C3k2-DBB',  # 训练结果保存项目名resume=False,  # 不恢复训练name='C3k2-DBB',  # 训练任务名称
#        warmup_epochs=2, # 前2个epoch使用较小学习率预热patience=20 # 早停机制,连续20个epoch无提升则停止)return results

在这里插入图片描述
在testA2000张跑的结果提交得到的分数

在这里插入图片描述
可视化了一下结果,发现非常准,我看都很准但置信度分数score都是0.7左右。
尝试把csv文件中的score列全部调整为1,看看线上测评分数有没有上升。但反而更低了。
在这里插入图片描述
不信邪,把昨天提交的0.8多分数的DBB_result.csv文件重新提交一份,看看分数更低。奇怪了
在这里插入图片描述
这么小的目标都能检测出来,但分数还这么低,why?
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

yolov11-l

同样的数据集训练,但是由于将模型scale从n换成了l,参数量变大很多,之前的配置显存不够用了,就改变了一些超参数。

def train_yolo12():# 1. 加载模型配置文件(yolo12.yaml)model = YOLO("/mnt/Virgil/YOLO/yolo11-SOD/ultralytics/cfg/models/11/yolo11l.yaml")  # 从当前目录加载模型结构# 2. 手动加载预训练权重(yolo12n.pt)model.load("yolo11l.pt")  # 确保权重文件在当前目录或指定路径# 3. 配置训练参数results = model.train(data="/mnt/Virgil/YOLO/drone_dataset/drone_dataset.yaml",  # 数据集配置文件
#        imgsz=1280,  # 输入图像尺寸imgsz=640,  # 输入图像尺寸epochs=300,  # 训练轮次batch=0.8,  # 批次大小(根据GPU内存调整)workers=0,  # 数据加载线程数(设为0避免多线程问题)pretrained=False,  # 已手动加载权重,此处设为Falsedevice='0',  # 指定使用GPU 0(空字符串为自动选择)seed=0,  # 随机种子,确保结果可复现optimizer='SGD',  # 优化器选择amp=True,  # 混合精度训练project='runs/yolo11l_drone',  # 训练结果保存项目名resume=False,  # 不恢复训练name='yolo11l_drone',  # 训练任务名称warmup_epochs=2, # 前2个epoch使用较小学习率预热patience=15, # 早停机制,连续epoch无提升则停止# 数据增强augment=True,  # 启用默认增强组合mosaic=1.0,    # 马赛克增强强度(0-1)mixup=0.2,     # 混合增强概率)return results

在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/272311.html

相关文章:

  • Java---IDEA
  • 【论文阅读】Decoupled Knowledge Distillation
  • 【大模型推理论文阅读】 Thinking Tokens are Information Peaks in LLM Reasoning
  • iOS 抓包详细教程:从零搭建、操作到实战调试的全流程指南
  • 图像亮度调整的简单实现
  • Flutter多线程机制深度解析
  • 【Docker基础】Docker容器与网络关联命令使用指南:深入理解容器网络连接
  • 力扣61.旋转链表
  • Windows下VScode配置FFmpeg开发环境保姆级教程
  • 面试150 LRU缓存
  • LeetCode - 1668. 最大重复子字符串
  • 原创:多面体编译,polybench-c-4.2批量测试脚本
  • php中array($this, ‘loadClass‘)表示啥意思?
  • 阿里云-跨账号同步OSS Bucket
  • 【Note】Linux Kernel 之 内核架构、源码文件、API/ABI 、FHS
  • Linux 内核日志中常见错误
  • idea安装maven 拉取依赖失败的解决办法
  • 网络基本概念
  • Ubuntu22.0.4安装PaddleNLP
  • Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin
  • Redis BigKey 深度解析:从原理到实战解决方案
  • arm架构,arm内核,处理器之间的关系
  • 【部分省份已考真题】备战2025全国青少年信息素养大赛-算法创意实践挑战赛c++省赛/复赛真题——被污染的药剂
  • 如何发现Redis中的bigkey?
  • Django中序列化与反序列化
  • Python(31)PyPy生成器优化深度解析:JIT加速下的Python性能革命
  • 查看已安装 Django REST Framework (DRF) 版本
  • 【提高篇-基础知识与编程环境:1、Linux系统终端中常用的文件与目录操作命令】
  • 力扣-54.螺旋矩阵
  • QT - 串口QserialPort应用