Xiamen GDG DevFest 2018 repo

这是厦门 2018 谷歌开发者嘉年华 参会报告~

(多图预警,流量环境谨慎点开~)

ps. 由于在大会上做笔记不是很方便和不完全,因此下面的内容可能有错误或者不周,敬请谅解。

0x00 前言

最开始看到这个活动是 11 月初在信院官方迎新群里有人发了 DevFest 的一个预热宣传链接,一看竟然是咕果赞助的开发者大会,而且居然还在我校里召开,果断报名。在周六经历了高数期中考的洗礼之后,就开始迫不及待地等待 GDG DevFest 大会当天的到来。星期天一大早起来赶着公交车来到了科艺中心。

0x01 会前

厦门大学科艺中心

科艺中心门口的宣传画

九点出头的时候就匆匆赶到厦门大学科学艺术中心,前半个小时是签到时间,本以为九点算是早的,结果一到签到处发现多大半数的人已经把名字写好在签到表上了。签到的时候领了一个 Google Cloud Next 的磁贴和几张 GDG 和谷歌全家信仰贴纸,这波不亏。

Google 信仰贴纸~

0x02 DevFest 会中

Xiamen GDG DevFast 2018

会议在 9:30 之后又鸽了十分钟才正式开始。首先是厦门大学的信息科学与技术学院的领导杨蔷致辞,接下来是厦门软件园的管理致辞,再然后是对 GDG(Google Developer Group) 及其相关活动的简介。今年的 5 月左右 Xiamen GDG 还举办了 Machine Learning Study Jam.

听完了介绍接下来就是四场技术分享会了。

人工智能语音技术(厦门大学副教授洪清阳)

人工智能语音技术

首先第一场分享会是关于人工智能和语音方面的,是我们厦门大学信息科学与技术学院智能系的副教授洪青阳老师。主要介绍了人工智能的发展历程、AI热潮、AI落地技术的迭代(核心算法,数据积累,GPU计算,产品落地)以及从 AI 技术层到应用层的关联.

从技术层到应用层 - AI

紧接着介绍了 AI 语音技术的技术趋势:

  1. 感知计算:视觉和语音识别率超过97%
  2. 认知计算:自然语言理解是人工智能现阶段需要重点突破的技术,应用于客服和机器人等
  3. 无监督学习:现有深度学习严重依赖标记数据,一旦无监督学习突破人工智能将进入新的阶段

以及应用趋势:

  1. 机器感知(视觉 语音)安防、金融、智能家居、机器人 预计5年内普及
  2. 机器认知(自然语言理解)医疗、证券等 存在瓶颈 预计5-10年内普及
  3. 人机结合 工业/服务业机器人

然后展示了几个 AI 语音技术的应用实践,其中最重要的是菊花厂(HUAWEI)在 P20/Mate20 设备上所拥有的语音唤醒和声纹识别功能是我校 NLP 实验室 AI 语音技术的研究成果落地应用;介绍了语音识别框架:

端到端语音合成(深度学习):完全避开中间标注和细节参数,把语音直接关联对应的文本内容,基于大量训练数据自动调优,Sequence to Sequence在语音合成和机器翻译有很好的应用,解决了一些标注问题。

以及厦大的相关实验室在 OLR Challenge 2018 语种识别竞赛的几个项目(短语音识别,混淆语言语种识别,开集语种识别)中取得了第二/一名的成绩。

最后洪青阳教授还分享了他对 AI 技术的一些看法——警惕AI过热:AI技术深度学习与大数据结合,却有不少进展,但不要把AI变成全民的忽悠。科学研究不能大起大落,一哄而起,一哄而散,盲目冒险不可取。重视基本核心技术,如集成电路技术,飞机发动机有关的材料和工艺,生命科学与生物科技以及AI技术本身才是正道。

Tensorflow Lite在移动端的解决方案(王玉成,Google IoT GDE)

TensorFlow lite

第二场分享会是谷歌的 IoT 方向 GDE,来自清华大学的王玉成老师带来移动端 Tensorflow 的解决方案——TFLite 相关的讲解。

