Kaggle是一个提供丰富数据资源和竞赛的平台。目前,有一个开放的Kaggle竞赛,旨在通过2021年初的检测美国橄榄球头盔撞击(碰撞)来提升模型性能。希望通过展示如何利用自己的模型和Roboflow,帮助将模型性能提升到新的高度。
测试图像中包含了场上头盔和场边头盔的标注。为了帮助解决这个问题,提供了一些资源。正在阅读的博客文章将介绍如何攻克这个问题的。使用的Google Colab笔记本用于拟合Scaled-YOLOv4模型。(选择这个模型是因为它的速度,但也可以选择任何其他目标检测模型。)Roboflow应用程序可以轻松地预处理和增强图像。
橄榄球头盔旨在保护运动员的头部和颈部,但围绕橄榄球运动员经历创伤性脑损伤(TBI)和/或发展慢性创伤性脑病(CTE)存在很多担忧。CTE是一种可能导致判断、推理、解决问题、冲动控制和攻击性等问题的疾病,根据波士顿大学的说法。NFL球员出现CTE迹象的百分比估计远高于90%,2016年和2017年的三项研究估计分别为95%、97%和99%。
这次Kaggle竞赛的目的是检测场上的头盔以及两个头盔何时接触。通过更好地检测两个头盔何时相撞,可以开始了解哪些因素更可能导致这些碰撞发生,以及是否可以做出改变——例如,对NFL规则——以减少TBI或CTE的发生率。
准备数据时,Kaggle提供了120个视频用于训练。视频只是一系列图片,因此可以将视频剪辑成单独的图片。Kaggle已经为完成了这项工作,因此将直接使用这些图片。(如果遇到有视频但没有提供图片的情况,Roboflow可以将视频转换为图片!)
在许多图像问题中,可能需要对图片进行标注。Kaggle也为完成了这项工作!(Roboflow最近推出了其标注功能;可以直接在应用程序中标注图片。)将图片上传到Roboflow进行预处理和增强。
图像预处理:这些是希望应用于所有图片的步骤。例如,如果想要将图片转换为灰度或调整图片大小。在Kaggle数据中,图片非常大:1280 x 720像素。拥有高分辨率的图片是好的(模糊的照片没什么用),但高分辨率可能需要更多的时间来训练模型。如果将每个像素视为模型的输入,那么模型就有超过920,000个输入!使用Roboflow将图片大小调整为更小(384 x 216),同时保持相同的长宽比。
Roboflow的“数据集健康检查”。图像增强:这些是希望仅应用于训练图片的步骤,以便模型能够更好地泛化到未见过的图片。对于Kaggle数据,添加了随机旋转、亮度、曝光、模糊和裁剪到图片。这些技术旨在模拟在图片中可能看到的现实世界差异。以裁剪为例。目标是检测头盔和碰撞。两个头盔可能会相撞,但可能发生在另一个球员后面,因此从计算机的角度来看是看不见的。裁剪技术在图片周围随机放置黑色框,以反映图片中可能存在的自然遮挡,例如相机无法看到的碰撞。在下面的图片中,看到顶部图片的副本,但对图片应用了少量裁剪。
两幅相同的图片,一幅应用了裁剪。当然,有很多不同的模型。截至本文撰写之时(2020年12月),最先进的计算机视觉模型是Scaled-YOLOv4。根据基准测试,Scaled-YOLOv4的速度和准确性优于所有其他模型。因此,对数据拟合了Scaled-YOLOv4模型。
# 以下是Google Colaboratory笔记本中的代码示例
# 请复制笔记本并使用自己的Roboflow API密钥获取自己的数据
# Scaled-YOLOv4视频教程将详细介绍这一点!
from roboflow import Roboflow
import cv2
# 初始化Roboflow
rf = Roboflow("your-api-key")
# 加载数据集
dataset = rf.dataset("your-dataset-id")
# 获取图像和标签
images, labels = dataset.load()
# 预处理和增强图像
# ...
# 加载模型
model = cv2.dnn.readNetFromDarknet("yolov4.cfg", "yolov4.weights")
# 设置网络层
layer_names = ["yolov4", "yolov4_confidence", "yolov4_detection"]
# 训练模型
# ...
# 生成预测
# ...
对模型进行了20次迭代。对于目标检测任务,迭代次数通常远高于1,000,因此通过增加训练时间可以进行大量改进。然而,这也需要大量的时间——20次迭代大约需要2.5小时的GPU时间,因此在相同的设置上尝试1,000次将需要大约五天。下面的图表与更多的迭代次数将带来更好的性能的信念一致,因为随着迭代次数的增加,指标正在持续改进。(这在训练和验证性能中都得到了反映。)
一旦构建了模型,就在测试集上生成预测(在计算机视觉中通常称为“推理”)。在995张图片上生成预测需要25.4秒,这意味着推理可以以大约每秒40帧的速度进行,或者FPS。这几乎接近实时——原始数据以大约60 FPS的速度共享,但40 FPS应该足以满足在美式足球比赛中看到的电视回放。
就NFL和头盔检测而言,减少TBI和CTE的目标无疑是一个崇高的目标。计算机视觉可以更好地理解这个问题,这可能令人惊讶,但计算机视觉有很多应用——不仅仅是自动驾驶汽车和白细胞检测。目前有超过400个团队正在解决这个特定的NFL问题,还有更多的团队正在解决其他问题。