Download UnFlow/src/e2eflow/core/supervised.py from doanh25032004/models_animerun: direct link, hf CLI and curl.
- Browser
- Download file 2.37 kB
-
https://huggingface.co/doanh25032004/models_animerun/resolve/main/UnFlow/src/e2eflow/core/supervised.py
- Command line
-
hf download hf://doanh25032004/models_animerun/UnFlow/src/e2eflow/core/supervised.py
-
curl -L -o supervised.py https://huggingface.co/doanh25032004/models_animerun/resolve/main/UnFlow/src/e2eflow/core/supervised.py
2.37 kB
| import tensorflow as tf | |
| import tensorflow.contrib.slim as slim | |
| import numpy as np | |
| from .augment import random_photometric | |
| from .flow_util import flow_to_color | |
| from .losses import charbonnier_loss | |
| from .flownet import flownet | |
| from .unsupervised import _track_image, _track_loss, FLOW_SCALE | |
| def supervised_loss(batch, params, normalization=None): | |
| channel_mean = tf.constant(normalization[0]) / 255.0 | |
| im1, im2, flow_gt, mask_gt = batch | |
| im1 = im1 / 255.0 | |
| im2 = im2 / 255.0 | |
| im_shape = tf.shape(im1)[1:3] | |
| # ------------------------------------------------------------------------- | |
| im1_photo, im2_photo = random_photometric( | |
| [im1, im2], | |
| noise_stddev=0.04, min_contrast=-0.3, max_contrast=0.3, | |
| brightness_stddev=0.02, min_colour=0.9, max_colour=1.1, | |
| min_gamma=0.7, max_gamma=1.5) | |
| _track_image(im1_photo, 'im1_photo') | |
| _track_image(im2_photo, 'im2_photo') | |
| _track_image(flow_to_color(flow_gt), 'flow_gt') | |
| _track_image(mask_gt, 'mask_gt') | |
| # Images for neural network input with mean-zero values in [-1, 1] | |
| im1_photo = im1_photo - channel_mean | |
| im2_photo = im2_photo - channel_mean | |
| flownet_spec = params.get('flownet', 'S') | |
| full_resolution = params.get('full_res') | |
| train_all = params.get('train_all') | |
| # ------------------------------------------------------------------------- | |
| # FlowNet | |
| flows_fw = flownet(im1_photo, im2_photo, | |
| flownet_spec=flownet_spec, | |
| full_resolution=full_resolution, | |
| train_all=train_all) | |
| if not train_all: | |
| flows_fw = [flows_fw[-1]] | |
| final_loss = 0.0 | |
| for i, net_flows in enumerate(reversed(flows_fw)): | |
| flow_fw = net_flows[0] | |
| if params.get('full_res'): | |
| final_flow_fw = flow_fw * FLOW_SCALE * 4 | |
| else: | |
| final_flow_fw = tf.image.resize_bilinear(flow_fw, im_shape) * FLOW_SCALE * 4 | |
| _track_image(flow_to_color(final_flow_fw), 'flow_pred_' + str(i)) | |
| net_loss = charbonnier_loss(final_flow_fw - flow_gt, mask_gt) | |
| final_loss += net_loss / (2 ** i) | |
| regularization_loss = tf.add_n(slim.losses.get_regularization_losses()) | |
| final_loss += regularization_loss | |
| _track_loss(regularization_loss, 'loss/regularization') | |
| _track_loss(final_loss, 'loss/combined') | |
| return final_loss | |