从零上手CV竞赛Task2 # Datawhale AI夏令营

news2024/12/23 17:48:25

文章目录

  • 平台
    • 参赛平台
    • 云平台
  • Task 1 从零上手CV竞赛
    • 下载baseline相关文件
    • 一键运行baseline!(大约需要25分钟)
      • 赛题解析
        • 数据集
        • 提交结果
        • 违法标准
        • 注意事项
      • 下载生成的文件
      • 结果如图
      • 最后要记得关机 不然一直消耗算力
  • Task 2 建模方案解读与进阶
    • 物体检测
      • 物体检测的一些关键概念和步骤
      • 物体检测算法
        • One-Stage模型
        • Two-Stage模型
        • 选择One-Stage还是Two-Stage模型?
        • 小结:
      • YOLO
        • YOLO算法的特点
        • YOLO算法的网络结构
        • YOLO 数据集格式
        • YOLO 训练日志
          • 查看训练日志
    • Baseline 进阶思路
      • 增加训练的数据集,可以增加更多的视频到训练集中进行训练。
      • 切换不同的模型预训练权

平台

参赛平台

MARS大数据服务平台
在这里插入图片描述

云平台

厚德云

在这里插入图片描述

Task 1 从零上手CV竞赛

通关 Baseline

下载baseline相关文件

apt install git-lfs
git lfs install
git clone https://www.modelscope.cn/datasets/Datawhale/AI_Camp5_baseline_CV.git

下载ing

在这里插入图片描述

一键运行baseline!(大约需要25分钟)

一键运行
在这里插入图片描述

在这里插入图片描述

趁着训练的时间了解一下赛题

赛题解析

【初赛】

初赛提供城管视频监控数据与对应违规行为标注。违规行为包括垃圾桶满溢、机动车违停、非机动车违停等。

数据集

视频数据为mp4格式,标注文件为json格式,每个视频对应一个json文件。
json文件的内容是每帧检测到的违规行为,包括以下字段:

frame_id:违规行为出现的帧编号
event_id:违规行为ID
category:违规行为类别
bbox:检测到的违规行为矩形框的坐标,[xmin,ymin,xmax,ymax]形式

标注示例如下:

[
    {
      "frame_id": 20,
      "event_id": 1,
      "category": "机动车违停",
      "bbox": [200, 300, 280, 400]
    },
    {
      "frame_id": 20,
      "event_id": 2,
      "category": "机动车违停",
      "bbox": [600, 500, 720, 560]
    },
    {
      "frame_id": 30,
      "event_id": 3,
      "category": "垃圾桶满溢",
      "bbox": [400, 500, 600, 660]
    }
  ]

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

提交结果

选手需要生成result文件夹,文件夹中包含每个视频对应的json结果文件,文件名与视频名对应。选手需要将文件夹打包成result.zip进行上传。
json文件中包含了检测到的违规行为列表,若未检测到违规行为,则列表为空。

每个违规行为包含的字段如下:
frame_id:违规行为出现的帧编号
event_id:违规行为ID
category:违规行为类别
bbox:检测到的违规行为矩形框的坐标,[xmin,ymin,xmax,ymax]形式 confidence:置信度

提交的json示例如下:

[
    {
      "frame_id": 20,
      "event_id": 1,
      "category": "机动车违停",
      "bbox": [200, 300, 280, 500],
      "confidence": 0.85
    },
    {
      "frame_id": 20,
      "event_id": 2,
      "category": "垃圾桶满溢",
      "bbox": [600, 500,720, 560],
      "confidence": 0.90
    },
    {
      "frame_id": 30,
      "event_id": 3,
      "category": "垃圾桶满溢",
      "bbox": [400, 500, 500, 560],
      "confidence": 0.78
    }
  ]
违法标准

【机动车违停】

机动车在设有禁止停车标志、标线的路段停车,或在非机动车道、人行横道、施工地段等禁止停车的地方停车。具体包含以下:

1、无论有无禁停标志,机动车道禁止车辆停放;

2、距路口、桥梁50米以内禁止车辆停放;

3、距公交车站、消防栓、消防队、医院30米以内禁止使用上述设施以外的车辆停放;

4、禁止车辆双排停放、靠左侧停放、横向停放、逆向停放;

5、人行道仅允许在已设置的停车泊位内停车,禁止在停车泊位外停车;

6、在设有禁停标志、标线的路段,人行横道、施工路段,不得停车。

【非机动车违停】

