本实验基于YOLO模型,希望通过对视频进行分析来自动识别出城市管理中的违规行为,其数据集标注文件为JSON格式,并输出对应指标。
1.跑通baseline
准备工作和环境构建
Datawhale夏令营中提供有详细的文档指导:Datawhale (linklearner.com)
按照文档中的指令可以快速跑通baseline
Step1:下载相关库
为了顺利的使用YOLO模型,需要安装一些必要的python库。在jupyter中执行
!/opt/miniconda/bin/pip install opencv-python pandas matplotlib ultralytics
Step2:导入相关库
后续代码实现需要
import os, sys
import cv2, glob, json
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Step3:读取解压下载训练集视频
!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
等着就行,下完之后文件中会出现相对应的文件夹。
Step4:数据调取和读取
我们需要有代码来读取JSON文件,这些文件中包含我们需要使用的训练集和测试集的数据。
train_anno = json.load(open('训练集(有标注第一批)/标注/45.json', encoding='utf-8'))
train_anno[0], len(train_anno)
pd.read_json('训练集(有标注第一批)/标注/45.json')
video_path = '训练集(有标注第一批)/视频/45.mp4'
cap = cv2.VideoCapture(video_path)
while True:
# 读取下一帧
ret, frame = cap.read()
if not ret:
break
break
frame.shape
int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
-------------------------------
bbox = [746, 494, 988, 786]
pt1 = (bbox[0], bbox[1])
pt2 = (bbox[2], bbox[3])
color = (0, 255, 0)
thickness = 2 # 线条粗细
cv2.rectangle(frame, pt1, pt2, color, thickness)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame)
Step5:数据转换
对数据进行处理和转换之后,才能使用模型对数据做出反应。需要将数据转换成模型能够识别的形式。
Step6:设置模型版本集参数,开始训练
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model.train(data="yolo-dataset/yolo.yaml", epochs=2, imgsz=1080, batch=16)
Step7:结果保存
将结果保存入result文档,并将其压缩成zip.
-------------------------------------------------------------------------------------------------