【Datawhale AI 夏令营】城市管理违规行为智能识别

一、问题描述

赛题链接

根据给定的城管视频监控数据集,借助计算机视觉和图像处理技术对城市违规行为(包括垃圾桶满溢、机动车违停、非机动车违停等)进行检测和分类,以达到自动识别违规行为的目的。

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

二、数据集

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

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

json文件的内容是每帧检测到的违规行为,包括以下字段:

  • frame_id:违规行为出现的帧编号
  • event_id:违规行为ID
  • category:违规行为类别
  • bbox:检测到的违规行为矩形框的坐标,[xmin,ymin,xmax,ymax]形式

另外关于违法标准:

  • 机动车违停
    机动车在设有禁止停车标志、标线的路段停车,或在非机动车道、人行横道、施工地段等禁止停车的地方停车。具体包含以下:

    1. 无论有无禁停标志,机动车道禁止车辆停放;
    2. 距路口、桥梁50米以内禁止车辆停放;
    3. 距公交车站、消防栓、消防队、医院30米以内禁止使用上述设施以外的车辆停放;
    4. 禁止车辆双排停放、靠左侧停放、横向停放、逆向停放;
    5. 人行道仅允许在已设置的停车泊位内停车,禁止在停车泊位外停车;
    6. 在设有禁停标志、标线的路段,人行横道、施工路段,不得停车。
  • 非机动车违停
    非机动车(如自行车、‌电动车等)‌未按照规定停放在指定的非机动车停车泊位或停车线内,‌而是在非机动车禁停区域或未划定的区域(消防通道、盲道、非机动车停车区线外、机动车停车区等)随意停放。

  • 垃圾满溢
    生活垃圾收集容器内垃圾超过三分之二以上即为满溢。‌垃圾桶无法封闭、脏污且周边有纸屑、污渍、塑料、生活垃圾及杂物堆放。

  • 占道经营
    经营者占用城市道路、桥梁、城市广场等公共场所进行盈利性买卖商品或服务的行为。

三、问题分析

这是一个典型的视频目标检测问题。当前应用在视频目标检测的深度学习模型主要有:

  1. YOLO(You Only Look Once)系列
    YOLO模型系列以其高速和实时检测能力而闻名。尽管最初是为图像目标检测设计的,但最新的YOLOv4和YOLOv5已经能够应用于视频目标检测。它们通过单一网络完成目标检测,不需要区域提议阶段,因此速度极快,非常适合实时应用。

  2. SSD(Single Shot MultiBox Detector)
    SSD模型也是一种单阶段检测器,具有较高的速度和较好的精度。SSD通过在不同尺度上生成锚框,能够检测多种尺寸的目标。改进版本如MobileNet-SSD通过使用轻量级的MobileNet网络作为基础,进一步提高了效率,非常适合在移动设备上进行视频目标检测。

  3. Faster R-CNN
    Faster R-CNN是一种两阶段的目标检测模型,首先生成候选区域,然后再进行目标分类和边界框回归。尽管其速度不如YOLO和SSD,但它在精度上表现优异。对于视频目标检测,Faster R-CNN可以通过结合光流等时序信息进行优化,提高检测效果。

  4. Mask R-CNN
    Mask R-CNN是Faster R-CNN的扩展版,除了检测目标之外,还能进行目标的像素级分割。它对于视频中的复杂场景尤其有效,通过在视频序列中跟踪每个像素的变化,能够实现更精确的目标检测和分割。

  5. DETR(Detection Transformer)
    DETR是一种基于Transformer架构的目标检测模型,它通过将自注意力机制引入目标检测领域,实现了无需锚框的检测过程。DETR在图像目标检测中表现出色,近年来也被应用于视频目标检测任务,通过引入时序信息来处理视频数据。

  6. Siamese Networks
    Siamese网络,尤其是SiamRPN系列,在视频目标检测和跟踪中得到了广泛应用。这种网络通过比较视频帧中目标的特征,能够有效地跟踪目标的位置变化。SiamRPN++ 是当前最先进的版本,它结合了区域建议网络(RPN)和Siamese网络的优势,具备高效的目标跟踪能力。

  7. CenterTrack
    CenterTrack是一种专为视频目标检测和跟踪设计的模型,它在每个视频帧中预测目标的中心点,并使用光流信息进行目标跟踪。CenterTrack实现了高效的多目标检测和跟踪,尤其适合处理快速运动的目标。

  8. MOTR (Multi-Object Tracking with Transformers)
    MOTR结合了Transformer架构和目标检测技术,能够处理视频中的多目标检测和跟踪任务。它通过自注意力机制学习目标间的关联关系,提供了强大的检测和跟踪能力,适用于复杂场景中的多目标处理。

这些模型在视频目标检测中各有优势,具体选择取决于应用场景的需求,如实时性、检测精度、目标类型等。该赛题的应用场景需要实时处理大量视频流,YOLO的单阶段检测架构能够在每帧图像上快速完成目标检测。它跳过了区域建议阶段,直接进行检测,大大提高了推理速度。因此,相较于其他模型,YOLO是此次应用中较优选择模型。

四、模型训练

from ultralytics import YOLO

# 读取训练集视频
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

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

# 设定数据集和训练参数
results = model.train(data="yolo-dataset/yolo.yaml", epochs=2, imgsz=1080, batch=16)
  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elyod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值