非机动车(如自行车、‌电动车等)‌未按照规定停放在指定的非机动车停车泊位或停车线内,‌而是在非机动车禁停区域或未划定的区域(消防通道、盲道、非机动车停车区线外、机动车停车区等)随意停放。

【垃圾满溢】

生活垃圾收集容器内垃圾超过三分之二以上即为满溢。垃圾桶无法封闭、脏污且周边有纸屑、污渍、塑料、生活垃圾及杂物堆放。

【占道经营】

经营者占用城市道路、桥梁、城市广场等公共场所进行盈利性买卖商品或服务的行为。

注:赛题禁止对测试集数据进行人工标注,用于训练或结果提交。初赛审核阶段,会对此类情况严格审核,一经发现,即取消复赛晋级资格。

注意事项
  1. 评审失败也会消耗次数
  2. 每天只有三次机会啊

下载生成的文件

result.zip

在这里插入图片描述

结果如图

在这里插入图片描述

最后要记得关机 不然一直消耗算力

Task 2 建模方案解读与进阶

物体检测

物体检测是计算机视觉领域的一个重要任务,它的目标是在图像或视频帧中识别和定位感兴趣的物体。物体检测算法不仅要识别图像中的对象属于哪个类别,还要确定它们在图像中的具体位置,通常以边界框(bounding box)的形式表示。

总结就是识别物体类别 位置 用边界框框起来

物体检测的一些关键概念和步骤

以下是物体检测的一些关键概念和步骤:

  1. 输入: 物体检测算法的输入通常是一张图像或视频帧
  2. 特征提取: 算法使用深度学习模型(如卷积神经网络CNN)来提取图像的特征。这些特征捕捉了图像中的视觉信息,为后续的物体识别和定位提供基础。
  3. 候选区域生成: 在某些检测算法中,如基于区域的卷积神经网络(R-CNN)及其变体,首先需要生成图像中的候选区域,这些区域可能包含感兴趣的物体
  4. 区域分类和边界框回归: 对于每个候选区域,算法需要判断它是否包含特定类别的物体,并预测物体的边界框。这通常涉及到分类任务和回归任务的结合
  5. 非极大值抑制(NMS): 在检测过程中,可能会产生多个重叠的边界框,用于表示同一物体。NMS是一种常用的技术,用于选择最佳的边界框并去除多余的框
    在这里插入图片描述

基本步骤: 输入 →特征提取 → 候选区域生成 →区域分类和边界框回归→非极大值抑制(NMS)

物体检测算法

物体检测算法主要分为两类:One-Stage(一阶段)和Two-Stage(两阶段)模型。
在这里插入图片描述

One-Stage模型

如YOLO(You Only Look Once)和SSD(Single Shot Detection)

直接在单次网络评估中预测图像中所有物体的类别和位置信息。这种方法的优点是速度快,适合实时应用,但可能在精度上不如Two-Stage模型 。

Two-Stage模型

如Faster R-CNN

首先使用区域提议网络(Region Proposal Network, RPN)生成候选区域,然后对这些区域进行分类和边界框的精细调整。这种方法的优点是精度高,但速度相对较慢

选择One-Stage还是Two-Stage模型?

One-Stage模型通常在单个卷积网络中同时预测类别和位置,而Two-Stage模型则将检测任务分解为两个阶段:区域提议和候选区域的分类与定位。

One-Stage模型因为省略了区域提议步骤,所以能够实现更快的检测速度,但这可能会以牺牲一些精度为代价。
Two-Stage模型通过两步过程提高了检测的准确性,但同时也增加了计算的复杂性和时间消耗

小结:

如果对速度有较高要求,如视频流处理或实时监控,One-Stage模型可能更合适。
如果对精度有更高要求,如在需要高精度识别的科研或专业领域,Two-Stage模型可能更加适用 。

YOLO

YOLO 是 You Only Live Once 的缩写,意思是人生只有一次,用来表达珍惜生命、大胆尝试的态度。[doge]
YOLO,全称为"You Only Look Once",是一种流行的实时目标检测算法,由Joseph Redmon等人于2015年首次提出。

YOLO的核心思想是将目标检测任务视为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率的映射。这种设计使得YOLO能够以非常快的速度进行目标检测,同时保持较高的精度,特别适合需要实时处理的应用场景

YOLO算法的特点
  1. 显著特点是在单个网络评估中同时预测多个边界框和类别概率,而不是像传统的滑动窗口方法那样多次评估。
  2. YOLO用一个卷积神经网络(CNN)来提取图像特征,然后使用这些特征来预测边界框和类别概率
YOLO算法的网络结构

