Skip to content

Commit

Permalink
Your commit message
Browse files Browse the repository at this point in the history
  • Loading branch information
Vidhi1290 committed Mar 3, 2024
0 parents commit a995e09
Show file tree
Hide file tree
Showing 2,674 changed files with 502 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
Binary file added __pycache__/datasets.cpython-38.pyc
Binary file not shown.
Binary file added __pycache__/models.cpython-38.pyc
Binary file not shown.
Binary file added __pycache__/utils.cpython-38.pyc
Binary file not shown.
283 changes: 283 additions & 0 deletions cyclegan.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
# Code credit : PyTorch-GAN Git repo

if __name__ == '__main__':
import argparse
import os
import numpy as np
import math
import itertools
import datetime
import time

import torchvision.transforms as transforms
from torchvision.utils import save_image, make_grid

from torch.utils.data import DataLoader
from torchvision import datasets
from torch.autograd import Variable

from models import *
from datasets import *
from utils import *

import torch.nn as nn
import torch.nn.functional as F
import torch
torch.cuda.empty_cache()
epoch = 0
n_epochs = 20
dataset_name = "horse2zebra"
batch_size = 2
lr = 0.0002
b1 = 0.5
b2 = 0.0002
decay_epoch = 10
n_cpu = 4
img_height,img_width,channels=256,256,3
sample_interval = 100
n_residual_blocks = 9
lambda_cyc = 10
lambda_id = 5.0
checkpoint_interval = 1

# Create sample and checkpoint directories
os.makedirs("images/%s" % dataset_name, exist_ok=True)
os.makedirs("saved_models/%s" % dataset_name, exist_ok=True)

# Losses
criterion_GAN = torch.nn.MSELoss()
criterion_cycle = torch.nn.L1Loss()
criterion_identity = torch.nn.L1Loss()

cuda = torch.cuda.is_available()

input_shape = (channels, img_height, img_width)

# Initialize generator and discriminator
G_AB = GeneratorResNet(input_shape, n_residual_blocks)
G_BA = GeneratorResNet(input_shape, n_residual_blocks)
D_A = Discriminator(input_shape)
D_B = Discriminator(input_shape)

if cuda:
G_AB = G_AB.cuda()
G_BA = G_BA.cuda()
D_A = D_A.cuda()
D_B = D_B.cuda()
criterion_GAN.cuda()
criterion_cycle.cuda()
criterion_identity.cuda()

if epoch != 0:
# Load pretrained models
G_AB.load_state_dict(torch.load("saved_models/%s/G_AB_%d.pth" % (dataset_name, epoch)))
G_BA.load_state_dict(torch.load("saved_models/%s/G_BA_%d.pth" % (dataset_name, epoch)))
D_A.load_state_dict(torch.load("saved_models/%s/D_A_%d.pth" % (dataset_name, epoch)))
D_B.load_state_dict(torch.load("saved_models/%s/D_B_%d.pth" % (dataset_name, epoch)))
else:
# Initialize weights
G_AB.apply(weights_init_normal)
G_BA.apply(weights_init_normal)
D_A.apply(weights_init_normal)
D_B.apply(weights_init_normal)

# Optimizers
optimizer_G = torch.optim.Adam(
itertools.chain(G_AB.parameters(), G_BA.parameters()), lr=lr, betas=(b1, b2)
)
optimizer_D_A = torch.optim.Adam(D_A.parameters(), lr=lr, betas=(b1, b2))
optimizer_D_B = torch.optim.Adam(D_B.parameters(), lr=lr, betas=(b1, b2))

# Learning rate update schedulers
lr_scheduler_G = torch.optim.lr_scheduler.LambdaLR(
optimizer_G, lr_lambda=LambdaLR(n_epochs, epoch, decay_epoch).step
)
lr_scheduler_D_A = torch.optim.lr_scheduler.LambdaLR(
optimizer_D_A, lr_lambda=LambdaLR(n_epochs, epoch, decay_epoch).step
)
lr_scheduler_D_B = torch.optim.lr_scheduler.LambdaLR(
optimizer_D_B, lr_lambda=LambdaLR(n_epochs, epoch, decay_epoch).step
)

Tensor = torch.cuda.FloatTensor if cuda else torch.Tensor

# Buffers of previously generated samples
fake_A_buffer = ReplayBuffer()
fake_B_buffer = ReplayBuffer()

