黑钢.384

  • 1681 主题
  • 1779 帖子
  • 5500 积分
  • 身份:版主
  • 论坛新秀 灌水之王 突出贡献 优秀版主
  • E币:2343

华为算法工程师的转岗历程: 不设限的思维,才有可能开挂

2020-8-18 12:08:12 显示全部楼层
推开算法的另一扇门:从传统算法到AI算法工程师的华丽转身

从博士阶段到2015年加入公司,我一直从事算法研究。但2018年,根据部门新业务拓展规划,我从传统算法岗位转到机器视觉领域视频AI算法工程师的岗位,还是让一贯淡定的我心里多了几个问号:

“我是否能适应这个全新的领域?”“我能否胜任这个岗位?”

揣着些许忐忑,还有几分期待,转身就从这一刻起航了。

让算法“跑”起来,实现从0到1的突破

在我的求学时代,人工智能还不是热门方向,主要学习的还是传统的数理统计分析和机器学习算法,而AI算法和我之前所学和所用不同,它主要依赖于数据、算力和算法,能够通过AI芯片,用机器替代人完成一些看似复杂的任务。

当时在机器视觉领域,在我们部门,做AI算法的人只有我们小组的几个人。AI算法在业务上具体能发挥什么作用,一开始谁也没有太多头绪,好在领导们非常重视对AI算法的投入,积极组织外部交流,开展专家/博士大讲堂、高校喝咖啡等技术交流活动,让我有多种渠道可以多学多吸收;我自己对AI算法也非常感兴趣,时不时去找些国内外相关论文提升自己的视野。不管是开放协作的团队氛围,还是自我的“企图心”,都在帮助我顺利转身。

“有个海外项目要做算法,你主导试一试?”2018年上半年,主管交给我一个新的任务:交通领域的海外车牌识别算法交付。

随着科技日益发达,很多国家和地区在交通领域越来越迫切需要智能摄像机,而其中最为关键的是车牌识别算法,可以完成对车牌字符串的自动识别,这对智能摄像机和后端平台都有较大价值,比如车辆行驶过程中被摄像机拍到了违章行为,车牌算法可以快速识别出车辆的车牌信息,从而快速对应驾驶人员信息,免去了人工操作的繁琐,使城市的交通安防更“智能”。

之前产品线只在国内做过这块业务,这是第一次计划将自研车牌算法带到海外项目中。这也是一个和2012实验室共同协作开发的任务,主管对我说,我们会和2012实验室机器视觉领域的专家、同事密切合作,“站在巨人的肩膀上共同完成这个任务”。虽然有些没底,但我还是毫不迟疑应承下来。我始终坚信,集合了公司顶尖的资源和强大的平台,我们一定会有所突破。

但对我来说,这是一个从零开始的过程,可谓困难重重。做AI算法的第一个要素就是数据,车牌图片数据就像是车牌识别算法的“燃料”,要让算法“跑起来”,快速识别车牌信息,就需要源源不断的“优质燃料”,但当地客户和一线能够提供的车牌图片数据很少,加上部分地区的基础建设比较薄弱,每条道路上能够调用的摄像头数量非常少,历史上累积的车牌图片数据几乎没有。此外,车牌的规则是海外车牌识别算法开发中最重要的基础,我们需要通过它构建车牌的样例,也需要它来保障车牌识别效果。但当地车牌规则也不太明确,有很多奇形怪状的车牌,甚至还有手写的。

数据和规则,成为我们必须要克服的两大关键挑战。

好在2012实验室专家提供了算法上的帮助,包括方案的分析、设计,我也反复研读了与车辆算法相关的论文,参考业界的最新进展,苦苦思考怎么获得车牌图片数据。

重新拍摄?加装摄像头?都不现实。有时候,灵感的迸发也许就在一刹那:既然数据确实没办法直接获取,那反其道而行之呢?换句话说,如果无法得到“优质燃料”,那么何不降低对燃料的依赖?虽然没有车牌图片数据,但交通部门有所有车牌号码信息,而且车牌本身的形状是相对规范的,基本都是在一块铁板上的印刷体文字,那么我们就可以通过代码和软件来生成需要的数据,并生产训练它们,从而构建数据生成的工具,通过代码完成车牌图片数据的自动生成,降低对原始的车牌图片数据的依赖度。

找到了破题思路后,基于生成数据,我们自研深度算法模型,提高算法在光照、天气、车速等场景的适应性,比如光照太强或太弱、雨水干扰、车速过快导致有模糊等,减少算法对场景的依赖,保障业务指标。另外,考虑到海外车牌规则的不确定性,必须提高数据生成和模拟中的数据仿真的真实性,让生成的数据更加逼真,我们又尝试增加一些噪音模拟的方法,比如运动模糊、反光、过曝、阴影等。

