From 2181d0ac35f30202985a877950c88325ff665f6b Mon Sep 17 00:00:00 2001 From: Isabella Gottardi Date: Wed, 7 Apr 2021 09:27:38 +0100 Subject: MLECO-1766: Default build flow helper scripts added MLECO-1882: Anomaly Detection use-case default model download added and tests updated to run with it. Test data generation cmake logic moved from use-case cmakes to top-level cmake script. Signed-off-by: Isabella Gottardi Change-Id: Ifde469e3585c37b9a53810236a92ce52d4fbb407 --- source/use_case/ad/usecase.cmake | 33 +--- source/use_case/asr/usecase.cmake | 72 +------- source/use_case/img_class/usecase.cmake | 70 +------- source/use_case/inference_runner/usecase.cmake | 26 +-- source/use_case/kws/usecase.cmake | 70 +------- source/use_case/kws_asr/usecase.cmake | 227 +++++++------------------ 6 files changed, 83 insertions(+), 415 deletions(-) (limited to 'source/use_case') diff --git a/source/use_case/ad/usecase.cmake b/source/use_case/ad/usecase.cmake index 46e4101..d591f98 100644 --- a/source/use_case/ad/usecase.cmake +++ b/source/use_case/ad/usecase.cmake @@ -15,25 +15,9 @@ # limitations under the License. #---------------------------------------------------------------------------- -# If the path to a directory or source file has been defined, -# get the type here (FILEPATH or PATH): -if (DEFINED ${use_case}_FILE_PATH) - get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) - - # Set the default type if path is not a dir or file path (or undefined) - if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) - message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") - endif() -else() - # Default is a directory path - set(PATH_TYPE PATH) -endif() - -message(STATUS "${use_case}_FILE_PATH is of type: ${PATH_TYPE}") - USER_OPTION(${use_case}_FILE_PATH "Directory with custom WAV input files, or path to a single input WAV file, to use in the evaluation application." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/samples/ - ${PATH_TYPE}) + PATH_OR_FILE) USER_OPTION(${use_case}_AUDIO_RATE "Specify the target sampling rate. Default is 16000." 16000 @@ -76,19 +60,10 @@ USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen 0x00200000 STRING) -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH) - - set(MODEL_RESOURCES_DIR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR}) - set(MODEL_FILENAME ad_med_nov11_int8.tflite) - set(DEFAULT_MODEL_PATH ${MODEL_RESOURCES_DIR}/${MODEL_FILENAME}) - - # TODO: Download the model here for this use case when available on Model Zoo. - # For now we write a place holder file. - file(WRITE ${DEFAULT_MODEL_PATH} "Placeholder") +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/ad_medium_int8_vela.tflite) else() - set(DEFAULT_MODEL_PATH "N/A") + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/ad_medium_int8.tflite) endif() set(EXTRA_MODEL_CODE diff --git a/source/use_case/asr/usecase.cmake b/source/use_case/asr/usecase.cmake index cac1862..2b17d84 100644 --- a/source/use_case/asr/usecase.cmake +++ b/source/use_case/asr/usecase.cmake @@ -15,25 +15,9 @@ # limitations under the License. #---------------------------------------------------------------------------- -# If the path to a directory or source file has been defined, -# get the type here (FILEPATH or PATH): -if (DEFINED ${use_case}_FILE_PATH) - get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) - - # Set the default type if path is not a dir or file path (or undefined) - if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) - message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") - endif() -else() - # Default is a directory path - set(PATH_TYPE PATH) -endif() - -message(STATUS "${use_case}_FILE_PATH is of type: ${PATH_TYPE}") - USER_OPTION(${use_case}_FILE_PATH "Directory with custom WAV input files, or path to a single WAV file, to use in the evaluation application." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/samples/ - ${PATH_TYPE}) + PATH_OR_FILE) USER_OPTION(${use_case}_LABELS_TXT_FILE "Labels' txt file for the chosen model." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/labels/labels_wav2letter.txt @@ -90,58 +74,10 @@ USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen 0x00200000 STRING) - -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH) - - set(MODEL_FILENAME wav2letter_int8.tflite) - set(MODEL_RESOURCES_DIR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR}) - set(DEFAULT_MODEL_PATH ${MODEL_RESOURCES_DIR}/${MODEL_FILENAME}) - - # Download the default model - set(ZOO_COMMON_SUBPATH "models/speech_recognition/wav2letter/tflite_int8") - set(ZOO_MODEL_SUBPATH "${ZOO_COMMON_SUBPATH}/${MODEL_FILENAME}") - set(ZOO_MODEL_VERSION "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_MODEL_SUBPATH} ${DEFAULT_MODEL_PATH}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH to the CMake configuration.") - endif() - - # If the target platform is native - if (${TARGET_PLATFORM} STREQUAL native) - - # Download test vectors - set(ZOO_TEST_IFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_input/input_2_int8/0.npy") - set(ZOO_TEST_OFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_output/Identity_int8/0.npy") - - set(${use_case}_TEST_IFM ${MODEL_RESOURCES_DIR}/ifm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - set(${use_case}_TEST_OFM ${MODEL_RESOURCES_DIR}/ofm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_IFM_SUBPATH} ${${use_case}_TEST_IFM}) - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_OFM_SUBPATH} ${${use_case}_TEST_OFM}) - - set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) - set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) - file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) - - # Generate test data files to be included in x86 tests - generate_test_data_code( - INPUT_DIR "${DOWNLOAD_DEP_DIR}/${use_case}" - DESTINATION_SRC ${TEST_SRC_GEN_DIR} - DESTINATION_HDR ${TEST_INC_GEN_DIR} - USECASE "${use_case}") - endif() - +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/wav2letter_int8_vela.tflite) else() - set(DEFAULT_MODEL_PATH "N/A") + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/wav2letter_int8.tflite) endif() set(EXTRA_MODEL_CODE diff --git a/source/use_case/img_class/usecase.cmake b/source/use_case/img_class/usecase.cmake index 384c58e..0089356 100644 --- a/source/use_case/img_class/usecase.cmake +++ b/source/use_case/img_class/usecase.cmake @@ -15,24 +15,9 @@ # limitations under the License. #---------------------------------------------------------------------------- -# If the path to a directory or source file has been defined, -# get the type here (FILEPATH or PATH): -if (DEFINED ${use_case}_FILE_PATH) - get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) - # Set the default type if path is not a dir or file path (or undefined) - if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) - message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") - endif() -else() - # Default is a directory path - set(PATH_TYPE PATH) -endif() - -message(STATUS "${use_case}_FILE_PATH is of type: ${PATH_TYPE}") - USER_OPTION(${use_case}_FILE_PATH "Directory with custom image files to use, or path to a single image, in the evaluation application" ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/samples/ - ${PATH_TYPE}) + PATH_OR_FILE) USER_OPTION(${use_case}_IMAGE_SIZE "Square image size in pixels. Images will be resized to this size." 224 @@ -61,57 +46,10 @@ USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen 0x00200000 STRING) -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH) - - set(MODEL_RESOURCES_DIR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR}) - set(MODEL_FILENAME mobilenet_v2_1.0_224_quantized_1_default_1.tflite) - set(DEFAULT_MODEL_PATH ${MODEL_RESOURCES_DIR}/${MODEL_FILENAME}) - - # Download the default model - set(ZOO_COMMON_SUBPATH "models/image_classification/mobilenet_v2_1.0_224/tflite_uint8") - set(ZOO_MODEL_SUBPATH "${ZOO_COMMON_SUBPATH}/${MODEL_FILENAME}") - set(ZOO_MODEL_VERSION "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_MODEL_SUBPATH} ${DEFAULT_MODEL_PATH}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH to the CMake configuration.") - endif() - - # If the target platform is native - if (${TARGET_PLATFORM} STREQUAL native) - - # Download test vectors - set(ZOO_TEST_IFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_input/input/0.npy") - set(ZOO_TEST_OFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_output/output/0.npy") - - set(${use_case}_TEST_IFM ${MODEL_RESOURCES_DIR}/ifm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - set(${use_case}_TEST_OFM ${MODEL_RESOURCES_DIR}/ofm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_IFM_SUBPATH} ${${use_case}_TEST_IFM}) - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_OFM_SUBPATH} ${${use_case}_TEST_OFM}) - - set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) - set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) - file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) - - # Generate test data files to be included in x86 tests - generate_test_data_code( - INPUT_DIR "${DOWNLOAD_DEP_DIR}/${use_case}" - DESTINATION_SRC ${TEST_SRC_GEN_DIR} - DESTINATION_HDR ${TEST_INC_GEN_DIR} - USECASE "${use_case}") - endif() - +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/mobilenet_v2_1.0_224_quantized_1_default_1_vela.tflite) else() - set(DEFAULT_MODEL_PATH "N/A") + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/mobilenet_v2_1.0_224_quantized_1_default_1.tflite) endif() USER_OPTION(${use_case}_MODEL_TFLITE_PATH "NN models file to be used in the evaluation application. Model files must be in tflite format." diff --git a/source/use_case/inference_runner/usecase.cmake b/source/use_case/inference_runner/usecase.cmake index 0fd159f..225aaf4 100644 --- a/source/use_case/inference_runner/usecase.cmake +++ b/source/use_case/inference_runner/usecase.cmake @@ -21,30 +21,10 @@ USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen generate_default_input_code(${INC_GEN_DIR}) -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH) - - set(MODEL_RESOURCES_DIR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR}) - set(MODEL_FILENAME dnn_s_quantized.tflite) - set(DEFAULT_MODEL_PATH ${MODEL_RESOURCES_DIR}/${MODEL_FILENAME}) - - # Download the default model - set(ZOO_COMMON_SUBPATH "models/keyword_spotting/dnn_small/tflite_int8/") - set(ZOO_MODEL_SUBPATH "${ZOO_COMMON_SUBPATH}/${MODEL_FILENAME}") - set(ZOO_MODEL_VERSION "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_MODEL_SUBPATH} ${DEFAULT_MODEL_PATH}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH to the CMake configuration.") - endif() - +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/dnn_s_quantized_vela.tflite) else() - set(DEFAULT_MODEL_PATH "N/A") + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/dnn_s_quantized.tflite) endif() USER_OPTION(${use_case}_MODEL_TFLITE_PATH "NN models file to be used in the evaluation application. Model files must be in tflite format." diff --git a/source/use_case/kws/usecase.cmake b/source/use_case/kws/usecase.cmake index e6fbf69..23de212 100644 --- a/source/use_case/kws/usecase.cmake +++ b/source/use_case/kws/usecase.cmake @@ -15,24 +15,9 @@ # limitations under the License. #---------------------------------------------------------------------------- -# If the path to a directory or source file has been defined, -# get the type here (FILEPATH or PATH): -if (DEFINED ${use_case}_FILE_PATH) - get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) - - # Set the default type if path is not a dir or file path (or undefined) - if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) - message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") - endif() -else() - # Default is a directory path - set(PATH_TYPE PATH) -endif() - -message(STATUS "${use_case}_FILE_PATH is of type: ${PATH_TYPE}") USER_OPTION(${use_case}_FILE_PATH "Directory with custom WAV input files, or path to a single WAV file, to use in the evaluation application." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/samples/ - ${PATH_TYPE}) + PATH_OR_FILE) USER_OPTION(${use_case}_LABELS_TXT_FILE "Labels' txt file for the chosen model." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/labels/ds_cnn_labels.txt @@ -88,57 +73,10 @@ USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen 0x00100000 STRING) -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH) - - set(MODEL_FILENAME ds_cnn_clustered_int8.tflite) - set(MODEL_RESOURCES_DIR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR}) - set(DEFAULT_MODEL_PATH ${MODEL_RESOURCES_DIR}/${MODEL_FILENAME}) - - # Download the default model - set(ZOO_COMMON_SUBPATH "models/keyword_spotting/ds_cnn_large/tflite_clustered_int8") - set(ZOO_MODEL_SUBPATH "${ZOO_COMMON_SUBPATH}/${MODEL_FILENAME}") - set(ZOO_MODEL_VERSION "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_MODEL_SUBPATH} ${DEFAULT_MODEL_PATH}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH to the CMake configuration.") - endif() - - # If the target platform is native - if (${TARGET_PLATFORM} STREQUAL native) - - # Download test vectors - set(ZOO_TEST_IFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_input/input_2/0.npy") - set(ZOO_TEST_OFM_SUBPATH "${ZOO_COMMON_SUBPATH}/testing_output/Identity/0.npy") - - set(${use_case}_TEST_IFM ${MODEL_RESOURCES_DIR}/ifm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - set(${use_case}_TEST_OFM ${MODEL_RESOURCES_DIR}/ofm0.npy CACHE FILEPATH - "Input test vector for ${use_case}") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_IFM_SUBPATH} ${${use_case}_TEST_IFM}) - download_file_from_modelzoo(${ZOO_MODEL_VERSION} ${ZOO_TEST_OFM_SUBPATH} ${${use_case}_TEST_OFM}) - - set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) - set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) - file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) - - # Generate test data files to be included in x86 tests - generate_test_data_code( - INPUT_DIR "${DOWNLOAD_DEP_DIR}/${use_case}" - DESTINATION_SRC ${TEST_SRC_GEN_DIR} - DESTINATION_HDR ${TEST_INC_GEN_DIR} - USECASE "${use_case}") - endif() - +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela.tflite) else() - set(DEFAULT_MODEL_PATH "N/A") + set(DEFAULT_MODEL_PATH ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8.tflite) endif() set(EXTRA_MODEL_CODE diff --git a/source/use_case/kws_asr/usecase.cmake b/source/use_case/kws_asr/usecase.cmake index 5729be2..d8ac897 100644 --- a/source/use_case/kws_asr/usecase.cmake +++ b/source/use_case/kws_asr/usecase.cmake @@ -17,23 +17,21 @@ # If the path to a directory or source file has been defined, # get the type here (FILEPATH or PATH): -if (DEFINED ${use_case}_FILE_PATH) - get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) - - # Set the default type if path is not a dir or file path (or undefined) - if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) - message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") - endif() -else() - # Default is a directory path - set(PATH_TYPE PATH) -endif() - -message(STATUS "${use_case}_FILE_PATH is of type: ${PATH_TYPE}") +#if (DEFINED ${use_case}_FILE_PATH) +# get_path_type(${${use_case}_FILE_PATH} PATH_TYPE) +# +# # Set the default type if path is not a dir or file path (or undefined) +# if (NOT ${PATH_TYPE} STREQUAL PATH AND NOT ${PATH_TYPE} STREQUAL FILEPATH) +# message(FATAL_ERROR "Invalid ${use_case}_FILE_PATH. It should be a dir or file path.") +# endif() +#else() +# # Default is a directory path +# set(PATH_TYPE PATH) +#endif() USER_OPTION(${use_case}_FILE_PATH "Directory with WAV files, or path to a single WAV file, to use in the evaluation application." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/samples/ - ${PATH_TYPE}) + PATH_OR_FILE) USER_OPTION(${use_case}_AUDIO_RATE "Specify the target sampling rate. Default is 16000." 16000 @@ -59,42 +57,16 @@ USER_OPTION(${use_case}_AUDIO_MIN_SAMPLES "Specify the minimum number of samples 16000 STRING) -# Generate audio .cc files: -generate_audio_code(${${use_case}_FILE_PATH} ${SRC_GEN_DIR} ${INC_GEN_DIR} - ${${use_case}_AUDIO_RATE} - ${${use_case}_AUDIO_MONO} - ${${use_case}_AUDIO_OFFSET} - ${${use_case}_AUDIO_DURATION} - ${${use_case}_AUDIO_RES_TYPE} - ${${use_case}_AUDIO_MIN_SAMPLES}) - # Generate kws labels file: USER_OPTION(${use_case}_LABELS_TXT_FILE_KWS "Labels' txt file for the chosen model." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/labels/ds_cnn_labels.txt FILEPATH) -set(${use_case}_LABELS_CPP_FILE_KWS Labels_dscnn) -generate_labels_code( - INPUT "${${use_case}_LABELS_TXT_FILE_KWS}" - DESTINATION_SRC ${SRC_GEN_DIR} - DESTINATION_HDR ${INC_GEN_DIR} - OUTPUT_FILENAME "${${use_case}_LABELS_CPP_FILE_KWS}" - NAMESPACE "arm" "app" "kws" -) - # Generate asr labels file: USER_OPTION(${use_case}_LABELS_TXT_FILE_ASR "Labels' txt file for the chosen model." ${CMAKE_CURRENT_SOURCE_DIR}/resources/${use_case}/labels/labels_wav2letter.txt FILEPATH) -set(${use_case}_LABELS_CPP_FILE_ASR Labels_wav2letter) -generate_labels_code( - INPUT "${${use_case}_LABELS_TXT_FILE_ASR}" - DESTINATION_SRC ${SRC_GEN_DIR} - DESTINATION_HDR ${INC_GEN_DIR} - OUTPUT_FILENAME "${${use_case}_LABELS_CPP_FILE_ASR}" - NAMESPACE "arm" "app" "asr" -) USER_OPTION(${use_case}_ACTIVATION_BUF_SZ "Activation buffer size for the chosen model" 0x00200000 @@ -108,132 +80,14 @@ USER_OPTION(${use_case}_MODEL_SCORE_THRESHOLD_ASR "Specify the score threshold [ 0.5 STRING) -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH_KWS) - - set(SUB_USECASE_KWS "kws") - set(MODEL_FILENAME_KWS ds_cnn_clustered_int8.tflite) - set(MODEL_RESOURCES_DIR_KWS ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR_KWS}) - set(DEFAULT_MODEL_PATH_KWS ${MODEL_RESOURCES_DIR_KWS}/${MODEL_FILENAME_KWS}) - - # Download the default model - set(ZOO_COMMON_SUBPATH_KWS "models/keyword_spotting/ds_cnn_large/tflite_clustered_int8") - set(ZOO_MODEL_SUBPATH_KWS "${ZOO_COMMON_SUBPATH_KWS}/${MODEL_FILENAME_KWS}") - set(ZOO_MODEL_VERSION_KWS "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION_KWS} ${ZOO_MODEL_SUBPATH_KWS} ${DEFAULT_MODEL_PATH_KWS}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH_KWS to the CMake configuration.") - endif() - - if (${TARGET_PLATFORM} STREQUAL native) - - # Download test vectors - set(ZOO_TEST_IFM_SUBPATH_KWS "${ZOO_COMMON_SUBPATH_KWS}/testing_input/input_2/0.npy") - set(ZOO_TEST_OFM_SUBPATH_KWS "${ZOO_COMMON_SUBPATH_KWS}/testing_output/Identity/0.npy") - - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR_KWS}/${SUB_USECASE_KWS}) - set(${use_case}_TEST_IFM ${MODEL_RESOURCES_DIR_KWS}/${SUB_USECASE_KWS}/ifm0.npy CACHE FILEPATH - "Input test vector for ${use_case}-${SUB_USECASE_KWS}") - set(${use_case}_TEST_OFM ${MODEL_RESOURCES_DIR_KWS}/${SUB_USECASE_KWS}/ofm0.npy CACHE FILEPATH - "Input test vector for ${use_case}-${SUB_USECASE_KWS}.") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION_KWS} ${ZOO_TEST_IFM_SUBPATH_KWS} ${${use_case}_TEST_IFM}) - download_file_from_modelzoo(${ZOO_MODEL_VERSION_KWS} ${ZOO_TEST_OFM_SUBPATH_KWS} ${${use_case}_TEST_OFM}) - set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) - set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) - file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) - - generate_test_data_code( - INPUT_DIR "${DOWNLOAD_DEP_DIR}/${use_case}/${SUB_USECASE_KWS}" - DESTINATION_SRC ${TEST_SRC_GEN_DIR} - DESTINATION_HDR ${TEST_INC_GEN_DIR} - USECASE ${SUB_USECASE_KWS} - NAMESPACE "arm" "app" ${SUB_USECASE_KWS}) - endif() - -else() - set(DEFAULT_MODEL_PATH_KWS "N/A") -endif() - -set(EXTRA_MODEL_CODE_KWS - "/* Model parameters for ${use_case} */" - "extern const uint32_t g_NumMfcc = 10" - "extern const uint32_t g_NumAudioWins = 49" - "extern const int g_FrameLength = 640" - "extern const int g_FrameStride = 320" - "extern const float g_ScoreThreshold = ${${use_case}_MODEL_SCORE_THRESHOLD_KWS}" - ) - -# If there is no tflite file pointed to -if (NOT DEFINED ${use_case}_MODEL_TFLITE_PATH_ASR) - - set(SUB_USECASE_ASR "asr") - set(MODEL_FILENAME_ASR wav2letter_int8.tflite) - set(MODEL_RESOURCES_DIR_ASR ${DOWNLOAD_DEP_DIR}/${use_case}) - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR_ASR}) - set(DEFAULT_MODEL_PATH_ASR ${MODEL_RESOURCES_DIR_ASR}/${MODEL_FILENAME_ASR}) - - # Download the default model - set(ZOO_COMMON_SUBPATH_ASR "models/speech_recognition/wav2letter/tflite_int8") - set(ZOO_MODEL_SUBPATH_ASR "${ZOO_COMMON_SUBPATH_ASR}/${MODEL_FILENAME_ASR}") - set(ZOO_MODEL_VERSION_ASR "68b5fbc77ed28e67b2efc915997ea4477c1d9d5b") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION_ASR} ${ZOO_MODEL_SUBPATH_ASR} ${DEFAULT_MODEL_PATH_ASR}) - - if (ETHOS_U55_ENABLED) - message(STATUS - "Ethos-U55 is enabled, but the model downloaded is not optimized by vela. " - "To use Ethos-U55 acceleration, optimise the downloaded model and pass it " - "as ${use_case}_MODEL_TFLITE_PATH to the CMake configuration.") - endif() - - # If the target platform is native - if (${TARGET_PLATFORM} STREQUAL native) - - # Download test vectors - set(ZOO_TEST_IFM_SUBPATH_ASR "${ZOO_COMMON_SUBPATH_ASR}/testing_input/input_2_int8/0.npy") - set(ZOO_TEST_OFM_SUBPATH_ASR "${ZOO_COMMON_SUBPATH_ASR}/testing_output/Identity_int8/0.npy") - - file(MAKE_DIRECTORY ${MODEL_RESOURCES_DIR_ASR}/${SUB_USECASE_ASR}) - set(${use_case}_TEST_IFM_ASR ${MODEL_RESOURCES_DIR_ASR}/${SUB_USECASE_ASR}/ifm0.npy CACHE FILEPATH - "Input test vector for ${use_case}-${SUB_USECASE_ASR}") - set(${use_case}_TEST_OFM_ASR ${MODEL_RESOURCES_DIR_ASR}/${SUB_USECASE_ASR}/ofm0.npy CACHE FILEPATH - "Input test vector for ${use_case}-${SUB_USECASE_ASR}") - - download_file_from_modelzoo(${ZOO_MODEL_VERSION_ASR} ${ZOO_TEST_IFM_SUBPATH_KWS} ${${use_case}_TEST_IFM_ASR}) - download_file_from_modelzoo(${ZOO_MODEL_VERSION_ASR} ${ZOO_TEST_OFM_SUBPATH_KWS} ${${use_case}_TEST_OFM_ASR}) - - set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) - set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) - file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) - - # Generate test data files to be included in x86 tests - generate_test_data_code( - INPUT_DIR "${DOWNLOAD_DEP_DIR}/${use_case}/${SUB_USECASE_ASR}" - DESTINATION_SRC ${TEST_SRC_GEN_DIR} - DESTINATION_HDR ${TEST_INC_GEN_DIR} - USECASE ${SUB_USECASE_ASR} - NAMESPACE "arm" "app" ${SUB_USECASE_ASR}) - endif() - +if (ETHOS_U55_ENABLED) + set(DEFAULT_MODEL_PATH_KWS ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8_vela.tflite) + set(DEFAULT_MODEL_PATH_ASR ${DEFAULT_MODEL_DIR}/wav2letter_int8_vela.tflite) else() - set(DEFAULT_MODEL_PATH_ASR "N/A") + set(DEFAULT_MODEL_PATH_KWS ${DEFAULT_MODEL_DIR}/ds_cnn_clustered_int8.tflite) + set(DEFAULT_MODEL_PATH_ASR ${DEFAULT_MODEL_DIR}/wav2letter_int8.tflite) endif() -set(EXTRA_MODEL_CODE_ASR - "/* Model parameters for ${use_case} */" - "extern const int g_FrameLength = 512" - "extern const int g_FrameStride = 160" - "extern const int g_ctxLen = 98" - "extern const float g_ScoreThreshold = ${${use_case}_MODEL_SCORE_THRESHOLD_ASR}" - ) - USER_OPTION(${use_case}_MODEL_TFLITE_PATH_KWS "NN models file to be used for KWS in the evaluation application. Model files must be in tflite format." ${DEFAULT_MODEL_PATH_KWS} FILEPATH @@ -244,6 +98,28 @@ USER_OPTION(${use_case}_MODEL_TFLITE_PATH_ASR "NN models file to be used for ASR FILEPATH ) +# If the target platform is native +if (${TARGET_PLATFORM} STREQUAL native) + set(DEFAULT_TEST_DATA_DIR ${DEFAULT_TEST_DATA_DIR}/asr ${DEFAULT_TEST_DATA_DIR}/kws) +endif() + +set(EXTRA_MODEL_CODE_KWS + "/* Model parameters for ${use_case} */" + "extern const uint32_t g_NumMfcc = 10" + "extern const uint32_t g_NumAudioWins = 49" + "extern const int g_FrameLength = 640" + "extern const int g_FrameStride = 320" + "extern const float g_ScoreThreshold = ${${use_case}_MODEL_SCORE_THRESHOLD_KWS}" + ) + +set(EXTRA_MODEL_CODE_ASR + "/* Model parameters for ${use_case} */" + "extern const int g_FrameLength = 512" + "extern const int g_FrameStride = 160" + "extern const int g_ctxLen = 98" + "extern const float g_ScoreThreshold = ${${use_case}_MODEL_SCORE_THRESHOLD_ASR}" + ) + # Generate model file for KWS generate_tflite_code( MODEL_PATH ${${use_case}_MODEL_TFLITE_PATH_KWS} @@ -259,3 +135,28 @@ generate_tflite_code( EXPRESSIONS ${EXTRA_MODEL_CODE_ASR} NAMESPACE "arm" "app" "asr" ) + +generate_labels_code( + INPUT "${${use_case}_LABELS_TXT_FILE_ASR}" + DESTINATION_SRC ${SRC_GEN_DIR} + DESTINATION_HDR ${INC_GEN_DIR} + OUTPUT_FILENAME "Labels_wav2letter" + NAMESPACE "arm" "app" "asr" +) + +generate_labels_code( + INPUT "${${use_case}_LABELS_TXT_FILE_KWS}" + DESTINATION_SRC ${SRC_GEN_DIR} + DESTINATION_HDR ${INC_GEN_DIR} + OUTPUT_FILENAME "Labels_dscnn" + NAMESPACE "arm" "app" "kws" +) + +# Generate audio .cc files: +generate_audio_code(${${use_case}_FILE_PATH} ${SRC_GEN_DIR} ${INC_GEN_DIR} + ${${use_case}_AUDIO_RATE} + ${${use_case}_AUDIO_MONO} + ${${use_case}_AUDIO_OFFSET} + ${${use_case}_AUDIO_DURATION} + ${${use_case}_AUDIO_RES_TYPE} + ${${use_case}_AUDIO_MIN_SAMPLES}) \ No newline at end of file -- cgit v1.2.1