YOLO的网络结构通常包括多个卷积层和池化层
YOLO 为每个边界框预测一个置信度,这个置信度反映了边界框包含目标的概率以及预测的类别

置信度的计算公式是:Pr(Object) * IOU(pred, truth)
其中Pr(Object)表示格子中存在目标的概率,IOU(pred, truth)表示预测框和真实框的交并比。

YOLO 数据集格式

YOLO算法的标注格式主要使用.txt文件来存储图像中物体的标注信息。每个图像都有一个对应的.txt文件,文件中的每行表示一个物体的标注,包括物体的类别索引和边界框(bounding box)的坐标。

YOLO数据集格式是一种常用的目标检测数据集格式。它包含了每个图像中的目标的位置和类别信息。每个图像的标注信息存储在一个文本文件中,文件的每一行对应一个目标的标注。

信息格式
类别索引整数索引,表示每个物体的类别。索引对应于预先定义的类别列表。
边界框坐标边界框由中心点坐标(x_center, y_center)和宽度width、高度height组成。这些值通常是归一化到图像宽度和高度的比例值,范围在0到1之间。
坐标格式边界框坐标通常按照 [class_index x_center y_center width height] 的格式记录
其中class_index是类别索引,x_center和y_center是边界框中心点的x和y坐标,width和height是边界框的宽度和高度

每行格式如下:

<class_id> <x> <y> <width> <height>
其中:

- `class_id`是目标的类别标签,用数字表示。
- `(x, y)`是目标框的中心坐标。
- `width`和`height`是目标框的宽度和高度。

示例:

0 0.35 0.49 0.15 0.30
1 0.75 0.60 0.20 0.40

表示两个目标:
第一个目标的类别标签是0,中心坐标是(0.35, 0.49),宽度为0.15,高度为0.30。
第二个目标的类别标签是1,中心坐标是(0.75, 0.60),宽度为0.20,高度为0.40。

需要注意的是,坐标和尺寸是相对于图像宽度和高度的比例,取值范围通常在0到1之间。
在这里插入图片描述
在YOLO的训练过程中,这样的配置文件允许用户轻松地指定数据集的位置和类别信息,从而无需硬编码在训练脚本中。

参数描述
path指定数据集的根目录路径,即所有数据子文件夹的上级目录。这里的路径是相对于当前配置文件的路径或者相对于执行训练脚本的工作目录。
train定义训练集图像的相对路径。在训练模型时,程序会在指定的路径下查找图像文件。
val定义验证集图像的相对路径。验证集用于在训练过程中评估模型性能,避免过拟合。
nc表示类别的数量,这里设置为2,意味着数据集中有两类物体需要被识别。
names是一个列表,包含了每个类别的名称。这里有两个类别,名称分别是"0"和"1"。这些名称在训练和测试过程中用于引用特定的类别。
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../dataset/  # dataset root dir
train: images/train/  # train images (relative to 'path') 128 images
val: images/val/  # train images (relative to 'path') 128 images

# Classes
nc: 2  # number of classes
names: ["0", '1']  # class names
YOLO 训练日志

在使用YOLO进行训练时,生成的exp/detect/train类型的文件夹是训练过程中的一个关键组成部分。

文件类型描述
模型权重训练过程中保存的模型权重,可用于后续的测试或继续训练。
日志文件包含训练过程中的所有输出信息,如损失值、精度、速度等。
配置文件训练时使用的配置文件副本,记录了数据路径、类别名、模型架构等设置。
图表和可视化可能生成训练过程中的性能图表,如损失曲线、精度曲线等。
测试结果如果训练过程中包括了测试阶段,可能会保存测试结果,如检测结果的图片或统计数据。

在这里插入图片描述

文件名说明
F1_curve.pngF1分数曲线图
PR_curve.png精确率-召回率曲线图
P_curve.png精确率曲线图
R_curve.png召回率曲线图
results.csv模型训练或测试结果数据的CSV文件
results.png包含训练结果汇总图表或图像
train_batch*.jpg不同训练批次的图像和标注
val_batch0_labels.jpg验证集批次的图像的真实标签可视化
val_batch0_pred.jpg验证集批次的图像的模型预测可视化
weights/保存模型训练过程中的权重文件的目录
查看训练日志

在训练过程中和训练完成后,都可以查看训练日志。
可以优先查看results.png,图像的内容类似如下。
在这里插入图片描述

验证集上的损失 (val/box_loss, val/cls_loss, val/dfl_loss) 和性能指标可以评估模型在未见数据上的泛化能力
在下面的训练日志中,我们发现模型在验证集发生了过拟合。

