Skip to content

Commit 00042b0

Browse files
Check use_gpu in ocr models. (PaddlePaddle#2733)
1 parent 8a6931d commit 00042b0

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

PaddleCV/ocr_recognition/eval.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import paddle.fluid as fluid
22
from utility import add_arguments, print_arguments, to_lodtensor, get_ctc_feeder_data, get_attention_feeder_data
3+
from utility import check_gpu
34
from attention_model import attention_eval
45
from crnn_ctc_model import ctc_eval
56
import data_reader
@@ -70,6 +71,7 @@ def evaluate(args):
7071
def main():
7172
args = parser.parse_args()
7273
print_arguments(args)
74+
check_gpu(args.use_gpu)
7375
evaluate(args)
7476

7577

PaddleCV/ocr_recognition/infer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import print_function
22
import paddle.fluid as fluid
33
from utility import add_arguments, print_arguments, to_lodtensor, get_ctc_feeder_data, get_attention_feeder_for_infer, get_ctc_feeder_for_infer
4+
from utility import check_gpu
45
import paddle.fluid.profiler as profiler
56
from crnn_ctc_model import ctc_infer
67
from attention_model import attention_infer
@@ -138,6 +139,7 @@ def prune(words, sos, eos):
138139
def main():
139140
args = parser.parse_args()
140141
print_arguments(args)
142+
check_gpu(args.use_gpu)
141143
if args.profile:
142144
if args.use_gpu:
143145
with profiler.cuda_profiler("cuda_profiler.txt", 'csv') as nvprof:

PaddleCV/ocr_recognition/train.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from __future__ import print_function
55
import paddle.fluid as fluid
66
from utility import add_arguments, print_arguments, to_lodtensor, get_ctc_feeder_data, get_attention_feeder_data
7+
from utility import check_gpu
78
import paddle.fluid.profiler as profiler
89
from crnn_ctc_model import ctc_train_net
910
from attention_model import attention_train_net
@@ -67,7 +68,9 @@ def train(args):
6768
cycle=args.total_step > 0,
6869
model=args.model)
6970
test_reader = data_reader.test(
70-
test_images_dir=args.test_images, test_list_file=args.test_list, model=args.model)
71+
test_images_dir=args.test_images,
72+
test_list_file=args.test_list,
73+
model=args.model)
7174

7275
# prepare environment
7376
place = fluid.CPUPlace()
@@ -115,8 +118,8 @@ def test(iter_num):
115118
for data in test_reader():
116119
exe.run(inference_program, feed=get_feeder_data(data, place))
117120
_, test_seq_error = error_evaluator.eval(exe)
118-
print("\nTime: %s; Iter[%d]; Test seq error: %s.\n" % (
119-
time.time(), iter_num, str(test_seq_error[0])))
121+
print("\nTime: %s; Iter[%d]; Test seq error: %s.\n" %
122+
(time.time(), iter_num, str(test_seq_error[0])))
120123

121124
#Note: The following logs are special for CE monitoring.
122125
#Other situations do not need to care about these logs.
@@ -155,10 +158,10 @@ def save_model(args, exe, iter_num):
155158
iter_num += 1
156159
# training log
157160
if iter_num % args.log_period == 0:
158-
print("\nTime: %s; Iter[%d]; Avg loss: %.3f; Avg seq err: %.3f" % (
159-
time.time(), iter_num,
160-
total_loss / (args.log_period * args.batch_size),
161-
total_seq_error / (args.log_period * args.batch_size)))
161+
print("\nTime: %s; Iter[%d]; Avg loss: %.3f; Avg seq err: %.3f"
162+
% (time.time(), iter_num,
163+
total_loss / (args.log_period * args.batch_size),
164+
total_seq_error / (args.log_period * args.batch_size)))
162165
print("kpis train_cost %f" % (total_loss / (args.log_period *
163166
args.batch_size)))
164167
print("kpis train_acc %f" % (
@@ -203,6 +206,7 @@ def save_model(args, exe, iter_num):
203206
def main():
204207
args = parser.parse_args()
205208
print_arguments(args)
209+
check_gpu(args.use_gpu)
206210
if args.profile:
207211
if args.use_gpu:
208212
with profiler.cuda_profiler("cuda_profiler.txt", 'csv') as nvprof:

PaddleCV/ocr_recognition/utility.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,22 @@ def get_attention_feeder_for_infer(data, place):
140140
"init_ids": init_ids,
141141
"init_scores": init_scores
142142
}
143+
144+
145+
def check_gpu(use_gpu):
146+
"""
147+
Log error and exit when set use_gpu=true in paddlepaddle
148+
cpu version.
149+
"""
150+
err = "Config use_gpu cannot be set as true while you are " \
151+
"using paddlepaddle cpu version ! \nPlease try: \n" \
152+
"\t1. Install paddlepaddle-gpu to run model on GPU \n" \
153+
"\t2. Set use_gpu as false in config file to run " \
154+
"model on CPU"
155+
156+
try:
157+
if use_gpu and not fluid.is_compiled_with_cuda():
158+
logger.error(err)
159+
sys.exit(1)
160+
except Exception as e:
161+
pass

0 commit comments

Comments
 (0)