# Image transformations
transforms_ = [
transforms.Resize(int(img_height * 1.12), Image.BICUBIC),
transforms.RandomCrop((img_height, img_width)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),
]

# Training data loader
dataloader = DataLoader(
ImageDataset("data/%s" % dataset_name, transforms_=transforms_, unaligned=True),
batch_size=batch_size,
shuffle=True,
num_workers=n_cpu,
)
# Test data loader
val_dataloader = DataLoader(
ImageDataset("data/%s" % dataset_name, transforms_=transforms_, unaligned=True, mode="test"),
batch_size=5,
shuffle=True,
num_workers=1,
)


def sample_images(batches_done):
"""Saves a generated sample from the test set"""
imgs = next(iter(val_dataloader))
G_AB.eval()
G_BA.eval()
real_A = Variable(imgs["A"].type(Tensor))
fake_B = G_AB(real_A)
real_B = Variable(imgs["B"].type(Tensor))
fake_A = G_BA(real_B)
# Arange images along x-axis
real_A = make_grid(real_A, nrow=5, normalize=True)
real_B = make_grid(real_B, nrow=5, normalize=True)
fake_A = make_grid(fake_A, nrow=5, normalize=True)
fake_B = make_grid(fake_B, nrow=5, normalize=True)
# Arange images along y-axis
image_grid = torch.cat((real_A, fake_B, real_B, fake_A), 1)
save_image(image_grid, "images/%s/%s.png" % (dataset_name, batches_done), normalize=False)


# ----------
# Training
# ----------

prev_time = time.time()
for epoch in range(epoch, n_epochs):
for i, batch in enumerate(dataloader):

# Set model input
real_A = Variable(batch["A"].type(Tensor))
real_B = Variable(batch["B"].type(Tensor))

# Adversarial ground truths
valid = Variable(Tensor(np.ones((real_A.size(0), *D_A.output_shape))), requires_grad=False)
fake = Variable(Tensor(np.zeros((real_A.size(0), *D_A.output_shape))), requires_grad=False)

# ------------------
# Train Generators
# ------------------

G_AB.train()
G_BA.train()

optimizer_G.zero_grad()

# Identity loss
loss_id_A = criterion_identity(G_BA(real_A), real_A)
loss_id_B = criterion_identity(G_AB(real_B), real_B)

loss_identity = (loss_id_A + loss_id_B) / 2

# GAN loss
fake_B = G_AB(real_A)
loss_GAN_AB = criterion_GAN(D_B(fake_B), valid)
fake_A = G_BA(real_B)
loss_GAN_BA = criterion_GAN(D_A(fake_A), valid)

loss_GAN = (loss_GAN_AB + loss_GAN_BA) / 2

# Cycle loss
recov_A = G_BA(fake_B)
loss_cycle_A = criterion_cycle(recov_A, real_A)
recov_B = G_AB(fake_A)
loss_cycle_B = criterion_cycle(recov_B, real_B)

loss_cycle = (loss_cycle_A + loss_cycle_B) / 2

# Total loss
loss_G = loss_GAN + lambda_cyc * loss_cycle + lambda_id * loss_identity

loss_G.backward()
optimizer_G.step()

# -----------------------
# Train Discriminator A
# -----------------------

optimizer_D_A.zero_grad()

# Real loss
loss_real = criterion_GAN(D_A(real_A), valid)
# Fake loss (on batch of previously generated samples)
fake_A_ = fake_A_buffer.push_and_pop(fake_A)
loss_fake = criterion_GAN(D_A(fake_A_.detach()), fake)
# Total loss
loss_D_A = (loss_real + loss_fake) / 2

loss_D_A.backward()
optimizer_D_A.step()

# -----------------------
# Train Discriminator B
# -----------------------

optimizer_D_B.zero_grad()

# Real loss
loss_real = criterion_GAN(D_B(real_B), valid)
# Fake loss (on batch of previously generated samples)
fake_B_ = fake_B_buffer.push_and_pop(fake_B)
loss_fake = criterion_GAN(D_B(fake_B_.detach()), fake)
# Total loss
loss_D_B = (loss_real + loss_fake) / 2

loss_D_B.backward()
optimizer_D_B.step()

loss_D = (loss_D_A + loss_D_B) / 2

# --------------
# Log Progress
# --------------

# Determine approximate time left
batches_done = epoch * len(dataloader) + i
batches_left = n_epochs * len(dataloader) - batches_done
time_left = datetime.timedelta(seconds=batches_left * (time.time() - prev_time))
prev_time = time.time()

