前提条件
コードの移行を開始する前に、次の要件を満たしていることを確認してください。
- ML Kit は Xcode 13.2.1 以降をサポートしています。
- ML Kit は iOS バージョン 10 以降をサポートしています。
- ML Kit は、32 ビット アーキテクチャ(i386 と armv7)をサポートしていません。ML Kit は 64 ビット アーキテクチャ(x86_64 と arm64)をサポートしています。
- ML Kit ライブラリは cocoapods としてのみ提供されます。フレームワークと cocoapod を混在させることはできないため、このライブラリを使用するには、まず cocoapods を使用するように移行する必要があります。
Cocoapods を更新する
アプリの Podfile で ML Kit の iOS cocoapods の依存関係を更新します。
API | 古い Pod 名 | 新しい Pod 名 |
---|---|---|
バーコード スキャン | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
顔検出 | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
画像ラベル付け | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
オブジェクトの検出とトラッキング | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
テキスト認識 | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
AutoML 画像のラベル付け(バンドルモデル) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
AutoML 画像のラベル付け(Firebase からのモデルのダウンロード) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
言語 ID | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
スマート リプライ | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
翻訳 | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
クラス、列挙型、型の名前を更新する
一般に、クラス、列挙型、型の名前は、次のように変更する必要があります。
- Swift: クラス名と列挙型から
Vision
接頭辞を削除 - Objective-C:
FIRVision
とFIR
の両方のクラス名と列挙型接頭辞の置き換え 作成者:MLK
一部のクラス名と型では、この一般的なルールは適用されません。
Swift
以前のクラスまたは型 | 新しいクラスまたは型 |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage(変更なし) |
VisionPoint | VisionPoint(変更なし) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
以前のクラスまたは型 | 新しいクラスまたは型 |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
メソッド名を更新する
次のルールに従ってメソッド名を更新します。
ドメイン エントリ ポイント クラス(
Vision
、NaturalLanguage
)が存在しません。。 タスク固有のクラスに置き換えられました。 検出機能を取得するためのさまざまなファクトリ メソッドの呼び出しを 各検出機能のファクトリ メソッドを直接呼び出します。VisionImageMetadata
クラスと、VisionDetectorImageOrientation
列挙型。次のorientation
プロパティを使用します:VisionImage
: 画像の表示向きを指定します。新しい
TextRecognizer
インスタンスを取得するonDeviceTextRecognizer
メソッドは次のようになります。 名前はtextRecognizer
に変更されました。信頼度のプロパティがテキストから削除されました
TextElement
、TextLine
、TextBlock
などの認識結果クラス。onDeviceImageLabeler
メソッドとonDeviceImageLabeler(options:)
メソッド: 新しいImageLabeler
インスタンスを統合し、名前をimageLabeler(options:)
。新しい
ObjectDetector
インスタンスを取得するためのobjectDetector
メソッドが削除されました。 代わりにobjectDetector(options:)
を使用してください。type
プロパティはImageLabeler
から削除され、entityID
プロパティが画像ラベル付け結果クラスImageLabel
から削除されました。バーコード スキャン API
detect(in _:, completion:)
の名前が次のように変更されました: 他の Vision API と一致するようにprocess(_:, completion:)
。Natural Language API では「言語タグ」という用語を使用するようになりました( BCP-47 標準)を使用します。
TranslateLanguage
が定数に読みやすい名前(.english など)を使用するようになりました (.en など)は使用しないでください。
以下に、古い Swift メソッドと新しい Swift メソッドの例を示します。
旧
let options = VisionOnDeviceImageLabelerOptions() options.confidenceThreshold = 0.75 let labeler = Vision.vision().onDeviceImageLabeler(options: options) let detector = Vision.vision().faceDetector(options: options) let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json") let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel) options.confidenceThreshold = 0.75 let labeler = vision.onDeviceAutoMLImageLabeler(options: options) let detector = Vision.vision().objectDetector()
新規
let options = ImageLabelerOptions() options.confidenceThreshold = NSNumber(value:0.75) let labeler = ImageLabeler.imageLabeler(options: options) let detector = FaceDetector.faceDetector(options: options) let localModel = LocalModel(manifestPath: "automl/manifest.json") let options = CustomImageLabelerOptions(localModel: localModel) options.confidenceThreshold = NSNumber(value:0.75) let labeler = ImageLabeler.imageLabeler(options: options) let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
Objective-C の古いメソッドと新しいメソッドの例を次に示します。
旧
FIRVisionOnDeviceImageLabelerOptions *options = [[FIRVisionOnDeviceImageLabelerOptions alloc] init]; options.confidenceThreshold = 0.75; FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceImageLabelerWithOptions:options]; FIRVisionFaceDetector *detector = [[FIRVision vision] faceDetectorWithOptions: options]; FIRAutoMLLocalModel *localModel = [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; FIRVisionOnDeviceAutoMLImageLabelerOptions *options = [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc] initWithLocalModel: localModel]; options.confidenceThreshold = 0.75 FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options]; FIRVisionObjectDetector *detector = [[FIRVision vision] objectDetector];
新規
MLKImageLabelerOptions *options = [[MLKImageLabelerOptions alloc] init]; options.confidenceThreshold = @(0.75); MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKFaceDetector *detector = [MLKFaceDetector faceDetectorWithOptions:options]; MLKLocalModel *localModel = [[MLKLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; MLKCustomImageLabelerOptions *options = [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel]; options.confidenceThreshold = @(0.75) MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init]; MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
API 固有の変更
オブジェクトの検出とトラッキング
アプリでオブジェクト分類を使用している場合は、新しい SDK が変更されていることに注意してください。 検出されたオブジェクトの分類カテゴリを返します。
VisionObject
の VisionObjectCategory
は、ObjectLabel
で text
として返されます。
オブジェクトです。可能なすべての文字列カテゴリが
DetectedObjectLabel
列挙値。
.unknown
カテゴリが削除されていることに注意してください。分類の信頼度が
低い場合、分類器はラベルをまったく返しません。
新旧の Swift コードの例を次に示します。
旧
if (object.classificationCategory == .food) { ... }
新規
if let label = object.labels.first { if (label.text == DetectedObjectLabel.food.rawValue) { ... } } // or if let label = object.labels.first { if (label.index == DetectedObjectLabelIndex.food.rawValue) { ... } }
新旧の Objective-C コードの例を次に示します。
旧
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
新規
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Firebase の依存関係を削除する(省略可)
このステップは、次の条件が満たされる場合にのみ適用されます。
- 使用する Firebase コンポーネントが Firebase ML Kit のみである
- オンデバイス API のみを使用している
- モデルのサービングを使用しない
その場合は、移行後に Firebase の依存関係を削除できます。 手順は次のとおりです。
- GoogleService-Info.plist を削除して Firebase 構成ファイルを削除します。 このファイルは、アプリのディレクトリと Xcode プロジェクトから取得できます。
- Podfile から
pod 'Firebase/Analytics'
などの Firebase cocoapod を削除します。 FirebaseApp.configure()
などの FirebaseApp の初期化をコードから削除します。- Firebase コンソールで Firebase アプリを削除する Firebase サポートサイトの手順をご覧ください。
ヘルプ
問題が発生した場合は、コミュニティ ページで概要をご確認ください。 問い合わせ用のチャネルが表示されます