作者介绍:
黄明,WWDC 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心iOS组leader,主要负责手Q个性化业务、手Q WebView等项目。作为终端开发也喜欢学习些图像图形方向的知识,同好者可以技术交流。生活中,休闲比较喜欢看书,娱乐比较喜欢电竞。
今天是WWDC的倒数第二天,感兴趣的session越来越少,跟大家分享分享听了这几个。
1. Core ML in depth
Core ML in depth,再次跟我们解释了怎么使用Core ML,着重点在于Core ML Tools的介绍。介绍了它的大概结构,为什么使用python(因为很多Machine Learning的开源库都是使用python),开发者可以使用Core ML Tools转换其他Machine Learning产生的库,以供Core ML使用,并且它是开源的,开发者可以随时修改以支持更多的库。顺便说一句,虽然苹果PPT中没有提到Tensorflow,但其实Core ML是间接支持Tensorflow的,因为Keras的后端可以是Tensorflow或者Theano。
2. Image Editing with Depth
Image Editing with Depth,更为形象的为开发者展示了什么是depth,并使用Demo为我们展示利用depth可以做些什么效果。当然还有更多的效果等待广大开发者通过智慧来探索。下图左、中、右分别是原图,depth信息、depth形象展示图。
另外在使用depth过程中,一定要注意depth信息存储一般分辨率小于原图,在使用depth过程中,需要对其进行缩放。这里即涉及到缩放算法,除了临近采样、线性插值和Bicubic,苹果还提供了一种EdgePreservedUpsampleFilter,以便保证边缘不会被平滑掉。
最后,在传输包含depth信息图像时,需要注意depth的一些信息一定要和图像信息同步处理,如方向也要随着图像方向改变而改变、图像做了transform则depth信息也得做对应处理。
3. Advances in Core Image
Advances in Core Image,介绍了Core Image的相关更新,包括:
1、提供了更多的新的内建Filter(包括depth相关):
2、更新了部分已有的filter:
3、可以直接使用Metal Shading Language来写CLKernel,这样支持提前编译以提高性能,并且具备更多Modern Language特性。
4、提供了新的CIRenderDestnationAPI,这类API支持提交GPU任务后继续执行,异步返回执行结果,这样提高了GPU/CPU并行效率。
5、支持了各种扫描码识别,包括二维码。
6、XCode中提供了CIImage的快速预览能力,方便开发者debug,非常好的特性。
4. Using Metal 2 for Compute
Using Metal 2 for Compute,我原本以为是介绍怎么用Metal进行GPU并行计算,但其实是关于稍高层一点的应用,介绍怎么用Metal2做机器学习算法运算,即MPS(Metal Performance Shaders)的介绍。
MPS是Core ML的基础。如图,和Accelerate在同一层级,Accelerate是使用CPU运算,而MPS使用GPU运算,这里的运算都是指Machine Learning或图像处理中比较高层的相关数学运算。MPS从iOS10开始就封装了很多图像处理相关算法的原语(Primitive),如下图所示:
iOS11又提供了如下新的图像处理算法支持:
也新增了当下很流行的各种Machine Learning相关算法,如CNN:
使用MPS构建CNN网络将十分简洁,如下图:
这样就可以构建一个多层的CNN网络。
Session中还介绍了一个Inception-v3 + LSTM做Image Caption(图像描述)的例子。
使用这种算法,每一个迭代选取一个更为具体的描述,最终产生一个完整的准确的描述:
Demo中的效果非常不错,广大对Machine Learning感兴趣的开发者可以多研究研究。最终算法结果表现如下:
至于性能,iOS11做了很多优化,同一个算法在iOS11上的提升如下:
具体性能怎样,可能还有待开发者使用测试。
今天session较少,终于也有时间去Lab问问题了,今天去Webview相关的Lab问了两个问题。
1、Q:关于Safari为什么JS Performance会比Chrome高这么多(Keynote说80%)。
A:有一个比较重要的优化是GC的并行优化,新的Safari目前使用的Webkit GC是一个并行的过程,而Chrome的貌似还不是。当然还有很多细节优化,大家可以去Webkit Blog查阅相关信息。
2、Q:新的WKWebview支持拦截custom scheme,不能拦截http/https是为什么?未来是否有计划支持开发者对于WKWebview做自定义的数据缓存机制的需求?
A:不支持HTTP/HTTPS的拦截是因为安全问题,开发者拦截就绕开了WKWebview一系列安全措施。有很多其他开发者也提到了自定义缓存机制问题如Oracle,WKWebview团队未来会考虑提供某种机制,方便开发者做自定义缓存相关能力。
好了今天的内容就到这里,明天见。
关于我们:
小时光茶社(Tech Teahouse),由腾讯QQ会员技术团队创建,用于技术分享和交流。
欢迎长按二维码,关注我们^__^。