# Print log
sys.stdout.write(
"\r[Epoch %d/%d] [Batch %d/%d] [D loss: %f] [G loss: %f, adv: %f, cycle: %f, identity: %f] ETA: %s"
% (
epoch,
n_epochs,
i,
len(dataloader),
loss_D.item(),
loss_G.item(),
loss_GAN.item(),
loss_cycle.item(),
loss_identity.item(),
time_left,
)
)

# If at sample interval save image
if batches_done % sample_interval == 0:
sample_images(batches_done)
#sys.stdout.write(torch.cuda.memory_summary(device=None, abbreviated=False))

# Update learning rates
lr_scheduler_G.step()
lr_scheduler_D_A.step()
lr_scheduler_D_B.step()

if checkpoint_interval != -1 and epoch % checkpoint_interval == 0:
# Save model checkpoints
torch.save(G_AB.state_dict(), "saved_models/%s/G_AB_%d.pth" % (opt.dataset_name, epoch))
torch.save(G_BA.state_dict(), "saved_models/%s/G_BA_%d.pth" % (opt.dataset_name, epoch))
torch.save(D_A.state_dict(), "saved_models/%s/D_A_%d.pth" % (opt.dataset_name, epoch))
torch.save(D_B.state_dict(), "saved_models/%s/D_B_%d.pth" % (opt.dataset_name, epoch))
Binary file added data/.DS_Store
Binary file not shown.
Binary file added data/horse2zebra/.DS_Store
Binary file not shown.
Binary file added data/horse2zebra/test/A/n02381460_1000.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1010.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1030.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1090.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1100.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1110.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1120.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1160.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_120.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1210.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1260.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1300.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1350.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1360.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_140.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1420.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1540.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1620.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1630.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1660.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1690.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1740.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1750.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_180.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1820.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/horse2zebra/test/A/n02381460_1830.jpg
Binary file added data/horse2zebra/test/A/n02381460_1870.jpg
Binary file added data/horse2zebra/test/A/n02381460_1920.jpg
Binary file added data/horse2zebra/test/A/n02381460_20.jpg
Binary file added data/horse2zebra/test/A/n02381460_200.jpg
Binary file added data/horse2zebra/test/A/n02381460_2050.jpg
Binary file added data/horse2zebra/test/A/n02381460_2100.jpg
Binary file added data/horse2zebra/test/A/n02381460_2120.jpg
Binary file added data/horse2zebra/test/A/n02381460_2150.jpg
Binary file added data/horse2zebra/test/A/n02381460_2280.jpg
Binary file added data/horse2zebra/test/A/n02381460_2460.jpg
Binary file added data/horse2zebra/test/A/n02381460_2540.jpg
Binary file added data/horse2zebra/test/A/n02381460_2580.jpg
Binary file added data/horse2zebra/test/A/n02381460_2650.jpg
Binary file added data/horse2zebra/test/A/n02381460_2710.jpg
Binary file added data/horse2zebra/test/A/n02381460_2870.jpg
Binary file added data/horse2zebra/test/A/n02381460_2890.jpg
Binary file added data/horse2zebra/test/A/n02381460_2940.jpg
Binary file added data/horse2zebra/test/A/n02381460_2950.jpg
Binary file added data/horse2zebra/test/A/n02381460_3010.jpg
Binary file added data/horse2zebra/test/A/n02381460_3040.jpg
Binary file added data/horse2zebra/test/A/n02381460_3110.jpg
Binary file added data/horse2zebra/test/A/n02381460_3120.jpg
Binary file added data/horse2zebra/test/A/n02381460_3240.jpg
Binary file added data/horse2zebra/test/A/n02381460_3330.jpg
Binary file added data/horse2zebra/test/A/n02381460_360.jpg
Binary file added data/horse2zebra/test/A/n02381460_3660.jpg
Binary file added data/horse2zebra/test/A/n02381460_3910.jpg
Binary file added data/horse2zebra/test/A/n02381460_40.jpg
Binary file added data/horse2zebra/test/A/n02381460_4010.jpg
Binary file added data/horse2zebra/test/A/n02381460_4110.jpg
Binary file added data/horse2zebra/test/A/n02381460_4120.jpg
Binary file added data/horse2zebra/test/A/n02381460_4160.jpg
Binary file added data/horse2zebra/test/A/n02381460_4240.jpg
Binary file added data/horse2zebra/test/A/n02381460_4260.jpg
Binary file added data/horse2zebra/test/A/n02381460_4310.jpg
Binary file added data/horse2zebra/test/A/n02381460_4370.jpg
Binary file added data/horse2zebra/test/A/n02381460_440.jpg
Binary file added data/horse2zebra/test/A/n02381460_4410.jpg
Binary file added data/horse2zebra/test/A/n02381460_4420.jpg
Binary file added data/horse2zebra/test/A/n02381460_4430.jpg
Binary file added data/horse2zebra/test/A/n02381460_4450.jpg
Binary file added data/horse2zebra/test/A/n02381460_4470.jpg
Binary file added data/horse2zebra/test/A/n02381460_4530.jpg
Binary file added data/horse2zebra/test/A/n02381460_4550.jpg
Binary file added data/horse2zebra/test/A/n02381460_4630.jpg
Binary file added data/horse2zebra/test/A/n02381460_4640.jpg
Binary file added data/horse2zebra/test/A/n02381460_4650.jpg
Binary file added data/horse2zebra/test/A/n02381460_4660.jpg
Binary file added data/horse2zebra/test/A/n02381460_470.jpg
Binary file added data/horse2zebra/test/A/n02381460_4740.jpg
Binary file added data/horse2zebra/test/A/n02381460_4790.jpg
Binary file added data/horse2zebra/test/A/n02381460_4800.jpg
Binary file added data/horse2zebra/test/A/n02381460_490.jpg
Binary file added data/horse2zebra/test/A/n02381460_50.jpg
Binary file added data/horse2zebra/test/A/n02381460_500.jpg
Binary file added data/horse2zebra/test/A/n02381460_5090.jpg
Binary file added data/horse2zebra/test/A/n02381460_510.jpg
Binary file added data/horse2zebra/test/A/n02381460_530.jpg
Binary file added data/horse2zebra/test/A/n02381460_5500.jpg
Binary file added data/horse2zebra/test/A/n02381460_5670.jpg
Binary file added data/horse2zebra/test/A/n02381460_5940.jpg
Binary file added data/horse2zebra/test/A/n02381460_600.jpg
Binary file added data/horse2zebra/test/A/n02381460_6290.jpg
Binary file added data/horse2zebra/test/A/n02381460_6300.jpg
Binary file added data/horse2zebra/test/A/n02381460_640.jpg
Binary file added data/horse2zebra/test/A/n02381460_6640.jpg
Binary file added data/horse2zebra/test/A/n02381460_6690.jpg
Binary file added data/horse2zebra/test/A/n02381460_670.jpg
Binary file added data/horse2zebra/test/A/n02381460_6790.jpg
Binary file added data/horse2zebra/test/A/n02381460_690.jpg
Binary file added data/horse2zebra/test/A/n02381460_6920.jpg
Binary file added data/horse2zebra/test/A/n02381460_6950.jpg
Binary file added data/horse2zebra/test/A/n02381460_7140.jpg
Binary file added data/horse2zebra/test/A/n02381460_7170.jpg
Binary file added data/horse2zebra/test/A/n02381460_7190.jpg
Binary file added data/horse2zebra/test/A/n02381460_7230.jpg
Binary file added data/horse2zebra/test/A/n02381460_7250.jpg
Binary file added data/horse2zebra/test/A/n02381460_7300.jpg
Binary file added data/horse2zebra/test/A/n02381460_7400.jpg
Binary file added data/horse2zebra/test/A/n02381460_7500.jpg
Binary file added data/horse2zebra/test/A/n02381460_7620.jpg
Binary file added data/horse2zebra/test/A/n02381460_7660.jpg
Binary file added data/horse2zebra/test/A/n02381460_7700.jpg
Binary file added data/horse2zebra/test/A/n02381460_7890.jpg
Binary file added data/horse2zebra/test/A/n02381460_7970.jpg
Binary file added data/horse2zebra/test/A/n02381460_800.jpg
Binary file added data/horse2zebra/test/A/n02381460_840.jpg
Binary file added data/horse2zebra/test/A/n02381460_8900.jpg
Binary file added data/horse2zebra/test/A/n02381460_8980.jpg
Binary file added data/horse2zebra/test/A/n02381460_900.jpg
Binary file added data/horse2zebra/test/A/n02381460_910.jpg
Binary file added data/horse2zebra/test/A/n02381460_9240.jpg
Binary file added data/horse2zebra/test/A/n02381460_9260.jpg
Binary file added data/horse2zebra/test/A/n02381460_950.jpg
Binary file added data/horse2zebra/test/B/n02391049_100.jpg
Binary file added data/horse2zebra/test/B/n02391049_1000.jpg
Binary file added data/horse2zebra/test/B/n02391049_10100.jpg
Binary file added data/horse2zebra/test/B/n02391049_10160.jpg
Binary file added data/horse2zebra/test/B/n02391049_1020.jpg
Binary file added data/horse2zebra/test/B/n02391049_10210.jpg
Binary file added data/horse2zebra/test/B/n02391049_10590.jpg
Binary file added data/horse2zebra/test/B/n02391049_1060.jpg
Binary file added data/horse2zebra/test/B/n02391049_10630.jpg
Binary file added data/horse2zebra/test/B/n02391049_10810.jpg
Binary file added data/horse2zebra/test/B/n02391049_10910.jpg
Binary file added data/horse2zebra/test/B/n02391049_10980.jpg
Binary file added data/horse2zebra/test/B/n02391049_1100.jpg
Binary file added data/horse2zebra/test/B/n02391049_1150.jpg
Binary file added data/horse2zebra/test/B/n02391049_120.jpg
Binary file added data/horse2zebra/test/B/n02391049_1220.jpg
Binary file added data/horse2zebra/test/B/n02391049_1270.jpg
Binary file added data/horse2zebra/test/B/n02391049_1290.jpg
Binary file added data/horse2zebra/test/B/n02391049_130.jpg
Binary file added data/horse2zebra/test/B/n02391049_1300.jpg
Binary file added data/horse2zebra/test/B/n02391049_1340.jpg
Binary file added data/horse2zebra/test/B/n02391049_1430.jpg
Binary file added data/horse2zebra/test/B/n02391049_1630.jpg
Binary file added data/horse2zebra/test/B/n02391049_170.jpg
Binary file added data/horse2zebra/test/B/n02391049_1760.jpg
Binary file added data/horse2zebra/test/B/n02391049_1790.jpg
Binary file added data/horse2zebra/test/B/n02391049_180.jpg
Binary file added data/horse2zebra/test/B/n02391049_1880.jpg
Binary file added data/horse2zebra/test/B/n02391049_1950.jpg
Binary file added data/horse2zebra/test/B/n02391049_200.jpg
Binary file added data/horse2zebra/test/B/n02391049_2100.jpg
Binary file added data/horse2zebra/test/B/n02391049_2190.jpg
Binary file added data/horse2zebra/test/B/n02391049_2200.jpg
Binary file added data/horse2zebra/test/B/n02391049_2220.jpg
Binary file added data/horse2zebra/test/B/n02391049_2290.jpg
Binary file added data/horse2zebra/test/B/n02391049_2350.jpg
Binary file added data/horse2zebra/test/B/n02391049_2380.jpg
Binary file added data/horse2zebra/test/B/n02391049_2410.jpg
Binary file added data/horse2zebra/test/B/n02391049_2420.jpg
Binary file added data/horse2zebra/test/B/n02391049_2460.jpg
Binary file added data/horse2zebra/test/B/n02391049_2470.jpg
Binary file added data/horse2zebra/test/B/n02391049_2480.jpg
Binary file added data/horse2zebra/test/B/n02391049_2500.jpg
Binary file added data/horse2zebra/test/B/n02391049_2510.jpg
Binary file added data/horse2zebra/test/B/n02391049_2570.jpg
Binary file added data/horse2zebra/test/B/n02391049_260.jpg
Binary file added data/horse2zebra/test/B/n02391049_2600.jpg
Binary file added data/horse2zebra/test/B/n02391049_2620.jpg
Binary file added data/horse2zebra/test/B/n02391049_270.jpg
Binary file added data/horse2zebra/test/B/n02391049_2730.jpg
Binary file added data/horse2zebra/test/B/n02391049_2760.jpg
Binary file added data/horse2zebra/test/B/n02391049_2790.jpg
Binary file added data/horse2zebra/test/B/n02391049_2800.jpg
Binary file added data/horse2zebra/test/B/n02391049_2810.jpg
Binary file added data/horse2zebra/test/B/n02391049_2870.jpg
Binary file added data/horse2zebra/test/B/n02391049_2890.jpg
Binary file added data/horse2zebra/test/B/n02391049_2930.jpg
Binary file added data/horse2zebra/test/B/n02391049_2970.jpg
Binary file added data/horse2zebra/test/B/n02391049_2990.jpg
Binary file added data/horse2zebra/test/B/n02391049_3010.jpg
Binary file added data/horse2zebra/test/B/n02391049_3060.jpg
Binary file added data/horse2zebra/test/B/n02391049_3070.jpg
Binary file added data/horse2zebra/test/B/n02391049_3090.jpg
Binary file added data/horse2zebra/test/B/n02391049_3130.jpg
Binary file added data/horse2zebra/test/B/n02391049_3200.jpg
Binary file added data/horse2zebra/test/B/n02391049_3220.jpg
Binary file added data/horse2zebra/test/B/n02391049_3240.jpg
Binary file added data/horse2zebra/test/B/n02391049_3270.jpg
Binary file added data/horse2zebra/test/B/n02391049_3290.jpg
Binary file added data/horse2zebra/test/B/n02391049_3310.jpg
Binary file added data/horse2zebra/test/B/n02391049_3320.jpg
Binary file added data/horse2zebra/test/B/n02391049_3450.jpg
Binary file added data/horse2zebra/test/B/n02391049_3750.jpg
Binary file added data/horse2zebra/test/B/n02391049_3770.jpg
Binary file added data/horse2zebra/test/B/n02391049_3800.jpg
Binary file added data/horse2zebra/test/B/n02391049_3840.jpg
Binary file added data/horse2zebra/test/B/n02391049_390.jpg
Binary file added data/horse2zebra/test/B/n02391049_400.jpg
Binary file added data/horse2zebra/test/B/n02391049_410.jpg
Binary file added data/horse2zebra/test/B/n02391049_4110.jpg
Binary file added data/horse2zebra/test/B/n02391049_430.jpg
Binary file added data/horse2zebra/test/B/n02391049_440.jpg
Binary file added data/horse2zebra/test/B/n02391049_4490.jpg
Binary file added data/horse2zebra/test/B/n02391049_4570.jpg
Binary file added data/horse2zebra/test/B/n02391049_4610.jpg
Binary file added data/horse2zebra/test/B/n02391049_4730.jpg
Binary file added data/horse2zebra/test/B/n02391049_480.jpg
Binary file added data/horse2zebra/test/B/n02391049_4890.jpg
Binary file added data/horse2zebra/test/B/n02391049_490.jpg
Binary file added data/horse2zebra/test/B/n02391049_4990.jpg
Binary file added data/horse2zebra/test/B/n02391049_5030.jpg
Binary file added data/horse2zebra/test/B/n02391049_5100.jpg
Binary file added data/horse2zebra/test/B/n02391049_5220.jpg
Binary file added data/horse2zebra/test/B/n02391049_5240.jpg
Binary file added data/horse2zebra/test/B/n02391049_5320.jpg
Binary file added data/horse2zebra/test/B/n02391049_560.jpg
Binary file added data/horse2zebra/test/B/n02391049_5670.jpg
Binary file added data/horse2zebra/test/B/n02391049_5720.jpg
Binary file added data/horse2zebra/test/B/n02391049_5810.jpg
Binary file added data/horse2zebra/test/B/n02391049_5930.jpg
Binary file added data/horse2zebra/test/B/n02391049_5990.jpg
Binary file added data/horse2zebra/test/B/n02391049_600.jpg
Binary file added data/horse2zebra/test/B/n02391049_6180.jpg
Binary file added data/horse2zebra/test/B/n02391049_6190.jpg
Binary file added data/horse2zebra/test/B/n02391049_640.jpg
Binary file added data/horse2zebra/test/B/n02391049_6520.jpg
Binary file added data/horse2zebra/test/B/n02391049_6650.jpg
Binary file added data/horse2zebra/test/B/n02391049_6690.jpg
Binary file added data/horse2zebra/test/B/n02391049_6780.jpg
Binary file added data/horse2zebra/test/B/n02391049_6860.jpg
Binary file added data/horse2zebra/test/B/n02391049_6890.jpg
Binary file added data/horse2zebra/test/B/n02391049_690.jpg
Binary file added data/horse2zebra/test/B/n02391049_7060.jpg
Binary file added data/horse2zebra/test/B/n02391049_7150.jpg
Binary file added data/horse2zebra/test/B/n02391049_7190.jpg
Binary file added data/horse2zebra/test/B/n02391049_750.jpg
Binary file added data/horse2zebra/test/B/n02391049_7740.jpg
Binary file added data/horse2zebra/test/B/n02391049_7860.jpg
Binary file added data/horse2zebra/test/B/n02391049_790.jpg
Binary file added data/horse2zebra/test/B/n02391049_80.jpg
Binary file added data/horse2zebra/test/B/n02391049_8000.jpg
Binary file added data/horse2zebra/test/B/n02391049_8020.jpg
Binary file added data/horse2zebra/test/B/n02391049_8080.jpg
Binary file added data/horse2zebra/test/B/n02391049_8140.jpg
Binary file added data/horse2zebra/test/B/n02391049_8340.jpg
Binary file added data/horse2zebra/test/B/n02391049_860.jpg
Binary file added data/horse2zebra/test/B/n02391049_8830.jpg
Binary file added data/horse2zebra/test/B/n02391049_890.jpg
Binary file added data/horse2zebra/test/B/n02391049_900.jpg
Binary file added data/horse2zebra/test/B/n02391049_9000.jpg
Binary file added data/horse2zebra/test/B/n02391049_9160.jpg
Binary file added data/horse2zebra/test/B/n02391049_920.jpg
Binary file added data/horse2zebra/test/B/n02391049_9350.jpg
Binary file added data/horse2zebra/test/B/n02391049_9400.jpg
Binary file added data/horse2zebra/test/B/n02391049_9460.jpg
Binary file added data/horse2zebra/test/B/n02391049_9680.jpg
Binary file added data/horse2zebra/test/B/n02391049_9740.jpg
Binary file added data/horse2zebra/test/B/n02391049_980.jpg
Binary file added data/horse2zebra/test/B/n02391049_9900.jpg
Binary file added data/horse2zebra/test/B/n02391049_9960.jpg
Binary file added data/horse2zebra/train/.DS_Store
Binary file not shown.
Binary file added data/horse2zebra/train/A/n02381460_1001.jpg
Binary file added data/horse2zebra/train/A/n02381460_1002.jpg
Binary file added data/horse2zebra/train/A/n02381460_1003.jpg
Binary file added data/horse2zebra/train/A/n02381460_1006.jpg
Binary file added data/horse2zebra/train/A/n02381460_1008.jpg
Binary file added data/horse2zebra/train/A/n02381460_1009.jpg
Binary file added data/horse2zebra/train/A/n02381460_1011.jpg
Binary file added data/horse2zebra/train/A/n02381460_1014.jpg
Binary file added data/horse2zebra/train/A/n02381460_1019.jpg
Binary file added data/horse2zebra/train/A/n02381460_102.jpg
Binary file added data/horse2zebra/train/A/n02381460_1023.jpg
Binary file added data/horse2zebra/train/A/n02381460_1025.jpg
Binary file added data/horse2zebra/train/A/n02381460_1027.jpg
Binary file added data/horse2zebra/train/A/n02381460_1028.jpg
Binary file added data/horse2zebra/train/A/n02381460_1034.jpg
Binary file added data/horse2zebra/train/A/n02381460_1035.jpg
Binary file added data/horse2zebra/train/A/n02381460_1037.jpg
Binary file added data/horse2zebra/train/A/n02381460_1038.jpg
Binary file added data/horse2zebra/train/A/n02381460_1044.jpg
Binary file added data/horse2zebra/train/A/n02381460_1045.jpg
Binary file added data/horse2zebra/train/A/n02381460_1048.jpg
Binary file added data/horse2zebra/train/A/n02381460_105.jpg
Binary file added data/horse2zebra/train/A/n02381460_1051.jpg
Binary file added data/horse2zebra/train/A/n02381460_1052.jpg
Binary file added data/horse2zebra/train/A/n02381460_1053.jpg
Binary file added data/horse2zebra/train/A/n02381460_1058.jpg
Binary file added data/horse2zebra/train/A/n02381460_1063.jpg
Binary file added data/horse2zebra/train/A/n02381460_1068.jpg
Binary file added data/horse2zebra/train/A/n02381460_1074.jpg
Binary file added data/horse2zebra/train/A/n02381460_1075.jpg
Binary file added data/horse2zebra/train/A/n02381460_108.jpg
Binary file added data/horse2zebra/train/A/n02381460_1082.jpg
Loading

0 comments on commit a995e09

Please sign in to comment.