基于这些想法,我们快速付诸行动,经过几个月的研究和开发,终于做出了符合当地实情的车牌算法,在POC(概念证明)比拼测试中,准确率上比友商高出2%,达到商用标准,实现了从0到1的突破。

做大池子,实现从1到N的跨越


然而,第二阶段的挑战也随之而来——如何实现在更多的国家和地区批量上线?

起初,我们依赖这一套算法成功在一两个国家项目中复制,但随着上线国家越来越多,现有算法不足以支撑快速增长的需求,仅仅适用于小规模场景。想一招打天下是不可能的,如果要实现更多场景更快批量上线,必须优化算法,构建一套更加完整和高效的算法开发平台,来提高开发效率。

当时我们发现,有些国家、地区的车牌种类复杂,至少有100余种,多的甚至有200种。这种情况下,最关键的是将算法的模型“池子”做大,将这些复杂种类的模型尽可能扩充进来,形成一个模型池。不同国家和地区的车牌信息可以在模型池中自动选择,提高命中率。

但是,想法是美好的,挑战却是非常大的。我们需要摸清很多国家、地区的车牌类型。记得有一次,我们在某个局点做车牌识别,当时产品线的测试工具还不是很成熟,我们也不能在马路上拍摄,于是考虑拿着摄像机去拍电脑显示器的录像,但发现显示器太小了,无法还原真实场景。

既然显示器太小,那把显示器“放大”呢?我脑洞大开:有什么东西具备“放大镜”的功能?思来想去,给显示器投屏不就解决了吗?!想到就干,大半夜的,我和团队小伙伴迫不及待扛着摄像机、三脚架,找了一间屏幕约莫2米宽的会议室,局点真实的车况录像投到大屏上后,可以将车流情况看得非常清楚。

于是,我们通过添加了车牌算法的摄像机拍摄大屏上的车流录像带,最大程度还原了现场车流的模样。一番测试下来,和真实场景非常相似,最终测试精度达到98%以上。这种喜悦难以用语言形容,我们的自研算法不仅帮助客户提高了车牌识别的准确率,降低误报,减少人工复核的开销,更重要的是,我们证明了自己。

通过车牌工具链优化、数据仿真优化和自研模型池三个创新技术点,我们实现了车牌算法从1到N的批量上线,并根据业务需求源源不断地生产着一个个海外车牌识别的算法。

走过这两年,这个项目给我最大的感受是,方法永远比问题多,一切事在人为。学术论文中的前沿技术成果成为我不断提出创新idea的源泉,助力构建了车牌算法的基础能力;而通过和2012实验室算法团队的积极碰撞和密切合作,又夯实了整体算法。从最终结果来看,算法指标上的提升也让公司突破了多个国家和地区的车牌项目。

从“人无”到“我有”

在逐渐深入算法开发的过程中,在实际业务中算法团队又遇到了一些新的难题。举个例子,摄像机在实际局点的运行中,遇到雨雪天气,或背光,或目标太小太远等,就会造成一些算法错误率升高,比如人体属性(如性别、衣服颜色、发型等)识别算法,识别准确度指标下降。

团队分析,原因主要来自两方面:一是训练数据跟局点数据有差异,二是安装架设摄像机不规范。我们没有办法要求所有的安装人员都非常标准地安装摄像机,但根本的原因是,我们在实际场景碰到的问题是做算法训练时没有见过的。

有什么方法可以让算法根据实际场景实时更新和优化,在摄像机上越用越好呢?基于产品线在业务上的需求,结合平时论文的阅读和分析,我们想到了当前学术界前沿的在线优化算法:如果摄像机上的算法可以根据现场数据实时在线优化,就能提升算法的指标。

但想法能不能变成现实,内心还是很没底的,一是业界还没有人在摄像机上做在线优化算法,因为用摄像机做训练,存储空间和训练资源均不够,而且,还要实现自动优化,减少人工查验。二是这个算法能否成功应用到产品中,还是未知数。

可不试你就永远不知道答案。我们又开始了新一轮的摸索。参考学术界深度学习模型的迁移学习、模型finetune的方法,我们展开大量的文献分析和阅读,设计出减少训练资源的算法,并且复用了算法中的大部分环节,解决了存储空间不足和训练资源不够的问题,也设计了多模型复用和阈值控制来提高算法的鲁棒性,用于提高算法的准确性。最终,POC测试时,人体属性准确率指标平均提升量有4.4%,能够更快地通过衣服颜色、发型等人体属性找到目标人物,减少人工查验的时间,提高效率。

