作者介绍:
黄明,WWDC 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心iOS组leader,主要负责手Q个性化业务、手Q WebView等项目。作为终端开发也喜欢学习些图像图形方向的知识,同好者可以技术交流。生活中,休闲比较喜欢看书,娱乐比较喜欢电竞。
今天开场,奥巴马夫人来到现场为WWDC助兴,现场人员爆满。WWDC的session确实也没让人失望,比起第一天的概览,今天的内容更加的充实。细节铺开之后,有很多内容都让开发者兴奋不已。
1. Core ML
如果说Google的TensorFlow Lite让移动终端运用深度学习变为现实,那么Core ML就让人人都会Machine Learning变为现实。
你没看错,上图就是Core ML的真实demo,仅仅红框的几行代码,就能实现花名的智能识别。你需要做的仅仅是找到(或者训练)一个模型,使用Core ML Tools(Python,已开源:https://pypi.python.org/pypi/coremltools)转换为ML MODEL格式,加入工程,简单几行代码,你就是Machine Learning达人。
那么模型怎么来?在https://developer.apple.com/machine-learning/,苹果已经提供了一部分成熟的model供开发者使用,后面会加入越来越多的模型。
如果常用的成熟MODEL还不能满足需求,开发者也可以使用开源框架自己训练模型后,再转换使用(这就需要一定的Machine Learning的知识)。目前支持的开源ML框架有:
当然开发者也会有挑战,比如针对特定场景可能没有现成的模型可供直接使用,需要自主训练,训练的准确度就是挑战,另外,训练出来的模型体积大小精简也是挑战。这也让我看到一个商机,Model训练外包公司:)
偏题了,话说回来,Core ML支持的模型类型有:情感分析、文字识别、翻译、场景分类,Style Transfer,音乐标记、文字预测等。支持的机器学习算法见下图。
Core ML是构建于Accelerate和MPS之上,并且是基于Core ML,苹果还推出了Vision Framework,NLP(Nature Language Processing) Framework,这两个Framework分别在机器视觉和自然语言处理上给苹果开发者带来了巨大便利。不够,今天并没有它们(Vision/NLP)的session,后续我会继续追踪。
有了Core ML,相信以前认为是产品同学异想天开的想法,Core ML也能让其中一部分变为现实。Core ML的官方doc已经放出,详情大家可以参阅:https://developer.apple.com/documentation/coreml
2. ARKit
今天另一个让人兴奋的内容是ARKit。
ARKit是苹果提供的一套用于AR开发的框架,方便开发者实现虚拟现实应用。还记得手Q的AR红包吗?为了实现它可是大费周章,有了ARKit,系统原生支持的能力就能满足要求。UNREAL和UNITY已经率先支持了ARKit。不过ARKit由于硬件限制,需要在iPhone7以上的版本才可以使用。
AR程序使用ARKit做虚拟现实处理,使用SceneKit、SpriteKit或者Metal来做渲染。
代码实现概览如下:
ARKit的Session也讲述了部分原理,此处就不做深入描述了,具体的文档苹果也已经放出,请见:https://developer.apple.com/documentation/arkit。
苹果提供ARKit后,大大降低开发AR APP的门槛,实现《pokemon go》也不再是那么“神奇”的事情了。
3. HEVC&HEIF
Core ML、ARKit之后,第三个令人兴奋的内容就是苹果推出新的视频编码算法和图片编码格式: HEVC(High Efficiency Video Coding)、HEIF(High Efficiency Image File Format)。
其中HEVC压缩率能比H264高达40%,其中在iOS摄像头拍摄的的场景上面,HEVC的压缩率是H264的两倍。HEIF的压缩率是JPEG的两倍。
HEVC到底是什么呢?从session透露的信息来看,HEVC仍然是基于H265的,见下图,至于是否兼容H265,目前看是不可以,因为session中介绍,与外部系统传输需要transcode,后续我再去Lab确认下。
下图是HEVC编码的改进之处:
目前HEVC兼容的视频格式是MOV和MP4,这是MOV文件使用HEVC编码的大体文件格式展示:
下图说明了HEVC在iPhone7以上设备都支持硬件解码,iPhone 7以下只支持软件解码,macOS的支持情况见下图。苹果自身的framework都对HEVC做了良好支持,包括AVFoundition、PhotoKit、Webkit、HLS,另外VideoToolBox也支持HEVC。
HEIF又是怎么回事呢?HEIF是一个文件格式,其内部编码推荐使用HEVC(是不是想到了音视频的SharpPJ ),当然也支持其他的编码算法。
文件扩展名规范如下:
大体文件格式预览如下:
HEIF仍然是iPhone7以上机器才能支持硬件编解码,其他机型只能软件解码。同样苹果自身的图像相关库都做好了对这个格式的兼容。
对于传输兼容性问题,苹果给出了两个处理方案,1、转码;2、能力查询。
其实只有一个方案,即对于不支持HEVC/HEIF的外部系统都得转码…
HEVC/和HEIF有如此好的性能(压缩率),但却是苹果定制,未来到底怎么利用它呢,大家开动大脑吧。
除了以上几个重磅技术话题,今天还参加了Metal2的session,介绍了Metal2的几大性能优化和相关API:
主要是讲原理,这里就不过多阐述来,具体使用Metal2的专业人士后续来研究吧。后面还有Metal2用于并行计算的session,到时候我再关注。
最后简单说下Cocoa Touch的更新,比较需要关注的是iOS11提供了宽的Navigation Bar,APP设置新的属性后就可以变成这种模式,这里可能会有一些iOS11UI兼容性改造。另一个亮点是提供了终端版自动填充密码能力,当然这也是在网页拉起终端的情况才能支持。
另外再纠正一个昨天文章的错误,Drag&Drop的能力iPad/iPhone都可以使用,交互同学可以尝试使用下这种交互了。还有,不是steam VR SDK是stream VR SDK :)。