diff --git a/tensorflow/lite/tools/benchmark/README.md b/tensorflow/lite/tools/benchmark/README.md index a4f632c40a9..c44129cbbd3 100644 --- a/tensorflow/lite/tools/benchmark/README.md +++ b/tensorflow/lite/tools/benchmark/README.md @@ -87,6 +87,7 @@ the reported data on hexagon is in cycles, not in ms like on cpu. #### CoreML delegate * `use_coreml`: `bool` (default=false) +* `coreml_version`: `int` (default=0) #### External delegate * `external_delegate_path`: `string` (default="") diff --git a/tensorflow/lite/tools/delegates/README.md b/tensorflow/lite/tools/delegates/README.md index f0e15e9e71a..709fcffb24d 100644 --- a/tensorflow/lite/tools/delegates/README.md +++ b/tensorflow/lite/tools/delegates/README.md @@ -93,6 +93,9 @@ TFLite delegate. * `use_coreml`: `bool` (default=false) \ Whether to use the [Core ML delegate](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/delegates/coreml). This option is only available in iOS. +* `coreml_version`: `int` (default=0) \ + Target Core ML version for model conversion. The default value is 0 and it + means using the newest version that's available on the device. ### External delegate provider * `external_delegate_path`: `string` (default="") \ diff --git a/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc b/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc index 0d1a8ade368..c29555716a4 100644 --- a/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc +++ b/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc @@ -32,6 +32,7 @@ class CoreMlDelegateProvider : public DelegateProvider { CoreMlDelegateProvider() { #if defined(REAL_IPHONE_DEVICE) default_params_.AddParam("use_coreml", ToolParam::Create(true)); + default_params_.AddParam("coreml_version", ToolParam::Create(0)); #endif } std::vector CreateFlags(ToolParams* params) const final; @@ -49,6 +50,10 @@ std::vector CoreMlDelegateProvider::CreateFlags( #if defined(REAL_IPHONE_DEVICE) std::vector flags = { CreateFlag("use_coreml", params, "use Core ML"), + CreateFlag("coreml_version", params, + "Target Core ML version for model conversion. " + "The default value is 0 and it means using the newest " + "version that's available on the device."), }; return flags; #else @@ -71,6 +76,7 @@ TfLiteDelegatePtr CoreMlDelegateProvider::CreateTfLiteDelegate( if (params.Get("use_coreml")) { TfLiteCoreMlDelegateOptions coreml_opts = { .enabled_devices = TfLiteCoreMlDelegateAllDevices}; + coreml_opts.coreml_version = params.Get("coreml_version"); coreml_opts.max_delegated_partitions = params.Get("max_delegated_partitions"); coreml_opts.min_nodes_per_partition =