138 lines
4.2 KiB
Bash
Executable File
138 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -z "$NETRANS_PATH" ]; then
|
|
echo "Need to set enviroment variable NETRANS_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
OVXGENERATOR=$NETRANS_PATH/pnnacc
|
|
|
|
OVXGENERATOR="$OVXGENERATOR export ovxlib"
|
|
|
|
DATASET=dataset.txt
|
|
|
|
VERIFT='FLASE'
|
|
function export_network()
|
|
{
|
|
NAME=$(basename "$1")
|
|
pushd $1
|
|
|
|
QUANTIZED=$2
|
|
|
|
if [ ${QUANTIZED} = 'float' ]; then
|
|
TYPE=float;
|
|
quantization_type="none_quantized"
|
|
generate_path='./wksp/none_quantized'
|
|
elif [ ${QUANTIZED} = 'uint8' ]; then
|
|
quantization_type="asymmetric_affine"
|
|
generate_path='./wksp/asymmetric_affine'
|
|
TYPE=quantized;
|
|
elif [ ${QUANTIZED} = 'int8' ]; then
|
|
quantization_type="dynamic_fixed_point-8"
|
|
generate_path='./wksp/dynamic_fixed_point-8'
|
|
TYPE=quantized;
|
|
elif [ ${QUANTIZED} = 'int16' ]; then
|
|
quantization_type="dynamic_fixed_point-16"
|
|
generate_path='./wksp/dynamic_fixed_point-16'
|
|
TYPE=quantized;
|
|
else
|
|
echo "=========== wrong quantization_type ! ( float / uint8 / int8 / int16 )==========="
|
|
exit -1
|
|
fi
|
|
|
|
echo " ======================================================================="
|
|
echo " =========== Start Generate $NAME ovx C code with type of ${quantization_type} ==========="
|
|
echo " ======================================================================="
|
|
|
|
mkdir -p "${generate_path}"
|
|
|
|
# if want to import c code into win IDE , change --target-ide-project command-line param from 'linux64' -> 'win32'
|
|
if [ ${QUANTIZED} = 'float' ]; then
|
|
cmd="$OVXGENERATOR \
|
|
--model ${NAME}.json \
|
|
--model-data ${NAME}.data \
|
|
--model-quantize ${NAME}.quantize \
|
|
--dtype ${TYPE} \
|
|
--pack-nbg-viplite \
|
|
--model-quantize ${NAME}_${quantization_type}.quantize \
|
|
--with-input-meta ${NAME}_inputmeta.yml\
|
|
--optimize 'VIP8000NANOQI_PLUS_PID0XB1'\
|
|
--target-ide-project 'linux64' \
|
|
--viv-sdk ${NETRANS_PATH}/pnna_sdk \
|
|
--output-path ${generate_path}/${NAME}_${quantization_type}"
|
|
else
|
|
|
|
if [ -f ${NAME}_${quantization_type}.quantize ]; then
|
|
echo -e "\033[31m using ${NAME}_${quantization_type}.quantize \033[0m"
|
|
else
|
|
echo -e "\033[31m Can not find ${NAME}_${quantization_type}.quantize \033[0m"
|
|
exit -1;
|
|
fi
|
|
|
|
cmd="$OVXGENERATOR \
|
|
--model ${NAME}.json \
|
|
--model-data ${NAME}.data \
|
|
--model-quantize ${NAME}.quantize \
|
|
--dtype ${TYPE} \
|
|
--pack-nbg-viplite \
|
|
--model-quantize ${NAME}_${quantization_type}.quantize \
|
|
--with-input-meta ${NAME}_inputmeta.yml\
|
|
--optimize 'VIP8000NANOQI_PLUS_PID0XB1'\
|
|
--target-ide-project 'linux64' \
|
|
--viv-sdk ${NETRANS_PATH}/pnna_sdk \
|
|
--output-path ${generate_path}/${NAME}_${quantization_type}"
|
|
fi
|
|
echo $cmd
|
|
if [${VERIFY}='TRUE']; then
|
|
echo $cmd
|
|
fi
|
|
eval $cmd
|
|
|
|
# copy input file into source code folder
|
|
# sourcefile="`cat ${DATASET}`"
|
|
# cpcmd="cp -fr $sourcefile ${generate_path}/"
|
|
|
|
# echo $cpcmd
|
|
# eval $cpcmd
|
|
|
|
# temp='wksp/temp'
|
|
|
|
# mkcmd="mkdir -p ${temp}"
|
|
# eval $mkcmd
|
|
|
|
# sourcefile="`cat ${DATASET}`"
|
|
# cpcmd="cp -fr $sourcefile ${temp}/"
|
|
|
|
# echo $cpcmd
|
|
# eval $cpcmd
|
|
|
|
cpcmd="cp ${generate_path}_nbg_viplite/network_binary.nb ${generate_path}/"
|
|
eval $cpcmd
|
|
|
|
delcmd="rm -rf ${generate_path}_nbg_viplite"
|
|
eval $delcmd
|
|
|
|
# rm -rf ${generate_path}
|
|
# mvcmd="mv ${temp} ${generate_path}"
|
|
|
|
# eval $mvcmd
|
|
|
|
echo " ======================================================================="
|
|
echo " =========== End Generate $NAME ovx C code with type of ${quantization_type} ==========="
|
|
echo " ======================================================================="
|
|
|
|
popd
|
|
}
|
|
|
|
if [ "$#" -lt 2 ]; then
|
|
echo "Input a network name and quantized type ( float / uint8 / int8 / int16 )"
|
|
exit -1
|
|
fi
|
|
|
|
if [ ! -e "${1%/}" ]; then
|
|
echo "Directory ${1%/} does not exist !"
|
|
exit -2
|
|
fi
|
|
|
|
export_network ${1%/} ${2%/}
|