Ejemplo n.º 1
0
    def __init__(self):
        self.rotation_speed = 1  # higher is faster, positive is right
        self.cam_z = -2

        self.values = []
        for x in range(7):
            for r in range(23):
                if x == 6 and r > 21:
                    break
                Label(text=r + 1 + (x * 23), relief=RIDGE,
                      width=5).grid(row=r, column=0 + (x * 2))
                s = Scale(master,
                          from_=0.,
                          to=1.,
                          resolution=0.1,
                          orient=HORIZONTAL)
                s.set(1)
                s.grid(row=r, column=1 + (x * 2))  # length=10,
                self.values.append(s)

        Button(master, text='max', command=self.max).grid(row=16,
                                                          column=14,
                                                          columnspan=2)
        Button(master, text='randomize',
               command=self.randomize).grid(row=17, column=14, columnspan=2)
        Button(master, text='rotate right',
               command=self.right).grid(row=18, column=14, columnspan=2)
        Button(master, text='rotate left',
               command=self.left).grid(row=19, column=14, columnspan=2)
        Button(master, text='cam up', command=self.cam_up).grid(row=20,
                                                                column=14,
                                                                columnspan=2)
        Button(master, text='cam down',
               command=self.cam_down).grid(row=21, column=14, columnspan=2)
        Button(master, text='print config',
               command=self.print_config).grid(row=22, column=14, columnspan=2)
        self.b = Button(master, text="enter values", command=self.popup)
        self.b.grid(row=17, column=14, columnspan=2)

        width = 512
        height = 512

        self.renderer = Renderer(width, height)

        self.image = Image.fromarray(np.zeros((width, height), dtype=np.uint8))

        self.canvas = Canvas(master, height=height, width=width)
        self.canvas.grid(row=0, column=14, rowspan=15)
        # image = image.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
        self.photo = ImageTk.PhotoImage(self.image)
        self.photo_holder = self.canvas.create_image(
            width - (self.image.size[0] / 2),
            height - (self.image.size[1] / 2),
            image=self.photo)

        self.rot = 0

        self.render()
Ejemplo n.º 2
0
        self.conv1 = nn.Conv2d(3, 32, (3, 3), (1, 1), (1, 1))
        self.conv2 = nn.Conv2d(32, 64, (3, 3), (2, 2), (1, 1))
        self.linear3 = nn.Linear(64 * 32 * 32, num_outputs)
        self.linear3_ = nn.Linear(64 * 32 * 32, num_outputs)

    def forward(self, inputs):
        x = self.relu(self.conv1(inputs))
        x = self.relu(self.conv2(x))
        x = x.view(-1, 64 * 32 * 32)
        mu = torch.sigmoid(self.linear3(x))
        sigma_sq = torch.tanh(self.linear3_(x))

        return mu, sigma_sq


env = Renderer(WIDTH, HEIGHT)

data_generator = ConstantShapeGenerator(WIDTH, HEIGHT)

torch.manual_seed(SEED)
np.random.seed(SEED)

agent = REINFORCE(HIDDEN_SIZE, WIDTH * HEIGHT * 3, 160, Policy)

if not os.path.exists(exp_dir):
    os.mkdir(exp_dir)

reward_avg = []

for i_episode in range(NUM_EPISODES):
    target = data_generator.sample()
Ejemplo n.º 3
0
        x = self.relu(self.conv3(x))

        # mu, logprob
        return torch.sigmoid(self.linear1_mu(x.view(
            -1, 128 * 16 * 16))), torch.sigmoid(
                self.linear1_stddev(x.view(-1, 128 * 16 * 16)))

    def decode(self, z):
        x = self.relu(self.linear2(z))
        return torch.sigmoid(self.linear3(x))

    def forward(self, x):
        raise NotImplementedError("shouldn't use this directly")


env = Renderer(params["WIDTH"], params["HEIGHT"])

# data_generator = CubeSingleViewGenerator(params["WIDTH"], params["HEIGHT"])
data_generator = RotatingRandomShapeGenerator(params["WIDTH"],
                                              params["HEIGHT"])

