diff --git a/test/infer.sh b/test/infer.sh index db8b788c071a2f00f6e0270a8bedcb7d3ca51762..18aab1f194e51ec949547d674aa875cd6e6a2ce4 100644 --- a/test/infer.sh +++ b/test/infer.sh @@ -1,12 +1,12 @@ #!/bin/bash - +FILENAME=$1 dataline=$(cat ${FILENAME}) # parser params IFS=$'\n' lines=(${dataline}) function func_parser(){ strs=$1 - IFS=":" + IFS=": " array=(${strs}) tmp=${array[1]} echo ${tmp} @@ -17,7 +17,7 @@ train_model_list=$(func_parser "${lines[0]}") slim_trainer_list=$(func_parser "${lines[3]}") python=$(func_parser "${lines[4]}") # inference params -inference=$(func_parser "${lines[5]}") +# inference=$(func_parser "${lines[5]}") devices=$(func_parser "${lines[6]}") use_mkldnn_list=$(func_parser "${lines[7]}") cpu_threads_list=$(func_parser "${lines[8]}") @@ -40,14 +40,15 @@ function status_check(){ echo -e "\033[33m $case failed with command - ${run_command}! \033[0m" | tee -a ${save_log} fi } - +IFS='|' for train_model in ${train_model_list[*]}; do - if [ ${train_model} = "det" ];then + if [ ${train_model} = "ocr_det" ];then model_name="det" yml_file="configs/det/det_mv3_db.yml" - wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_det_data_50.tar && tar xf ./inference/ch_det_data_50.tar + # wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_det_data_50.tar + tar xf ./inference/ch_det_data_50.tar img_dir="./inference/ch_det_data_50/" - elif [ ${train_model} = "rec" ];then + elif [ ${train_model} = "ocr_rec" ];then model_name="rec" yml_file="configs/rec/rec_mv3_none_bilstm_ctc.yml" wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_rec_data_200.tar && tar xf ./inference/ch_rec_data_200.tar @@ -71,7 +72,7 @@ for train_model in ${train_model_list[*]}; do else eval_model_name="ch_ppocr_mobile_v2.0_rec_quant_infer" wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_quant_train.tar - fi + fi elif [ ${slim_trainer} = "distill" ]; then if [ ${model_name} = "det" ]; then eval_model_name="ch_ppocr_mobile_v2.0_det_distill_infer" @@ -89,59 +90,61 @@ for train_model in ${train_model_list[*]}; do wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_prune_train.tar fi fi - save_log_path="${log_path}/${eval_model_name}" - command="${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_model_dir=${save_log_path}" - ${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_model_dir=${save_log_path} - status_check $? "${trainer}" "${command}" "${save_log_path}/train.log" - command="${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_inference_dir=${log_path}/${eval_model_name}_infer Global.save_model_dir=${save_log_path}" - ${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_inference_dir=${log_path}/${eval_model_name}_infer Global.save_model_dir=${save_log_path} - status_check $? "${trainer}" "${command}" "${save_log_path}/train.log" + save_log_path="${log_path}/${eval_model_name}" + command="${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_model_dir=${save_log_path}" + ${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_model_dir=${save_log_path} + status_check $? "${trainer}" "${command}" "${save_log_path}/train.log" - if [ $? -eq 0 ]; then - echo -e "\033[33m training of $model_name successfully!\033[0m" | tee -a ${save_log}/train.log - else - cat ${save_log}/train.log - echo -e "\033[33m training of $model_name failed!\033[0m" | tee -a ${save_log}/train.log - fi - if [ "${model_name}" = "det" ]; then - export rec_batch_size_list=( "1" ) - inference="tools/infer/predict_det.py" - det_model_dir=${log_path}/${eval_model_name}_infer - rec_model_dir="" - elif [ "${model_name}" = "rec" ]; then - inference="tools/infer/predict_rec.py" - rec_model_dir=${log_path}/${eval_model_name}_infer - det_model_dir="" - fi - # inference - for device in ${devices[*]}; do - if [ ${device} = "cpu" ]; then - for use_mkldnn in ${use_mkldnn_list[*]}; do - for threads in ${cpu_threads_list[*]}; do - for rec_batch_size in ${rec_batch_size_list[*]}; do - save_log_path="${log_path}/${model_name}_${slim_trainer}_cpu_usemkldnn_${use_mkldnn}_cputhreads_${threads}_recbatchnum_${rec_batch_size}_infer.log" - command="${python} ${inference} --enable_mkldnn=${use_mkldnn} --use_gpu=False --cpu_threads=${threads} --benchmark=True --det_model_dir=${det_model_dir} --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path}" - ${python} ${inference} --enable_mkldnn=${use_mkldnn} --use_gpu=False --cpu_threads=${threads} --benchmark=True --det_model_dir=${det_model_dir} --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path} - status_check $? "${trainer}" "${command}" "${save_log_path}" + command="${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_inference_dir=${log_path}/${eval_model_name}_infer Global.save_model_dir=${save_log_path}" + ${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model=${eval_model_name} Global.save_inference_dir="${log_path}/${eval_model_name}_infer" Global.save_model_dir=${save_log_path} + status_check $? "${trainer}" "${command}" "${save_log_path}/train.log" + + if [ $? -eq 0 ]; then + echo -e "\033[33m training of $model_name successfully!\033[0m" | tee -a ${save_log}/train.log + else + cat ${save_log}/train.log + echo -e "\033[33m training of $model_name failed!\033[0m" | tee -a ${save_log}/train.log + fi + if [ "${model_name}" = "det" ]; then + export rec_batch_size_list=( "1" ) + inference="tools/infer/predict_det.py" + det_model_dir=${log_path}/${eval_model_name}_infer + rec_model_dir="" + elif [ "${model_name}" = "rec" ]; then + inference="tools/infer/predict_rec.py" + rec_model_dir=${log_path}/${eval_model_name}_infer + det_model_dir="" + fi + # inference + for device in ${devices[*]}; do + if [ ${device} = "cpu" ]; then + for use_mkldnn in ${use_mkldnn_list[*]}; do + for threads in ${cpu_threads_list[*]}; do + for rec_batch_size in ${rec_batch_size_list[*]}; do + save_log_path="${log_path}/${model_name}_${slim_trainer}_cpu_usemkldnn_${use_mkldnn}_cputhreads_${threads}_recbatchnum_${rec_batch_size}_infer.log" + command="${python} ${inference} --enable_mkldnn=${use_mkldnn} --use_gpu=False --cpu_threads=${threads} --benchmark=True --det_model_dir=${det_model_dir} --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path}" + ${python} ${inference} --enable_mkldnn=${use_mkldnn} --use_gpu=False --cpu_threads=${threads} --benchmark=True --det_model_dir=${det_model_dir} --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path} + status_check $? "${trainer}" "${command}" "${save_log_path}" + done done done - done - else - env="CUDA_VISIBLE_DEVICES=${infer_gpu_id}" - for use_trt in ${gpu_trt_list[*]}; do - for precision in ${gpu_precision_list[*]}; do - if [ ${use_trt} = "False" ] && [ ${precision} != "fp32" ]; then - continue - fi - for rec_batch_size in ${rec_batch_size_list[*]}; do - save_log_path="${log_path}/${model_name}_${slim_trainer}_gpu_usetensorrt_${use_trt}_usefp16_${precision}_recbatchnum_${rec_batch_size}_infer.log" - command="${env} ${python} ${inference} --use_gpu=True --use_tensorrt=${use_trt} --precision=${precision} --benchmark=True --det_model_dir=${log_path}/${eval_model_name}_infer --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path}" - ${env} ${python} ${inference} --use_gpu=True --use_tensorrt=${use_trt} --precision=${precision} --benchmark=True --det_model_dir=${log_path}/${eval_model_name}_infer --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path} - status_check $? "${trainer}" "${command}" "${save_log_path}" + else + env="CUDA_VISIBLE_DEVICES=${infer_gpu_id}" + for use_trt in ${gpu_trt_list[*]}; do + for precision in ${gpu_precision_list[*]}; do + if [ ${use_trt} = "False" ] && [ ${precision} != "fp32" ]; then + continue + fi + for rec_batch_size in ${rec_batch_size_list[*]}; do + save_log_path="${log_path}/${model_name}_${slim_trainer}_gpu_usetensorrt_${use_trt}_usefp16_${precision}_recbatchnum_${rec_batch_size}_infer.log" + command="${env} ${python} ${inference} --use_gpu=True --use_tensorrt=${use_trt} --precision=${precision} --benchmark=True --det_model_dir=${log_path}/${eval_model_name}_infer --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path}" + ${env} ${python} ${inference} --use_gpu=True --use_tensorrt=${use_trt} --precision=${precision} --benchmark=True --det_model_dir=${log_path}/${eval_model_name}_infer --rec_batch_num=${rec_batch_size} --rec_model_dir=${rec_model_dir} --image_dir=${img_dir} --save_log_path=${save_log_path} + status_check $? "${trainer}" "${command}" "${save_log_path}" + done done done - done - fi + fi + done done done diff --git a/test/params.txt b/test/params.txt index ff1cc008f1ad3d9c322c782f12a37435446d794f..93c5ccdeb8142a430077e01529dee6dfcbc1953c 100644 --- a/test/params.txt +++ b/test/params.txt @@ -1,7 +1,7 @@ train_model_list: ocr_det gpu_list: -1|0|0,1 auto_cast_list: False -trainer_list: norm|quant|prune +trainer_list: norm|quant python: python3.7 inference: python diff --git a/test/test.sh b/test/test.sh index cc1aee923a92467bb2beed679aa5e449d201058d..24a68b26746f216328bacc5fe16e7d2a968a178f 100644 --- a/test/test.sh +++ b/test/test.sh @@ -78,7 +78,7 @@ function status_check(){ fi } - +IFS="|" for train_model in ${train_model_list[*]}; do if [ ${train_model} = "ocr_det" ];then model_name="det" @@ -107,7 +107,7 @@ for train_model in ${train_model_list[*]}; do env="CUDA_VISIBLE_DEVICES=${array[0]}" IFS="|" fi - + IFS="|" for auto_cast in ${auto_cast_list[*]}; do for slim_trainer in ${slim_trainer_list[*]}; do if [ ${slim_trainer} = "norm" ]; then @@ -126,13 +126,13 @@ for train_model in ${train_model_list[*]}; do trainer="tools/train.py" export_model="tools/export_model.py" fi - save_log=${log_path}/${model_name}_${slim_trainer}_autocast_${auto_cast}_gpuid_${gpu} + save_log="${log_path}/${model_name}_${slim_trainer}_autocast_${auto_cast}_gpuid_${gpu}" command="${env} ${python} ${launch} ${trainer} -c ${yml_file} -o Global.epoch_num=${epoch} Global.eval_batch_step=${eval_batch_step} Global.auto_cast=${auto_cast} Global.save_model_dir=${save_log} Global.use_gpu=${use_gpu}" ${env} ${python} ${launch} ${trainer} -c ${yml_file} -o Global.epoch_num=${epoch} Global.eval_batch_step=${eval_batch_step} Global.auto_cast=${auto_cast} Global.save_model_dir=${save_log} Global.use_gpu=${use_gpu} status_check $? "${trainer}" "${command}" "${save_log}/train.log" - command="${env} ${python} ${export_model} -c ${yml_file} -o Global.pretrained_model=${save_log}/best_accuracy Global.save_inference_dir=${save_log}/export_inference/ Global.save_model_dir=${save_log}" - ${env} ${python} ${export_model} -c ${yml_file} -o Global.pretrained_model=${save_log}/best_accuracy Global.save_inference_dir=${save_log}/export_inference/ Global.save_model_dir=${save_log} + command="${env} ${python} ${export_model} -c ${yml_file} -o Global.pretrained_model=${save_log}/latest Global.save_inference_dir=${save_log}/export_inference/ Global.save_model_dir=${save_log}" + ${env} ${python} ${export_model} -c ${yml_file} -o Global.pretrained_model=${save_log}/latest Global.save_inference_dir=${save_log}/export_inference/ Global.save_model_dir=${save_log} status_check $? "${trainer}" "${command}" "${save_log}/train.log" if [ "${model_name}" = "det" ]; then