Py学习  »  机器学习算法

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

景略集智 • 5 年前 • 429 次点击  
阅读 13

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

本文首发在集智专栏

参考资料: 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优惠券哦)


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/HxepfG8s3i
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/21124
 
429 次点击