童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

识别王者英雄:一个PM的机器学习入门之旅

8月4日 温柔冢投稿
  学习,是一个PM永远不该停下的生存技巧。
  基础概念
  上个月开始从原理层面了解机器学习,选了一本在线电子书《NeuralNetworksandDeepLearning》作为教材,事实证明该书实在不错,让一个毫无神经网络、机器学习背景知识的PM很快就读懂了其中的基本原理。
  附上此书第一章我的读书笔记,对于PM而言,读完第一章就够了,基本概念和方法论在这章里解释得十分清楚。读完之后有一种打开新世界大门的感觉。
  行动诱因
  上周末看到Twitch做的ClipMine,基于游戏直播画面识别出守望先锋、炉石传说中玩家正在玩的英雄和段位,供观众在多个主播间筛选自己想看的英雄。顿时手痒,想着这样的需求在国内直播行业里其实也是存在的,比如将几千个正在直播的王者荣耀直播流识别出当前在玩的英雄,这样观众就可以选择自己想看的英雄专注的看了。
  手痒,又碰上周末,看来不得不做点啥了。
  工程分析
  王者荣耀这款游戏,想要识别其中正在玩的英雄,有几个思路:
  1。游戏开始前选择英雄的界面
  2。游戏开始后加载资源时的Loading界面
  3。游戏进行中屏幕正中央的英雄本身
  4。游戏进行中屏幕右下角的技能图标
  分析如下:
  在整个直播时长中,1和2的时间占比是很短的,而且如果玩家直接直播游戏进行中的画面,那就没法获取英雄信息了。
  并且1和2的界面里,当前玩家所处的位置并不固定,如果还要加上玩家位置的判定,工程复杂度上升不止一点点。
  因为英雄在游戏中永远处于正中央,所以3其实挺适合用来做训练素材。但考虑到英雄有不同的动作和朝向,最重要的是这个游戏单一英雄还有不同的皮肤。各种条件综合起来,一方面需要提供更多的训练素材,一方面也加大了机器学习的难度。
  而4这个界面,英雄的技能在较长的时间段内是不会变的,而且位置稳定,在整个直播时长里出现的时间占比也很高,唯一变化较大的是技能发动间歇里的读秒倒计时。综合考虑,4是最适合用来做训练素材的。
  确定了这点后,就能理清整个项目的运转流程了:
  获取60几个英雄对应的游戏进行中图片,每个英雄不少于1000张(拍脑袋的,我也不知道多少张合适)
  将1中图片的右下角截取出来,作为机器学习的训练资料
  运行机器学习代码,训练出可以识别不同英雄技能的模型
  从待识别的直播流中抽取画面,截取右下角的技能画面,用3中的模型去识别看是哪个英雄的技能,从而完成对直播流英雄的识别
  流程已然清晰,但后面的工作量才是最大的,先来看看如何获取训练资料吧。
  收集素材
  做机器学习的都知道,写代码不是最难的部分,收集优质的训练素材才是。如何能够快速获得60多个英雄分别对应的1000张图片呢?且不说找到6万多张图片的难度,找到后难道要我人肉来标记哪张图片是哪个英雄?如果真要这么做,估计一个人是很难完成了。
  这一次想出的取巧方法是直接去优酷上搜索王者荣耀英雄名字,就能搜到很多玩家录好的英雄视频。于是让团队里的同学帮忙,很快收集齐了所有英雄的对战视频各1个。然后用Adapter这样的软件将视频按一秒一帧转化为几千张图片。(不过一开始没有发现Adapter这个软件,当时是用OpenCV去一帧帧把视频里的画面读取出来的。)
  唯一的坑是优酷上的视频往往并不只是对战过程本身,还会有一些制作者加入的视频特效、文字、转场动画啥的。一开始没留意,污染了一小批训练素材,后来重新找了几个干净的视频解决此问题。
  于是就这样,轻松获得了含有英雄标记信息的近10万张图片。
  后面的事情就简单了,用OpenCV统一对图片进行裁剪。一开始是裁到三个技能的区域,但因为这个区域覆盖的面积较大,会包含进来很多不必要的图像信息,导致训练出来的结果不理想。在后期调优时,想到每个英雄的技能其实是唯一的,没必要识别全部,于是将素材全都裁剪到第二个技能,果然大大提升了识别准确度。
  技术实施
  早有耳闻Google家TensorFlow上手容易且性能还不错,加上是G家产品,自然和Python配合度最好,适合常年写Python的我。于是果断开始读TensorFlow的文档。
  不得不说周末那个晚上有很多时间花在了如何在virtualenv里安装TensorFlow和OpenCV。网上的教程没有一个是可以完全顺利在Mac上跑完的,还好最后在Google和StackOverflow的双重加持下,这俩个组件都在我Mac上编译成功了。
  很快,在TensorFlow官方教程里找到一篇关于图片识别的文章。跑了一下demo,运行正常。于是开始研究如何训练自己的模型。
  既然都按照官方教程走了,所以直接用了InceptionV3的网络结构。近10万张图片,在没有GPU加持的MacbookPro上,差不多得跑10个小时才能跑完第一次训练。
  不过其中最耗时是计算Bottleneck值,因为这个值在每次训练时其实都不会变。所以教程中会让在第一次计算每张图片的Bottleneck值后,将之保存下来,这样下次训练只需要计算新增图片素材的Bottleneck值即可,不需要每次都全量计算。这样优化之后,效率飞升。
  到此时,已经是周日凌晨3点了,赶紧让模型跑起来,睡觉去。
  性能调优
  周日中午醒来,第一次训练已经跑完了,赶紧拿新模型去做各种测试,准确率超乎想象的高。但如收集素材那一段里提到,一开始是识别三个技能,所以在某些英雄的识别上不太理想。
  将所有素材调整为单个技能截图后,又跑了一次,出结果时已经是周日晚上。这个时候的准确率靠我找到的测试图片已经没有失败的例子了。
  截止这个时候,识别单张图片大概需要5秒,倒也不是不能接受,但还想更快。在没有Nvidia显卡的情况下,只能依赖于在本地编译TensorFlow,从而让TensorFlow能用上本地CPU的SSE、AVX这类指令,加快运算速度。如何在Mac上编译TensorFlow,可以参考这里。
  附加功能
  在本地已经能完美识别英雄了,但总想着让更多的同事能体验这个功能。周二晚回家想起了之前用itchat写的微信机器人,于是立马将机器人和王者识别代码结合起来,实现了在微信里给机器人发游戏图片,机器人立即回复这个图片里的英雄是谁。
  结语
  实际的学习和开发时间就是周六晚8点到凌晨3点。这8个小时让我从原理及代码层面认识到了机器学习的魅力和实施细节,真真切切的看到了另一个世界的入口以及未来无穷的可能性。
  最大的触动是开始思考未来产品经理在设计产品逻辑时,如果理解机器学习,那么很多以往被认为不可能的事情,都将成为产品逻辑的一部分。而能否建立这种新的认知,运用好新的工具,将在未来某些领域里区分出产品经理的高下。
  学习,是一个PM永远不该停下的生存技巧。
  
