Spaces:
Sleeping
Sleeping
| import tensorflow as tf | |
| import numpy as np | |
| def get_preprocess_func(config): | |
| arch = config.MODEL.backbone_arch | |
| if arch == 'mobilenetv2': | |
| return tf.keras.applications.mobilenet.preprocess_input | |
| elif 'resnet' in arch: | |
| return tf.keras.applications.resnet.preprocess_input | |
| elif 'eff' in arch: | |
| return tf.keras.applications.efficientnet.preprocess_input | |
| elif 'dense' in arch: | |
| return tf.keras.applications.densenet.preprocess_input | |
| elif arch == 'xception': | |
| return tf.keras.applications.xception.preprocess_input | |
| else: | |
| raise Exception(f'{arch} is not yet implemented') | |
| def get_unpreprocess_func(config): | |
| """ | |
| Returns function that processes input to 0-1 float range | |
| """ | |
| arch = config.MODEL.backbone_arch | |
| def tensor_to_numpy(x): | |
| return x.numpy() | |
| def clip(x): | |
| return np.clip(x, 0.,1.) | |
| def none_mode(x): | |
| x = tensor_to_numpy(x) | |
| x /= 255. | |
| return clip(x) | |
| def caffe_mode(x): | |
| mean = [103.939, 116.779, 123.68] | |
| x = tensor_to_numpy(x) | |
| x[..., 0] += mean[0] | |
| x[..., 1] += mean[1] | |
| x[..., 2] += mean[2] | |
| # 'BGR'->'RGB' | |
| x = x[..., ::-1] | |
| x /= 255. | |
| return clip(x) | |
| def tf_mode(x): | |
| x = tensor_to_numpy(x) | |
| x = (x + 0.5) / 2.0 | |
| return clip(x) | |
| def torch_mode(x): | |
| mean=[0.485, 0.456, 0.406] | |
| std=[0.229, 0.224, 0.225] | |
| x = tensor_to_numpy(x) | |
| x[..., 0] = (x[..., 0] * std[0]) + mean[0] | |
| x[..., 1] = (x[..., 1] * std[1]) + mean[1] | |
| x[..., 2] = (x[..., 2] * std[2]) + mean[2] | |
| return clip(x) | |
| if arch == 'mobilenetv2': | |
| return tf_mode | |
| elif 'resnet' in arch: | |
| return caffe_mode | |
| elif 'eff' in arch: | |
| return none_mode | |
| elif 'dense' in arch: | |
| return torch_mode | |
| elif arch == 'xception': | |
| return tf_mode | |
| else: | |
| raise Exception(f'{arch} is not yet implemented') | |