最近小编痴迷“吃鸡游戏”(绝地求生),闲暇之余也会去斗鱼直播的绝地求生板块观看视频直播,不经意间发现,斗鱼直播默默的上了一个骚气、无敌、高大上的功能,“实时”展示在线主播在游戏中的存活人数,如下图:
图1
那么问题来了,在绝地求生官方未开放实时的游戏数据查询的情况下,斗鱼是如何获取这些主播的数据的呢?作为喜欢意淫的python爱好者,小编做出以下猜测:斗鱼是通过获取游戏视频截图(斗鱼直播平台拥有所有主播的直播视频),运用数字图像技术和机器学习算法,实现的图像中数字的识别。
为了证实小编这一设想的可行性,在一个月黑风高的晚上,小编决定动手尝试,准备工作如下:
1、小编手动截取了69张在线绝地求生主播的视频截图(1920*1080,无字幕遮挡),其中59张作为训练数据,10张作为测试数据(因为是试探验证,所以没有截取较多的图片);如下:
图2
2、了解数字图像概念,以及RGB图像的灰度过程、去燥算法;
RGB图像(3维)灰度图像(2维)
3、基于Python的数据清洗、加工、抽取等基本数据分析能力;
4、了解机器学习——分类、有监督学习等知识(本场景是将0-9所有的数字各做为1类);
写到这里,肯定有很多人已经迫不及待的想继续看,小编到底是怎么实现的了,不卖关子了,大步进入正题!!!
-----------我------是-------一-----条------分------割----线---------
第一步
对图像数据进行降维,在不丢失图像主要特征基础上,将数据从3维数据降到2维,并且定位数字在图像中的位置;
Data_pic
第二步
对数据进行去燥和二值化处理,将灰度值超过0.9(数字主要轮廓特征)重新赋值为1,否者赋值为,并且将两位的数字,进行分割,处理成一位数字,如:99转化成9、9,实现将所有数字的识别问题都可以转变成对0--9这10个数字的识别问题;
第三步
对截取到的所有的数字图像进行特征提取,将上千维的离散特征转换成低维特征,如下图,首先将图片分为四部分,选取1占所在区域的比例作为图片特征;
第四步
训练数据和测试数据准备(其中0,1,2,3,4列表示特征,Y表示目标类);
第五步
选取机器学习分类算法——KK算法作为训练模型,进行KNN模型训练和预测;(
K近邻模型,也常被叫做K最邻近结点算法。它是直接拿已经标注的数据做模型的一种统计学习方法(即,不需要额外的训练过程)。对于待分类的样本点,在已经标注的数据集合中,找到与目标样本点最近的K个(K通常小于20)点,用K个点的标注类别来投票,得票最多的标注类别即作为目标点的分类结果)
第六步
预测结果准确率:12/20*100%=60%
小编在这里只是一种简单的Demo实现,证明思路的可行性,显然准确率还不能满足真实的应用场景,要想达到工程上线标准,各个步骤都需要进行严谨且大量的优化,如果你有更好的Idea,欢迎联系小编一起学习进步!!!!!
领取专属 10元无门槛券
私享最新 技术干货