From a7f3321dbb528de0590202eab9fafe9e7dd2ba40 Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Thu, 14 Dec 2023 09:21:40 +0530 Subject: [PATCH 1/5] Fixed issue with iOS Language Detector Prediction Count --- .../language_detector/MPPLanguageDetectorTests.mm | 12 ++++++++++-- .../sources/MPPLanguageDetectorOptions.m | 2 +- .../sources/MPPLanguageDetectorOptions+Helpers.mm | 7 +++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm index 28d2ea5c0..f1186e68d 100644 --- a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm +++ b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm @@ -113,9 +113,15 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; NSArray *expectedRuLanguagePredictions = @[ [[MPPLanguagePrediction alloc] initWithLanguageCode:@"ru" probability:0.9933616f] ]; - [self assertResultsOfDetectLanguageOfText:ruText + NSString *zhText = @"分久必合合久必分"; + NSArray *expectedZhLanguagePredictions = @[ + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"zh" probability:0.505424f], + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"ja" probability:0.481617f] + ]; + + [self assertResultsOfDetectLanguageOfText:zhText usingLanguageDetector:languageDetector - approximatelyEqualsExpectedLanguagePredictions:expectedRuLanguagePredictions]; + approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; } #pragma mark Assert Segmenter Results @@ -125,6 +131,8 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; (NSArray *)expectedLanguagePredictions { MPPLanguageDetectorResult *result = [languageDetector detectText:text error:nil]; XCTAssertNotNil(result); + + XCTAssertEqual(result.languagePredictions.count, expectedLanguagePredictions.count); XCTAssertEqualWithAccuracy(result.languagePredictions[0].probability, expectedLanguagePredictions[0].probability, 1e-3); XCTAssertEqualObjects(result.languagePredictions[0].languageCode, diff --git a/mediapipe/tasks/ios/text/language_detector/sources/MPPLanguageDetectorOptions.m b/mediapipe/tasks/ios/text/language_detector/sources/MPPLanguageDetectorOptions.m index df36493ef..9113a9a47 100644 --- a/mediapipe/tasks/ios/text/language_detector/sources/MPPLanguageDetectorOptions.m +++ b/mediapipe/tasks/ios/text/language_detector/sources/MPPLanguageDetectorOptions.m @@ -20,7 +20,7 @@ self = [super init]; if (self) { _maxResults = -1; - _scoreThreshold = 0; + _scoreThreshold = -1.0f; } return self; } diff --git a/mediapipe/tasks/ios/text/language_detector/utils/sources/MPPLanguageDetectorOptions+Helpers.mm b/mediapipe/tasks/ios/text/language_detector/utils/sources/MPPLanguageDetectorOptions+Helpers.mm index 9d75105b4..45cad7a18 100644 --- a/mediapipe/tasks/ios/text/language_detector/utils/sources/MPPLanguageDetectorOptions+Helpers.mm +++ b/mediapipe/tasks/ios/text/language_detector/utils/sources/MPPLanguageDetectorOptions+Helpers.mm @@ -40,9 +40,12 @@ using ClassifierOptionsProto = ::mediapipe::tasks::components::processors::proto if (self.displayNamesLocale) { classifierOptionsProto->set_display_names_locale(self.displayNamesLocale.cppString); } - + classifierOptionsProto->set_max_results((int)self.maxResults); - classifierOptionsProto->set_score_threshold(self.scoreThreshold); + + if (self.scoreThreshold >= 0) { + classifierOptionsProto->set_score_threshold(self.scoreThreshold); + } for (NSString *category in self.categoryAllowlist) { classifierOptionsProto->add_category_allowlist(category.cppString); From ba8316abd3652e25920e5aa38fd22118c496c43d Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Fri, 22 Dec 2023 20:59:22 +0530 Subject: [PATCH 2/5] Reverted removal of a line in MPPLanguageDetectorTests.mm --- .../test/text/language_detector/MPPLanguageDetectorTests.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm index f1186e68d..ad0b0eb92 100644 --- a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm +++ b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm @@ -113,6 +113,10 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; NSArray *expectedRuLanguagePredictions = @[ [[MPPLanguagePrediction alloc] initWithLanguageCode:@"ru" probability:0.9933616f] ]; + [self assertResultsOfDetectLanguageOfText:ruText + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedRuLanguagePredictions]; + NSString *zhText = @"分久必合合久必分"; NSArray *expectedZhLanguagePredictions = @[ [[MPPLanguagePrediction alloc] initWithLanguageCode:@"zh" probability:0.505424f], From 7fab4dbce858178811d8277831bd04f670dc4d5e Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Fri, 22 Dec 2023 21:11:56 +0530 Subject: [PATCH 3/5] Fixed formatting --- .../test/text/language_detector/MPPLanguageDetectorTests.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm index ad0b0eb92..725c88ccb 100644 --- a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm +++ b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm @@ -114,8 +114,8 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; @[ [[MPPLanguagePrediction alloc] initWithLanguageCode:@"ru" probability:0.9933616f] ]; [self assertResultsOfDetectLanguageOfText:ruText - usingLanguageDetector:languageDetector - approximatelyEqualsExpectedLanguagePredictions:expectedRuLanguagePredictions]; + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedRuLanguagePredictions]; NSString *zhText = @"分久必合合久必分"; NSArray *expectedZhLanguagePredictions = @[ From 9f272488ff5554664d4c5a38dcf98e29e0293098 Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Fri, 22 Dec 2023 21:38:47 +0530 Subject: [PATCH 4/5] Added option tests to iOS Language Detector Tests --- .../MPPLanguageDetectorTests.mm | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm index 725c88ccb..1b738a124 100644 --- a/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm +++ b/mediapipe/tasks/ios/test/text/language_detector/MPPLanguageDetectorTests.mm @@ -128,6 +128,72 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; } +- (void)testClassifyWithMaxResultsSucceeds { + MPPLanguageDetectorOptions *options = + [self languageDetectorOptionsWithModelFileInfo:kLanguageDetectorModelFileInfo]; + options.maxResults = 1; + MPPLanguageDetector *languageDetector = [self createLanguageDetectorWithOptionsSucceeds:options]; + + NSString *zhText = @"分久必合合久必分"; + NSArray *expectedZhLanguagePredictions = @[ + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"zh" probability:0.505424f], + ]; + + [self assertResultsOfDetectLanguageOfText:zhText + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; +} + +- (void)testClassifyWithScoreThresholdSucceeds { + MPPLanguageDetectorOptions *options = + [self languageDetectorOptionsWithModelFileInfo:kLanguageDetectorModelFileInfo]; + options.scoreThreshold = 0.5f; + MPPLanguageDetector *languageDetector = [self createLanguageDetectorWithOptionsSucceeds:options]; + + NSString *zhText = @"分久必合合久必分"; + NSArray *expectedZhLanguagePredictions = @[ + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"zh" probability:0.505424f], + ]; + + [self assertResultsOfDetectLanguageOfText:zhText + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; +} + +- (void)testClassifyWithCategoryAllowListSucceeds { + MPPLanguageDetectorOptions *options = + [self languageDetectorOptionsWithModelFileInfo:kLanguageDetectorModelFileInfo]; + options.categoryAllowlist = @[ @"zh" ]; + + MPPLanguageDetector *languageDetector = [self createLanguageDetectorWithOptionsSucceeds:options]; + + NSString *zhText = @"分久必合合久必分"; + NSArray *expectedZhLanguagePredictions = @[ + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"zh" probability:0.505424f], + ]; + + [self assertResultsOfDetectLanguageOfText:zhText + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; +} + +- (void)testClassifyWithCategoryDenyListSucceeds { + MPPLanguageDetectorOptions *options = + [self languageDetectorOptionsWithModelFileInfo:kLanguageDetectorModelFileInfo]; + options.categoryDenylist = @[ @"zh" ]; + + MPPLanguageDetector *languageDetector = [self createLanguageDetectorWithOptionsSucceeds:options]; + + NSString *zhText = @"分久必合合久必分"; + NSArray *expectedZhLanguagePredictions = @[ + [[MPPLanguagePrediction alloc] initWithLanguageCode:@"ja" probability:0.481617f], + ]; + + [self assertResultsOfDetectLanguageOfText:zhText + usingLanguageDetector:languageDetector + approximatelyEqualsExpectedLanguagePredictions:expectedZhLanguagePredictions]; +} + #pragma mark Assert Segmenter Results - (void)assertResultsOfDetectLanguageOfText:(NSString *)text usingLanguageDetector:(MPPLanguageDetector *)languageDetector From a0c482f72012a18ee9a57b0cd14d41d53cb27526 Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Fri, 22 Dec 2023 21:39:00 +0530 Subject: [PATCH 5/5] Added iOS language detector to Cocoapods build --- mediapipe/tasks/ios/BUILD | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mediapipe/tasks/ios/BUILD b/mediapipe/tasks/ios/BUILD index 88b99ffec..c4dcf82d8 100644 --- a/mediapipe/tasks/ios/BUILD +++ b/mediapipe/tasks/ios/BUILD @@ -82,6 +82,9 @@ strip_api_include_path_prefix( "//mediapipe/tasks/ios/text/text_embedder:sources/MPPTextEmbedder.h", "//mediapipe/tasks/ios/text/text_embedder:sources/MPPTextEmbedderOptions.h", "//mediapipe/tasks/ios/text/text_embedder:sources/MPPTextEmbedderResult.h", + "//mediapipe/tasks/ios/text/language_detector:sources/MPPLanguageDetector.h", + "//mediapipe/tasks/ios/text/language_detector:sources/MPPLanguageDetectorOptions.h", + "//mediapipe/tasks/ios/text/language_detector:sources/MPPLanguageDetectorResult.h", "//mediapipe/tasks/ios/vision/core:sources/MPPRunningMode.h", "//mediapipe/tasks/ios/vision/core:sources/MPPImage.h", "//mediapipe/tasks/ios/vision/core:sources/MPPMask.h", @@ -143,10 +146,14 @@ apple_static_xcframework( ":MPPTextEmbedder.h", ":MPPTextEmbedderOptions.h", ":MPPTextEmbedderResult.h", + ":MPPLanguageDetector.h", + ":MPPLanguageDetectorOptions.h", + ":MPPLanguageDetectorResult.h", ], deps = [ "//mediapipe/tasks/ios/text/text_classifier:MPPTextClassifier", "//mediapipe/tasks/ios/text/text_embedder:MPPTextEmbedder", + "//mediapipe/tasks/ios/text/language_detector:MPPLanguageDetector", ], )