Datawhale AI 夏令营 第五期 CV方向 Task01:跑通YOLO方案baseline---学习笔记

         这一期的任务01比较简单,花费时间很少,基本一键跑通baseline就行,耗时大概20分钟。

但是由于笔者对YOLO方案的baseline的代码比较好奇,本笔记特意记录下。

1.YOLO是什么意思

        YOLO(You Only Look Once)是一种物体检测模型,它在单次神经网络前向传递过程中,同时预测图像中的物体边界框和对应的类别标签

        主要优势:速度快,能够在实时应用中使用。与传统的物体检测方法相比,YOLO直接将输入图像分割成网格,每个网格负责预测多个边界框及其类别概率分布,从而实现快速检测。

1.1 那么什么是物体检测模型呢?
可以学习这篇文档:

【深度学习笔记(十)】之物体检测(R-CNN,Fast R-CNN, Faster R-CNN)_物体检测 rcnn-CSDN博客

        物体检测模型是一种计算机视觉模型,旨在识别和定位图像或视频中的物体。与图像分类模型不同,物体检测模型不仅要确定图像中有哪些物体(如人、车、动物等),还要绘制出每个物体的边界框,以标明其在图像中的具体位置。

1.2 检测过程是怎么样的呢?        

        检测过程通俗来说就是开发中训练出那些基于什么Yolov8,Yolov10或Fast R-CNN等的目标检测模型,训练之后生成.pt文件,再前端开发出一个检测系统GUI载入这个模型进行比对检测,然后后端应用到交通,医疗,机器人等各个场景。(笔者浅薄概述)

检测过程概述:

  1. 模型选择与训练

    • 在开发过程中,首先选择合适的目标检测模型架构,比如YOLOv8、YOLOv10、Fast R-CNN等。这些模型的选择通常基于应用场景的需求,如实时性要求、精度需求、计算资源限制等。
    • 使用标注好的训练数据集对模型进行训练。训练的结果是生成一个模型文件(通常是.pt文件,表示PyTorch格式的模型权重)。
  2. 模型部署与前端开发

    • 训练好的模型文件可以被部署到一个检测系统中。前端开发者通常会创建一个图形用户界面(GUI),用户可以通过这个界面上传或实时捕获图像/视频。
    • 在GUI中载入之前训练好的模型(.pt文件),模型将处理输入的图像或视频,并返回检测结果,如物体的类别和边界框。
  3. 应用场景的集成

    • 该检测系统可以应用到多个领域,如交通监控中识别车辆和行人,医疗影像中检测病灶,机器人导航中识别障碍物等。
    • 后端通常会进一步处理检测结果,比如将结果存储、生成报警信息、或结合其他系统进行联动操作。

补充说明:

  • 模型优化:在部署前,可能还需要对模型进行优化,比如量化(减少模型的大小和计算量)、加速推理速度等,以适应实际应用中的性能需求。
  • 推理引擎:在实际应用中,尤其是在资源受限的设备上,可能会使用一些推理引擎(如TensorRT)来加速模型的推理过程。
  • 集成与测试:最后,在实际环境中集成并测试系统,确保其在预期的场景下能够稳定、准确地工作。

1.3 开发过程中常见的物体检测模型:

各种模型各显优势:
        YOLO系列:如YOLOv3、YOLOv4、YOLOv5等,强调速度和精度的平衡。
        Faster R-CNN:一种区域建议网络(RPN)和卷积神经网络(CNN)相结合的模型,通常精度较高,但速度较慢。
        SSD(Single Shot MultiBox Detector):类似于YOLO的快速检测模型,但在一些特定场景下精度更高。
        RetinaNet:引入了焦点损失(Focal Loss),以处理类别不平衡问题,适用于具有大量背景和少数前景物体的场景。

这些模型在不同的应用场景下各有优势,通常根据速度、精度、计算资源等要求选择合适的模型。

1.4 物体检测模型的常见应用包括:

1. 自动驾驶:检测道路上的行人、车辆、交通标志等。
2. 安全监控:识别并跟踪监控视频中的人和物体。
3. 医疗影像分析:定位医学图像中的病灶或异常区域。
4. 机器人导航:帮助机器人识别环境中的障碍物和目标物体。

2.速通baseline流程

Step1:报名赛事!(点击即可跳转)分组

赛事链接:https://www.marsbigdata.com/competition/details?id=3839107548872(报名需填写Datawhale)

概述: 

  1. 登录/注册 赛事平台

  2. 修改昵称并进行实名认证

  3. 报名参赛

  4. 修改队伍名称

 2.1.1 点击链接,登录、注册 赛事平台

2.1.2 修改昵称并进行实名认证

 2.1.3报名参赛

了解渠道记得这里填写:Datawhale/AI 夏令营/夏令营

2.1.4 修改队伍名称

 

Step2:领取厚德云支持的GPU在线算力! (点击即可跳转)

