mirror of
https://github.com/facefusion/facefusion-labs.git
synced 2026-06-25 07:59:55 +02:00
Fix indent to tabs
This commit is contained in:
@@ -7,70 +7,70 @@ from .typing import DiscriminatorOutputs, Tensor
|
||||
|
||||
|
||||
class NLayerDiscriminator(nn.Module):
|
||||
def __init__(self, input_channels : int, num_filters : int, num_layers : int) -> None:
|
||||
super(NLayerDiscriminator, self).__init__()
|
||||
self.num_layers = num_layers
|
||||
kernel_size = 4
|
||||
padding_size = int(numpy.ceil((kernel_size - 1.0) / 2))
|
||||
model_layers = [
|
||||
def __init__(self, input_channels : int, num_filters : int, num_layers : int) -> None:
|
||||
super(NLayerDiscriminator, self).__init__()
|
||||
self.num_layers = num_layers
|
||||
kernel_size = 4
|
||||
padding_size = int(numpy.ceil((kernel_size - 1.0) / 2))
|
||||
model_layers = [
|
||||
[
|
||||
nn.Conv2d(input_channels, num_filters, kernel_size = kernel_size, stride = 2, padding = padding_size),
|
||||
nn.LeakyReLU(0.2, True)
|
||||
]]
|
||||
current_filters = num_filters
|
||||
current_filters = num_filters
|
||||
|
||||
for layer_index in range(1, num_layers):
|
||||
previous_filters = current_filters
|
||||
current_filters = min(current_filters * 2, 512)
|
||||
model_layers += [
|
||||
for layer_index in range(1, num_layers):
|
||||
previous_filters = current_filters
|
||||
current_filters = min(current_filters * 2, 512)
|
||||
model_layers += [
|
||||
[
|
||||
nn.Conv2d(previous_filters, current_filters, kernel_size = kernel_size, stride = 2, padding = padding_size),
|
||||
nn.InstanceNorm2d(current_filters), nn.LeakyReLU(0.2, True)
|
||||
]]
|
||||
previous_filters = current_filters
|
||||
current_filters = min(current_filters * 2, 512)
|
||||
model_layers += [
|
||||
nn.Conv2d(previous_filters, current_filters, kernel_size = kernel_size, stride = 2, padding = padding_size),
|
||||
nn.InstanceNorm2d(current_filters), nn.LeakyReLU(0.2, True)
|
||||
]]
|
||||
previous_filters = current_filters
|
||||
current_filters = min(current_filters * 2, 512)
|
||||
model_layers += [
|
||||
[
|
||||
nn.Conv2d(previous_filters, current_filters, kernel_size = kernel_size, stride = 1, padding = padding_size),
|
||||
nn.InstanceNorm2d(current_filters),
|
||||
nn.LeakyReLU(0.2, True)
|
||||
]]
|
||||
model_layers += [
|
||||
nn.Conv2d(previous_filters, current_filters, kernel_size = kernel_size, stride = 1, padding = padding_size),
|
||||
nn.InstanceNorm2d(current_filters),
|
||||
nn.LeakyReLU(0.2, True)
|
||||
]]
|
||||
model_layers += [
|
||||
[
|
||||
nn.Conv2d(current_filters, 1, kernel_size = kernel_size, stride = 1, padding = padding_size)
|
||||
]]
|
||||
combined_layers = []
|
||||
combined_layers = []
|
||||
|
||||
for layer in model_layers:
|
||||
combined_layers += layer
|
||||
self.model = nn.Sequential(*combined_layers)
|
||||
for layer in model_layers:
|
||||
combined_layers += layer
|
||||
self.model = nn.Sequential(*combined_layers)
|
||||
|
||||
def forward(self, input_tensor : Tensor) -> Tensor:
|
||||
return self.model(input_tensor)
|
||||
def forward(self, input_tensor : Tensor) -> Tensor:
|
||||
return self.model(input_tensor)
|
||||
|
||||
|
||||
class MultiscaleDiscriminator(nn.Module):
|
||||
def __init__(self, input_channels : int, num_filters : int, num_layers : int, num_discriminators : int):
|
||||
super(MultiscaleDiscriminator, self).__init__()
|
||||
self.num_discriminators = num_discriminators
|
||||
self.num_layers = num_layers
|
||||
def __init__(self, input_channels : int, num_filters : int, num_layers : int, num_discriminators : int):
|
||||
super(MultiscaleDiscriminator, self).__init__()
|
||||
self.num_discriminators = num_discriminators
|
||||
self.num_layers = num_layers
|
||||
|
||||
for discriminator_index in range(num_discriminators):
|
||||
single_discriminator = NLayerDiscriminator(input_channels, num_filters, num_layers)
|
||||
setattr(self, 'discriminator_layer_{}'.format(discriminator_index), single_discriminator.model)
|
||||
self.downsample = nn.AvgPool2d(kernel_size = 3, stride = 2, padding = [ 1, 1 ], count_include_pad = False) # type:ignore[arg-type]
|
||||
for discriminator_index in range(num_discriminators):
|
||||
single_discriminator = NLayerDiscriminator(input_channels, num_filters, num_layers)
|
||||
setattr(self, 'discriminator_layer_{}'.format(discriminator_index), single_discriminator.model)
|
||||
self.downsample = nn.AvgPool2d(kernel_size = 3, stride = 2, padding = [ 1, 1 ], count_include_pad = False) # type:ignore[arg-type]
|
||||
|
||||
def single_discriminator_forward(self, model_layers : nn.Sequential, input_tensor : Tensor) -> List[Tensor]:
|
||||
return [ model_layers(input_tensor) ]
|
||||
def single_discriminator_forward(self, model_layers : nn.Sequential, input_tensor : Tensor) -> List[Tensor]:
|
||||
return [ model_layers(input_tensor) ]
|
||||
|
||||
def forward(self, input_tensor : Tensor) -> DiscriminatorOutputs:
|
||||
discriminator_outputs = []
|
||||
downsampled_input = input_tensor
|
||||
def forward(self, input_tensor : Tensor) -> DiscriminatorOutputs:
|
||||
discriminator_outputs = []
|
||||
downsampled_input = input_tensor
|
||||
|
||||
for discriminator_index in range(self.num_discriminators):
|
||||
model_layers = getattr(self, 'discriminator_layer_{}'.format(self.num_discriminators - 1 - discriminator_index))
|
||||
discriminator_outputs.append(self.single_discriminator_forward(model_layers, downsampled_input))
|
||||
for discriminator_index in range(self.num_discriminators):
|
||||
model_layers = getattr(self, 'discriminator_layer_{}'.format(self.num_discriminators - 1 - discriminator_index))
|
||||
discriminator_outputs.append(self.single_discriminator_forward(model_layers, downsampled_input))
|
||||
|
||||
if discriminator_index != (self.num_discriminators - 1):
|
||||
downsampled_input = self.downsample(downsampled_input)
|
||||
return discriminator_outputs
|
||||
if discriminator_index != (self.num_discriminators - 1):
|
||||
downsampled_input = self.downsample(downsampled_input)
|
||||
return discriminator_outputs
|
||||
|
||||
@@ -19,10 +19,10 @@ def transform_points(points : Tensor, rotation_matrix : Tensor, expression : Ten
|
||||
|
||||
|
||||
def hinge_loss(tensor : Tensor, is_positive : bool) -> Tensor:
|
||||
if is_positive:
|
||||
return torch.relu(1 - tensor)
|
||||
else:
|
||||
return torch.relu(tensor + 1)
|
||||
if is_positive:
|
||||
return torch.relu(1 - tensor)
|
||||
else:
|
||||
return torch.relu(tensor + 1)
|
||||
|
||||
|
||||
def calc_distance_ratio(landmarks : Tensor, indices : Tuple[int, int, int, int]) -> Tensor:
|
||||
|
||||
@@ -229,7 +229,7 @@ class FaceSwapper(pytorch_lightning.LightningModule):
|
||||
self.logger.experiment.add_image("Generator Preview", grid, self.global_step)
|
||||
|
||||
def log_validation_preview(self) -> None:
|
||||
read_images = lambda path : [read_image(os.path.join(path, f)) for f in sorted(os.listdir(path)) if f.lower().endswith('.jpg') or f.lower().endswith('.png')]
|
||||
read_images = lambda path : [read_image(os.path.join(path, f)) for f in sorted(os.listdir(path)) if f.lower().endswith('.jpg') or f.lower().endswith('.png')]
|
||||
to_numpy = lambda x: (x.cpu().detach().numpy()[0].transpose(1, 2, 0).clip(-1, 1)[:, :, ::-1] + 1) * 127.5
|
||||
transforms = torchvision.transforms.Compose(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user