名称描述
epoch表示模型在整个训练数据集上进行了一次前向和后向传播的完整周期
train/box_loss衡量模型预测的边界框与真实边界框之间差异的损失值
train/cls_loss衡量模型预测的类别与真实类别之间差异的损失值
train/dfl_loss衡量模型对难分类样本的关注程度,减少易分类样本的影响
metrics/precision(B)在训练过程中,预测为正类别中实际为正类别的比例
metrics/recall(B)在训练过程中,所有实际正类别中被模型正确预测为正类别的比例
metrics/mAP50(B)在50%的IoU阈值下计算,衡量模型的整体性能
metrics/mAP50-95(B)在0.5到0.95的IoU阈值范围内计算,提供更全面的模型性能评估
val/box_loss模型在未见过的验证集上的边界框损失,用于监控模型的泛化能力
val/cls_loss模型在验证集上的分类损失,用于监控模型的泛化能力
val/dfl_loss模型在验证集上的难易样本平衡损失

Baseline 进阶思路

如果想要在原有代码上提高模型思路,可以有如下操作:

增加训练的数据集,可以增加更多的视频到训练集中进行训练。

在这里插入图片描述
貌似效果甚微
在这里插入图片描述

切换不同的模型预训练权

!wget http://mirror.coggle.club/yolo/yolov8s-v8.2.0.pt -O yolov8s.pt

在这里插入图片描述

在这里插入图片描述

🤔好像这两个方案分数都没有提升呢

引用:

Datawhale https://linklearner.com/activity/16/16/68

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2083718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光性能 -- OMA(光调制幅度)

基本概念 OMA&#xff08;Optical Modulation Amplitude&#xff09;&#xff1a;光调制幅度&#xff0c;是光信号测试中的一项指标。是指光模块接收到的信号”1”的光功率和信号“0”的光功率的差值。即&#xff1a; Pavg&#xff08;average optical power&#xff09;&#…

WxPython可视化编辑器

作者&#xff1a;陈炳强 WxPython是python的一个用来写桌面程序的模块,目前只写了小部分功能跟组件, 用Python写中文&#xff0c;非常方便&#xff01; 下载地址&#xff1a;https://pan.quark.cn/s/ba19b2472246

LabVIEW如何适应航天系统的要求

随着航天任务的复杂性和精确性要求不断提高&#xff0c;软件系统在其中扮演的角色变得愈发关键。LabVIEW凭借其强大的实时数据处理能力、高可靠性、以及灵活的系统集成和仿真工具&#xff0c;已逐渐成为满足航天系统需求的重要开发平台。通过全面适应航天工程的严格标准&#x…

守护电动“心脏”!仿真APP在汽车电池包随机振动分析中的应用

汽车电动化、智能化、绿色化发展已成为全球各国应对气候变化、实现低碳发展的共同选择。在此背景下&#xff0c;新能源汽车持续高速发展。电池包作为新能源汽车的“心脏”&#xff0c;是其主要动力来源&#xff0c;直接影响车辆的续航里程与行驶安全。电池包结构的安全可靠性对…

Linux——性能调优工具一览

一、CPU 1.调优工具 根据指标找工具 性能指标工具说明 平均负载 uptime、top uptime最简单、top提供了更全的指标 系统整体CPU使用率 vmstat、mpstat、top、sar、/proc/stat top、vmstat、mpstat只可以动态查看&#xff0c;而sar还可以记录历史数据 /proc/stat是其他性…

界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合

Telerik UI for ASP.NET Core是用于跨平台响应式Web和云开发的最完整的UI工具集&#xff0c;拥有超过60个由Kendo UI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格&#xff0c;提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。 本文将介绍界面组件Teler…

【MySQL 11】索引 (带思维导图)

文章目录 &#x1f308; 一、索引介绍⭐ 1. 索引的概念⭐ 2. 索引的分类⭐ 3. 索引的价值 &#x1f308; 二、认识磁盘⭐ 1. MySQL 与存储⭐ 2. 磁盘的物理结构⭐ 3. 磁盘的随机访问与连续访问 &#x1f308; 三、MySQL 与磁盘交互⭐ 1. MySQL 与磁盘交互的基本单位⭐ 2. MySQL…

一文深度了解堆

什么是堆&#xff1f; 堆&#xff08;Heap&#xff09;是一种基于数组的树形数据结构&#xff0c;其中每个节点都有一个值&#xff0c;且每个节点的值都大于等于&#xff08;或小于等于&#xff09;其子节点的值。堆分为大顶堆&#xff08;Max Heap&#xff09;和小顶堆&#…

回答网友一个C#对话框位置的问题

起因 ‭ 2024-08-28 19:40:20 colorDialog 打开出现的 位置控制不了 鸽子 2024-08-28 20:06:06 你是可以控制的 ‭ 0:00:47 试了下没用&#xff0c;可能是系统 问题吧 代码 位置的设置 SetWindowPos(hWnd, IntPtr.Zero, 0, 0, 0, 0, 1); 核心代码 protected override IntPt…

django学习入门系列之第十点《django的模板语法》

文章目录 获取请求与响应request获取请求方式在url中传递值在结构体中传递值返回一个值读取HTML中的内容 重定向&#xff08;跳转网页&#xff09;往期回顾 获取请求与响应 request request是一个对象&#xff0c;封装了用户通过浏览器发送过来的所有数据获取请求方式 获取请…

Ai产品经理的探索:技能、机遇与未来展望

Ai时代的产品经理 随着人工智能&#xff08;AI&#xff09;的飞速发展&#xff0c;AI已经从一个前沿技术概念逐步演变为驱动各行业创新的核心力量。从智能助手到自动驾驶&#xff0c;从个性化推荐系统到图像识别&#xff0c;AI正在以不可思议的速度改变着我们的生活方式和工作…

python解释器[源代码层面]

1 PyDictObject 在c中STL中的map是基于 RB-tree平衡二元树实现&#xff0c;搜索的时间复杂度为O(log2n) Python中PyDictObject是基于散列表(散列函数)实现&#xff0c;搜索时间最优为O(1) 1.1 散列列表 问题&#xff1a;散列冲突&#xff1a;多个元素计算得到相同的哈希值 …

华为IS-IS实验及配置

AR1配置 #进入ISIS进程 isis 1 #配置设备类型为Level-1is-level level-1 #定义区域和System-ID等信息network-entity 49.0001.0010.0000.0001.00 #ISIS邻居命名is-name AR1 #接口配置IP和启用ISIS interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 isis ena…

【C++】C++ STL 探索:String的使用与理解

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶 这篇文章将带大家深入探讨C STL中的string使用与理解。在接下来的几篇文章中&#xff0c;我们将介绍…

WT2605C蓝牙语音芯片:引领糖尿病管理智能化,优化血糖仪音频与蓝牙传输方案

开发背景 全球糖尿病成人患者数量截至2021年约为5.37亿&#xff0c;并预计到2045年将增长至7.83亿。患病率不仅随年龄增长&#xff0c;还展现出明显的地域差异&#xff0c;例如巴基斯坦的患病率最高。此外&#xff0c;老年人群和某些特定地区的居民面临更高的糖尿病风险。 语音…

Leetcode 22. 括号生成 回溯 C++实现

Leetcode 22.括号生成 问题&#xff1a;数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且有效的括号组合。 算法&#xff1a; 创建返回数组 ans &#xff0c;和临时变量 path 。 当左括号数量 open 小于应填括号数 n 时&#…

【Python机器学习】NLP词中的数学——主题建模

目录 齐普夫定律 相关度排序 工具 其他工具 Okapi BM25 在文档向量中&#xff0c;词计数是有用的&#xff0c;但是纯词计数&#xff0c;即使按照文档长度进行归一化处理&#xff0c;也不能告诉我们太多该词在当前文档相对于语料库中其他文档的重要度信息。如果能弄清楚这些…

carla unreal engine源码:如何创建radar可视化探测锥

文章目录 前言一、C实现方法1、DrawDebugCone函数2、carla工程修改3、make launch4、探测锥验证 二、蓝图实现方法1、创建并打开蓝图2、打开蓝图事件图表3、绘制蓝图事件4、编译再运行 前言 1、在自动驾驶仿真调试以及测试过程中&#xff0c;我们经常会用到雷达的探测锥&#…

SkyWalking部署(监控系统)

简介 SkyWalking 是一个开源的应用性能监控 (APM) 和可观测性平台&#xff0c;旨在帮助开发者、运维人员和架构师监控、诊断和优化微服务架构中的应用。SkyWalking 提供了一套完整的工具链&#xff0c;用于收集、分析和可视化应用的性能指标、追踪和日志数据。 SkyWalking 的…

wpf prism 《2》、导航

》》》主程序 using Prism.Commands; using Prism.Mvvm; using Prism.Navigation; using Prism.Navigation.Regions; using System;namespace BlankApp2.ViewModels {public class MainViewModel : BindableBase{private string _title "Prism Application";public…