기본 요건
코드 이전을 시작하기 전에 다음 요구사항을 충족하는지 확인하세요.
- ML Kit는 Xcode 13.2.1 이상을 지원합니다.
- ML Kit는 iOS 버전 10 이상을 지원합니다.
- ML Kit는 32비트 아키텍처 (i386 및 armv7)를 지원하지 않습니다. ML Kit는 64비트 아키텍처 (x86_64 및 arm64)를 지원합니다.
- ML Kit 라이브러리는 CocoaPods로만 제공됩니다. 프레임워크와 CocoaPods를 혼합할 수 없으므로 이 라이브러리를 사용하려면 먼저 CocoaPods를 사용하도록 이전해야 합니다.
CocoaPods 업데이트
앱의 Podfile에서 ML Kit iOS CocoaPods의 종속 항목을 업데이트합니다.
API | 이전 포드 이름 | 새 포드 이름 |
---|---|---|
바코드 스캔 | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
얼굴 인식 | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
이미지 라벨 지정 | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/이미지 라벨 지정 |
객체 감지 및 추적 | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
텍스트 인식 | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/텍스트 인식 |
AutoML 이미지 라벨 지정 (번들 모델) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
AutoML 이미지 라벨 지정 (Firebase에서 모델 다운로드) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
언어 ID | Firebase/MLNaturalLanguage Firebase/MLNL언어ID |
GoogleMLKit/LanguageID |
스마트 답장 | Firebase/MLNaturalLanguage Firebase/MLNL스마트답장 |
GoogleMLKit/SmartReply |
번역 | Firebase/MLNaturalLanguage Firebase/MLNL번역 |
GoogleMLKit/번역 |
클래스, enum 및 유형의 이름 업데이트
일반적으로 클래스 , enum 및 유형의 이름은 다음과 같이 변경해야 합니다.
- Swift: 클래스 이름 및 enum에서
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
enum 다음의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:)
의 이름이 다음으로 변경되었습니다.process(_:, completion:)
가 다른 Vision API와 일관되도록 합니다.Natural Language API는 이제 '언어 태그'라는 용어를 사용합니다. ( BCP-47 표준)을 사용합니다.
이제
TranslateLanguage
가 상수에 읽을 수 있는 이름 (예: .english)을 사용합니다. 을 입력합니다 ( 예: .en).
다음은 기존 및 신규 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
enum
.unknown
카테고리는 삭제되었습니다. 분류의 신뢰도가 높으면
객체가 낮다면 분류기가 라벨을 전혀 반환하지 않습니다.
다음은 이전 Swift 코드와 새 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 코드와 새 Objective-C 코드의 예입니다.
변경 전
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
신규
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Firebase 종속 항목 삭제 (선택사항)
이 단계는 다음 조건이 충족되는 경우에만 적용됩니다.
- Firebase ML Kit는 Firebase 구성요소 중 유일하게 사용하는 구성요소임
- 온디바이스 API만 사용
- 모델 서빙을 사용하지 않는 경우
이 경우 마이그레이션 후 Firebase 종속 항목을 삭제할 수 있습니다. 다음 단계를 따르세요.
- GoogleService-Info.plist를 삭제하여 Firebase 구성 파일을 삭제합니다. Xcode 프로젝트에서 가져온 것입니다.
- Podfile에서
pod 'Firebase/Analytics'
와 같은 Firebase CocoaPods를 삭제합니다. - 코드에서
FirebaseApp.configure()
와 같은 FirebaseApp 초기화를 삭제합니다. - Firebase Console에서 다음에 해당하는 Firebase 앱 삭제 Firebase 지원 사이트의 안내를 참조하세요.
도움말 보기
문제가 발생하면 YouTube에서 설명하는 커뮤니티 페이지를 확인하세요. 문의하실 수 있는 채널을 확인하세요.