From c85c762a34c7f585e1bdc741d8b96ae7a141c5b7 Mon Sep 17 00:00:00 2001 From: yejianwu Date: Fri, 26 Jan 2018 10:50:17 +0800 Subject: [PATCH] update validate.py dsp goal, use consistent lib for gpu and dsp device --- validate.py | 12 +++++++++--- validate_model.sh | 30 +++++++++++++----------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/validate.py b/validate.py index 3ed61f62..a9767185 100644 --- a/validate.py +++ b/validate.py @@ -43,7 +43,8 @@ def valid_output(out_shape, mace_out_file, tf_out_value): if mace_out_value.size != 0: similarity = (1 - spatial.distance.cosine(tf_out_value.flat, mace_out_value)) print 'MACE VS TF similarity: ', similarity - if similarity > 0.995: + if (FLAGS.mace_runtime == "gpu" and similarity > 0.995) or \ + (FLAGS.mace_runtime == "dsp" and similarity > 0.930): print '=======================Similarity Test Passed======================' else: print '=======================Similarity Test Failed======================' @@ -104,15 +105,20 @@ def parse_args(): type=str, default="", help="mace output file to load.") + parser.add_argument( + "--mace_runtime", + type=str, + default="gpu", + help="mace runtime device.") parser.add_argument( "--input_shape", type=str, - default="512,512,3", + default="1,64,64,3", help="input shape.") parser.add_argument( "--output_shape", type=str, - default="1,512,512,2", + default="1,64,64,2", help="output shape.") parser.add_argument( "--input_node", diff --git a/validate_model.sh b/validate_model.sh index b8cfdaf4..b4930b9c 100755 --- a/validate_model.sh +++ b/validate_model.sh @@ -25,7 +25,6 @@ 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" @@ -34,10 +33,7 @@ else exit -1 fi -LIBMACE_TAG=`git describe --abbrev=0 --tags` -if [ ! "${LIBMACE_TAG}" ]; then - LIBMACE_TAG="v0.1" -fi +LIBMACE_TAG=`git describe --abbrev=0 --tags` || exit -1 VLOG_LEVEL=0 MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) @@ -105,23 +101,22 @@ build_and_run() --round=$round || exit -1 } -download_libs() +download_and_link_lib() { 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 "Create link 'mace' of downloaded or existed ${LIB_FOLDER_NAME}" + 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 "Step 1: Generate input data" @@ -146,7 +141,7 @@ bazel-bin/lib/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \ --obfuscate=True || exit -1 echo "Step 3: Download mace static library" -download_libs +download_and_link_lib echo "Step 4: Run model on the phone with files" build_and_run false @@ -178,10 +173,11 @@ 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} \ + --mace_runtime ${RUNTIME} \ --input_node ${TF_INPUT_NODE} \ --output_node ${TF_OUTPUT_NODE} \ - --input_shape "${INPUT_SHAPE}" \ - --output_shape "${OUTPUT_SHAPE}" + --input_shape ${INPUT_SHAPE} \ + --output_shape ${OUTPUT_SHAPE} echo "Step 10: Generate project static lib" rm -rf ${LIBMACE_BUILD_DIR} -- GitLab