freezemodel.inference
import paddle.fluid as fluid
class Antispoof(object):
def __init__(self, resume = '', use_gpu = True):
self.use_gpu = use_gpu
self.place = fluid.CUDAPlace(0) if self.use_gpu else fluid.CPUPlace()
self.exe = fluid.Executor(self.place)
self.antisp_scope = fluid.Scope()
with fluid.scope_guard(self.antisp_scope):
[self.inference_program, self.feed_target_names, self.fetch_targets]\
= fluid.io.load_inference_model(
dirname=resume,
executor=self.exe,
model_filename='model',
params_filename='weights')
def inference(self, img):
# preprocess
with fluid.scope_guard(self.antisp_scope):
result = self.exe.run(
self.inference_program,
feed={self.feed_target_names[0]: img},
fetch_list=self.fetch_targets)
return result
unfreeze_model.inference
import paddle
import paddle.fluid as fluid
from model_zoos import antisp as model
class Antispoof(object):
def __init__(self, resume = '', use_gpu = True):
self.resume = resume
self.use_gpu = use_gpu
self.startup_prog = fluid.Program()
self.test_prog = fluid.Program()
self.fetch_list = self._build_program_v1() # v1 : old_version; v2 : new_version
self.place = fluid.CUDAPlace(0) if self.use_gpu else fluid.CPUPlace()
self.exe = fluid.Executor(self.place)
self.exe.run(self.startup_prog)
self._loading_weights()
def _build_program_v1(self):
with fluid.program_guard(self.test_prog, self.startup_prog):
py_reader = fluid.layers.py_reader(
capacity=256,
shapes=((-1, 3, in_size_h, in_size_w)), # TODO::(h, w)
lod_levels=[0],
dtypes=('float32'),
use_double_buffer=True)
with fluid.unique_name.guard():
image = fluid.layers.read_file(py_reader)
output = model(image, is_test=True, alpha=1.0)
# output.persistable = True
return [output.name]
def _build_program_v2(self):
with fluid.program_guard(self.test_prog, self.startup_prog):
with fluid.unique_name.guard():
image = fluid.layers.data(name='image', shape=[-1, 3, in_size_h, in_size_w], dtype='float32', append_batch_size=False)
output = model(image, is_test=True, alpha=1.0)
return [output[0].name]
def _loading_weights(self):
if self.resume:
def if_exist(var):
has_var = os.path.exists(os.path.join(self.resume, var.name))
if not has_var:
print('var: %s was not found' % (var.name))
return has_var
self.test_prog = self.test_prog.clone(for_test=True) # Attention !!!
fluid.io.load_vars(self.exe, self.resume, predicate=if_exist, main_program=self.test_prog)
print('loading weights is finished!')
else:
print('No pretrained model exists')
def inference(self, img):
# img = preprocess(img)
# img = img[np.newaxis, :, :, :] # img.shape = (n_batch, channel, h, w)
result = self.exe.run(
program=self.test_prog,
feed={'image': img},
fetch_list=self.fetch_list)
return result