Skip to content

Commit

Permalink
Added multimodel cmake support, removed makefile related files
Browse files Browse the repository at this point in the history
  • Loading branch information
Pafrak committed Dec 18, 2023
1 parent b847cfe commit ce63cc5
Show file tree
Hide file tree
Showing 21 changed files with 341 additions and 864 deletions.
157 changes: 130 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,42 +52,145 @@ set(AT_INPUT_WIDTH_SSD 320)
set(AT_INPUT_HEIGHT_SSD 240)
set(AT_INPUT_COLORS_SSD 3)




if (${CONFIG_SSD_ONLY})
set(MAIN ssdlite_ocr.c)
set(IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/images/china_1.ppm)
set(LPR_KERNEL_C )
set(BUILD_SSD_MODEL YES)
set(LPR_KERNEL_C )
elseif(${CONFIG_LPR_ONLY})
set(MAIN lprnet.c)
set(IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/images/china_1_cropped.ppm)
set(SSD_KERNEL_C )
set(BUILD_LPR_MODEL YES)
set(SSDLITE_KERNEL_C )
else()
set(MAIN main.c)
set(IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/images/china_1.ppm)
set(BUILD_SSD_MODEL YES)
set(BUILD_LPR_MODEL YES)
endif()
if (CONFIG_MODEL_NE16)
set(SSD_NNTOOL_SCRIPT model/nntool_script_ssdlite_ne16)
set(LPR_NNTOOL_SCRIPT model/nntool_script_lprnet_ne16)
set(USE_NE16 True)
list(APPEND TARGET_PREPROCESSOR -DNE16)
else()
set(SSD_NNTOOL_SCRIPT model/nntool_script_ssdlite)
set(LPR_NNTOOL_SCRIPT model/nntool_script_lprnet)
endif()