首先分析了 TensorFlow 框架的现状,除了广泛应用的 Python 版本外,Google 还推出了 TensorFlow.js 应用 WebGL 技术在浏览器端的 TF 版本;TensorFlow Lite (for Android) 和 Swift for TensorFlow; TensorFlow Extended(TFX) 端到端的机器学习平台;TensorFlow Hub有助于发现、发布和使用机器学习模型中重复的部分;TensorFlow Probability是用于概率推理和统计分析的库;Tensor to Tensor 深度学习模型库与数据集, XLA(加速线性代数)用于优化 TensorFlow 计算,等等。

接着是对 TensorFlow Lite 的简介:在移动和嵌入式设备上运行机器学习的解决方案。它的优势有:性能高(速度快,没有精度损失)、低延迟(优化的浮点和定点 CPU 内核)、低容量(依赖,量化,注册)、拓展性强(Android,iOS)、加速、工装等。目前 Google 已在自家的这些产品上使用:Google Assistant, Gboard,Gmail,Google photo,nest 等。TF Lite 主要运用于 Android, iOS 和单片机嵌入式 Linux 等平台上。

再下来介绍了 TensorFlow Lite 的特性,包括支持一系列核心运算符,包括量化和浮点运算,结合融合激活与偏量,针对移动平台调整提高性能和量化精度、基于 Flat Buffers 定义了一种新的模型文件格式、拥有一个新的移动优化解释器来保证应用程序的精简和快速、尺寸小,支持 Oreo 以上版本系统的硬件加速等。

tensorflow lite 特性

再接下来就是一些移动端 AI 硬件的最新进展,包括 Edge TPU, Cloud IoT Edge,以及 AI 在图像识别上的应用。

使用神经网络(TensorFlow)理解视频信息(郑炜,ML GDE)

使用神经网络理解视频信息

第三场是 TensorFlow 在理解视频信息、机器视觉方向的应用。主讲人是 Machine Learning 方向的专家郑炜老师。

首先介绍了什么是机器视觉,通俗地说就是一种理解图片、视频内容的技术。原理是将原始图片处理成数字信息,在数字信息的基础上进行其他任务。

机器视觉的重要基础是定义特征,人为定义的如拐角、边缘、颜色、亮度,是简易特征(ORB特征点检测)。

紧接着主讲人解释了为什么需要理解视频信息:以 youtube 为例,理解视频内容有助于内容和广告的推送;视频标题、标签、简介等信息可能并不准确,理解视频内容有助于正确分类视频。

机器视觉理解视频内容仍然是挑战,深度学习是视频理解应用的重要基石。

最后讲了如何用 TensorFlow 进行视频信息理解的解决方案,大致思路是用CNN(卷积神经网络)处理每一帧的画面,每一秒的音频,提取帧级别的特征,然后是分享了一些方法模型,如 Deep Bag of Frames(DBoF), 对视频帧随机取样,用神经网络进行提取、池化后再用分类器归类;长短期记忆循环神经网络(LSTM),合并音频信息与视频信息,使用 RNN-RNN(循环神经网络)进行分类;以及 NetVLAD* 可训练的池化方式,用可训练的中心点来描述特征,类似梯度可导的 kNN/聚类模型,将时间轴上的时间特征进行聚类再分类。

(因为没怎么接触过 Python 和 TensorFlow,所以从这场开始就是半懂半懵的状态 orz)

深度学习助力动漫制作(厦门大学李卓儒博士)

