This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "Detexify", | |
"description": "Symbol Recognition for Overleaf", | |
"version": "1.0", | |
"manifest_version": 2, | |
"content_scripts": [{ | |
"js": ["content.js"], | |
"css": ["style.css"], | |
"matches": ["https://www.overleaf.com/project/*"] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def get_style_transfer_loss(encoder, decoder, content_image, style_image, lambda_content, lambda_style): | |
assert_shape(content_image, (g_batch_size, 3, 256, 256)) | |
style_features = encoder(style_image) | |
content_features = encoder(content_image) | |
stylized_images, stylized_features = create_stylized_images(decoder, content_features, style_features) | |
features_of_stylized = encoder(stylized_images) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def train_epoch_style_loss(args, encoder, decoder, dataloader, val_dataloader, | |
optimizer, epoch_num, writer, run, device): | |
encoder.eval() | |
decoder.train() | |
total_loss = 0 | |
num_batches = calc_num_batches(dataloader, args) | |
progress_bar = tqdm.tqdm(enumerate(dataloader), total = num_batches, dynamic_ncols = True) | |
for i, (content_image, style_image) in progress_bar: | |
# mvoe to gpu |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def __next__(self): | |
if self.ilength <= 0: | |
raise StopIteration | |
self.ilength -= 1 | |
coco_idx, wiki_idx = self.random_pair_of_indices() | |
content_image = self.coco[coco_idx][0] | |
if not self.exclude_style: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
features_list = [] | |
for layer in features: | |
features_list.append(layer) | |
if isinstance(layer, nn.Conv2d): | |
features_list.append(nn.BatchNorm2d(layer.out_channels)) | |
del features_list[-1] | |
self.features = nn.Sequential(*features_list) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def main(): | |
target = torch.randint(-20, 20, (8, 3, 4, 4)).float() | |
source = torch.randint(-20, 20, (8, 3, 4, 4)).float() | |
stylized_source = adain(source, target) | |
target = target.view(8, 3, -1) | |
stylized_source = stylized_source.view(8, 3, -1) | |
# check variances the same |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# check shapes | |
assert len(target.shape) == 4, "expected 4 dimensions" | |
assert target.shape == source.shape, "source/target shape mismatch" | |
batch_size, channels, width, height = source.shape | |
# calculate target stats | |
target_reshaped = target.view(batch_size, channels, 1, 1, -1) | |
target_variances = target_reshaped.var(-1, unbiased = False) | |
target_means = target_reshaped.mean(-1) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def train_epoch_reconstruct(encoder, decoder, dataloader, optimizer, epoch_num, writer, run): | |
encoder.train() | |
decoder.train() | |
total_loss = 0 | |
for i, content_image in tqdm.tqdm(enumerate(dataloader), total = len(dataloader), dynamic_ncols = True): | |
content_image = content_image.to(DEVICE) | |
optimizer.zero_grad() | |
reconstruction = decoder(encoder(content_image)[-1]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def main(): | |
encoder = VGG19Encoder() | |
decoder = Decoder() | |
print(decoder) | |
sample_input = torch.ones((1, 3, 256, 256)) | |
outputs = encoder(sample_input) | |
output = decoder(outputs[-1]) | |
print(f"Input shape: {sample_input.shape}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
for i, layer in enumerate(features): | |
if isinstance(layer, nn.MaxPool2d): | |
features[i] = nn.Upsample(scale_factor = (2, 2), mode = 'nearest') | |
elif isinstance(layer, nn.Conv2d): | |
conv2d = nn.Conv2d(layer.out_channels, layer.in_channels, \ | |
kernel_size = layer.kernel_size, stride = layer.stride, \ | |
padding = layer.padding, padding_mode = 'reflect') | |
with torch.no_grad(): | |
conv2d.weight[...] = layer.weight.transpose(0, 1) | |
features[i] = conv2d |