Skip to content

bryanlohjy/spacesheet

Repository files navigation

Diagram of SpaceSheet

SpaceSheets: Design Experimentation in Latent Space

A spreadsheet interface to explore the latent spaces of generative image models

Overview

The SpaceSheet is a general purpose spreadsheet tool designed to understand the affordances of latent space exploration as a tool for design experimentation. It is the designed output of the self-titled thesis. The tool has been implemented to explore a latent space of fonts (deepfonts by Erik Bernhardsson).

TL;DR: check out this landing page with fancy videos landing page, or try out the demo here.

Getting Started

The application is available as a web application through this link.

If the link does not work, try refreshing the page. Failing that, download the files from the repository and run them locally. To load the application locally, you will need to run a web server. This can be achieved fairly easily using this browser extension.

The app should look like the image below once loaded. If it doesn't, read the notes under it to troubleshoot.

What the application should look like

Notes:

  • The application is a large download (~40mb), due to the size of the pre-trained model implemented. It might take some time to load.

  • The application has been tested to work on Chrome Version 67 on a Windows machine. It should work on most modern browsers, but for the sake of evaluation, or if the application is not working expected, please use this environment when assessing the thesis.

  • Additionally, load the application with a maximised window and refrain from resizing the window.

Using the tool

There are two main elements in the application: the Data Picker (left) and the spreadsheet interface (right).

The Data Picker enables you to pick fonts to experiment with in the spreadsheet. You can select a font by clicking on an element within it.

The spreadsheet enables you to express operations between fonts selected from the Data Picker. These operations can be typed, or populated using the buttons at the top.

Example Workflows

Interpolation

Linear interpolation (or LERP) enables you to traverse the distance from one value to another value by a specified amount. The LERP button in the Operation Bar at the top enables you to create an interpolation between selected cells in the spreadsheet.

LERP between two fonts:

An interpolation between two fonts

or create a grid:

Interpolating between two fonts using a slider

Alternatively, the degree of interpolation can be controlled by a SLIDER cell:

Interpolating between two fonts using a slider

Attribute Vectors

Attributes from a glyph can be isolated and applied to other glyphs.

Let's isolate a serif vector.

  1. First we get the difference between a glyph with serifs, and a similar glyph but without serifs. This difference is called a serif attribute vector.

Interpolating between two fonts using a slider

  1. Let's pick a glyph we want to add serifs to.

Interpolating between two fonts using a slider

  1. We can now apply the serif attribute vector to another glyph to find its serif equivalent by using the ADD operation.

Interpolating between two fonts using a slider

  1. We can also remove serifs from a glyph by subtracting the attribute vector from it.

Interpolating between two fonts using a slider

Alternative versions

History

This repo is an artifact of an academic project that was created to be graded by examiners. It has been sitting in a private Gitlab repo for several years. After receiving requests for access (some from a while ago, apologies!), we've finally migrated this out onto Github for public access.

Given the context, the repo is currently not developer-friendly in its current state. Please feel free to file any issues with any questions or requests pertaining to the codebase. We welcome any contributions and hope that you can make good use out of this project!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published