infer.sh 9.83 KB
Newer Older
LDOUBLEV's avatar
LDOUBLEV committed
1
#!/bin/bash
LDOUBLEV's avatar
LDOUBLEV committed
2
FILENAME=$1
LDOUBLEV's avatar
LDOUBLEV committed
3
4
5
6
7
8
dataline=$(cat ${FILENAME})
# parser params
IFS=$'\n'
lines=(${dataline})
function func_parser(){
    strs=$1
LDOUBLEV's avatar
LDOUBLEV committed
9
    IFS=": "
LDOUBLEV's avatar
LDOUBLEV committed
10
11
12
13
14
15
16
17
18
19
    array=(${strs})
    tmp=${array[1]}
    echo ${tmp}
}
IFS=$'\n'
# The training params
train_model_list=$(func_parser "${lines[0]}")
slim_trainer_list=$(func_parser "${lines[3]}")
python=$(func_parser "${lines[4]}")
# inference params
LDOUBLEV's avatar
LDOUBLEV committed
20
# inference=$(func_parser "${lines[5]}")
LDOUBLEV's avatar
LDOUBLEV committed
21
22
23
24
25
26
27
devices=$(func_parser "${lines[6]}")
use_mkldnn_list=$(func_parser "${lines[7]}")
cpu_threads_list=$(func_parser "${lines[8]}")
rec_batch_size_list=$(func_parser "${lines[9]}")
gpu_trt_list=$(func_parser "${lines[10]}")
gpu_precision_list=$(func_parser "${lines[11]}")

28
29
infer_gpu_id=$(func_parser "${lines[12]}")
log_path=$(func_parser "${lines[13]}")
30
status_log="${log_path}/result.log"
31

LDOUBLEV's avatar
LDOUBLEV committed
32
33
34
35
36
# install requirments
${python} -m pip install pynvml;
${python} -m pip install psutil;
${python} -m pip install GPUtil;

LDOUBLEV's avatar
LDOUBLEV committed
37
paddle_info="$(${python} -c "import paddle;print(f'paddle_version:{paddle.__version__}');print(f'paddle_commit:{paddle.__git_commit__}')")"
38
39
40
41
42
echo -e "\033[33m $paddle_info \033[0m" | tee -a ${status_log}
cpu_model=`cat /proc/cpuinfo | grep "model name" | awk -F ':' '{print $2}' | sort | uniq`
echo -e "\033[33m cpu_info:$cpu_model \033[0m" | tee -a ${status_log}
ip=`ifconfig| grep -A 1 'eth0'|grep 'inet'|awk -F ':' '{print $2}'|awk '{print $1}'`
echo -e "\033[33m ip_info:$ip \033[0m" | tee -a ${status_log}
LDOUBLEV's avatar
LDOUBLEV committed
43

LDOUBLEV's avatar
LDOUBLEV committed
44
function status_check(){
LDOUBLEV's avatar
LDOUBLEV committed
45
    last_status=$1   # the exit code
LDOUBLEV's avatar
LDOUBLEV committed
46
47
    run_model=$2
    run_command=$3
LDOUBLEV's avatar
LDOUBLEV committed
48
    run_log=$4
LDOUBLEV's avatar
LDOUBLEV committed
49
    if [ $last_status -eq 0 ]; then
LDOUBLEV's avatar
LDOUBLEV committed
50
        echo -e "\033[33m $run_model successfully with command - ${run_command}!  \033[0m" | tee -a ${run_log}
LDOUBLEV's avatar
LDOUBLEV committed
51
    else
LDOUBLEV's avatar
LDOUBLEV committed
52
        echo -e "\033[33m $case failed with command - ${run_command}!  \033[0m" | tee -a ${run_log}
LDOUBLEV's avatar
LDOUBLEV committed
53
54
    fi
}
LDOUBLEV's avatar
LDOUBLEV committed
55
IFS='|'
LDOUBLEV's avatar
LDOUBLEV committed
56
for train_model in ${train_model_list[*]}; do 
LDOUBLEV's avatar
LDOUBLEV committed
57
    if [ ${train_model} = "ocr_det" ];then
LDOUBLEV's avatar
LDOUBLEV committed
58
        model_name="det"
LDOUBLEV's avatar
LDOUBLEV committed
59
        yml_file="configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml"
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
60
61
        wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_det_data_50.tar
        cd ./inference && tar xf ch_det_data_50.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
62
63
64
        img_dir="./inference/ch_det_data_50/all-sum-510"
        data_dir=./inference/ch_det_data_50/
        data_label_file=[./inference/ch_det_data_50/test_gt_50.txt]
LDOUBLEV's avatar
LDOUBLEV committed
65
    elif [ ${train_model} = "ocr_rec" ];then
LDOUBLEV's avatar
LDOUBLEV committed
66
67
        model_name="rec"
        yml_file="configs/rec/rec_mv3_none_bilstm_ctc.yml"
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
68
69
        wget -nc -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/test/ch_rec_data_200.tar 
        cd ./inference && tar xf ch_rec_data_200.tar  && cd ../