厚德云链接:https://portal.houdeyun.cn/register?from=Datawhale

2.2.1注册厚德云平台

https://portal.houdeyun.cn/register?from=Datawhale厚德云icon-default.png?t=N7T8https://portal.houdeyun.cn/register?from=Datawhale

2.2.2 机器管理界面点击租用4090

租用链接:https://portal.houdeyun.cn/console/apparatus/gpu/generic

厚德云icon-default.png?t=N7T8https://portal.houdeyun.cn/console/apparatus/gpu/generic

这几个4090都行,反正有代金券还有6块钱体验金。

1.点击新建一个机器

 2. 选一个租用4090

 3. 选择右列第二个,image-gpu-pytorch_20240807 镜像,立即下单!

 4.创建中......

 5. 创建成功,一键连接!

 6. 打开机器

 

2.3:Step3---30分钟体验baseline!

1.下载baseline相关文件

复制如下命令,在终端中执行:

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

2.双击一键运行baseline(25分钟左右)

3.运行中:

稍微解读下:

(1)安装依赖,Python库

        这里在安装一些关键的计算机视觉Python库:opencv-python,pandas ,matplotlibultralytics,配置好环境以便为接下来的数据处理任务做准备。这些库是实现物体检测、数据处理和可视化的基础工具。以下是每个库的详细解释及其用途:

1)opencv-python

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库。它提供了数百种图像处理和计算机视觉的算法。安装这个库后,你可以在代码中使用它来执行各种图像和视频处理操作,比如读取和显示图像、检测图像中的边缘、识别形状、追踪物体等。OpenCV广泛应用于自动驾驶、安防监控、医疗影像分析等领域。

2)pandas

Pandas是一个用于数据操作和分析的Python库。它提供了数据结构和操作工具,尤其是适合处理表格数据(例如CSV文件、Excel文件)。在物体检测任务中,Pandas通常用于处理和分析与图像相关的元数据,比如存储检测结果、计算评估指标、可视化数据统计等。

3)matplotlib

Matplotlib是Python中的一个绘图库,用于生成各种静态、动画和交互式的可视化图表。你可以用它来绘制简单的图形,如折线图、柱状图、散点图等,也可以生成更复杂的图表。在物体检测任务中,Matplotlib可以用于可视化模型的检测结果、训练过程中的损失曲线、精度变化等。

4)ultralytics

Ultralytics库包含了YOLO系列模型(例如YOLOv5、YOLOv8等)的实现和工具集。安装这个库后,你可以快速加载和使用预训练的YOLO模型,或者用自己的数据进行微调和训练。Ultralytics还提供了很多实用的工具函数,帮助你在推理、评估、数据增强等方面更方便地进行操作。它是进行YOLO物体检测项目的核心库。

(2)安装解压工具并下载和解压数据集

安装必要的工具、下载数据集以及解压文件,为后续的分析和模型训练做准备。
(3)读取标注数据

读取JSON格式的标注数据并展示,还通过OpenCV库加载视频文件,并使用cv2.VideoCapture类来读取视频帧。这一步是为了配合标注数据,逐帧处理视频,进行物体检测任务。

(4)数据转换并训练模型

【1】数据预处理和转换

        首先加载了视频数据,并将视频的每一帧与对应的标注数据进行匹配。将每一帧保存为图像文件(.jpg格式),同时将对应的标注信息(如物体类别和边界框)保存为.txt文件。这些数据格式转换是为了适应YOLO模型的输入格式,便于进行模型训练。

【2】 YOLOv8模型的训练

        加载YOLOv8的预训练模型(yolov8n.pt)并使用自己的数据集进行训练。这个脚本指定了数据集的路径、训练的epoch数(训练轮数),以及图像的大小和batch_size(每次训练时输入的样本数量),这些都可能会影响模型的精度,不过选用了RTX4090进行训练可以选用稍大的batch_size和输入图像的大小。

        从训练的预览输出中可以看出,模型在训练过程中会逐渐优化,最终得到一个训练好的模型文件(best.pt),里面保存了模型的权重信息。

【3】模型推理

        训练完成后,使用训练好的模型(best.pt)进行推理,就是在测试数据集上运行模型以预测物体的类别和位置。脚本文件通过遍历测试数据集的每一帧,使用模型进行检测,并将检测结果保存为JSON文件。

【4】结果保存和压缩

        最后,运行脚本将所有检测结果保存到一个result目录中,并压缩成ZIP文件。

4.下载结果文件result.zip

右击文件,点击下载

5.关闭云服务器

2.4:Step4---上传提交结果到比赛网站! 

        评分大概需要 2 分钟,评分结束后可以在【结果提交】看到评分结果(预期分数在0.004分左右)  每天可提交3次,如果格式不正确会评分失败,但也会消耗提交次数

 

 

 

 圆满完成!!!

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值