Datawhale AI夏令营第五期 CV方向 task01笔记

目录

 Part 01  完成赛事

Part 02 精读代码


 Part 01  完成赛事

将将,他来了他来了,他带着新的赛事走来了。

2024“大运河杯”数据开发应用创新大赛————城市治理
赛事链接MARS大数据服务平台 (marsbigdata.com)
赛事任务

赛题目标

利用图像处理和计算机视觉技术 开发一套智能识别系统,自动检测和分类摄像头捕获的视频中,城市管理中的违规行为

社会价值

通过对摄像头捕获的视频进行分析,自动准确识别违规行为,并及时向管理部门发出告警,以实现更高效的城市管理。

数据集等

赛事资源分析

初赛提供城管视频监控数据与对应违规行为标注。违规行为包括垃圾桶满溢、机动车违停、非机动车违停等。视频数据为mp4格式,标注文件为json格式,每个视频对应一个json文件。

  • frame_id:违规行为出现的帧编号

  • event_id:违规行为ID

  • category:违规行为类别

  • bbox:检测到的违规行为矩形框的坐标,[xmin,ymin,xmax,ymax]形式

评分规则介绍

分数越高越好使用F1score、MOTA指标来评估模型预测结果。

对每个json文件得到两个指标的加权求和,最终得分为所有文件得分取均值。

注1:若真实目标框与预测框IOU大于0.5,则判定目标正确识别。若MOTA指标为负,则该类别精度得分为0。

注2:若该视频中没有某个类别的目标,则此类别计算均值时,忽略该视频。

任务提交格式说明

格式要求

初赛需提交:

初赛任务是根据给定的城管视频监控数据集,进行城市违规行为的检测。违规行为主要包括垃圾桶满溢、机动车违停、非机动车违停等。

选手需要能够从视频中分析并标记出违规行为,提供违规行为发生的时间和位置信息。

初赛需提交:

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

视频数据为mp4格式,标注文件为json格式,每个视频对应一个json文件。

注意事项
  1. 如果评测失败,大概率是提交格式不符合要求,请按照上图规定的格式提交

  2. 每天可提交3次,需注意评测失败也计入次数

  所以接下来面对这个赛事,我们先登陆注册网址,然后报名赛事。

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

  报名好了之后,就接下来便是熟悉的步骤找到免费算力平台编写代码。

  首先第一步注册 厚德云平台(点击跳转注册)  使用手机号注册就行

  注册好了之后 租用4090!(点击跳转机器管理界面)点进去之后点击创建,选择第一行第二个,也就是这个。

选好之后点击租用,按照我下面的配置选择。

    之后点击创建,创建好开启就可以了。

    开启之后,进去选择终端,第一列第三行那个Tem,然后将下面的代码复制进去。

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

  运行好会出现一个文件,也就是第一个文件A开头的,点进去,选择第二个文件也就是task1,点全部运行。

  运行完之后,会出现一个result文件,点击右键选择下载,然后在赛事官网提交这个就可以了。赛事每天有三次机会提交,这个差不多0.004左右吧。

   这就完美完成了。


Part 02 精读代码

    首先我们这个模型使用的是YOLO模型,那么我们来了解一下YOLO。

    YOLO,全称为“You Only Look Once”(你只看一眼),是一种流行的实时目标检测系统,由Joseph Redmon等人在2015年提出。YOLO模型的核心思想是将目标检测任务视为一个单一的回归问题,通过一个卷积神经网络(CNN)直接从图像像素到边界框坐标和类别概率的映射。YOLO模型经过了多次迭代,包括YOLOv2(YOLO9000)、YOLOv3和YOLOv4等版本,每个版本都在性能和速度上有所提升,同时也引入了一些新的技术,如更深的网络结构、更好的锚框机制、多尺度特征融合等。

  YOLO使用的标注格式是每张图像一个文本文件,文件名与图像文件名相对应。文本文件中每一行对应一个边界框,格式为:<class> <x_center> <y_center> <width> <height>

    其中,<class>是类别索引,<x_center><y_center>是边界框中心点相对于图像宽度和高度的比例,<width><height>是边界框的宽度和高度相对于图像宽度和高度的比例。

# 读取训练集视频
for anno_path, video_path in zip(train_annos[:5], train_videos[:5]):
    print(video_path)
    anno_df = pd.read_json(anno_path)
    cap = cv2.VideoCapture(video_path)
    frame_idx = 0 
    # 读取视频所有画面
    while True:
        ret, frame = cap.read()
        if not ret:
            break

        img_height, img_width = frame.shape[:2]
        
        # 将画面写为图
        frame_anno = anno_df[anno_df['frame_id'] == frame_idx]
        cv2.imwrite('./yolo-dataset/train/' + anno_path.split('/')[-1][:-5] + '_' + str(frame_idx) + '.jpg', frame)

        # 如果存在标注
        if len(frame_anno) != 0:
            with open('./yolo-dataset/train/' + anno_path.split('/')[-1][:-5] + '_' + str(frame_idx) + '.txt', 'w') as up:
                for category, bbox in zip(frame_anno['category'].values, frame_anno['bbox'].values):
                    category_idx = category_labels.index(category)
                    
                    # 计算yolo标注格式
                    x_min, y_min, x_max, y_max = bbox
                    x_center = (x_min + x_max) / 2 / img_width
                    y_center = (y_min + y_max) / 2 / img_height
                    width = (x_max - x_min) / img_width
                    height = (y_max - y_min) / img_height

                    if x_center > 1:
                        print(bbox)
                    up.write(f'{category_idx} {x_center} {y_center} {width} {height}\n')
        
        frame_idx += 1

   Ultraalytics 是一个提供多种计算机视觉模型的库,包括 YOLO 系列。这段代码是一个简单的训练启动示例。

from ultralytics import YOLO

# 设置模型版本
model = YOLO("yolov8n.pt") 

# 设定数据集和训练参数
results = model.train(data="yolo-dataset/yolo.yaml", epochs=2, imgsz=1080, batch=16)

想了解更多关于YOLO的可以参看下面两个网址:

  1. YOLO指南:https://docs.ultralytics.com/guides/

  2. https://docs.ultralytics.com/quickstart/   

  3. 附一个好消息嘿嘿嘿我四级过了,我是该考六级的人了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值