集智专栏
资源加载中,请稍后...
集智专栏

用机器学习复盘世界杯?这里有一份实用指南

集智小编

参考资料: towardsdatascience.com


时间过得真快,2018世界杯眨眼间结束,这个夏天也被世界杯赋予了更多意义,在一片啤酒花香中留给球迷朋友们聊不完的故事。谁能料到卫冕冠军德国队土豆香肠还没吃完就被送回了家?四大夺冠热门球队全都爆冷出局?

近来你或许也曾留意到不少人借此东风,用数据科学或人工智能技术分析世界杯,捣鼓出一些好玩的项目。你没有想过自己也试试用机器学习技术分析一场世界杯球赛?今天就分享一份借助深度学习技术和若干机器学习框架分析世界杯的实用指南,自己可以试着练练手,本文教程代码地址见文末。

对于数据科学家和机器学习研究者来说,从事这份工作的好处就是能用自己所学知识对世界杯球赛做些有趣的分析。比如,身为一个研究深度学习的人,我(作者 Priya Dwivedi——译者注)就用深度学习和 OpenCV 从比赛视频中获取有意思的结果。 下图就是我对澳大利亚VS秘鲁比赛视频做的一些分析结果:

从中我们可以识别出所有的球员和裁判,足球,也能根据球衣颜色预测出球员所在球队,而这些都可以实时完成。

步骤概览

对于快速创建目标检测模型,TensorFlow Object Detection API是款非常强大的工具。如果你对这款API还不是很熟悉,可以看看下面三篇我们之前分享过的用它检测物体的文章,讲的都比较详细:

如何用TensorFlow追踪《星战》里的千年隼飞船? 如何用TensorFlow和Swift写个App识别霉霉? 如何用TensorFlow在安卓手机上识别皮卡丘?

或者这篇教你怎么用TensorFlow Object Detection API创建自定义模型的文章

Object Detection API提供了预训练的物体检测模型,这些模型都是由COCO数据集训练而成。COCO数据集包含了90种常见物体,下面展示的是COCO数据集中部分物体的图像:

有点可爱有点可爱

在我们分析世界杯的情况中,我们重点关注类别——人物和足球,都包含在COCO数据集中。

该API同时还支持一大批机器学习模型,如下所示:

不过这些模型的运行速度和准确度不可兼得,选用时要做个权衡。由于我对实时分析球赛感兴趣,所以选了SSDLite mobilenet v2。

等我们用TensorFlow Object Detection API识别出球员,预测他们属于哪国球队时,我们就可以用OpenCV这款强大的图像处理库。如果你对OpenCV不是很熟悉,可以参考下面两篇教程: 如何用不到25行Python代码实现人脸识别 OpenCV-Python教程

OpenCV能让我们识别出特定颜色的掩膜(mask),可以用这点识别出红颜色和黄颜色的球员。下面是OpenCV掩膜检测图像中红颜色的工作示例:

详谈主要步骤

现在我们进一步谈谈操作步骤。

如果你是第一次使用TensorFlow Object Detection API,请先下载这个链接的GitHub

这个链接中的指令安装所有环境依赖。

如果你还没有安装OpenCV,请参照这篇教程安装:

我采取的主要步骤是如下,这里请紧跟我的 GitHub 上的 Jupyter notebook

  • 将SSDLite mobilenet模型加载到graph中,并加载COCO数据集中包含人物和足球的类的列表。
  • 用cv2.VideoCapture(文件名)打开球赛视频,逐个读取视频帧。
  • 使用加载的graph对每一帧执行目标检测。
  • 从SSDLite中返回的结果是每个被识别出的类以及其置信度和边界框预测。我将所有识别置信度大于0.6的人物全部裁剪出来。
  • 现在我们已经提取出了每个球员。我们需要读取他们的球衣颜色以预测他们属于澳大利亚队还是秘鲁队。这一步可以通过代码块检测完成。首先我们定义红色和蓝色的颜色范围,然后用cv2.inRange和cv.bitwise为颜色创建一个掩膜。为了能检测球队,我计算出了检测多少个红色像素和黄色像素,以及和裁剪的图像中像素总数相比的比例。
  • 最后,将所有的代码块合并在一起同时运行,用cv.2imshow展示结果。

结语

如果按照上面的步骤操作,最后你应该能检测出世界杯赛场上的球员以及他们属于哪国球队。

你瞧,将深度学习和OpenCV简单相结合,我们就能创造出很有意思的东西。你自己练习时,还能更进一步,尝试其它玩法:

  • 随着摄像头跟随澳大利亚队的得分区域,你可以计算出这一区域有多少秘鲁球员和多少澳大利亚球员在对抗。
  • 你可以画出每支球队的足迹,比如秘鲁球员在哪些区域出现的最频繁。
  • 还可以画出两队得分球员的运动轨迹。

感兴趣的朋友可以拿今年世界杯的克罗地亚队VS法国队的总决赛练练手,欢迎把练习结果分享给我们(发在社区里有机会获得集智礼品卡喔)。

附本项目GitHub代码地址


限时折扣中:0806期《人工智能-从零开始到精通》(前25位报名同学可领取¥200优惠券)

您也许喜欢这些文章

集智专栏

9行Python代码搭建神经网络

发表至趣味项目
该系列的上一篇文章中,Milo阐述了人工智能与脑神经科学的关系,并给自己定下了两个小目标:1.学习层次隐式马尔可夫模型 2. 用Python搭建神经网络。本文中他用极少的Python代码实现了非常简单的神经网络。
集智专栏

Python超简洁教程,现在就开始加入数据科学大军

发表至数据科学
现在,Python几乎成为了每个想要涉足数据科学、人工智能等领域的学生和从业者所必需掌握的程序语言,虽然它好用、易学,但仍需要一定的知识积累和实践过程来加以掌握。本文就简要介绍了一些常用的Python语法和使用规范,可以帮助数据科学的初学者快速掌握开发和实践方法。
集智专栏

有轻功:用3行代码让Python数据处理脚本获得4倍提速

发表至数据科学

文章评论(0)