From 238ed4fb182d3b354eb3a1b1fa60332221c5b875 Mon Sep 17 00:00:00 2001 From: LielinJiang <50691816+LielinJiang@users.noreply.github.com> Date: Wed, 10 Jul 2019 13:10:41 +0800 Subject: [PATCH] Add model check function (#2729) --- PaddleCV/face_detection/train.py | 3 ++- PaddleCV/face_detection/utility.py | 14 +++++++++++++- PaddleCV/human_pose_estimation/test.py | 1 + PaddleCV/human_pose_estimation/train.py | 1 + PaddleCV/human_pose_estimation/utils/utility.py | 14 +++++++++++++- PaddleCV/human_pose_estimation/val.py | 1 + PaddleCV/metric_learning/eval.py | 3 ++- PaddleCV/metric_learning/infer.py | 3 ++- PaddleCV/metric_learning/train_elem.py | 3 ++- PaddleCV/metric_learning/train_pair.py | 3 ++- PaddleCV/metric_learning/utility.py | 14 +++++++++++++- PaddleCV/ssd/eval.py | 4 +++- PaddleCV/ssd/infer.py | 4 +++- PaddleCV/ssd/train.py | 4 +++- PaddleCV/ssd/utility.py | 15 +++++++++++++-- 15 files changed, 74 insertions(+), 13 deletions(-) diff --git a/PaddleCV/face_detection/train.py b/PaddleCV/face_detection/train.py index 2108bcc3..518c8533 100644 --- a/PaddleCV/face_detection/train.py +++ b/PaddleCV/face_detection/train.py @@ -13,7 +13,7 @@ import paddle import paddle.fluid as fluid from pyramidbox import PyramidBox import reader -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -247,6 +247,7 @@ def get_cards(args): if __name__ == '__main__': args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) data_dir = os.path.join(args.data_dir, 'WIDER_train/images/') train_file_list = os.path.join(args.data_dir, diff --git a/PaddleCV/face_detection/utility.py b/PaddleCV/face_detection/utility.py index aebb9acb..7dd9f8d1 100644 --- a/PaddleCV/face_detection/utility.py +++ b/PaddleCV/face_detection/utility.py @@ -17,7 +17,8 @@ from __future__ import division from __future__ import print_function import distutils.util import six - +import sys +import paddle.fluid as fluid def print_arguments(args): """Print argparse's arguments. @@ -58,3 +59,14 @@ def add_arguments(argname, type, default, help, argparser, **kwargs): type=type, help=help + ' Default: %(default)s.', **kwargs) + +def check_cuda(use_cuda, err = \ + "\nYou can not set use_cuda = True in the model because you are using paddlepaddle-cpu.\n \ + Please: 1. Install paddlepaddle-gpu to run your models on GPU or 2. Set use_cuda = False to run models on CPU.\n" + ): + try: + if use_cuda == True and fluid.is_compiled_with_cuda() == False: + print(err) + sys.exit(1) + except Exception as e: + pass \ No newline at end of file diff --git a/PaddleCV/human_pose_estimation/test.py b/PaddleCV/human_pose_estimation/test.py index 8ede66d2..ca802166 100644 --- a/PaddleCV/human_pose_estimation/test.py +++ b/PaddleCV/human_pose_estimation/test.py @@ -133,4 +133,5 @@ def test(args): if __name__ == '__main__': args = parser.parse_args() + check_cuda(args.use_gpu) test(args) diff --git a/PaddleCV/human_pose_estimation/train.py b/PaddleCV/human_pose_estimation/train.py index c6d75732..39030459 100644 --- a/PaddleCV/human_pose_estimation/train.py +++ b/PaddleCV/human_pose_estimation/train.py @@ -175,5 +175,6 @@ def train(args): if __name__ == '__main__': args = parser.parse_args() + check_cuda(args.use_gpu) train(args) diff --git a/PaddleCV/human_pose_estimation/utils/utility.py b/PaddleCV/human_pose_estimation/utils/utility.py index 698d0231..1dd5da20 100644 --- a/PaddleCV/human_pose_estimation/utils/utility.py +++ b/PaddleCV/human_pose_estimation/utils/utility.py @@ -23,7 +23,8 @@ import distutils.util import numpy as np import cv2 from pathlib import Path - +import sys +import paddle.fluid as fluid def print_arguments(args): """Print argparse's arguments. @@ -395,3 +396,14 @@ class AverageMeter(object): self.sum += val * n self.count += n self.avg = self.sum / self.count if self.count != 0 else 0 + +def check_cuda(use_cuda, err = \ + "\nYou can not set use_cuda = True in the model because you are using paddlepaddle-cpu.\n \ + Please: 1. Install paddlepaddle-gpu to run your models on GPU or 2. Set use_cuda = False to run models on CPU.\n" + ): + try: + if use_cuda == True and fluid.is_compiled_with_cuda() == False: + print(err) + sys.exit(1) + except Exception as e: + pass diff --git a/PaddleCV/human_pose_estimation/val.py b/PaddleCV/human_pose_estimation/val.py index 4224ec1e..435673aa 100644 --- a/PaddleCV/human_pose_estimation/val.py +++ b/PaddleCV/human_pose_estimation/val.py @@ -230,4 +230,5 @@ def valid(args): if __name__ == '__main__': args = parser.parse_args() + check_cuda(args.use_gpu) valid(args) diff --git a/PaddleCV/metric_learning/eval.py b/PaddleCV/metric_learning/eval.py index 9922038b..de1bc1fc 100644 --- a/PaddleCV/metric_learning/eval.py +++ b/PaddleCV/metric_learning/eval.py @@ -13,7 +13,7 @@ import paddle import paddle.fluid as fluid import models import reader -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda from utility import fmt_time, recall_topk # yapf: disable @@ -93,6 +93,7 @@ def eval(args): def main(): args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) eval(args) diff --git a/PaddleCV/metric_learning/infer.py b/PaddleCV/metric_learning/infer.py index 2ee6cfb2..c14b5fdd 100644 --- a/PaddleCV/metric_learning/infer.py +++ b/PaddleCV/metric_learning/infer.py @@ -13,7 +13,7 @@ import paddle import paddle.fluid as fluid import models import reader -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -77,6 +77,7 @@ def infer(args): def main(): args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) infer(args) diff --git a/PaddleCV/metric_learning/train_elem.py b/PaddleCV/metric_learning/train_elem.py index 7a4feb23..9d0dbb5a 100644 --- a/PaddleCV/metric_learning/train_elem.py +++ b/PaddleCV/metric_learning/train_elem.py @@ -19,7 +19,7 @@ import reader from losses import SoftmaxLoss from losses import ArcMarginLoss from utility import add_arguments, print_arguments -from utility import fmt_time, recall_topk, get_gpu_num +from utility import fmt_time, recall_topk, get_gpu_num, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -283,6 +283,7 @@ def initlogging(): def main(): args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) train_async(args) diff --git a/PaddleCV/metric_learning/train_pair.py b/PaddleCV/metric_learning/train_pair.py index 0ae7b5a2..022a72ee 100644 --- a/PaddleCV/metric_learning/train_pair.py +++ b/PaddleCV/metric_learning/train_pair.py @@ -21,7 +21,7 @@ from losses import QuadrupletLoss from losses import EmlLoss from losses import NpairsLoss from utility import add_arguments, print_arguments -from utility import fmt_time, recall_topk, get_gpu_num +from utility import fmt_time, recall_topk, get_gpu_num, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -275,6 +275,7 @@ def initlogging(): def main(): args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) train_async(args) diff --git a/PaddleCV/metric_learning/utility.py b/PaddleCV/metric_learning/utility.py index e3a109ca..f093f56d 100644 --- a/PaddleCV/metric_learning/utility.py +++ b/PaddleCV/metric_learning/utility.py @@ -23,7 +23,8 @@ import time import subprocess import distutils.util import numpy as np - +import sys +import paddle.fluid as fluid from paddle.fluid import core @@ -101,3 +102,14 @@ def get_gpu_num(): [str.encode('nvidia-smi'), str.encode('-L')]).decode('utf-8').count('\n') return devicenum +def check_cuda(use_cuda, err = \ + "\nYou can not set use_cuda = True in the model because you are using paddlepaddle-cpu.\n \ + Please: 1. Install paddlepaddle-gpu to run your models on GPU or 2. Set use_cuda = False to run models on CPU.\n" + ): + try: + if use_cuda == True and fluid.is_compiled_with_cuda() == False: + print(err) + sys.exit(1) + except Exception as e: + pass + diff --git a/PaddleCV/ssd/eval.py b/PaddleCV/ssd/eval.py index 0e3d68f6..ed9315ed 100644 --- a/PaddleCV/ssd/eval.py +++ b/PaddleCV/ssd/eval.py @@ -9,7 +9,7 @@ import paddle import paddle.fluid as fluid import reader from mobilenet_ssd import build_mobilenet_ssd -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -105,6 +105,8 @@ if __name__ == '__main__': args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) + data_dir = 'data/pascalvoc' test_list = 'test.txt' label_file = 'label_list' diff --git a/PaddleCV/ssd/infer.py b/PaddleCV/ssd/infer.py index 3e43db54..5326c764 100644 --- a/PaddleCV/ssd/infer.py +++ b/PaddleCV/ssd/infer.py @@ -11,7 +11,7 @@ import paddle import paddle.fluid as fluid import reader from mobilenet_ssd import build_mobilenet_ssd -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -117,6 +117,8 @@ if __name__ == '__main__': args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) + data_dir = 'data/pascalvoc' label_file = 'label_list' diff --git a/PaddleCV/ssd/train.py b/PaddleCV/ssd/train.py index ab68e414..40350b33 100644 --- a/PaddleCV/ssd/train.py +++ b/PaddleCV/ssd/train.py @@ -11,7 +11,7 @@ import paddle import paddle.fluid as fluid import reader from mobilenet_ssd import build_mobilenet_ssd -from utility import add_arguments, print_arguments +from utility import add_arguments, print_arguments, check_cuda parser = argparse.ArgumentParser(description=__doc__) add_arg = functools.partial(add_arguments, argparser=parser) @@ -288,6 +288,8 @@ def main(): args = parser.parse_args() print_arguments(args) + check_cuda(args.use_gpu) + data_dir = args.data_dir dataset = args.dataset assert dataset in ['pascalvoc', 'coco2014', 'coco2017'] diff --git a/PaddleCV/ssd/utility.py b/PaddleCV/ssd/utility.py index 746ce25a..5fca8b59 100644 --- a/PaddleCV/ssd/utility.py +++ b/PaddleCV/ssd/utility.py @@ -18,9 +18,9 @@ from __future__ import division from __future__ import print_function import distutils.util -import numpy as np +import sys import six -from paddle.fluid import core +import paddle.fluid as fluid def print_arguments(args): @@ -62,3 +62,14 @@ def add_arguments(argname, type, default, help, argparser, **kwargs): type=type, help=help + ' Default: %(default)s.', **kwargs) + +def check_cuda(use_cuda, err = \ + "\nYou can not set use_cuda = True in the model because you are using paddlepaddle-cpu.\n \ + Please: 1. Install paddlepaddle-gpu to run your models on GPU or 2. Set use_cuda = False to run models on CPU.\n" + ): + try: + if use_cuda == True and fluid.is_compiled_with_cuda() == False: + print(err) + sys.exit(1) + except Exception as e: + pass \ No newline at end of file -- GitLab