|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | +set -x |
| 4 | + |
| 5 | +## Global variables |
| 6 | +workspace=$PWD/$(dirname $0) |
| 7 | +readonly workspace=${workspace%%lite/tools*} |
| 8 | +WITH_LOG=OFF |
| 9 | +WITH_CV=ON |
| 10 | +WITH_EXCEPTION=ON |
| 11 | +TOOL_CHAIN=clang |
| 12 | + |
| 13 | +## step 1: compile opt tool |
| 14 | +cd $workspace |
| 15 | +if [ ! -f build.opt/lite/api/opt ]; then |
| 16 | +./lite/tools/build.sh build_optimize_tool |
| 17 | +fi |
| 18 | +cd build.opt/lite/api |
| 19 | +rm -rf models && cp -rf $1 ./models |
| 20 | + |
| 21 | +### models names |
| 22 | +models_names=$(ls models) |
| 23 | +## step 2. convert models |
| 24 | +rm -rf models_opt && mkdir models_opt |
| 25 | +for name in $models_names |
| 26 | +do |
| 27 | + if [[ $(ls models/$name | wc -l) -gt 2 ]] |
| 28 | + then |
| 29 | + if [[ -f models/$name/__model__ ]] |
| 30 | + then |
| 31 | + ./opt --model_dir=./models/$name --valid_targets=arm --optimize_out=./models_opt/$name --record_tailoring_info=true |
| 32 | + else |
| 33 | + echo "Error: unsupported model format /models/$name" |
| 34 | + exit 1 |
| 35 | + fi |
| 36 | + else |
| 37 | + if [[ -f models/$name/model ]] && [[ -f models/$name/params ]] |
| 38 | + then |
| 39 | + ./opt --model_file=./models/$name/model --param_file=./models/$name/params --valid_targets=arm --optimize_out=./models_opt/$name --record_tailoring_info=true |
| 40 | + else |
| 41 | + echo "Error: unsupported model format /models/$name" |
| 42 | + exit 1 |
| 43 | + fi |
| 44 | + fi |
| 45 | +done |
| 46 | + |
| 47 | + |
| 48 | +# step 3. record model infos |
| 49 | +rm -rf model_info && mkdir model_info |
| 50 | +rm -rf optimized_model && mkdir optimized_model |
| 51 | +content=$(ls ./models_opt | grep -v .nb) |
| 52 | + |
| 53 | +for dir_name in $content |
| 54 | +do |
| 55 | +cat ./models_opt/$dir_name/.tailored_kernels_list >> ./model_info/tailored_kernels_list |
| 56 | +cat ./models_opt/$dir_name/.tailored_kernels_source_list >> ./model_info/tailored_kernels_source_list |
| 57 | +cat ./models_opt/$dir_name/.tailored_ops_list >> ./model_info/tailored_ops_list |
| 58 | +cat ./models_opt/$dir_name/.tailored_ops_source_list >> ./model_info/tailored_ops_source_list |
| 59 | +cp -f ./models_opt/$dir_name.nb optimized_model |
| 60 | +done |
| 61 | + |
| 62 | +sort -n ./model_info/tailored_kernels_list | uniq > ./model_info/.tailored_kernels_list |
| 63 | +sort -n ./model_info/tailored_kernels_source_list | uniq > ./model_info/.tailored_kernels_source_list |
| 64 | +sort -n ./model_info/tailored_ops_list | uniq > ./model_info/.tailored_ops_list |
| 65 | +sort -n ./model_info/tailored_ops_source_list | uniq > ./model_info/.tailored_ops_source_list |
| 66 | + |
| 67 | +rm -rf $(ls ./models_opt | grep -v .nb) |
| 68 | + |
| 69 | +# step 4. compiling iOS lib |
| 70 | +cd $workspace |
| 71 | +./lite/tools/build_android.sh --with_strip=ON --opt_model_dir=$workspace/build.opt/lite/api/model_info --with_log=$WITH_LOG --with_cv=$WITH_CV --toolchain=$TOOL_CHAIN --with_exception=$WITH_EXCEPTION |
| 72 | +./lite/tools/build_android.sh --with_strip=ON --opt_model_dir=$workspace/build.opt/lite/api/model_info --with_log=$WITH_LOG --arch=armv7 --with_cv=$WITH_CV --toolchain=$TOOL_CHAIN --with_exception=$WITH_EXCEPTION |
| 73 | + |
| 74 | +# step 5. pack compiling results and optimized models |
| 75 | +result_name=android_lib |
| 76 | +rm -rf $result_name && mkdir $result_name |
| 77 | +cp -rf build.lite.android.armv7.$TOOL_CHAIN/inference_lite_lib.android.armv7 $result_name/armv7.$TOOL_CHAIN |
| 78 | +cp -rf build.lite.android.armv8.$TOOL_CHAIN/inference_lite_lib.android.armv8 $result_name/armv8.$TOOL_CHAIN |
| 79 | +cp build.opt/lite/api/opt $result_name/ |
| 80 | +mv build.opt/lite/api/optimized_model $result_name |
| 81 | + |
| 82 | +# step6. compress the result into tar file |
| 83 | +tar zcf $result_name.tar.gz $result_name |
0 commit comments