由此,我们构建起了摄像机在线优化算法的能力,并实现了人无我有的创新领先,成功助力市场突破。这进一步坚定了我对AI算法的信心。只要抱着开放合作的态度,借助行业、学术界的成果深入研究和分析,目标坚定并毫不犹豫地一步一步往前走,我们也一定能够在AI算法上做出卓越的成果,为产品竞争力的构建添砖加瓦。

不设限的思维,才有可能开挂


打完一个“怪兽”后,下一个“怪兽”很快又出现了。而我们也在和一个又一个的“怪兽”搏斗中乐此不疲。

公司在机器视觉领域投入生产的一款主力摄像机是多镜头的复眼摄像机,它的主要特点是通过多个镜头的组合,能够看到更广更远的视野范围。但与此同时也带来了“硬币”的另一面,比如广角镜头会使车辆在画面中多以侧面出现,打个比方,你站在路边,一辆车从你的左手边开到右手边,你可以看见车子车牌的时间很短,并且一部分时间你只能看到车牌的侧面,而且相对靠近画面的边缘,这时车牌就发生较大的畸变。这样一来,识别车牌精准度就降低了。

我们就想,如果在算法内多加一步,把镜头中的车牌做一次旋转,转到算法可识别的正常角度,是不是就可以?

我们当即做了一个实验,将图像中角度歪斜的车牌,通过程序转为正常角度,多数车牌在旋转之后都能准确识别。这就证明,我们的方法是可行的,只需在算法中增加一个车牌角度分析和旋转的模块。从算法的角度来说,其实改动不大,但是收益很大,大于45度的车牌识别率一下子从0%提升到93%以上,相当于给架设在路边的摄像机赋予了很高的车牌识别能力,竞争力大幅提升。

在保证产品竞争力提升的同时,如何实现产品的高性价比也是我们关注的方向。微云是我们的边缘计算设备,是产品在靠近最终业务场景的地方部署的服务器,产品线希望通过周界行为算法优化让一个微云服务器可以承接和分析更多的摄像机,从而实现成本下降50%-60%,这就好比原本一台服务器上只接10个用户,现在要让这台服务器接20个用户,这个目标挑战非常大,相当于要提升100%以上的路数,而一般算法能提升20%-30%已经非常之难了。

团队不断吸收学术界的前沿研究成果,和周边团队进行多轮技术研讨,终于找到问题的“金钥匙”:可以去掉算法模型里面的多余节点,就像我们人类一样,正常人的脑细胞约140亿~150亿个,但只有不足10%被开发利用,其余大部分在休眠状态。算法模型中的神经网络也一样,有些神经网络一开始可能有20%-30%没有用到,但是你也不能够随随便便去掉它们,否则会导致精度急遽下降。

我们要做的是,先把那些不重要的“神经”单元挑出来(稀疏化),再尝试屏蔽掉这些没有作用的节点,这样模型就变小了,计算过程也就变短了,从而有效保证了成本降低。简单来说,就是缩小模型的边界,这也就是周界行为算法的题中之义。

答案是找到了,但通往答案的路并没有捷径,唯有不断地挑选,不断地测试。在一遍又一遍的测试中,我们发现,如果“神经”单元挑选得好,测试精度也没怎么降低,甚至还会微微上升。通过这一算法优化,最终单芯片完成了100%-150%的并发路数提升。

作为工程师,只要敢于不给自己设限,始终对自己高要求,相信一定可以做出让自己自豪的技术!

创新,我们在路上

求学至今,很多人跟我感叹算法太复杂,但在我看来,算法是把复杂的问题清晰表达出来后再解决它,化繁为简,有时候越简单的东西越有价值。早先在机器视觉领域,我们自己的算法是比较少的,包括人的算法、车的算法和行为的算法,都非常之少。但在这两年里,我们以更加开放的心态去吸收外部养分,推开了AI算法这道门,快速构建了算法的相关能力。事实也证明,通过算法的创新,我们在业界多次比拼测试中,相关指标是领先的。

机器视觉是一个入口,数据的入口,终端的入口,在整个可以想象的业务空间中,涉及摄像机、存储、网络、计算等各个环节,机器视觉要做的是将各个环节有机的组合并联动起来,也将更利于构建网络传输、计算资源、计算能力、硬件、存储的良好生态,完成从底层芯片到上层业务端到端的贯通。

如今,我们依然面临极大的困难,但团队一直在奋力向前,持续聚焦创新,未来希望持续以技术竞争力为抓手,助力公司在商业上寻求更大的突破,保障商业成功。

来源:《华为人》 作者:徐青

最新评论

楼层直达:
我要评论
1
20
广告
关闭 热点推荐上一条 /6 下一条
快速回复 返回列表