set(SSD_MODEL_PATH model/ssdlite_ocr.tflite)
autotiler_define_gen_names("ssdlite_ocr")
nntool_setup("ssdlite_ocr" ${SSD_MODEL_PATH} ${SSD_NNTOOL_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_SSD)
set(AT_SSD_MODEL_PATH ${AT_MODEL_PATH})
set(AT_SSD_TENSORS_DIR ${AT_TENSORS_DIR})
autotiler_setup("ssdlite_ocr" ${AT_SSD_MODEL_PATH} ${AT_SSD_TENSORS_DIR})
set(SSD_KERNEL_C ${COMMON_MODEL_BUILDDIR}/${KERNEL_C})

set(LPR_MODEL_PATH model/lprnet.tflite)
autotiler_define_gen_names("lprnet")
nntool_setup("lprnet" ${LPR_MODEL_PATH} ${LPR_NNTOOL_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_LPR)
set(AT_LPR_MODEL_PATH ${AT_MODEL_PATH})
set(AT_LPR_TENSORS_DIR ${AT_TENSORS_DIR})
autotiler_setup("lprnet" ${AT_LPR_MODEL_PATH} ${AT_LPR_TENSORS_DIR})
set(LPR_KERNEL_C ${COMMON_MODEL_BUILDDIR}/${KERNEL_C})
# set(SSD_MODEL_PATH model/ssdlite_ocr.tflite)
# autotiler_define_gen_names("ssdlite_ocr")
# nntool_setup("ssdlite_ocr" ${SSD_MODEL_PATH} ${SSD_NNTOOL_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_SSD)
# set(AT_SSD_MODEL_PATH ${AT_MODEL_PATH})
# set(AT_SSD_TENSORS_DIR ${AT_TENSORS_DIR})
# autotiler_setup("ssdlite_ocr" ${AT_SSD_MODEL_PATH} ${AT_SSD_TENSORS_DIR})
# set(SSD_KERNEL_C ${COMMON_MODEL_BUILDDIR}/${KERNEL_C})

# set(LPR_MODEL_PATH model/lprnet.tflite)
# autotiler_define_gen_names("lprnet")
# nntool_setup("lprnet" ${LPR_MODEL_PATH} ${LPR_NNTOOL_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_LPR)
# set(AT_LPR_MODEL_PATH ${AT_MODEL_PATH})
# set(AT_LPR_TENSORS_DIR ${AT_TENSORS_DIR})
# autotiler_setup("lprnet" ${AT_LPR_MODEL_PATH} ${AT_LPR_TENSORS_DIR})
# set(LPR_KERNEL_C ${COMMON_MODEL_BUILDDIR}/${KERNEL_C})


if(${BUILD_LPR_MODEL})
message(STATUS "${APP_MSG_PREFIX} GENERATING LPR CODE")

set(BUILD_MODEL_LPR BUILD_MODEL_LPR)

set(LPR_TARGET_NAME lprnet)
set(LPR_AT_MODEL_DIR ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_MODEL_LPR})
set(LPR_MODEL_EXPRESSIONS ${LPR_AT_MODEL_DIR}/${LPR_TARGET_NAME}Expression_Kernels.c)

set(LPR_AT_BIN ${LPR_TARGET_NAME}GenTile)
set(LPR_AT_BIN_PATH ${LPR_AT_MODEL_DIR}/${LPR_TARGET_NAME}GenTile)
set(LPR_AT_MODEL_PATH ${LPR_AT_MODEL_DIR}/${LPR_TARGET_NAME}model.c)
set(LPR_AT_TENSORS_DIR ${LPR_AT_MODEL_DIR}/tensors)
set(LPR_NNTOOL_PY ${CMAKE_CURRENT_SOURCE_DIR}/model/gen_lpr_at_model.py)
set(LPR_NNTOOL_MODEL lprnet.tflite)
set(LPR_NNTOOL_MODEL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/model/${LPR_NNTOOL_MODEL})
set(LPR_AT_MODEL_NAME ${LPR_TARGET_NAME}model.c)
set(LPR_KERNEL_FILE_C ${LPR_TARGET_NAME}Kernels.c)
set(LPR_KERNEL_C ${LPR_AT_MODEL_DIR}/${LPR_KERNEL_FILE_C})

autotiler_add_model(
TARGET_NAME ${LPR_TARGET_NAME}
MODEL_PATH ${LPR_AT_MODEL_PATH}
MODEL_TENSORS_DIR ${LPR_AT_TENSORS_DIR}
MODEL_BUILDDIR ${BUILD_MODEL_LPR}
GEN_NAME lpr
PRI1_USED TRUE
PRI1_FLASH flash
L1_MEMORY 128000 #${CONFIG_MODEL_L1_MEMORY}
L2_MEMORY 1200000 #${CONFIG_MODEL_L2_MEMORY}
#L3_MEMORY ${FACEID_L3_SIZE}
#L2STATIC_MEMORY ${CONFIG_MODEL_L2STATIC_MEMORY}
#L3STATIC_MEMORY ${CONFIG_MODEL_L3STATIC_MEMORY}
)


add_custom_command(
OUTPUT ${LPR_AT_MODEL_PATH} #${LPR_MODEL_EXPRESSIONS}
COMMENT "Generate the autotiler model: ${LPR_NNTOOL_MODEL}"
DEPENDS ${LPR_NNTOOL_PY}
COMMAND python3 ${LPR_NNTOOL_PY} --model_path=${LPR_NNTOOL_MODEL_PATH}
--tensors_dir=${LPR_AT_TENSORS_DIR}
--gen_model_path=${LPR_AT_MODEL_DIR}
--model_file=${LPR_AT_MODEL_NAME}
--gen_name_suffix=${LPR_TARGET_NAME}
--NE16=${USE_NE16}
)
endif()


if(${BUILD_SSD_MODEL})
message(STATUS "${APP_MSG_PREFIX} GENERATING SSD LITE CODE")

set(BUILD_MODEL_SSDLITE BUILD_MODEL_SSD)

set(SSDLITE_TARGET_NAME ssdlite_ocr)
set(SSDLITE_AT_MODEL_DIR ${CMAKE_BINARY_DIR}/${BUILD_MODEL_SSDLITE})
set(SSDLITE_MODEL_EXPRESSIONS ${SSDLITE_AT_MODEL_DIR}/${SSDLITE_TARGET_NAME}Expression_Kernels.c)

set(SSDLITE_AT_BIN ${SSDLITE_TARGET_NAME}GenTile)
set(SSDLITE_AT_BIN_PATH ${SSDLITE_AT_MODEL_DIR}/${SSDLITE_TARGET_NAME}GenTile)
set(SSDLITE_AT_MODEL_PATH ${SSDLITE_AT_MODEL_DIR}/${SSDLITE_TARGET_NAME}Model.c)
#set(SSDLITE_AT_MODEL_PATH ${SSDLITE_TARGET_NAME}Model.c)
set(SSDLITE_AT_TENSORS_DIR ${SSDLITE_AT_MODEL_DIR}/tensors)
set(SSDLITE_NNTOOL_PY ${CMAKE_SOURCE_DIR}/model/gen_ssdlite_at_model.py)
set(SSDLITE_NNTOOL_MODEL ssdlite_ocr.tflite)
set(SSDLITE_NNTOOL_MODEL_PATH ${CMAKE_SOURCE_DIR}/model/${SSDLITE_NNTOOL_MODEL})
set(SSDLITE_AT_MODEL_NAME ${SSDLITE_TARGET_NAME}Model.c)
set(SSDLITE_KERNEL_NAME ${SSDLITE_TARGET_NAME}Kernels)
set(SSDLITE_KERNEL_FILE_C ${SSDLITE_KERNEL_NAME}.c)
set(SSDLITE_KERNEL_C ${BUILD_MODEL_SSDLITE}/${SSDLITE_KERNEL_FILE_C})

autotiler_add_model(
TARGET_NAME ${SSDLITE_TARGET_NAME}
MODEL_PATH ${SSDLITE_AT_MODEL_PATH}
MODEL_TENSORS_DIR ${SSDLITE_AT_TENSORS_DIR}
GEN_NAME ${SSDLITE_AT_BIN}
MODEL_BUILDDIR ${BUILD_MODEL_SSDLITE}
PRI1_USED TRUE
PRI1_FLASH flash
L1_MEMORY 128000 #${CONFIG_MODEL_L1_MEMORY}
L2_MEMORY 1200000 #${CONFIG_MODEL_L2_MEMORY}
)

add_custom_command(
OUTPUT ${SSDLITE_AT_MODEL_PATH} ${SSDLITE_MODEL_EXPRESSIONS}
COMMENT "Generate the autotiler model: ${SSDLITE_NNTOOL_MODEL}"
DEPENDS ${SSDLITE_NNTOOL_PY}
COMMAND python3 ${SSDLITE_NNTOOL_PY} --model_path=${SSDLITE_NNTOOL_MODEL_PATH}
--tensors_dir=${SSDLITE_AT_TENSORS_DIR}
--gen_model_path=${SSDLITE_AT_MODEL_DIR}
--model_file=${SSDLITE_AT_MODEL_NAME}
--gen_name_suffix=${SSDLITE_TARGET_NAME}
--NE16=${USE_NE16}
)
endif()



message(STATUS "${APP_MSG_PREFIX} Main file: ${MAIN}")
###############################################################################
Expand All @@ -96,17 +199,18 @@ message(STATUS "${APP_MSG_PREFIX} Main file: ${MAIN}")

list(APPEND TARGET_SRCS ${MAIN}
${CNN_LIB}
${SSD_KERNEL_C}
${SSDLITE_KERNEL_C}
${SSDLITE_MODEL_EXPRESSIONS}
${LPR_KERNEL_C}
)

list(APPEND TARGET_INCS -I${TILER_INC}
-I${TILER_EMU_INC}
-I$ENV{GAP_H_INC}
-I${GAP_SDK_HOME}/libs/gap_lib/include
${CNN_LIB_INCLUDE}
${CNN_LIB_INCLUDE}
-I${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_SSD
-I${CMAKE_CURRENT_BINARY_DIR}/BUILD_MODEL_LPR
-I${CMAKE_CURRENT_SOURCE_DIR}
-I${CMAKE_SOURCE_DIR}
-I${GAP_SDK_HOME}/utils/power_meas_utils)

list(APPEND TARGET_CFLAGS -gdwarf-2
Expand All @@ -129,7 +233,6 @@ list(APPEND TARGET_PREPROCESSOR -DPERF
-DAT_CONSTRUCT=${AT_CONSTRUCT}
-DAT_DESTRUCT=${AT_DESTRUCT}
-DAT_CNN=${AT_CNN}

-DAT_INPUT_HEIGHT_SSD=${AT_INPUT_HEIGHT_SSD} -DAT_INPUT_WIDTH_SSD=${AT_INPUT_WIDTH_SSD} -DAT_INPUT_COLORS_SSD=${AT_INPUT_COLORS_SSD}
-DAT_INPUT_HEIGHT_LPR=${AT_INPUT_HEIGHT_LPR} -DAT_INPUT_WIDTH_LPR=${AT_INPUT_WIDTH_LPR} -DAT_INPUT_COLORS_LPR=${AT_INPUT_COLORS_LPR}
)
Expand Down
1 change: 1 addition & 0 deletions Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ menu "Licence Plate Recognition APP menu"
config MODEL_NE16
bool "NE16 Model"
select CNN_NE16
select CNN_SQ8

config MODEL_SQ8
bool "Int8 Model"
Expand Down
108 changes: 0 additions & 108 deletions Makefile

This file was deleted.

21 changes: 0 additions & 21 deletions common.mk

This file was deleted.

Loading

0 comments on commit ce63cc5

Please sign in to comment.