diff --git a/demo/slimfacenet/dataloader/casia.py b/demo/slimfacenet/dataloader/casia.py index 7faec56cfd94ec1b234d928d8698e4b118ef0a11..59dcdd3e7c3010d301f20a7768dc88d1183de5c4 100644 --- a/demo/slimfacenet/dataloader/casia.py +++ b/demo/slimfacenet/dataloader/casia.py @@ -13,7 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. import numpy as np -import scipy.misc +import six +if six.PY2: + import scipy.misc as imgreader +else: + import imageio as imgreader import os import paddle from paddle import fluid @@ -54,7 +58,7 @@ class CASIA_Face(object): target = self.label_list[index] try: - img = scipy.misc.imread(img_path) + img = imgreader.imread(img_path) except: continue diff --git a/demo/slimfacenet/dataloader/lfw.py b/demo/slimfacenet/dataloader/lfw.py index 46bb60c9f33ad7ae7d67267825ad5af356d3f574..e13fd513b9e6e26474b48a025c4bebd205fb0f3a 100644 --- a/demo/slimfacenet/dataloader/lfw.py +++ b/demo/slimfacenet/dataloader/lfw.py @@ -13,8 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. import numpy as np -import scipy.misc - +import six +if six.PY2: + import scipy.misc as imgreader +else: + import imageio as imgreader import paddle from paddle import fluid @@ -33,10 +36,10 @@ class LFW(object): return index = self.shuffle_idx.pop(0) - imgl = scipy.misc.imread(self.imgl_list[index]) + imgl = imgreader.imread(self.imgl_list[index]) if len(imgl.shape) == 2: imgl = np.stack([imgl] * 3, 2) - imgr = scipy.misc.imread(self.imgr_list[index]) + imgr = imgreader.imread(self.imgr_list[index]) if len(imgr.shape) == 2: imgr = np.stack([imgr] * 3, 2) diff --git a/demo/slimfacenet/train_eval.py b/demo/slimfacenet/train_eval.py index a779feb390ce70df814a08a8608053a6c0756022..af1b12d057ffd6f1cf0c310853f3c91c5c4491a3 100644 --- a/demo/slimfacenet/train_eval.py +++ b/demo/slimfacenet/train_eval.py @@ -150,7 +150,10 @@ def train(exe, train_program, train_out, test_program, test_out, args): def build_program(program, startup, args, is_train=True): - num_trainers = len(os.getenv('CUDA_VISIBLE_DEVICES').split(',')) + if args.use_gpu: + num_trainers = fluid.core.get_cuda_device_count() + else: + num_trainers = int(os.environ.get('CPU_NUM', 1)) places = fluid.cuda_places() if args.use_gpu else fluid.CPUPlace() train_dataset = CASIA_Face(root=args.train_data_dir) @@ -166,7 +169,7 @@ def build_program(program, startup, args, is_train=True): image = fluid.data( name='image', shape=[-1, 3, 112, 96], dtype='float32') label = fluid.data(name='label', shape=[-1, 1], dtype='int64') - train_reader = paddle.batch( + train_reader = fluid.io.batch( train_dataset.reader, batch_size=args.train_batchsize // num_trainers, drop_last=False) @@ -187,7 +190,7 @@ def build_program(program, startup, args, is_train=True): else: nl, nr, flods, flags = parse_filelist(args.test_data_dir) test_dataset = LFW(nl, nr) - test_reader = paddle.batch( + test_reader = fluid.io.batch( test_dataset.reader, batch_size=args.test_batchsize, drop_last=False) @@ -231,7 +234,7 @@ def build_program(program, startup, args, is_train=True): def quant_val_reader_batch(): nl, nr, flods, flags = parse_filelist(args.test_data_dir) test_dataset = LFW(nl, nr) - test_reader = paddle.batch( + test_reader = fluid.io.batch( test_dataset.reader, batch_size=1, drop_last=False) shuffle_reader = fluid.io.shuffle(test_reader, 3) @@ -298,14 +301,16 @@ def main(): help='The path of the extract features save, must be .mat file') args = parser.parse_args() - num_trainers = len(os.getenv('CUDA_VISIBLE_DEVICES').split(',')) + if args.use_gpu: + num_trainers = fluid.core.get_cuda_device_count() + else: + num_trainers = int(os.environ.get('CPU_NUM', 1)) print(args) print('num_trainers: {}'.format(num_trainers)) if args.save_ckpt == None: args.save_ckpt = 'output' - if not os.path.exists(args.save_ckpt): - subprocess.call(['mkdir', '-p', args.save_ckpt]) - + if not os.path.isdir(args.save_ckpt): + os.makedirs(args.save_ckpt) with open(os.path.join(args.save_ckpt, 'log.txt'), 'w+') as f: f.writelines(str(args) + '\n') f.writelines('num_trainers: {}'.format(num_trainers) + '\n') @@ -346,7 +351,7 @@ def main(): executor=exe) nl, nr, flods, flags = parse_filelist(args.test_data_dir) test_dataset = LFW(nl, nr) - test_reader = paddle.batch( + test_reader = fluid.io.batch( test_dataset.reader, batch_size=args.test_batchsize, drop_last=False)