Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
a91d44ec
Mace
项目概览
Xiaomi
/
Mace
通知
106
Star
40
Fork
27
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mace
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a91d44ec
编写于
1月 24, 2018
作者:
Y
yejianwu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
download lib from fds, and generate merged static lib when use validate_model.sh
上级
570c659f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
11 deletion
+61
-11
model.config
model.config
+1
-0
validate_model.sh
validate_model.sh
+60
-11
未找到文件。
model.config
浏览文件 @
a91d44ec
...
...
@@ -6,3 +6,4 @@ INPUT_SHAPE=1,64,64,3
OUTPUT_SHAPE
=
1
,
64
,
64
,
2
RUNTIME
=
gpu
TUNING_OR_NOT
=
1
ANDROID_ABI
=
armeabi
-
v7a
# Or 'arm64-v8a'
validate_model.sh
浏览文件 @
a91d44ec
...
...
@@ -12,9 +12,20 @@ fi
source
$1
LIB_FOLDER_NAME
=
"libmace"
if
[
x
"
${
ANDROID_ABI
}
"
=
x
"armeabi-v7a"
]
;
then
LIB_FOLDER_NAME
=
"
${
LIB_FOLDER_NAME
}
_v7"
elif
[
x
"
${
ANDROID_ABI
}
"
=
x
"arm64-v8a"
]
;
then
LIB_FOLDER_NAME
=
"
${
LIB_FOLDER_NAME
}
_v8"
else
echo
"Unsopported android abi"
exit
-1
fi
if
[
x
"
$RUNTIME
"
=
x
"dsp"
]
;
then
DATA_TYPE
=
"DT_UINT8"
DEVICE_TYPE
=
"HEXAGON"
LIB_FOLDER_NAME
=
"
${
LIB_FOLDER_NAME
}
_dsp"
elif
[
x
"
$RUNTIME
"
=
x
"gpu"
]
;
then
DATA_TYPE
=
"DT_HALF"
DEVICE_TYPE
=
"OPENCL"
...
...
@@ -23,12 +34,18 @@ else
exit
-1
fi
LIBMACE_TAG
=
`
git describe
--abbrev
=
0
--tags
`
if
[
!
"
${
LIBMACE_TAG
}
"
]
;
then
LIBMACE_TAG
=
"r0.1"
fi
VLOG_LEVEL
=
0
MODEL_DIR
=
$(
dirname
${
TF_MODEL_FILE_PATH
}
)
LIBMACE_SOURCE_DIR
=
`
/bin/pwd
`
INPUT_FILE_NAME
=
'model_input'
OUTPUT_FILE_NAME
=
'model.out'
OUTPUT_LIST_FILE
=
'model.list'
LIBMACE_BUILD_DIR
=
"
${
LIBMACE_SOURCE_DIR
}
/build"
INPUT_FILE_NAME
=
"model_input"
OUTPUT_FILE_NAME
=
"model.out"
OUTPUT_LIST_FILE
=
"model.list"
PHONE_DATA_DIR
=
"/data/local/tmp/mace_run"
KERNEL_DIR
=
"
${
PHONE_DATA_DIR
}
/cl/"
CODEGEN_DIR
=
${
LIBMACE_SOURCE_DIR
}
/codegen
...
...
@@ -56,7 +73,7 @@ build_and_run()
bazel build
--verbose_failures
-c
opt
--strip
always examples:mace_run
\
--crosstool_top
=
//external:android/crosstool
\
--host_crosstool_top
=
@bazel_tools//tools/cpp:toolchain
\
--cpu
=
armeabi-v7a
\
--cpu
=
${
ANDROID_ABI
}
\
--copt
=
"-std=c++11"
\
--copt
=
"-D_GLIBCXX_USE_C99_MATH_TR1"
\
--copt
=
"-Werror=return-type"
\
...
...
@@ -88,6 +105,25 @@ build_and_run()
--round
=
$round
||
exit
-1
}
download_libs
()
{
if
[
!
-d
"
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
"
]
;
then
wget
-P
${
LIBMACE_SOURCE_DIR
}
/lib http://cnbj1-inner-fds.api.xiaomi.net/libmace/libs/
${
LIBMACE_TAG
}
/
${
LIB_FOLDER_NAME
}
.tar.gz
&&
\
tar
xvzf
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
.tar.gz
-C
${
LIBMACE_SOURCE_DIR
}
/lib/
||
exit
-1
if
[
-p
${
LIBMACE_SOURCE_DIR
}
/lib/mace
]
;
then
unlink
${
LIBMACE_SOURCE_DIR
}
/lib/mace
fi
ln
-s
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
${
LIBMACE_SOURCE_DIR
}
/lib/mace
&&
\
rm
-rf
${
LIBMACE_SOURCE_DIR
}
/lib/
${
LIB_FOLDER_NAME
}
.tar.gz
||
exit
-1
echo
"
${
LIB_FOLDER_NAME
}
download successfully!"
else
echo
"
${
LIB_FOLDER_NAME
}
already exists!"
fi
}
echo
"Step 1: Generate input data"
rm
-rf
${
MODEL_DIR
}
/
${
INPUT_FILE_NAME
}
python tools/validate.py
--generate_data
true
\
...
...
@@ -109,33 +145,36 @@ bazel-bin/lib/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \
--model_tag
=
${
MODEL_TAG
}
\
--obfuscate
=
True
||
exit
-1
echo
"Step 3: Run model on the phone with files"
echo
"Step 3: Download mace static library"
download_libs
echo
"Step 4: Run model on the phone with files"
build_and_run
false
echo
"Step
4
: Generate OpenCL binary program and config code"
echo
"Step
5
: Generate OpenCL binary program and config code"
rm
-rf
${
CL_BIN_DIR
}
rm
-rf
${
CL_CODEGEN_DIR
}
mkdir
-p
${
CL_BIN_DIR
}
mkdir
-p
${
CL_CODEGEN_DIR
}
adb pull
${
KERNEL_DIR
}
${
CL_BIN_DIR
}
adb pull
${
KERNEL_DIR
}
/
\.
${
CL_BIN_DIR
}
python lib/python/tools/opencl_codegen.py
\
--cl_binary_dir
=
${
CL_BIN_DIR
}
--output_path
=
${
CL_CODEGEN_DIR
}
/opencl_compiled_program.cc
echo
"Step
5
: Generate tuning source file"
echo
"Step
6
: Generate tuning source file"
adb pull
${
PHONE_DATA_DIR
}
/mace_run.config
${
CL_BIN_DIR
}
rm
-rf
${
TUNING_CODEGEN_DIR
}
mkdir
-p
${
TUNING_CODEGEN_DIR
}
python lib/python/tools/binary_codegen.py
\
--binary_file
=
${
CL_BIN_DIR
}
/mace_run.config
--output_path
=
${
TUNING_CODEGEN_DIR
}
/tuning_params.cc
echo
"Step
6
: Run model on the phone using binary"
echo
"Step
7
: Run model on the phone using binary"
build_and_run
true
echo
"Step
7
: Pull the mace run result."
echo
"Step
8
: Pull the mace run result."
rm
-rf
${
MODEL_DIR
}
/
${
OUTPUT_FILE_NAME
}
adb </dev/null pull
${
PHONE_DATA_DIR
}
/
${
OUTPUT_FILE_NAME
}
${
MODEL_DIR
}
echo
"Step
8
: Validate the result"
echo
"Step
9
: Validate the result"
python tools/validate.py
--model_file
${
TF_MODEL_FILE_PATH
}
\
--input_file
${
MODEL_DIR
}
/
${
INPUT_FILE_NAME
}
\
--mace_out_file
${
MODEL_DIR
}
/
${
OUTPUT_FILE_NAME
}
\
...
...
@@ -143,3 +182,13 @@ python tools/validate.py --model_file ${TF_MODEL_FILE_PATH} \
--output_node
${
TF_OUTPUT_NODE
}
\
--input_shape
"
${
INPUT_SHAPE
}
"
\
--output_shape
"
${
OUTPUT_SHAPE
}
"
echo
"Step 10: Generate project static lib"
rm
-rf
${
LIBMACE_BUILD_DIR
}
mkdir
-p
${
LIBMACE_BUILD_DIR
}
/lib
cp
-rf
${
LIBMACE_SOURCE_DIR
}
/include
${
LIBMACE_BUILD_DIR
}
cp
${
LIBMACE_SOURCE_DIR
}
/lib/hexagon/libhexagon_controller.so
${
LIBMACE_BUILD_DIR
}
/lib
$ANDROID_NDK_HOME
/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
\
-M
< tools/libmace.mri
||
exit
-1
echo
"Done"
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录