iOS设备上的计算机视觉模型部署

在移动设备上运行模型可以加快推理速度,或解锁新的功能、能力和用例,例如增强现实。将定制的计算机视觉模型嵌入原生移动应用中,使开发者能够赋予应用视觉感知能力。

支持的任务类型

以下是iOS SDK支持的任务类型:

  • 目标检测
  • 分类
  • 实例分割
  • 语义分割

在iOS设备上部署模型

所有iOS设备都支持设备上的推理,但iPhone 8(A11 Bionic处理器)及更早的设备将回退到效率较低的GPU引擎。Roboflow要求最低iOS版本为15.4。

原型开发

可以使用Roboflow托管的推理API进行开发。它使用与设备推理相同的训练模型。

安装

安装CocoaPods,它是用Ruby构建的,可以在macOS上默认的Ruby上安装。可以使用Ruby版本管理器,但建议使用macOS上默认的Ruby,除非知道自己在做什么。使用默认的Ruby安装将需要在安装gems时使用sudo(这只是一个gem安装过程中的问题)。

"无需sudo"的安装是一个选项,如果不想为这个过程授予RubyGems管理员权限。但请注意,使用sudo安装更为典型。

通过在终端输入pod --version来检查CocoaPods是否成功安装。

首先,在项目目录中运行pod init。确保Podfile指定了platform :ios, '15.4'。接下来,在Podfile中添加pod 'Roboflow'

如果没有安装XCode命令行工具,运行终端中的xcode-select --install。这将返回:如果系统上已经安装了命令行工具,将显示xcode-select: error: command line tools are already installed, use "Software Update" to install updates

最后,运行pod install并在XCode中打开生成的.xcworkspace文件。

如果出现错误:"可能遇到了Ruby解释器或扩展库中的bug",那么首先运行brew install cocoapods,然后运行pod install并在XCode中打开生成的.xcworkspace文件。

通过在终端输入pod --version来检查CocoaPods是否成功安装。

在Swift中使用Roboflow

导航到XCode中的.xcworkspace文件。接下来,通过添加import Roboflow导入Roboflow。然后,使用let rf = Roboflow(apiKey: "API_KEY")创建Roboflow API的实例。对于modelVersion,将YOUR-MODEL-VERSION-#替换为模型版本号的整数值。

完成处理程序的使用:

import Roboflow // 使用API密钥初始化 let rf = RoboflowMobile(apiKey: "API_KEY") var model: RFObjectDetectionModel? ... // model是模型的项目名称 rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#) { [self] model, error, modelName, modelType in if error != nil { print(error?.localizedDescription as Any) } else { model?.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects) self.model = model } } ... // model?.detect接受一个UIImage并在其上运行推理 let img = UIImage(named: "example.jpeg") model?.detect(image: img!) { predictions, error in if error != nil { print(error) } else { print(predictions) } }

要异步使用,必须在异步块内调用Roboflow模型。

import Roboflow ... // 使用API密钥初始化 let rf = RoboflowMobile(apiKey: "API_KEY") ... // model是模型的项目名称 let (model, loadingError, modelName, modelType) = await rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#) model!.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects) ... // model?.detect接受一个UIImage并在其上运行推理 let img = UIImage(named: "example.jpeg") let (predictions, predictionError) = await model!.detect(image: img!) print(predictions)

预测格式

预测结果的格式如下:

x:Float //对象中心的x坐标 y:Float //对象中心的y坐标 width:Float height:Float className:String confidence:Float color:UIColor box:CGRect CGRect

React Native Expo应用示例

还提供了一个将此SDK集成到Expo应用中的React Native示例。当考虑构建自己的下游应用时,可能会发现这很有用。确保已经安装了Expo和CocoaPods。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485