DataWhale AI夏令营 Task1
前言
本系列文章将记录参加Datawhale夏令营学习过程中的一些心得和想法,以及自己对赛题的理解。
一、Datawhale AI夏令营及比赛
一、赛题描述
随着城市化步伐的加速迈进,城市治理面临着前所未有的挑战与机遇。城市管理的精细化、智能化已成为全球城市追求卓越的关键路径。然而,机动车违停、非机动车违停、占道经营等城市违规行为如同现代都市肌体上的疮疤,不仅侵蚀着城市的美学与秩序,更对公众福祉构成了潜在威胁。传统的人力巡查与被动响应模式,已然无法匹配当今城市治理的需求。
本赛题最终目标是开发一套智能识别系统,能够自动检测和分类城市管理中的违规行为。该系统应利用先进的图像处理和计算机视觉技术,通过对摄像头捕获的视频进行分析,自动准确识别违规行为,并及时向管理部门发出告警,以实现更高效的城市管理。
二、赛题题目
城市管理违规行为智能识别
三、赛题任务
【初赛】
初赛任务是根据给定的城管视频监控数据集,进行城市违规行为的检测。违规行为主要包括垃圾桶满溢、机动车违停、非机动车违停等。
选手需要能够从视频中分析并标记出违规行为,提供违规行为发生的时间和位置信息。
【初赛审核】
阶段时间:9月13日-9月19日 前24名晋级复赛,如出现违规行为,则顺延晋级,由组委会确认晋级名单。
【复赛】
复赛任务是根据给定的城管视频监控数据集,进行城市违规行为的检测。违规行为主要包括违法经营、垃圾桶满溢、机动车违停、非机动车违停等。
选手需要基于大赛提供的复赛环境,进行复赛模型构建与预测,同时复赛数据集对选手不可见。
【复赛审核】
阶段时间:9月18日-9月30日 前12名晋级决赛,如出现违规行为,则顺延晋级,由组委会确认晋级名单。
【决赛】
具体时间待定,决赛阶段采用线下或者线上答辩的方式(待定),晋级决赛队伍需要提前准备答辩PPT及相关支撑材料,评委将根据选手的初复赛及答辩表现进行综合评分,决定最终排名。
四、数据描述
训练集(有标注)
训练集(无标注)
测试集
【初赛】
初赛提供城管视频监控数据与对应违规行为标注。违规行为包括垃圾桶满溢、机动车违停、非机动车违停等。
视频数据为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]
}
]
违规行为示例如下:
垃圾桶满溢
机动车违停
非机动车违停
【复赛】
复赛提供城管视频监控数据与对应违规行为标注。违规行为包括违法经营、垃圾桶满溢、机动车违停、非机动车违停等。
数据与初赛数据格式相同,新增违法经营类别,行为示例如下:
违法经营
五、评估指标
【初赛】
使用F1score、MOTA指标来评估模型预测结果。
对每个json文件得到两个指标的加权求和,最终得分为所有文件得分取均值。
注1:若真实目标框与预测框IOU大于0.5,则判定目标正确识别。若MOTA指标为负,则该类别精度得分为0。
注2:若该视频中没有某个类别的目标,则此类别计算均值时,忽略该视频。
【复赛】
复赛需同时评估模型的准确度与效率。
模型准确率评估指标与初赛一致,使用F1score、MOTA进行评估。
模型效率使用FPS(每秒钟能够处理的帧数)等进行评估。
六、提交说明
【初赛】
选手需要生成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、在设有禁停标志、标线的路段,人行横道、施工路段,不得停车。
【非机动车违停】
非机动车(如自行车、电动车等)未按照规定停放在指定的非机动车停车泊位或停车线内,而是在非机动车禁停区域或未划定的区域(消防通道、盲道、非机动车停车区线外、机动车停车区等)随意停放。
【垃圾满溢】
生活垃圾收集容器内垃圾超过三分之二以上即为满溢。垃圾桶无法封闭、脏污且周边有纸屑、污渍、塑料、生活垃圾及杂物堆放。
【占道经营】
经营者占用城市道路、桥梁、城市广场等公共场所进行盈利性买卖商品或服务的行为。
二、baseline代码解读
!/opt/miniconda/bin/pip install opencv-python pandas matplotlib ultralytics
import os, sys
import cv2, glob, json
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
第一行代码的作用是使用miniconda环境中的pip工具安装四个Python库:opencv-python、pandas、matplotlib和ultralytics,以供后续的Python项目使用。Ultralytics是用于快速、准确的对象检测、图像分割和分类任务的库,它是基于YOLO(You Only Look Once)算法的。
!:在Jupyter notebook中,这个符号用于指示接下来的行是一个shell命令,而不是Python代码。如果是在常规的终端或命令行界面中,通常不会使用这个符号。
/opt/miniconda/bin/pip:这是pip命令的路径。pip是Python的包管理器,用于安装和管理Python包。这里指定了pip的完整路径,表明使用的是位于/opt/miniconda目录下的miniconda环境中的pip。
数据下载
!apt install zip unzip -y
!apt install unar -y
!wget "https://comp-public-prod.obs.cn-east-3.myhuaweicloud.com/dataset/2024/%E8%AE%AD%E7%BB%83%E9%9B%86%28%E6%9C%89%E6%A0%87%E6%B3%A8%E7%AC%AC%E4%B8%80%E6%89%B9%29.zip?AccessKeyId=583AINLNMLDRFK7CC1YM&Expires=1739168844&Signature=9iONBSJORCS8UNr2m/VZnc7yYno%3D" -O 训练集\(有标注第一批\).zip
!unar -q 训练集\(有标注第一批\).zip
!wget "https://comp-public-prod.obs.cn-east-3.myhuaweicloud.com/dataset/2024/%E6%B5%8B%E8%AF%95%E9%9B%86.zip?AccessKeyId=583AINLNMLDRFK7CC1YM&Expires=1739168909&Signature=CRsB54VqOtrzIdUHC3ay0l2ZGNw%3D" -O 测试集.zip
!unar -q 测试集.zip
-
!apt install zip unzip -y:
!:在某些编程环境(如Jupyter notebooks)中,这个符号用于指示接下来的行是一个shell命令。 apt:这是Advanced Package Tool,是Debian和Ubuntu系统中用于处理软件包的工具。 install:这是apt命令的一个子命令,用于安装软件包。 zip 和 unzip:这两个是软件包名称,分别用于压缩和解压缩ZIP文件。 y:这个选项告诉apt在安装过程中自动回答“yes”,即不需要用户交互确认。
-
!wget
!wget:wget命令,用于从网络上下载文件。 URL:指定了要下载的文件的完整路径。 -O:这是输出选项,指定下载的文件应该保存为本地文件训练集(有标注第一批).zip。