CustomVision 1.0.0

CustomVision 1.0.0

Colby Williams维护。



  • Colby Williams

CustomVision

Microsoft的Custom Vision服务的Swift SDK

特性

系统要求

  • iOS 11.0+ / Mac OS X 10.11+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 9.3+
  • Swift 4.1+
  • Custom Vision 账户

安装

Carthage

Carthage 是一个去中心化的依赖管理器,它可以构建您的依赖并提供二进制框架。

您可以使用以下命令通过 Homebrew 安装 Carthage

$ brew update
...
$ brew install carthage

要使用 Carthage 将 CustomVision 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "colbylwilliams/CustomVision"

运行 carthage update 命令以构建框架,并将构建的 CustomVision.framework 拖入您的 Xcode 项目中。

CocoaPods

即将推出

Swift Package Manager

即将推出

用法

要开始使用 CustomVision,您需要向 SDK 提供您的 训练密钥预测密钥

如果您正在处理单个 项目,您还可以提供一个默认项目 ID,该项目 ID 将用于每个项目操作 (而不是每次都传递它)

提供训练密钥、预测密钥和项目 ID 有两种方式:编程方式或将其添加到 plist 文件中

编程方式

提供这些值并开始使用 SDK 的最简单方法是编程设置这些值

CustomVisionClient.defaultProjectId     = "CUSTOM_VISION_PROJECT_ID"
CustomVisionClient.subscriptionRegion   = "CUSTOM_VISION_PROJECT_ID"
CustomVisionClient.shared.trainingKey   = "CUSTOM_VISION_TRAINING_KEY"
CustomVisionClient.shared.predictionKey = "CUSTOM_VISION_PREDICTION_KEY"

CustomVisionClient.shared.getIterations { r in
    // r.resource is [Iteration]
}

plist 文件

您还可以将这些值放在项目的 info.plist 文件中,一个独立的 CustomVision.plist 文件中,或者提供您自己的 plist 文件以供使用。

只需添加 CustomVisionTrainingKeyCustomVisionPredictionKeyCustomVisionProjectIdCustomVisionSubscriptionRegion 键,并分别提供您的训练密钥、预测密钥和默认项目 ID。

注意:此方法仅供快速开发示例使用,不建议在生产应用程序中将这些值放入 plist 文件中。

Info.plist

...
<dict>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CustomVisionProjectId</key>
    <string>CUSTOM_VISION_PROJECT_ID</string>
    <key>CustomVisionTrainingKey</key>
    <string>CUSTOM_VISION_TRAINING_KEY</string>
    <key>CustomVisionPredictionKey</key>
    <string>CUSTOM_VISION_PREDICTION_KEY</string>
    <key>CustomVisionSubscriptionRegion</key>
    <string>CUSTOM_VISION_SUBSCRIPTION_REGION</string>
...

CustomVision.plist

或者添加一个 CustomVision.plist 文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CustomVisionProjectId</key>
    <string>CUSTOM_VISION_PROJECT_ID</string>
    <key>CustomVisionTrainingKey</key>
    <string>CUSTOM_VISION_TRAINING_KEY</string>
    <key>CustomVisionPredictionKey</key>
    <string>CUSTOM_VISION_PREDICTION_KEY</string>
    <key>CustomVisionSubscriptionRegion</key>
    <string>CUSTOM_VISION_SUBSCRIPTION_REGION</string>
</dict>
</plist>

命名的 plist

最后,您可以将 CustomVisionTrainingKeyCustomVisionPredictionKeyCustomVisionProjectIdCustomVisionSubscriptionRegion 键值对添加到项目 主程序包 中的任何 plist 中,并提供 plist 的名称

CustomVisionClient.shared.getKeysFrom(plistNamed: "SuperDuperDope")

训练图像

CustomVision SDK 添加了几个便利函数,让上传新的训练图像尽可能简单。

本例演示了在 Custom Vision 项目中创建一个新标签,然后上传一些新的训练图像到项目,并使用新创建的标签对每个图像进行标记。

let client = CustomVisionClient.shared

let tag = "New Tag"     // doesn't exist in project yet
let images: [UIImage] = // several UIImages

client.createImages(from: images, withNewTagNamed: name) { r in
    // r.resource is ImageCreateSummary
}

导出和下载 CoreML 模型

此 SDK 的一大优点是能够重新训练项目、导出 新的训练模型(迭代)、下载到手机的文件系统,并在设备上编译模型以用于 CoreML

func updateUser(message: String) {
    // update user
}

let client = CustomVisionClient.shared

client.trainAndDownloadCoreMLModel(withName: "myModel", progressUpdate: updateUser) { (success, message) in

}

一旦编译好的模型保存在设备的文件系统中(如上所述),您可通过客户端的 getModelUrl() 函数获取模型的 URL。

if let url = client.getModelUrl() {
    let myModel = try MLModel(contentsOf: url)
}

许可证

遵循MIT许可。详见LICENSE