在移动设备上运行模型可以加快推理速度,或解锁新的功能、能力和用例,例如增强现实。将定制的计算机视觉模型嵌入原生移动应用中,使开发者能够赋予应用视觉感知能力。
以下是iOS SDK支持的任务类型:
所有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是否成功安装。
导航到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
还提供了一个将此SDK集成到Expo应用中的React Native示例。当考虑构建自己的下游应用时,可能会发现这很有用。确保已经安装了Expo和CocoaPods。