接下来一场是动漫制作与人工智能深度学习相关的,主讲人是厦门大学化学系(对,你没有看错,化学系)的李卓儒博士。先从动画及漫画相关的深度学习研究和应用讲起,内容涵盖最早期的 Google DeepDream, 然后是线条处理(草稿简化、线稿补漏、线稿优化)的几家实现;角色设计生成( https://make.girls.moe )和色彩绘制 (paintschaniner, style2paint…)

李老师自己制作了一个基于 TensorFlow 的动漫制作辅助工具:

视觉 AI 从 2D 到 3D (深图智服)

最后一场技术交流会是深图智服公司的首席架构师带来的还是有关机器视觉的演讲。主要涵盖了2D视觉AI、3D人脸识别和3D场景构建几方面的内容。

2D 视觉 AI 主要包含检测(detection,找出感兴趣物体在图像中出现的位置)(挑战:密集,遮挡,高精度,实时性)、关键点定位(用于姿态估计,校准,随摄像机生成人物装饰等;关键点定位主要以精准为主,数量越多可以做更多的探测内容)、分类与识别(如对人面部表情进行分类)、对图片进行编码(抽取特征向量)、跟踪(避免频繁检测,提高吞吐率)、利用视频相邻帧估计物体下一帧的位置、获取物体运动轨迹等内容。

3D 人脸识别意在解决传统2D人脸识别的问题:人脸的相似性,人脸的易变性,主要具有如下的优势:

3D人脸识别的优势

识别的常用方法有:利用 3D 技术将目标旋转到同角度之后进行 2D 识别;获取 3D 目标的多个角度 2D 图像之后进行 2D 识别;3D CNN(卷积神经网络),以及以上多种方式的融合等。

3D 场景构建部分首先讨论了 3D 和 2D 的区别:

3D vs 2D

3D信息的获取手段主要有双目或多目摄像头,结构光,雷达等;主要应用有全景图像(又被称为3D实景),无人机航拍,遥感图像,天文影像,360度全景相机等。

拼接 3D 图像的常用方法:基于特征点的匹配

基于特征点的匹配

最后科普了 SLAM(Simutaneous Localization and Mapping) 的方法(机器在未知的环境中用传感器数据行进,对环境建立地图,同时利用地图对机器进行定位,例如应用在扫地机器人上对房间进行探索)和 RGB-D SLAN 工作流的实例。

RGB-D SLAN

至此五场技术交流会全部完成。听完之后觉得虽然有一些部分因为没有接触过觉得不是很懂,但是也感受到了这部分内容神奇的吸引力。这些交流会解决了我以往对某些技术的疑问,并且为我今后的探索指引了一个大致的方向,可以说是收货颇丰了。

0x03 CodeLab

GDG DevFest 的最重要的活动就是 CodeLab 了,具体就是参与者带上电脑事先配好环境,然后讲师通过一个简单的入门实例来引导你学习某个主题。本场的 CodeLab 主题主要是 Kotlin in Android, TensorFlow Lite 应用, TensorFlow 应用神经网络模型训练和 TensorFlow 在动漫制作的应用。

我只参加了 Build your first Android App with Kotlin 和 TensorFlow 神经网络模型训练两场 CodeLab(因为时间冲突的原因)。

Build your first Android App with Kotlin

这是由厦门大学信息科学与技术学院的吴德文老师主讲的使用 Kotlin 语言开发一个 Android App 的入门。内容主要涉及如何配置 Android Studio, 新建一个 Android 项目,然后是 Kotlin 的基本语法和与 Android 的结合,Java 与 Kotlin 的对比;通过一个计数器的实例带领参与者进入了 Kotlin Android App 开发的世界。值得一提的是在这场 CodeLab 偶然结识了坐在我旁边的来自翔安校区的研究生学长,同样也是对开发很有兴趣的。

可以在 Google 的 codelabs 官网找到这个项目的资料:https://codelabs.developers.google.com/codelabs/build-your-first-android-app-kotlin/index.html?index=..%2F..devfest18#0

神经网络的实际应用 TF 实现

这是由郑炜老师主讲的。因为吴德文老师的场拖了一会时间,所以我到场的时候这一场 CodeLab 已经开始了。这一场 CodeLab 的主要内容是基于 TensorFlow 和 StarSpace 构建一个神经网络模型,使用 Stackoverflow 的问题集进行训练,然后得到一个模型能够根据你给定的一句话或者一个问题判断这句话/问题属于哪种编程语言。

相关的参考资料和讲稿、代码可以在这里找到:https://github.com/IshootLaser/NLP-codelab

0x04 总结

下午三点左右,走出了 GDG DevFest 的会场。回顾下来,这一场开发者的盛会确实让我开拓了视野,也让我开始准备尝试了很多我一直想过但是奈何一直没有去动手的东西,比如 Python, Anaconda, TensorFlow 和 Kotlin.

由于在大会上做笔记不是很方便和不完全,因此上面的内容可能有错误或者不周,敬请谅解。

总之,吹爆咕果和各位辛苦的讲师们。希望明年还能有机会参加 GDG DevFest 2019.