PaddleClas/test_tipc/prepare.sh

318 lines
11 KiB
Bash
Raw Normal View History

2021-11-10 19:38:22 +08:00
#!/bin/bash
FILENAME=$1
2022-04-27 22:10:29 +08:00
# MODE be one of ['lite_train_lite_infer' 'lite_train_whole_infer' 'whole_train_whole_infer',
2022-06-24 22:24:27 +08:00
# 'whole_infer', 'cpp_infer', 'serving_infer', 'lite_infer']
2021-11-10 19:38:22 +08:00
MODE=$2
dataline=$(cat ${FILENAME})
# parser params
IFS=$'\n'
lines=(${dataline})
2022-05-31 19:27:30 +08:00
function func_parser_key() {
2021-11-10 19:38:22 +08:00
strs=$1
IFS=":"
array=(${strs})
tmp=${array[0]}
echo ${tmp}
}
2022-05-31 19:27:30 +08:00
function func_parser_value() {
2021-11-10 19:38:22 +08:00
strs=$1
IFS=":"
array=(${strs})
if [ ${#array[*]} = 2 ]; then
echo ${array[1]}
else
2022-05-31 19:27:30 +08:00
IFS="|"
tmp="${array[1]}:${array[2]}"
2021-11-10 19:38:22 +08:00
echo ${tmp}
fi
}
2022-05-31 19:27:30 +08:00
function func_get_url_file_name() {
2021-12-01 15:34:06 +08:00
strs=$1
IFS="/"
array=(${strs})
2022-05-31 19:27:30 +08:00
tmp=${array[${#array[@]} - 1]}
2021-12-01 15:34:06 +08:00
echo ${tmp}
}
model_name=$(func_parser_value "${lines[1]}")
2022-06-07 17:49:13 +08:00
if [[ ${MODE} = "cpp_infer" ]]; then
2022-05-31 19:27:30 +08:00
if [ -d "./deploy/cpp/opencv-3.4.7/opencv3/" ] && [ $(md5sum ./deploy/cpp/opencv-3.4.7.tar.gz | awk -F ' ' '{print $1}') = "faa2b5950f8bee3f03118e600c74746a" ]; then
2022-05-31 14:52:39 +08:00
echo "################### build opencv skipped ###################"
else
echo "################### build opencv ###################"
rm -rf ./deploy/cpp/opencv-3.4.7.tar.gz ./deploy/cpp/opencv-3.4.7/
pushd ./deploy/cpp/
wget -nc https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/opencv-3.4.7.tar.gz
tar -xf opencv-3.4.7.tar.gz
cd opencv-3.4.7/
install_path=$(pwd)/opencv3
rm -rf build
mkdir build
cd build
cmake .. \
2022-05-31 19:27:30 +08:00
-DCMAKE_INSTALL_PREFIX=${install_path} \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_IPP=OFF \
-DBUILD_IPP_IW=OFF \
-DWITH_LAPACK=OFF \
-DWITH_EIGEN=OFF \
-DCMAKE_INSTALL_LIBDIR=lib64 \
-DWITH_ZLIB=ON \
-DBUILD_ZLIB=ON \
-DWITH_JPEG=ON \
-DBUILD_JPEG=ON \
-DWITH_PNG=ON \
-DBUILD_PNG=ON \
-DWITH_TIFF=ON \
-DBUILD_TIFF=ON
2022-05-31 14:52:39 +08:00
make -j
make install
cd ../../
popd
echo "################### build opencv finished ###################"
fi
if [[ ! -d "./deploy/cpp/paddle_inference/" ]]; then
pushd ./deploy/cpp/
PADDLEInfer=$3
if [ "" = "$PADDLEInfer" ];then
wget -nc https://paddle-inference-lib.bj.bcebos.com/2.2.2/cxx_c/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddle_inference.tgz --no-check-certificate
else
wget -nc ${PADDLEInfer} --no-check-certificate
fi
tar xf paddle_inference.tgz
popd
fi
2022-05-31 19:27:30 +08:00
if [[ $FILENAME == *infer_cpp_linux_gpu_cpu.txt ]]; then
cpp_type=$(func_parser_value "${lines[2]}")
cls_inference_model_dir=$(func_parser_value "${lines[3]}")
det_inference_model_dir=$(func_parser_value "${lines[4]}")
cls_inference_url=$(func_parser_value "${lines[5]}")
det_inference_url=$(func_parser_value "${lines[6]}")
if [[ $cpp_type == "cls" ]]; then
eval "wget -nc $cls_inference_url"
2022-06-17 16:37:34 +08:00
tar_name=$(func_get_url_file_name "$cls_inference_url")
model_dir=${tar_name%.*}
eval "tar xf ${tar_name}"
2022-05-31 20:51:09 +08:00
2022-06-24 23:49:15 +08:00
# move '_int8' suffix in pact models
if [[ ${tar_name} =~ "pact_infer" ]]; then
cd ${cls_inference_model_dir}
mv inference_int8.pdiparams inference.pdiparams
mv inference_int8.pdmodel inference.pdmodel
cd ..
fi
2022-05-31 19:27:30 +08:00
cd dataset
rm -rf ILSVRC2012
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/whole_chain_infer.tar
tar xf whole_chain_infer.tar
ln -s whole_chain_infer ILSVRC2012
cd ..
elif [[ $cpp_type == "shitu" ]]; then
eval "wget -nc $cls_inference_url"
tar_name=$(func_get_url_file_name "$cls_inference_url")
model_dir=${tar_name%.*}
eval "tar xf ${tar_name}"
eval "wget -nc $det_inference_url"
tar_name=$(func_get_url_file_name "$det_inference_url")
model_dir=${tar_name%.*}
eval "tar xf ${tar_name}"
2022-05-31 20:51:09 +08:00
2022-05-31 19:27:30 +08:00
cd dataset
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar
tar -xf drink_dataset_v1.0.tar
else
echo "Wrong cpp type in config file in line 3. only support cls, shitu"
fi
exit 0
2022-05-31 14:52:39 +08:00
else
2022-05-31 19:27:30 +08:00
echo "use wrong config file"
exit 1
2022-05-31 14:52:39 +08:00
fi
2021-12-01 15:34:06 +08:00
fi
2021-11-10 19:38:22 +08:00
model_name=$(func_parser_value "${lines[1]}")
model_url_value=$(func_parser_value "${lines[35]}")
model_url_key=$(func_parser_key "${lines[35]}")
2022-06-23 14:46:12 +08:00
if [[ $model_name == *ShiTu* ]]; then
2022-05-31 19:27:30 +08:00
cd dataset
rm -rf Aliproduct
rm -rf train_reg_all_data.txt
rm -rf demo_train
2022-06-07 18:21:41 +08:00
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/tipc_shitu_demo_data.tar --no-check-certificate
2022-05-31 19:27:30 +08:00
tar -xf tipc_shitu_demo_data.tar
ln -s tipc_shitu_demo_data Aliproduct
ln -s tipc_shitu_demo_data/demo_train.txt train_reg_all_data.txt
ln -s tipc_shitu_demo_data/demo_train demo_train
cd tipc_shitu_demo_data
ln -s demo_test.txt val_list.txt
cd ../../
2022-06-07 18:21:41 +08:00
eval "wget -nc $model_url_value --no-check-certificate"
2022-05-31 19:27:30 +08:00
mv general_PPLCNet_x2_5_pretrained_v1.0.pdparams GeneralRecognition_PPLCNet_x2_5_pretrained.pdparams
exit 0
2021-11-25 20:50:13 +08:00
fi
2022-05-31 19:27:30 +08:00
if [[ $FILENAME == *use_dali* ]]; then
2022-01-21 14:31:58 +08:00
python_name=$(func_parser_value "${lines[2]}")
${python_name} -m pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/nightly --upgrade nvidia-dali-nightly-cuda102
fi
2022-06-07 17:49:13 +08:00
if [[ ${MODE} = "lite_train_lite_infer" ]] || [[ ${MODE} = "lite_train_whole_infer" ]]; then
2021-11-10 19:38:22 +08:00
# pretrain lite train data
cd dataset
rm -rf ILSVRC2012
2022-06-07 18:21:41 +08:00
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/whole_chain_little_train.tar --no-check-certificate
2021-11-10 19:38:22 +08:00
tar xf whole_chain_little_train.tar
ln -s whole_chain_little_train ILSVRC2012
2022-04-27 22:10:29 +08:00
cd ILSVRC2012
2021-11-10 19:38:22 +08:00
mv train.txt train_list.txt
mv val.txt val_list.txt
2021-12-24 11:11:26 +08:00
cp -r train/* val/
2021-11-10 19:38:22 +08:00
cd ../../
2022-06-28 12:06:54 +08:00
if [[ ${FILENAME} =~ "pact_infer" ]]; then
# download pretrained model for PACT training
pretrpretrained_model_url=$(func_parser_value "${lines[35]}")
mkdir pretrained_model
cd pretrained_model
wget -nc ${pretrpretrained_model_url} --no-check-certificate
cd ..
fi
2022-06-24 22:24:27 +08:00
elif [[ ${MODE} = "whole_infer" ]]; then
2021-11-10 19:38:22 +08:00
# download data
2022-06-24 12:25:56 +08:00
if [[ ${model_name} =~ "GeneralRecognition" ]]; then
cd dataset
rm -rf Aliproduct
rm -rf train_reg_all_data.txt
rm -rf demo_train
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/tipc_shitu_demo_data.tar --no-check-certificate
tar -xf tipc_shitu_demo_data.tar
ln -s tipc_shitu_demo_data Aliproduct
ln -s tipc_shitu_demo_data/demo_train.txt train_reg_all_data.txt
ln -s tipc_shitu_demo_data/demo_train demo_train
cd tipc_shitu_demo_data
ln -s demo_test.txt val_list.txt
cd ../../
else
cd dataset
rm -rf ILSVRC2012
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/whole_chain_infer.tar
tar xf whole_chain_infer.tar
ln -s whole_chain_infer ILSVRC2012
cd ILSVRC2012
mv val.txt val_list.txt
ln -s val_list.txt train_list.txt
cd ../../
fi
2021-11-10 19:38:22 +08:00
# download inference or pretrained model
eval "wget -nc $model_url_value"
2022-06-23 14:46:12 +08:00
if [[ ${model_url_value} =~ ".tar" ]]; then
tar_name=$(func_get_url_file_name "${model_url_value}")
echo $tar_name
rm -rf {tar_name}
tar xf ${tar_name}
2021-11-10 19:38:22 +08:00
fi
2022-05-31 19:27:30 +08:00
if [[ $model_name == "SwinTransformer_large_patch4_window7_224" || $model_name == "SwinTransformer_large_patch4_window12_384" ]]; then
cmd="mv ${model_name}_22kto1k_pretrained.pdparams ${model_name}_pretrained.pdparams"
eval $cmd
2021-11-29 12:34:15 +08:00
fi
2022-06-07 17:49:13 +08:00
elif [[ ${MODE} = "whole_train_whole_infer" ]]; then
2021-11-10 19:38:22 +08:00
cd dataset
rm -rf ILSVRC2012
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/whole_chain/whole_chain_CIFAR100.tar
tar xf whole_chain_CIFAR100.tar
ln -s whole_chain_CIFAR100 ILSVRC2012
2022-04-27 22:10:29 +08:00
cd ILSVRC2012
2021-11-10 19:38:22 +08:00
mv train.txt train_list.txt
2021-11-19 17:01:00 +08:00
mv test.txt val_list.txt
2021-11-10 19:38:22 +08:00
cd ../../
2022-06-28 12:06:54 +08:00
if [[ ${FILENAME} =~ "pact_infer" ]]; then
# download pretrained model for PACT training
pretrpretrained_model_url=$(func_parser_value "${lines[35]}")
mkdir pretrained_model
cd pretrained_model
wget -nc ${pretrpretrained_model_url} --no-check-certificate
cd ..
fi
2021-11-10 19:38:22 +08:00
fi
2022-06-07 17:49:13 +08:00
if [[ ${MODE} = "serving_infer" ]]; then
2021-11-10 19:38:22 +08:00
# prepare serving env
2022-06-12 22:28:30 +08:00
python_name=$(func_parser_value "${lines[2]}")
2022-06-21 20:41:54 +08:00
if [[ ${model_name} = "PPShiTu" ]]; then
2022-06-02 22:17:18 +08:00
cls_inference_model_url=$(func_parser_value "${lines[3]}")
cls_tar_name=$(func_get_url_file_name "${cls_inference_model_url}")
det_inference_model_url=$(func_parser_value "${lines[4]}")
det_tar_name=$(func_get_url_file_name "${det_inference_model_url}")
2022-06-02 18:42:24 +08:00
cd ./deploy
2022-06-13 20:39:45 +08:00
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar --no-check-certificate
tar -xf drink_dataset_v1.0.tar
2022-06-02 18:42:24 +08:00
mkdir models
cd models
wget -nc ${cls_inference_model_url} && tar xf ${cls_tar_name}
wget -nc ${det_inference_model_url} && tar xf ${det_tar_name}
cd ..
2022-06-02 22:17:18 +08:00
else
cls_inference_model_url=$(func_parser_value "${lines[3]}")
cls_tar_name=$(func_get_url_file_name "${cls_inference_model_url}")
cd ./deploy/paddleserving
2022-06-24 23:49:15 +08:00
wget -nc ${cls_inference_model_url}
tar xf ${cls_tar_name}
# move '_int8' suffix in pact models
if [[ ${cls_tar_name} =~ "pact_infer" ]]; then
cls_inference_model_dir=${cls_tar_name%%.tar}
cd ${cls_inference_model_dir}
mv inference_int8.pdiparams inference.pdiparams
mv inference_int8.pdmodel inference.pdmodel
cd ..
fi
2022-06-02 22:17:18 +08:00
cd ../../
2022-06-02 18:42:24 +08:00
fi
2021-11-10 19:38:22 +08:00
unset http_proxy
unset https_proxy
fi
2022-01-20 19:23:17 +08:00
2022-06-07 17:49:13 +08:00
if [[ ${MODE} = "paddle2onnx_infer" ]]; then
2022-01-20 19:23:17 +08:00
# prepare paddle2onnx env
python_name=$(func_parser_value "${lines[2]}")
2022-06-01 00:21:03 +08:00
inference_model_url=$(func_parser_value "${lines[10]}")
tar_name=${inference_model_url##*/}
${python_name} -m pip install paddle2onnx
2022-01-20 19:23:17 +08:00
${python_name} -m pip install onnxruntime
2022-06-01 00:21:03 +08:00
cd deploy
mkdir models
cd models
wget -nc ${inference_model_url}
tar xf ${tar_name}
cd ../../
2022-01-20 19:23:17 +08:00
fi
2022-02-10 16:25:52 +08:00
2022-06-07 17:49:13 +08:00
if [[ ${MODE} = "benchmark_train" ]]; then
2022-02-10 16:25:52 +08:00
pip install -r requirements.txt
cd dataset
rm -rf ILSVRC2012
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/data/ImageNet1k/ILSVRC2012_val.tar
tar xf ILSVRC2012_val.tar
ln -s ILSVRC2012_val ILSVRC2012
cd ILSVRC2012
2022-05-31 19:27:30 +08:00
ln -s val_list.txt train_list.txt
2022-02-10 16:25:52 +08:00
cd ../../
fi