作者介绍:
黄明,WWDC 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心iOS组leader,主要负责手Q个性化业务、手Q WebView等项目。作为终端开发也喜欢学习些图像图形方向的知识,同好者可以技术交流。生活中,休闲比较喜欢看书,娱乐比较喜欢电竞。
今天内容依然是Machine Learning(机器学习),让我们大家持续兴奋。
1. NLP(Nature Language Processing)
还在为终端分词而苦恼吗?没有好的分词算法?分词词库太大?今天参加了我昨日提到的NLP(Nature Language Processing)的session,关于终端分词问题,苹果为广大开发者提供了统一解决方案。
如昨天所述,NLP是建立在Core ML的基础之上,使用Machine Learning来实现语言处理。具体的API在已有的NSLinguisticTagger中做了扩展。NSLinguistic Tagger提供了众多能力,你只要输入文本,指定具体scheme,它就自动帮你完成相关工作。
这些能力包括:
session中用demo演示了使用NLP的图片描述搜索,效果不错,使用不同时态的同一个词都可以搜索到相关的图片。
NLP目前的准确率,session中给出了大概数据,如下图:
例如,词性划分和命名实体识别在英语和西班牙语下都达到了80%以上的准确率。
NLP的性能如何呢?session中也给了大概结论,如下图:
在子线程做异步处理看起来是问题不大的。
NLP底层使用Core ML实现,因此它也需要ML MODEL,目前NLP的ML MODEL是从苹果后台下载的,这样苹果可以随时更新更好的ML MODEL给用户。当然如果下载失败,NLP的调用也可能失败,因此开发者需要做好异常处理。
怎么样?好想用一用是吧?不过遗憾的告诉中国开发者,部分能力还没支持中文(上述3、词性划分(Part of Speech)、4、词性还原(Lemmatization):如各种单词不同时态还原成原词、5、命名实体识别)。
原因应该是中文处理比起英文还是要难做一些,相信苹果在不久一定会提供中文支持的。大家敬请期待吧~
2. Vision
Vision和NLP是同一层级的Framework,都是建立在Core ML基础之上,NLP处理语言,Vision则处理视觉。开发者可以使用Vision来做各种关于图像的Machine Learning处理,如人脸检测(Face Detection:Machine Learning的人脸检测可以检测更多场景下的人脸,比如侧脸,戴眼镜都可以检测出)、人脸标记(Face Landmarks)、图像配准(Image registration)、矩形探测(Rectangle Detection),扫描二维码(Barcode Detection)、文字检测(Text Detection)、物体追踪(Object Tracking)等。
Vision是一个高层次API,为开发者封装了复杂的机器视觉实现,开发者不需要成为一个机器视觉的专家,只需要明白自己需要什么,就可以使用Vision轻易完成。记住两个关键API:VNImageRequestHandler、VNSequnenceRequestHandler。一个处理单张图片,一个处理序列图片如摄像头实时捕捉的场景。使用两个Handler perform对应的Request就可以Observe到相关结果了,使用起来真的非常方便。如下图:
更详细的应用请参加已公开文档:https://developer.apple.com/documentation/vision。
有没有觉得原来不可以想象的事情,随着Machine Learning的普遍应用,通过苹果的良好封装,都变得如此的简单。
3. Depth
Depth,这个概念真的很神奇,WWDC第一天有提到对开发者放开Depth信息的获取。那么到底Depth是个什么东西呢?
Depth就如其本意,是代表深度,在图像领域即是图像的深度信息。在iPhone 7P以上的双摄像头机型才能支持,原因很简单,iPhone的镜头是双摄像头,两个摄像头才能获取到图像的深度信息,就如人的双眼。
Depth信息有什么用呢?可以来做更复杂的图像处理,如处理人物背景:
更复杂的应用在AR中也有体现。
Depth提供的是一个很底层的能力,对于APP上层开发者可能应用场景不多,但是对于图像处理的专业人员来说,他们可以拥有多一维的深度信息,对图像摆弄的空间将会大大增加。session中有基本原理的介绍,专业人士可以后续查看相关视频详细了解。
怎么获取深度信息呢?下图让你一目了然:
4. WKWebview
WKWebview又有了相关更新。新的WKWebview支持Cookie设置、支持过滤内容,支持提供自定义资源。使用WKHTTPCookieStore可以轻松设置和管理cookie:
使用WKContentRuleList可以过滤内容:
使用WKURLSchemeHandler可以拦截URL的内容:
咋眼一看以为和UIWebview的能力一致,但细看还不一定,只能拦截WKWebview不会处理的URL Scheme:
众多使用UIWebview拦截请求的各种机制能否顺利切换到WKWebview仍然还是一个问号,需要大家继续研究。
最后有一些零散的信息分享: