From 1c3cf9f3f70290cb16df45554ab9ea8ac7d1eac9 Mon Sep 17 00:00:00 2001 From: gongdaguo Date: Thu, 17 Sep 2020 17:09:41 +0800 Subject: [PATCH] Using the mindspore1.0 Library and add lite test model --- .../lite/test/models_tflite_awaretraining.cfg | 2 ++ .../official/lite/image_classification/.gitignore | 2 +- .../lite/image_classification/app/CMakeLists.txt | 2 +- .../lite/image_classification/app/download.gradle | 2 +- .../app/src/main/cpp/MindSporeNetnative.cpp | 6 +++--- .../official/lite/object_detection/README.en.md | 13 ++++++++----- model_zoo/official/lite/object_detection/README.md | 14 +++++++++----- .../lite/object_detection/app/CMakeLists.txt | 2 +- .../lite/object_detection/app/download.gradle | 2 +- .../app/src/main/cpp/MindSporeNetnative.cpp | 6 +++--- 10 files changed, 30 insertions(+), 21 deletions(-) diff --git a/mindspore/lite/test/models_tflite_awaretraining.cfg b/mindspore/lite/test/models_tflite_awaretraining.cfg index 2fbab09c7d..b1becf6f52 100644 --- a/mindspore/lite/test/models_tflite_awaretraining.cfg +++ b/mindspore/lite/test/models_tflite_awaretraining.cfg @@ -22,6 +22,8 @@ inception_v1_224_quant.tflite inception_v3_quant.tflite inception_v4_299_quant.tflite graph_8bit_1021_combine.tflite +lite-model_aiy_vision_classifier_insects_V1_3.tflite +lite-model_aiy_vision_classifier_plants_V1_3.tflite lite-model_object_detection_mobile_object_labeler_v1_1.tflite detect.tflite ssd_mobilenet_v1_1_default_1.tflite diff --git a/model_zoo/official/lite/image_classification/.gitignore b/model_zoo/official/lite/image_classification/.gitignore index 475603d8a0..836b944df6 100644 --- a/model_zoo/official/lite/image_classification/.gitignore +++ b/model_zoo/official/lite/image_classification/.gitignore @@ -2,7 +2,7 @@ build/ mindspore/lib app/src/main/assets/model/ -app/src/main/cpp/mindspore-lite-0.7.0-minddata-arm64-cpu +app/src/main/cpp/mindspore-lite-* output *.ir mindspore/ccsrc/schema/inner/* diff --git a/model_zoo/official/lite/image_classification/app/CMakeLists.txt b/model_zoo/official/lite/image_classification/app/CMakeLists.txt index 2912792108..101089db85 100644 --- a/model_zoo/official/lite/image_classification/app/CMakeLists.txt +++ b/model_zoo/official/lite/image_classification/app/CMakeLists.txt @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.4.1) set(CMAKE_VERBOSE_MAKEFILE on) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) -set(MINDSPORELITE_VERSION mindspore-lite-0.7.0-minddata-arm64-cpu) +set(MINDSPORELITE_VERSION mindspore-lite-1.0.0-minddata-arm64-cpu) # ============== Set MindSpore Dependencies. ============= include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) diff --git a/model_zoo/official/lite/image_classification/app/download.gradle b/model_zoo/official/lite/image_classification/app/download.gradle index b1795f8c54..941328fd4b 100644 --- a/model_zoo/official/lite/image_classification/app/download.gradle +++ b/model_zoo/official/lite/image_classification/app/download.gradle @@ -4,7 +4,7 @@ * The libraries can be downloaded manually. */ def targetMindSporeInclude = "src/main/cpp/" -def mindsporeLite_Version = "mindspore-lite-0.7.0-minddata-arm64-cpu" +def mindsporeLite_Version = "mindspore-lite-1.0.0-minddata-arm64-cpu" def targetModelFile = "src/main/assets/model/mobilenetv2.ms" def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" diff --git a/model_zoo/official/lite/image_classification/app/src/main/cpp/MindSporeNetnative.cpp b/model_zoo/official/lite/image_classification/app/src/main/cpp/MindSporeNetnative.cpp index 8788a89291..75f022461b 100644 --- a/model_zoo/official/lite/image_classification/app/src/main/cpp/MindSporeNetnative.cpp +++ b/model_zoo/official/lite/image_classification/app/src/main/cpp/MindSporeNetnative.cpp @@ -243,9 +243,9 @@ bool PreProcessImageData(const LiteMat &lite_mat_bgr, LiteMat *lite_norm_mat_ptr MS_PRINT("Crop error"); return false; } - float means[3] = {0.485, 0.456, 0.406}; - float vars[3] = {1.0 / 0.229, 1.0 / 0.224, 1.0 / 0.225}; - SubStractMeanNormalize(lite_mat_cut, lite_norm_mat_cut, means, vars); + std::vector means = {0.485, 0.456, 0.406}; + std::vector stds = {0.229, 0.224, 0.225}; + SubStractMeanNormalize(lite_mat_cut, lite_norm_mat_cut, means, stds); return true; } diff --git a/model_zoo/official/lite/object_detection/README.en.md b/model_zoo/official/lite/object_detection/README.en.md index 883fe05f66..eae50bb03b 100644 --- a/model_zoo/official/lite/object_detection/README.en.md +++ b/model_zoo/official/lite/object_detection/README.en.md @@ -43,8 +43,7 @@ This object detection sample program on the Android device includes a Java layer ### Configuring MindSpore Lite Dependencies -In Android Studio, place the compiled `libmindspore-lite.so` library file (which can contain multiple compatible architectures) in the `app/libs/ARM64-V8a` (Arm64) or `app/libs/armeabi-v7a` (Arm32) directory of the application project. In the `build.gradle` file of the application, configure the compilation support of CMake, `arm64-v8a`, and `armeabi-v7a`.   - +In Android studio, the compiled mindpool-lite-x.x.x-mindata-armxx-cpu package (including ` libmindspot- lite.so `The library file and related header files, which can contain multiple compatible architectures), are unzipped and placed in the 'app / SRC / main / CPP' directory of the app project, and the` build.gradle `Cmake and 'arm64-v8a' and 'armeabi-v7a' are configured in the file as follows It is shown as follows: ``` android{ defaultConfig{ @@ -65,10 +64,14 @@ Create a link to the `.so` library file in the `app/CMakeLists.txt` file: ``` # Set MindSpore Lite Dependencies. -include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/MindSpore) +set(MINDSPORELITE_VERSION mindspore-lite-1.0.0-minddata-arm64-cpu) +include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}) add_library(mindspore-lite SHARED IMPORTED ) -set_target_properties(mindspore-lite PROPERTIES - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/libs/libmindspore-lite.so") +add_library(minddata-lite SHARED IMPORTED ) +set_target_properties(mindspore-lite PROPERTIES IMPORTED_LOCATION + ${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}/lib/libmindspore-lite.so) +set_target_properties(minddata-lite PROPERTIES IMPORTED_LOCATION + ${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}/lib/libminddata-lite.so) # Link target library. target_link_libraries( diff --git a/model_zoo/official/lite/object_detection/README.md b/model_zoo/official/lite/object_detection/README.md index d632cb7295..da3751f625 100644 --- a/model_zoo/official/lite/object_detection/README.md +++ b/model_zoo/official/lite/object_detection/README.md @@ -62,7 +62,7 @@ app | | └── ssd.ms # 存放模型文件 │ | │ ├── cpp # 模型加载和预测主要逻辑封装类 -| | ├── mindspore-lite-...-cpu # minspore源码编译出的调用包,包含demo jni层依赖的库文件及相关的头文件 +| | ├── mindspore-lite-x.x.x-mindata-arm64-cpu # minspore源码编译出的调用包,包含demo jni层依赖的库文件及相关的头文件 | | | └── ... │ | | | | ├── MindSporeNetnative.cpp # MindSpore调用相关的JNI方法 @@ -87,7 +87,7 @@ app Android JNI层调用MindSpore C++ API时,需要相关库文件支持。可通过MindSpore Lite[源码编译](https://www.mindspore.cn/lite/docs/zh-CN/master/deploy.html)生成`libmindspore-lite.so`库文件。 -在Android Studio中将编译完成的`libmindspore-lite.so`库文件(可包含多个兼容架构),分别放置在APP工程的`app/libs/arm64-v8a`(ARM64)或`app/libs/armeabi-v7a`(ARM32)目录下,并在app的`build.gradle`文件中配置CMake编译支持,以及`arm64-v8a`和`armeabi-v7a`的编译支持,如下所示: +在Android Studio中将编译完成的mindspore-lite-X.X.X-mindata-armXX-cpu压缩包(包含`libmindspore-lite.so`库文件和相关头文件,可包含多个兼容架构),解压之后放置在APP工程的`app/src/main/cpp`目录下,并在app的`build.gradle`文件中配置CMake编译支持,以及`arm64-v8a`和`armeabi-v7a`的编译支持,如下所示: ``` android{ defaultConfig{ @@ -108,10 +108,14 @@ android{ ``` # Set MindSpore Lite Dependencies. -include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/MindSpore) +set(MINDSPORELITE_VERSION mindspore-lite-1.0.0-minddata-arm64-cpu) +include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}) add_library(mindspore-lite SHARED IMPORTED ) -set_target_properties(mindspore-lite PROPERTIES - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/libs/libmindspore-lite.so") +add_library(minddata-lite SHARED IMPORTED ) +set_target_properties(mindspore-lite PROPERTIES IMPORTED_LOCATION + ${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}/lib/libmindspore-lite.so) +set_target_properties(minddata-lite PROPERTIES IMPORTED_LOCATION + ${CMAKE_SOURCE_DIR}/src/main/cpp/${MINDSPORELITE_VERSION}/lib/libminddata-lite.so) # Link target library. target_link_libraries( diff --git a/model_zoo/official/lite/object_detection/app/CMakeLists.txt b/model_zoo/official/lite/object_detection/app/CMakeLists.txt index c90ce2199a..0602b9879e 100644 --- a/model_zoo/official/lite/object_detection/app/CMakeLists.txt +++ b/model_zoo/official/lite/object_detection/app/CMakeLists.txt @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.4.1) set(CMAKE_VERBOSE_MAKEFILE on) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) -set(MINDSPORELITE_VERSION mindspore-lite-0.7.0-minddata-arm64-cpu) +set(MINDSPORELITE_VERSION mindspore-lite-1.0.0-minddata-arm64-cpu) # ============== Set MindSpore Dependencies. ============= include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) diff --git a/model_zoo/official/lite/object_detection/app/download.gradle b/model_zoo/official/lite/object_detection/app/download.gradle index 4ce258ce39..413eb8d3d1 100644 --- a/model_zoo/official/lite/object_detection/app/download.gradle +++ b/model_zoo/official/lite/object_detection/app/download.gradle @@ -4,7 +4,7 @@ * The libraries can be downloaded manually. */ def targetMindSporeInclude = "src/main/cpp/" -def mindsporeLite_Version = "mindspore-lite-0.7.0-minddata-arm64-cpu" +def mindsporeLite_Version = "mindspore-lite-1.0.0-minddata-arm64-cpu" def targetModelFile = "src/main/assets/model/ssd.ms" def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" diff --git a/model_zoo/official/lite/object_detection/app/src/main/cpp/MindSporeNetnative.cpp b/model_zoo/official/lite/object_detection/app/src/main/cpp/MindSporeNetnative.cpp index f47e65b1bc..7eeea33ac6 100644 --- a/model_zoo/official/lite/object_detection/app/src/main/cpp/MindSporeNetnative.cpp +++ b/model_zoo/official/lite/object_detection/app/src/main/cpp/MindSporeNetnative.cpp @@ -89,9 +89,9 @@ bool PreProcessImageData(const LiteMat &lite_mat_bgr, LiteMat *lite_norm_mat_ptr return false; } - float means[3] = {0.485, 0.456, 0.406}; - float vars[3] = {1.0 / 0.229, 1.0 / 0.224, 1.0 / 0.225}; - SubStractMeanNormalize(lite_mat_convert_float, lite_norm_mat_cut, means, vars); + std::vector means = {0.485, 0.456, 0.406}; + std::vector stds = {0.229, 0.224, 0.225}; + SubStractMeanNormalize(lite_mat_convert_float, lite_norm_mat_cut, means, stds); return true; }