这一期的任务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载入这个模型进行比对检测,然后后端应用到交通,医疗,机器人等各个场景。(笔者浅薄概述)
检测过程概述:
-
模型选择与训练:
- 在开发过程中,首先选择合适的目标检测模型架构,比如YOLOv8、YOLOv10、Fast R-CNN等。这些模型的选择通常基于应用场景的需求,如实时性要求、精度需求、计算资源限制等。
- 使用标注好的训练数据集对模型进行训练。训练的结果是生成一个模型文件(通常是
.pt
文件,表示PyTorch格式的模型权重)。
-
模型部署与前端开发:
- 训练好的模型文件可以被部署到一个检测系统中。前端开发者通常会创建一个图形用户界面(GUI),用户可以通过这个界面上传或实时捕获图像/视频。
- 在GUI中载入之前训练好的模型(
.pt
文件),模型将处理输入的图像或视频,并返回检测结果,如物体的类别和边界框。
-
应用场景的集成:
- 该检测系统可以应用到多个领域,如交通监控中识别车辆和行人,医疗影像中检测病灶,机器人导航中识别障碍物等。
- 后端通常会进一步处理检测结果,比如将结果存储、生成报警信息、或结合其他系统进行联动操作。
补充说明:
- 模型优化:在部署前,可能还需要对模型进行优化,比如量化(减少模型的大小和计算量)、加速推理速度等,以适应实际应用中的性能需求。
- 推理引擎:在实际应用中,尤其是在资源受限的设备上,可能会使用一些推理引擎(如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)
概述:
-
登录/注册 赛事平台
-
修改昵称并进行实名认证
-
报名参赛
-
修改队伍名称
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厚德云https://portal.houdeyun.cn/register?from=Datawhale
2.2.2 机器管理界面点击租用4090
租用链接:https://portal.houdeyun.cn/console/apparatus/gpu/generic
厚德云https://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次,如果格式不正确会评分失败,但也会消耗提交次数
圆满完成!!!