70
        img_dir="./inference/ch_rec_data_200/"
LDOUBLEV's avatar
LDOUBLEV committed
71
72
73
74
75
    fi

    # eval 
    for slim_trainer in ${slim_trainer_list[*]}; do 
        if [ ${slim_trainer} = "norm" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
76
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
77
                eval_model_name="ch_ppocr_mobile_v2.0_det_train"
LDOUBLEV's avatar
LDOUBLEV committed
78
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
79
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
80
            else 
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
81
                eval_model_name="ch_ppocr_mobile_v2.0_rec_train"
LDOUBLEV's avatar
LDOUBLEV committed
82
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
83
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
84
            fi 
LDOUBLEV's avatar
LDOUBLEV committed
85
        elif [ ${slim_trainer} = "pact" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
86
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
87
                eval_model_name="ch_ppocr_mobile_v2.0_det_quant_train"
LDOUBLEV's avatar
LDOUBLEV committed
88
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_det_quant_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
89
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
90
            else
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
91
                eval_model_name="ch_ppocr_mobile_v2.0_rec_quant_train"
LDOUBLEV's avatar
LDOUBLEV committed
92
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_quant_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
93
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
94
            fi
LDOUBLEV's avatar
LDOUBLEV committed
95
        elif [ ${slim_trainer} = "distill" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
96
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
97
                eval_model_name="ch_ppocr_mobile_v2.0_det_distill_train"
LDOUBLEV's avatar
LDOUBLEV committed
98
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_det_distill_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
99
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
100
            else
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
101
                eval_model_name="ch_ppocr_mobile_v2.0_rec_distill_train"
LDOUBLEV's avatar
LDOUBLEV committed
102
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_distill_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
103
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
104
            fi 
LDOUBLEV's avatar
LDOUBLEV committed
105
        elif [ ${slim_trainer} = "fpgm" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
106
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
107
108
                eval_model_name="ch_ppocr_mobile_v2.0_det_prune_train"
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_det_prune_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
109
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
110
111
112
            else
                eval_model_name="ch_ppocr_mobile_v2.0_rec_prune_train"
                wget -nc  -P ./inference https://paddleocr.bj.bcebos.com/dygraph_v2.0/slim/ch_ppocr_mobile_v2.0_rec_prune_train.tar
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
113
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
114
115
            fi
        fi
LDOUBLEV's avatar
LDOUBLEV committed
116

LDOUBLEV's avatar
LDOUBLEV committed
117
        save_log_path="${log_path}/${eval_model_name}"
LDOUBLEV's avatar
LDOUBLEV committed
118
119
        command="${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model='./inference/${eval_model_name}/best_accuracy' Global.save_model_dir=${save_log_path} Eval.dataset.data_dir=${data_dir}  Eval.dataset.label_file_list=${data_label_file}"
        ${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model=./inference/${eval_model_name}/best_accuracy Global.save_model_dir=${save_log_path} Eval.dataset.data_dir=${data_dir}  Eval.dataset.label_file_list=${data_label_file}
120
        status_check $? "${trainer}" "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
121

LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
122
        command="${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model="${eval_model_name}/best_accuracy" Global.save_inference_dir=${log_path}/${eval_model_name}_infer Global.save_model_dir=${save_log_path}"
LDOUBLEV's avatar
LDOUBLEV committed
123
        ${python} tools/export_model.py -c ${yml_file} -o Global.pretrained_model="./inference/${eval_model_name}/best_accuracy" Global.save_inference_dir="${log_path}/${eval_model_name}_infer" Global.save_model_dir=${save_log_path}
124
        status_check $? "${trainer}" "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
125
126
127
128
129
130
131
132
133
134

        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"
LDOUBLEV's avatar
LDOUBLEV committed
135
            det_model_dir="${log_path}/${eval_model_name}_infer"
LDOUBLEV's avatar
LDOUBLEV committed
136
137
138
            rec_model_dir=""
        elif [ "${model_name}" = "rec" ]; then
            inference="tools/infer/predict_rec.py"
LDOUBLEV's avatar
LDOUBLEV committed
139
            rec_model_dir="${log_path}/${eval_model_name}_infer"
LDOUBLEV's avatar
LDOUBLEV committed
140
141
142
143
144
145
146
147
148
149
150
            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}
151
                            status_check $? "${trainer}" "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
152
                        done
LDOUBLEV's avatar
LDOUBLEV committed
153
154
                    done
                done
LDOUBLEV's avatar
LDOUBLEV committed
155
156
            else
                # env="export CUDA_VISIBLE_DEVICES=${infer_gpu_id}"
LDOUBLEV's avatar
LDOUBLEV committed
157
158
159
160
161
162
163
                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"
LDOUBLEV's avatar
LDOUBLEV committed
164
165
                            command="${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}"
                            ${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}
166
                            status_check $? "${trainer}" "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
167
                        done
LDOUBLEV's avatar
LDOUBLEV committed
168
169
                    done
                done
LDOUBLEV's avatar
LDOUBLEV committed
170
171
            fi
        done
LDOUBLEV's avatar
LDOUBLEV committed
172
173
    done
done