def filter_param_regressor(self, features): color_curve = tf.reshape(features, shape=(-1, self.channels, self.cfg.curve_steps))[:, None, None, :] color_curve = tanh_range(*self.cfg.color_curve_range, initial=1)(color_curve) return color_curve
def filter_param_regressor(self, features): log_wb_range = 0.5 mask = np.array(((0, 1, 1)), dtype=np.float32).reshape(1, 3) print(mask.shape) assert mask.shape == (1, 3) features = features * mask color_scaling = tf.exp( tanh_range(-log_wb_range, log_wb_range)(features)) # There will be no division by zero here unless the WB range lower bound is 0 # normalize by luminance color_scaling *= 1.0 / (1e-5 + 0.27 * color_scaling[:, 0] + 0.67 * color_scaling[:, 1] + 0.06 * color_scaling[:, 2])[:, None] return color_scaling
def get_mask(self, img, mask_parameters): if not self.use_masking(): print('* Masking Disabled') return tf.ones(shape=(1, 1, 1, 1), dtype=tf.float32) else: print('* Masking Enabled') with tf.name_scope(name='mask'): # Six parameters for one filter filter_input_range = 5 assert mask_parameters.shape[1] == self.get_num_mask_parameters() mask_parameters = tanh_range(l=-filter_input_range, r=filter_input_range, initial=0)(mask_parameters) size = list(map(int, img.shape[1:3])) grid = np.zeros(shape=[1] + size + [2], dtype=np.float32) shorter_edge = min(size[0], size[1]) for i in range(size[0]): for j in range(size[1]): grid[0, i, j, 0] = ( i + (shorter_edge - size[0]) / 2.0) / shorter_edge - 0.5 grid[0, i, j, 1] = ( j + (shorter_edge - size[1]) / 2.0) / shorter_edge - 0.5 grid = tf.constant(grid) # Ax + By + C * L + D inp = grid[:, :, :, 0, None] * mask_parameters[:, None, None, 0, None] + \ grid[:, :, :, 1, None] * mask_parameters[:, None, None, 1, None] + \ mask_parameters[:, None, None, 2, None] * (rgb2lum(img) - 0.5) + \ mask_parameters[:, None, None, 3, None] * 2 # Sharpness and inversion inp *= self.cfg.maximum_sharpness * mask_parameters[:, None, None, 4, None] / filter_input_range mask = tf.sigmoid(inp) # Strength mask = mask * (mask_parameters[:, None, None, 5, None] / filter_input_range * 0.5 + 0.5) * (1 - self.cfg.minimum_strength ) + self.cfg.minimum_strength print('mask', mask.shape) return mask
def get_mask(self, img, mask_parameters): with tf.name_scope(name='mask'): # Five parameters for one filter filter_input_range = 5 assert mask_parameters.shape[1] == self.get_num_mask_parameters() mask_parameters = tanh_range(l=-filter_input_range, r=filter_input_range, initial=0)(mask_parameters) size = list(map(int, img.shape[1:3])) grid = np.zeros(shape=[1] + size + [2], dtype=np.float32) shorter_edge = min(size[0], size[1]) for i in range(size[0]): for j in range(size[1]): grid[0, i, j, 0] = ( i + (shorter_edge - size[0]) / 2.0) / shorter_edge - 0.5 grid[0, i, j, 1] = ( j + (shorter_edge - size[1]) / 2.0) / shorter_edge - 0.5 grid = tf.constant(grid) # (Ax)^2 + (By)^2 + C inp = (grid[:, :, :, 0, None] * mask_parameters[:, None, None, 0, None]) ** 2 + \ (grid[:, :, :, 1, None] * mask_parameters[:, None, None, 1, None]) ** 2 + \ mask_parameters[:, None, None, 2, None] - filter_input_range # Sharpness and inversion inp *= self.cfg.maximum_sharpness * mask_parameters[:, None, None, 3, None] / filter_input_range mask = tf.sigmoid(inp) # Strength mask *= mask_parameters[:, None, None, 4, None] / filter_input_range * 0.5 + 0.5 if not self.use_masking(): print('* Masking Disabled') mask = mask * 0 + 1 else: print('* Masking Enabled') print('mask', mask.shape) return mask
def filter_param_regressor(self, features): tone_curve = tf.reshape(features, shape=(-1, 1, self.cfg.curve_steps))[:, None, None, :] tone_curve = tanh_range(*self.cfg.tone_curve_range)(tone_curve) return tone_curve
def filter_param_regressor(self, features): log_gamma_range = np.log(self.cfg.gamma_range) return tf.exp(tanh_range(-log_gamma_range, log_gamma_range)(features))
def filter_param_regressor(self, features): return tanh_range(-self.cfg.exposure_range, self.cfg.exposure_range, initial=0)(features)