Merge pull request !6421 from gongdaguo/use_1.0_libtags/v1.0.0
| @@ -22,6 +22,8 @@ inception_v1_224_quant.tflite | |||||
| inception_v3_quant.tflite | inception_v3_quant.tflite | ||||
| inception_v4_299_quant.tflite | inception_v4_299_quant.tflite | ||||
| graph_8bit_1021_combine.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 | lite-model_object_detection_mobile_object_labeler_v1_1.tflite | ||||
| detect.tflite | detect.tflite | ||||
| ssd_mobilenet_v1_1_default_1.tflite | ssd_mobilenet_v1_1_default_1.tflite | ||||
| @@ -2,7 +2,7 @@ | |||||
| build/ | build/ | ||||
| mindspore/lib | mindspore/lib | ||||
| app/src/main/assets/model/ | app/src/main/assets/model/ | ||||
| app/src/main/cpp/mindspore-lite-0.7.0-minddata-arm64-cpu | |||||
| app/src/main/cpp/mindspore-lite-* | |||||
| output | output | ||||
| *.ir | *.ir | ||||
| mindspore/ccsrc/schema/inner/* | mindspore/ccsrc/schema/inner/* | ||||
| @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.4.1) | |||||
| set(CMAKE_VERBOSE_MAKEFILE on) | set(CMAKE_VERBOSE_MAKEFILE on) | ||||
| set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) | 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. ============= | # ============== Set MindSpore Dependencies. ============= | ||||
| include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) | include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) | ||||
| @@ -4,7 +4,7 @@ | |||||
| * The libraries can be downloaded manually. | * The libraries can be downloaded manually. | ||||
| */ | */ | ||||
| def targetMindSporeInclude = "src/main/cpp/" | 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 targetModelFile = "src/main/assets/model/mobilenetv2.ms" | ||||
| def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" | def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" | ||||
| @@ -243,9 +243,9 @@ bool PreProcessImageData(const LiteMat &lite_mat_bgr, LiteMat *lite_norm_mat_ptr | |||||
| MS_PRINT("Crop error"); | MS_PRINT("Crop error"); | ||||
| return false; | 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<float> means = {0.485, 0.456, 0.406}; | |||||
| std::vector<float> stds = {0.229, 0.224, 0.225}; | |||||
| SubStractMeanNormalize(lite_mat_cut, lite_norm_mat_cut, means, stds); | |||||
| return true; | return true; | ||||
| } | } | ||||
| @@ -43,8 +43,7 @@ This object detection sample program on the Android device includes a Java layer | |||||
| ### Configuring MindSpore Lite Dependencies | ### 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{ | android{ | ||||
| defaultConfig{ | defaultConfig{ | ||||
| @@ -65,10 +64,14 @@ Create a link to the `.so` library file in the `app/CMakeLists.txt` file: | |||||
| ``` | ``` | ||||
| # Set MindSpore Lite Dependencies. | # 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 ) | 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. | # Link target library. | ||||
| target_link_libraries( | target_link_libraries( | ||||
| @@ -62,7 +62,7 @@ app | |||||
| | | └── ssd.ms # 存放模型文件 | | | └── ssd.ms # 存放模型文件 | ||||
| │ | | │ | | ||||
| │ ├── cpp # 模型加载和预测主要逻辑封装类 | │ ├── cpp # 模型加载和预测主要逻辑封装类 | ||||
| | | ├── mindspore-lite-...-cpu # minspore源码编译出的调用包,包含demo jni层依赖的库文件及相关的头文件 | |||||
| | | ├── mindspore-lite-x.x.x-mindata-arm64-cpu # minspore源码编译出的调用包,包含demo jni层依赖的库文件及相关的头文件 | |||||
| | | | └── ... | | | | └── ... | ||||
| │ | | | │ | | | ||||
| | | ├── MindSporeNetnative.cpp # MindSpore调用相关的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 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{ | android{ | ||||
| defaultConfig{ | defaultConfig{ | ||||
| @@ -108,10 +108,14 @@ android{ | |||||
| ``` | ``` | ||||
| # Set MindSpore Lite Dependencies. | # 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 ) | 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. | # Link target library. | ||||
| target_link_libraries( | target_link_libraries( | ||||
| @@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.4.1) | |||||
| set(CMAKE_VERBOSE_MAKEFILE on) | set(CMAKE_VERBOSE_MAKEFILE on) | ||||
| set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) | 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. ============= | # ============== Set MindSpore Dependencies. ============= | ||||
| include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) | include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp) | ||||
| @@ -4,7 +4,7 @@ | |||||
| * The libraries can be downloaded manually. | * The libraries can be downloaded manually. | ||||
| */ | */ | ||||
| def targetMindSporeInclude = "src/main/cpp/" | 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 targetModelFile = "src/main/assets/model/ssd.ms" | ||||
| def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" | def mindSporeLibrary_arm64 = "src/main/cpp/${mindsporeLite_Version}.tar.gz" | ||||
| @@ -89,9 +89,9 @@ bool PreProcessImageData(const LiteMat &lite_mat_bgr, LiteMat *lite_norm_mat_ptr | |||||
| return false; | 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<float> means = {0.485, 0.456, 0.406}; | |||||
| std::vector<float> stds = {0.229, 0.224, 0.225}; | |||||
| SubStractMeanNormalize(lite_mat_convert_float, lite_norm_mat_cut, means, stds); | |||||
| return true; | return true; | ||||
| } | } | ||||