iOS11真机运行CoreML图像识别demo(Object C 版)
2017年06月12日 由 Neo 发表
422814
0
前几天做了一版CoreML在模拟器上进行识别图片的demo,是使用官方推荐的swift语言编写的,今天抽空把CoreML在Object C上再基于上一版完善一些功能,实现拍照识别,相册识别。话不多说,先进行一下准备操作。
iOS 11怎么升级,虽然目前苹果仅放出了iOS11开发者预览版,但如果你有备用机,或者想先试试升级,在这里我们教你快速升级到iOS 11开发者预览版(需要注意的是,目前iOS11还处于开发者测试阶段,可能存在一些不稳定或bug,在此要提醒大家,如果你手中没有备用机,请不要随便升级,如果你真想提前体验iOS11,也请在升级前做好重要文件备份工作。)
1、在设备safari中打开以下链接
https://pan.baidu.com/s/1eRE1TdC
2、下载iOS 11描述文件
3、下载完以后会提示您安装此描述文件
4、点击需要安装的设备,然后按照流程确认安装
我本机已经升级到iOS 11就不往下一步进行了,安装完描述文件会提示您重启,重启后再设置-通用-软件更新里面就能看到iOS 11 Developer beta版升级提示了,点击下载并安装就可以和正常iOS升级操作一样升级到iOS11 beta,本人测试(iPhone 6s Plus)升级过程持续20分钟。
升级成功~enjoy,支持3D-Touch的控制中心~赞
所有准备工作完成后开始coding。
1、在xcode中创建一个新的OC工程,导入下载的机器学习模型,项目结构如图。
2、上一篇swift版我们是直接使用机器学习模型中提供的方法来处理图片进行识别的,今天我们借助系统Vision库中的VNCoreMLModel,VNCoreMLRequest,VNImageRequestHandler来完成我们今天的功能,关键开始识别方法[vnImageRequestHandler performRequests:@[vnCoreMlRequest] error:&error];识别完成会回调vnCoreMlRequest 的completionHandler,其返回的结果是一个VNClassificationObservation数组,每一个VNClassificationObservation都是一个识别的结果,我们要从里面选出匹配率最高的一个结果出来。具体的Vision库使用可以看看官方文档
https://developer.apple.com/documentation/vision
主要程序实现代码如下
VNClassificationObservation对象有两个参数
1.confidence 识别率,值越高应该是越接近的
2.identifier 识别结果
最后来看看CoreML识别结果:
看到什么拍什么,识别率还不错….have fun
最后,拿来主义:
http://pan.baidu.com/s/1mhPKWnI