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

文章目录

  • 平台
    • 参赛平台
    • 云平台
  • 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.rhkb.cn/news/411627.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 0 到 1 的Prompt 教程,来自Claude 官方,不会写 prompt的看这个足够

Claude 的强大&#xff0c;最近得到了很多网友的验证&#xff0c;甚至效果上面大有超越 GPT的许多声音。 所以从优秀的 Claude 中学习&#xff0c;将会是一个很好的起点。 这里&#xff0c;Claude 的开发者们提供了一个相当详细的 Prompt Engineering 教程。 这个教程能够全面…

若依后端 MyBatis改为MyBatis-Plus

引用 1.引入MyBatis-Plus依赖 在总目录的pom.xml&#xff0c;导入依赖 <mybatis-plus.version>3.4.3</mybatis-plus.version> <!-- mybatis-plus 增强CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>…

计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

项目:基于TCP的文件传输系统

项目介绍: 模拟FTP原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0c;…

代码随想录Day 23|回溯Part02,39.组合总和、40.组合总和Ⅱ、131.分割回文串

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 第七章 回溯算法part03一、题目题目一&#xff1a; 39. 组合总和解题思路&#xff1a;回溯三部曲剪枝优化小结&#xff1a; 题目二&#xff1a;40.组合总和Ⅱ解题思路&#xff1a;回溯三部曲 题目…

【项目源码】终于有人将打字游戏和编程英语结合起来啦!编程初学者的福音

Hello&#xff01;各位彦祖&#xff0c;亦菲们&#xff01;又是美好的一天&#xff01;今天给大家分享一个Java项目源码&#xff1a;Java打字游戏项目源码&#xff01; 看到这里&#xff0c;你可能会说&#xff01; 一个破打字游戏有什么可神气的&#xff01;&#xff01;&…

Leetcode面试经典150题-28.找出字符串第一个匹配项的下标

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 用KMP解这个题简直就像大炮打蚂蚁&#xff0c;但是没办法&#xff0c;现在都是这么卷 package dataStructure.bigFactory;public class _28Strstr {public static int strStr(String s1, String s…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…

android13固定app方向 强制app方向

总纲 android13 rom 开发总纲说明 1.前言 经常遇到客户有固定或者设置应用方向,不让他们改成其他方向的需求。今天我们就来处理这种问题。 2.问题分析 在 Android 10 之前,显示旋转的处理逻辑分散在多个类和模块中,Android 10 统一了这些逻辑,集中在 DisplayRotation.ja…

MATLAB 沿任意方向分层点云(82)

MATLAB 沿任意方向分层点云(82) 一、算法介绍二、算法实现1.代码2.效果更多内容参考: MATLAB点云处理学习 一、算法介绍 沿着某个方向,将点云分割为多层,每层点云使用不同颜色进行可视化显示,具体代码和不同方向的分层效果如下: 二、算法实现 1.代码 % Load point c…

【文档合集】软件类常用文档整理大全,软件工程,软件项目管理,技术标书方案,模

目的&#xff1a;规范系统开发流程&#xff0c;提高系统开发效率。 立项申请需求分析方案设计方案评审开发调整测试阶段系统培训试运行测试验收投入使用 所有文档过去进主页获取。 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&#xff1a;工作…

【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch12 随机森林(Random Forest)

系列文章目录 监督学习&#xff1a;参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归&#xff08;SAheart.csv&#xff09; 【学习笔记】 陈强-机器学习-Python-…

(三)、软硬件全开源手表,具有Wi-Fi和蓝牙LE连接,并可连接互联网,超多表盘。(Watchy)

Watchy 是一款具有开源硬件和软件的 E-Ink watch。它采用准系统设计&#xff0c;利用 PCB 作为表身&#xff0c;可以原样佩戴&#xff0c;或进一步定制不同的 3D 打印表壳和表带。这是一款独特的设计&#xff0c;也是一个可穿戴开发平台&#xff0c;让用户可以创造自己的应用。…

【功能自动化】使用HTMLTestRunner生成测试报告

配置环境&#xff1a; 1.部署webtours网站 2.user.txt 3.HTMLTestRunner.py """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke it…

【论文阅读|cryoET】本周粗读汇总

论文1&#xff1a;CryoDRGN-ET&#xff1a;深度重建生成网络以可视化细胞内动态生物分子 Abstract 虽然冷冻电子断层扫描可以以分子分辨率揭示结构&#xff0c;但图像处理算法仍然是解决原位生物分子结构异质性的瓶颈。本文介绍CryoDRGN-ET用于cryoET断层图的异质重建。CryoD…

Figma 替代品 Penpot 安装和使用教程

在设计领域&#xff0c;Figma 无疑是一个巨人。它彻底改变了设计流程&#xff0c;将协作带到了一个全新的高度。然而&#xff0c;随着 Adobe 收购 Figma 的消息传出&#xff0c;许多设计师和开发者开始担心&#xff1a;Figma 未来会如何演变&#xff1f;那些好用的特性会不会被…

灵办AI:解锁办公新境界,让工作更智能、更高效!

在这个信息爆炸的时代&#xff0c;我们每个人都在寻找能够提升效率、简化工作流程的工具。如果您正在寻找一个能够全方位提升工作效率的AI助手&#xff0c;那么灵办AI绝对值得您的关注。 为什么选择灵办AI&#xff1f; 在众多AI工具中&#xff0c;灵办AI凭借其卓越的性能和独…

简单的C程序基础知识

C程序大致分为3种基本结构&#xff1a; 顺序结构、分支结构、循环结构 由这3种结构可以组成各式各样的复杂程序。 01--C语句 C语句分为以下几类&#xff1a; ①表达式语句 ②函数调用语句 ③控制语句 ④复合语句 ⑤空语句 1.表达式语句&#xff1a; 由表达式分号组成 表…

ArgoWorkflow教程(三)---使用 Artifacts 实现步骤间文件共享

上一篇我们分析了 Workflow、WorkflowTemplate、template 之间的关系。本篇主要分析如何在 argo-workflow 中使用 S3 存储 artifact 实现步骤之间的文件共享。 本文主要解决两个问题&#xff1a; 1&#xff09;artifact-repository 如何配置2&#xff09;Workflow 中如何使用 …