torch.manual_seed(params["SEED"])
np.random.seed(params["SEED"])

policy = Policy(params["LATENT_SIZE"], 160).to(device)

optimizer = torch.optim.Adam(policy.parameters(), lr=params["LR"])
eps = np.finfo(np.float32).eps.item()

if not os.path.exists(exp_dir):
    os.mkdir(exp_dir)
Ejemplo n.º 4
0
 def __init__(self, width, height):
     self.cube = Renderer(width, height, "cube", False)
     self.sphere = Renderer(width, height, "sphere", True)
     self.shape = np.ones(160) * 0.9
Ejemplo n.º 5
0
 def __init__(self, width, height, radius=.5):
     self.renderer = Renderer(width, height, "sphere", True)
     self.shape = np.ones(160) * radius
Ejemplo n.º 6
0
 def __init__(self, width, height):
     self.renderer = Renderer(width, height, "sphere", True)
     self.cam = np.random.uniform(-1, 1, 3)
Ejemplo n.º 7
0
 def __init__(self, width, height, smin=.4, smax=.8):
     self.renderer = Renderer(width, height, "sphere", True)
     self.shape = np.random.uniform(smin, smax, 160)
     self.cam = None
Ejemplo n.º 8
0
 def __init__(self, width, height, smin=0, smax=1):
     self.renderer = Renderer(width, height, "sphere", True)
     self.cam = np.random.uniform(-1, 1, 3)
     self.min = smin
     self.max = smax
Ejemplo n.º 9
0
 def __init__(self, width, height):
     self.renderer = Renderer(width, height, "cube", False)
     self.cam = None
Ejemplo n.º 10
0
 def __init__(self, width, height):
     self.renderer = Renderer(width, height, "cube", False)
     self.cam = np.random.uniform(-1, 1, 3)
Ejemplo n.º 11
0
 def __init__(self, width, height, smin=.5, smax=1):
     self.renderer = Renderer(width, height, "iqtt", True)
     self.shape = np.random.uniform(smin, smax, 160)
Ejemplo n.º 12
0
    wandb.init(project="rezende-30", config=params)

# experiment = Experiment(api_key="ZfKpzyaedH6ajYSiKmvaSwyCs",
#                         project_name="rezende", workspace="fgolemo")
# experiment.log_parameters(params)
# experiment.set_name(exp_name)
# experiment.add_tag("v3")


def normal(x, mu, sigma_sq):
    a = (-1 * (x - mu).pow(2) / (2 * sigma_sq)).exp()
    b = 1 / (2 * sigma_sq * pi.expand_as(sigma_sq)).sqrt()
    return a * b


env = Renderer(params["WIDTH"], params["HEIGHT"], shape="ijcv")

data_generator = CubeLoader()

torch.manual_seed(params["SEED"])
np.random.seed(params["SEED"])

policy = ReinforcePolicy(params["LATENT_SIZE"], 160).to(device)
if LOGGING:
    wandb.watch(policy)

optimizer = torch.optim.Adam(policy.parameters(), lr=params["LR"])
eps = np.finfo(np.float32).eps.item()

if not os.path.exists(exp_dir):
    os.mkdir(exp_dir)
Ejemplo n.º 13
0
from threedee_tools.datasets import CubeLoader
from threedee_tools.renderer import Renderer
import numpy as np
import matplotlib.pyplot as plt

env = Renderer(128, 128, shape="ijcv")

gen = CubeLoader()
imga = gen.sample()

print(gen.cam)
print(gen.light)

env.base_light = -gen.light + 1
imgb = env.render(np.ones((160)), np.array([0, 0, 0]), cam_pos=gen.cam + .7)
imgb = np.array(imgb, dtype=np.float32) / 255

imgab = np.zeros((128, 128 * 2, 3), dtype=np.float32)
imgab[:, :128, :] = imga
imgab[:, 128:, :] = imgb

plt.imshow(imgab)
plt.show()