在大众创业,万众创新的时下,有些创业者应该醒醒了,APP开发不是创业成功的捷径。但是,如果作为手机APP开发的您如果不是很熟悉机器学习的话,我想我可以在这里“僭越”地做一些简介。你可以先把机器学习的模型看作一个黑盒函数,你给定一些输入(可能是一段文字,或者一张图片),这个函数会给出特定的输出(比如这段文字中的人名地名,或者图片中出现的商店名牌等)。一开始这个模型可能非常粗糙,完全不能给出正确的结果,但是你可以使用大量已有的数据和正确的结果,来对模型进行训练,甚至改进。在所使用的模型足够优化,以及训练量足够大的情况下,这个黑盒模型将不仅对训练数据有较高的准确率,也往往能对未知的实际输入给出正确的返回。这样的模型就是一个训练好的可以实际使用的模型。
对机器学习模型的训练是一项很重的工作,CoreML所扮演的角色更多的是将已经训练好的模型转换为iOS可以理解的形式,并且将新的数据“喂给”模型,获取输出。抽象问题和创建模型虽然并不难,但是对模型的改进和训练可以说是值得研究一辈子的事情,这篇文章的读者可能也不太会对此感冒。好在Apple提供了一系列的工具用来将各类机器学习模型转换为CoreML可以理解的形式。籍此,你就可以轻松地在你的iOSapp里使用前人训练出的模型。这在以前可能会需要你自己去寻找模型,然后写一些C++的代码来跨平台调用,而且难以利用iOS设备的GPU性能和Metal(除非你自己写一些shader来进行矩阵运算)。CoreML将使用模型的门槛降低了很多。
CoreML开发APP在背后驱动了iOS的视觉识别的Vision框架和Foundation中的语义分析相关API。普通开发者可以从这些高层的API中直接获益,比如人脸图片或者文字识别等。这部分内容在以前版本的SDK中也存在,不过在iOS11SDK中它们被集中到了新的框架中,并将一些更具体和底层的控制开放出来。比如你可以使用Vision中的高层接口,但是同时指定底层所使用的模型。这给iOS的计算机视觉带来了新的可能。Google或者Samsung在AndroidAI上的努力,大多是在自带的应用中集成服务。相比起来,Apple基于对自己生态和硬件的控制,将更多的选择权交给了第三方开发者。
ARKit,Keynote开发APP上的AR的演示可以说是唯一的亮点了。iOSSDK11中Apple给开发者,特别是AR相关的开发者带来了一个很棒的礼物,那就是ARKit。AR可以说并非什么新技术,像是PokémonGo这样的游戏也验证了AR在游戏上的潜力。不过除了IP和新鲜感之外,个人认为PokémonGo并没有资格代表AR技术的潜力。现场的演示像我们展示了一种可能,粗略看来,ARKit利用单镜头和陀螺仪,在对平面的识别和虚拟物体的稳定上做得相当出色。开发APP几乎可以肯定,那么不做最早,只做最好的Apple似乎在这一刻回到了舞台上
ARKit极大降低了普通开发者玩AR的门槛,也是Apple现阶段用来抗衡VR的选项。可以畅想一下更多类似PokémonGo的AR游戏(结合实境的虚拟宠物什么的大概是最容易想到的)能在ARKit和SceneKit的帮助下面世,甚至在iPadPro现有技能上做像是AR电影这样能全方位展示的多媒体可能也不再是单纯的梦想。
而与之相应的,是一套并不很复杂的API。涉及的View几乎是作为SceneKit的延伸,再加上在真实世界的定为也已经由系统帮助处理,开发者需要做的大抵就是将虚拟物体放在屏幕的合适位置,并让物体之间互动。而利用CoreML来对相机内的实际物体进行识别和交互,可以说也让各类特效的相机或者摄影app充满了想像空间。