投诉 评论 转载

一名合格的产品经理应做好的标配职业规划这篇文章主要讲述个人的成长计划和学习历程。同时,从个人的视角,对初入产品行业小白遇到的问题进行了整理和分析,希望对大家有所帮助!1。职业规划自我成长职业规划所……除了钱,产品经理更要看重什么本文作者将来谈谈关于产品经理的“钱”途以及和“钱”有关的故事。enjoy最近朴老师将3年来攒的小金库,全部花光了!做了个正畸,学了个车,买个2双鞋,以及几件过冬的衣物,已……产品经理必修课:信息架构(上)在这信息大爆炸的时代,一个好的信息架构设计,可以帮助用户们从纷乱的数据中解放出来,快速准确地获得和管理自己想要的东西。极大地提升用户的产品体验,信息架构设计是每一位优秀的产品经……识别王者英雄:一个PM的机器学习入门之旅学习,是一个PM永远不该停下的生存技巧。基础概念上个月开始从原理层面了解机器学习,选了一本在线电子书《NeuralNetworksandDeepLearning》作……产品经理需要了解的沟通过程模型时常在工作中感觉有些人居然比我还不会沟通,浪费了非常多的成本在沟通上。身为一个产品经理,优秀的沟通能力几乎是必备条件。这里和大家分享一个沟通过程模型,从实质上去理解沟通。……专业力:产品经理要打造出自己不可或缺的属性只有把自己打造为公司内不可或缺的岗位,才会有大的发展。在这“人人都是产品经理”的时代,很多小伙伴已经在这个岗位上工作了好几年,却仍旧无法认识到产品经理这个岗位的不可或缺性……我对猎豹产品经理发飙:你是第五只猴子吗?如果仅仅是因为以前是这样就可以不做改变,那产品经理还有什么价值呢?这几天,我跟猎豹同事重新讨论产品,尤其基于AI落地的软硬一体化产品。我发现,大道至简,万变不离其宗。软件……产品经理整理PRD时,需要注意哪些点本文作者将结合自身经验与你分享,在整理PRD时,产品经理需要注意的几方面。enjoyPRD,产品需求文档。世界上没有两片相同的树叶,也没有不做修改的需求文档,需求文档不是……如何避免成为一个油腻的产品经理?请别放弃努力,别放弃操守和情怀,别放弃自己那颗改变世界的心。看了最近朋友圈很火的文章,联想到产品经理也面临避免油腻的问题。像人生一样,产品的修炼之路也是布满了泥泞。……什么是产品经理的逻辑?怎么评估?怎么提高?文章主要回答了以下三个问题:什么是产品经理的逻辑?怎么评估?怎么提高?1。什么是产品经理的逻辑?从逻辑范围的角度来讲,不存在属于产品经理的逻辑和属于程序员的逻辑,产……一份接地气的产品分析框架本文作者将以一个案例贯穿全文,说一说如何更好的去分析一款产品。目的不同,产品分析的维度也就不同,本文主要从产品经理的视角出发,去剖析、解构一款产品。作为一枚互联网产品经理……我的产品方法论之需求分析(下)需求分析就是:观察筛选判断迭代。这同样是一个产品的从零到一的发展历程,每一步都任重而道远。1:今天终于要完结了,内心还是忐忑不安的,一方面特别兴奋,能够将自己的学习……
职场心灵鸡汤语录47条职场的语录简洁的职场的语录48条简洁的职场的语录职场的语录78条职场的语录职场的语录职场的语录简洁的职场的语录摘录49条职场的语录98条职场的语录75条职场的语录50条

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界