paddlelite模型打包之后, 使用手机载入出现崩溃
Created by: esun0087
先使用model_optimize_tool 生成模型。使用命令如下 ./model_optimize_tool --model_dir=best_model --optimize_out_type=naive_buffer --optimize_out=nave_opt_dir/ --prefer_int8_kernel=true --valid_targets=arm 在paddle-lite的release/v2.0.0-beta2,进行编译,生成full的linux版本.a. 使用命令如下 ./lite/tools/build.sh --arm_os=android --arm_abi=armv8 --arm_lang=gcc --android_stl=c++_static full_publish
编译产生的是linux的.a, 使用window的android studio环境载入.a,使用android studio 版本为3.4.2, ndk版本为17 使用流程如下: std::shared_ptr load_model(){ bool prefer_int8_kernel = true; const char* model_dir = "/storage/emulated/0/model"; const char* opt_model_dir ="/storage/emulated/0/opt_model"; typedef unsigned short uint16_t;
CxxConfig config;
config.set_model_dir(model_dir);
std::vector<Place> valid_places{Place{TARGET(kARM), PRECISION(kFloat)}};
if (prefer_int8_kernel) {
valid_places.push_back(Place{TARGET(kARM), PRECISION(kInt8)});
config.set_preferred_place(Place{TARGET(kARM), PRECISION(kInt8)});
} else {
config.set_preferred_place(Place{TARGET(kARM), PRECISION(kFloat)});
}
// config.set_model_file("/storage/emulated/0/model/model.nb"); // config.set_param_file("/storage/emulated/0/model/param.nb");
config.set_valid_places(valid_places);
std::shared_ptr<PaddlePredictor> predictor = CreatePaddlePredictor<CxxConfig>(config);
predictor->SaveOptimizedModel(opt_model_dir,LiteModelType::kNaiveBuffer);
return predictor;
} 使用debug模式, 在 std::shared_ptr predictor = CreatePaddlePredictor(config); 产生崩溃,