【深度学习实战】用yolov5测试球员与足球检测

系列文章目录

第一章 深度学习实战之yolov5实现球员与足球检测



前言

目标检测是计算机视觉中常见且不可或缺的任务之一。一般情况下它是以矩形框将图像中感兴趣区域划定出来的任务。根据任务需要可能会有多个类。目前目标检测大多采用深度学习的方法实现。恰逢世界杯决赛,本文以目前最常用的yolov5算法作为测试球员与足球检测的网络模型


一、环境搭建与调试

  • 从github直接拉取最新的yolov5代码,目前最新版为V7.0
git clone https://github.com/ultralytics/yolov5
  • 创建一个新的conda环境,此处我们创建一个python3.8版本名为yolov5的conda环境
conda create -n yolov5 python=3.8
  • 激活conda环境后,进入源码yolov5的目录中,安装相关依赖。
cd yolov5
python -m pip install -r requirements.txt

下图即为包安装过程,因为相同版本的包如果在其他环境中已经安装过,conda可以直接拿来用,不用重复下载。
在这里插入图片描述

  • 运行demo,下载预训练的yolov5s权重
import torch

# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # or yolov5n - yolov5x6, custom

# Images
img = 'https://ultralytics.com/images/zidane.jpg'  # or file, Path, PIL, OpenCV, numpy, list

# Inference
results = model(img)

# Results
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.

上述demo程序,会下载一个yolov5s的预训练权重放置在源码根目录下,并调用hub推理一下齐达内的图片。可能下载会很慢,我是将下面的下载地址直接复制到训练下载的。
在这里插入图片描述
最终会输出检测到两个人和两个领带
在这里插入图片描述

二、检测与输出

yolov5s的预训练权重是使用coco数据集训练的。里面本身就包含人与足球两个类别。这个信息我们可以从data/coco128.yaml中看到。序号0为person类,序号32位sports ball类。于是我们可以直接用预训练权重推理一遍视频看看效果。

  • 指定视频路径与相关参数,运行detect.py文件
python detect.py --source 'argentina-france ITV 1 eng 720p 00_10_23-00_15_30.mp4' --conf-thres 0.5

可以看到在终端下网络对视频进行逐帧推理的过程,最终平均每张图片5.8ms推理,0.8ms进行NMS。
在这里插入图片描述

  • 推理后标注视频默认保存在runs/detect下的exp文件夹中,下面选取几张截图
    可能是置信度设置的比较高为0.5,可以看到人有漏检。足球目标所占像素点太少,在整体过程中都为漏检。
    在这里插入图片描述
    只有极少数几帧能检测到
    在这里插入图片描述
    在镜头拉近,目标变大时,足球像素点占比提升,从小目标变成大目标,检测才稳定。
    在这里插入图片描述
    对人物出现交叠的情况,检测还可以未出现问题。不过远处的人基本置信度都太低,框不出来。
    在这里插入图片描述
    视频转换为gif后的部分效果
    在这里插入图片描述

总结

考虑到要覆盖多尺度的目标检测问题,官方yolov5s的检测结果整体上中规中矩。考虑到测试视频的转播视角大多数目标类均为小目标,如果需要提升小目标的检测效果,还需要重新训练调校anchor,但我们可以利用这个预训练权重对训练数据进行预标注。然后人工手动检查与微调标注框,再训练迭代,以节省时间。

猜你喜欢

转载自blog.csdn.net/PellyKoo/article/details/128372815