infer.sh 8.87 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
30
infer_gpu_id=$(func_parser "${lines[12]}")
log_path=$(func_parser "${lines[13]}")

LDOUBLEV's avatar
LDOUBLEV committed
31

LDOUBLEV's avatar
LDOUBLEV committed
32
function status_check(){
LDOUBLEV's avatar
LDOUBLEV committed
33
    last_status=$1   # the exit code
LDOUBLEV's avatar
LDOUBLEV committed
34
35
36
37
38
39
40
41
42
    run_model=$2
    run_command=$3
    save_log=$4
    if [ $last_status -eq 0 ]; then
        echo -e "\033[33m $run_model successfully with command - ${run_command}!  \033[0m" | tee -a ${save_log}
    else
        echo -e "\033[33m $case failed with command - ${run_command}!  \033[0m" | tee -a ${save_log}
    fi
}
LDOUBLEV's avatar
LDOUBLEV committed
43
IFS='|'
LDOUBLEV's avatar
LDOUBLEV committed
44
for train_model in ${train_model_list[*]}; do 
LDOUBLEV's avatar
LDOUBLEV committed
45
    if [ ${train_model} = "ocr_det" ];then
LDOUBLEV's avatar
LDOUBLEV committed
46
47
        model_name="det"
        yml_file="configs/det/det_mv3_db.yml"
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
48
49
        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 ../
50
        img_dir="./inference/ch_det_data_50/"
LDOUBLEV's avatar
LDOUBLEV committed
51
    elif [ ${train_model} = "ocr_rec" ];then
LDOUBLEV's avatar
LDOUBLEV committed
52
53
        model_name="rec"
        yml_file="configs/rec/rec_mv3_none_bilstm_ctc.yml"
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
54
55
        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 ../
56
        img_dir="./inference/ch_rec_data_200/"
LDOUBLEV's avatar
LDOUBLEV committed
57
58
59
60
61
    fi

    # eval 
    for slim_trainer in ${slim_trainer_list[*]}; do 
        if [ ${slim_trainer} = "norm" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
62
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
63
                eval_model_name="ch_ppocr_mobile_v2.0_det_train"
LDOUBLEV's avatar
LDOUBLEV committed
64
                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
65
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
66
            else 
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
67
                eval_model_name="ch_ppocr_mobile_v2.0_rec_train"
LDOUBLEV's avatar
LDOUBLEV committed
68
                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
69
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
70
71
            fi 
        elif [ ${slim_trainer} = "quant" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
72
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
73
                eval_model_name="ch_ppocr_mobile_v2.0_det_quant_train"
LDOUBLEV's avatar
LDOUBLEV committed
74
                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
75
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
76
            else
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
77
                eval_model_name="ch_ppocr_mobile_v2.0_rec_quant_train"
LDOUBLEV's avatar
LDOUBLEV committed
78
                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
79
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
80
            fi
LDOUBLEV's avatar
LDOUBLEV committed
81
        elif [ ${slim_trainer} = "distill" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
82
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
83
                eval_model_name="ch_ppocr_mobile_v2.0_det_distill_train"
LDOUBLEV's avatar
LDOUBLEV committed
84
                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
85
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
86
            else
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
87
                eval_model_name="ch_ppocr_mobile_v2.0_rec_distill_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_rec_distill_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
91
            fi 
        elif [ ${slim_trainer} = "prune" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
92
            if [ ${model_name} = "det" ]; then
LDOUBLEV's avatar
LDOUBLEV committed
93
94
                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
95
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
96
97
98
            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
99
                cd ./inference && tar xf ${eval_model_name}.tar && cd ../
LDOUBLEV's avatar
LDOUBLEV committed
100
101
            fi
        fi
LDOUBLEV's avatar
LDOUBLEV committed
102

LDOUBLEV's avatar
LDOUBLEV committed
103
        save_log_path="${log_path}/${eval_model_name}"
LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
104
105
        command="${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model="${eval_model_name}/best_accuracy" Global.save_model_dir=${save_log_path}"
        ${python} tools/eval.py -c ${yml_file} -o Global.pretrained_model="${eval_model_name}/best_accuracy" Global.save_model_dir=${save_log_path}
LDOUBLEV's avatar
LDOUBLEV committed
106
        status_check $? "${trainer}" "${command}" "${save_log_path}/train.log"
LDOUBLEV's avatar
LDOUBLEV committed
107

LDOUBLEV's avatar
fix bug  
LDOUBLEV committed
108
109
        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}"
        ${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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
        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
LDOUBLEV's avatar
LDOUBLEV committed
139
140
                    done
                done
LDOUBLEV's avatar
LDOUBLEV committed
141
142
143
144
145
146
147
148
149
150
151
152
153
            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
LDOUBLEV's avatar
LDOUBLEV committed
154
155
                    done
                done
LDOUBLEV's avatar
LDOUBLEV committed
156
157
            fi
        done
LDOUBLEV's avatar
LDOUBLEV committed
158
159
    done
done