• Stars
    star
    131
  • Rank 274,278 (Top 6 %)
  • Language
    Java
  • License
    Other
  • Created about 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

RunwayML-for-Processing

RunwayML library for Processing

A library to easily use RunwayML with Processing.

Prerequisites

  • RunwayML: Download the latest release of RunwayML and sign up for an account. Visit our installation guide for more details. If you encounter any issues installing RunwayML, feel free to contact us through the support page.

  • Processing: Processing version 3.0 or greater is required.

Installation

  1. Download RunwayML.zip
  2. Unzip into Documents > Processing > libraries
  3. Restart Processing (if it was already running)

📽 Watch How to Install and Use the RunwayML Processing Library

Testing installation

Before using the library please make sure RunwayML is started and is running one model.

You can test by opening your browser and navigating to http://localhost:8000/info to view info about your model.

If you see a JSON string with inputs and outputs information use the Basic Example below !

Feel free to test the Basic Example below.

Basic Example

For this example run the im2txt model.

This example will print information from RunwayML (e.g. running im2txt)

// import Runway library
import com.runwayml.*;
// reference to runway instance
RunwayHTTP runway;

void setup() {
  // setup Runway HTTP connection using default host (localhost) and port (8000)
  runway = new RunwayHTTP(this);
}

void draw() {
  
}

// this is called when new Runway data is available
void runwayDataEvent(JSONObject runwayData){
  println(runwayData);
}

// this is called each time Processing connects to Runway
// Runway sends information about the current model
public void runwayInfoEvent(JSONObject info){
  println(info);
}
// if anything goes wrong
public void runwayErrorEvent(String message){
  println(message);
}

Notice the text running displayed in console.

What if we want to display an image from RunwayML ?

Let's stop im2txt and use CygleGAN. Notice on info event details about the model: the output in particular is an image with the key "image". (You can see the information within RunwayML on the top right Network area of the Model).

Images to/from RunwayML are Base64 encoded and the library's ModelUtils helps convert between this format and the familiar PImage format.

With the CycleGAN model running we can tweak the above example to display an image received from RunwayML:

// import Runway library
import com.runwayml.*;
// reference to runway instance
RunwayHTTP runway;
// reference to image received
PImage resultImage;

void setup() {
  // setup Runway HTTP connection using default host (localhost) and port (8000)
  runway = new RunwayHTTP(this);
}

void draw() {
	// if there's an image received:
	if(resultImage != null){
		// display the image
		image(resultImage,0,0);
	}  
}

// this is called when new Runway data is available
void runwayDataEvent(JSONObject runwayData){
  // try to access "image" key and convert the received that to a PImage
  try{
  	String base64Image = runwayData.getString("image");
  	resultImage = ModelUtils.fromBase64(base64Image);
  }catch(Exception e){
  	// print an error message if the above fails
  	println("error parsing received data: " + runwayData);
  	e.printStackTrace();
  }
}

// this is called each time Processing connects to Runway
// Runway sends information about the current model
public void runwayInfoEvent(JSONObject info){
  println(info);
}
// if anything goes wrong
public void runwayErrorEvent(String message){
  println(message);
}

Existing Examples

You can access the following examples via Processing > Examples > Contributed Libraries > RunwayML

  • AdaIN-Style-Transfer preview (content image: "Still Life with fruit dish" by Paul Cézanne, style image: "Fruit Dish" by Georges Braques)

  • Adaptive-Style-Transfer preview (content image: "Fruit Dish" by Georges Braques, inference using Cézanne (landscapes) style)

  • Arbitrary-Image-Stylization preview (content image: "Girl with a Mandolin" by Pablo Picasso, style image: "Man with a guitar" by Georges Braques)

  • AttnGAN:preview

  • BigGAN: preview

  • cnOCR: preview

  • COCO-SSD: preview (content image: "The Card Players" by Paul Cézanne)

  • CycleGAN: preview (content image: "Fruit Dish" by Georges Braques)

  • DeepLab: preview (content image: "The Card Players" by Paul Cézanne)

  • DeepLabV3: preview (content image: "The Card Players" by Paul Cézanne)

  • DeepPrivacy: preview (image credits: "Portrait of Ada Lovelace" by Margaret Sarah Carpenter)

  • DenseCap: preview (content image: "The Card Players" by Paul Cézanne)

  • DenseDepth: preview (content image: "The Card Players" by Paul Cézanne)

  • DensePose: preview (image credits: Margaret Hamilton in 1969 with the source code her team developed for the Apollo missions. Photograph: Science History Images/Alamy Stock Photo via theguardian.com)

  • DeOldify: preview (content image: Grace Hopper, image credits: Courtesy of the Computer History Museum, source: https://news.yale.edu/2017/02/10/grace-murray-hopper-1906-1992-legacy-innovation-and-service)

  • DeRaindrop: preview (content image: "Sudden shower over Shin Ōhashi bridge and Atake" by Hiroshige)

  • EdgeConnect: preview (content image: "Self-Portrait with Striped Shirt" by Egon Schiele)

  • ESRGAN: preview (image credits: SuSuMa original source: https://en.wikipedia.org/wiki/White_tiger#/media/File:White-tiger-2407799_1280.jpg)

  • Face-Landmarks: preview (content image: "Celestina" by Pablo Picasso)

  • Face-Parser: preview (content image: "Celestina" by Pablo Picasso)

  • Face-Recognition: preview (image from 12 Angry Men (1957) directed by Sidney Lumet)

  • Fast-Photo-Style preview (content image: "Still Life with fruit dish" by Paul Cézanne, style image: "Fruit Dish" by Georges Braques)

  • Fast-Style-Transfer: preview (content image: "Nude Descending a Staircase, No. 2" by Marcel Duchamp)

  • GLOW: preview (content image: "Self-Portrait with Striped Shirt" by Egon Schiele)

  • GPT-2: preview

  • im2txt: preview (content image: "The Card Players" by Paul Cézanne)

  • Image-Inpainting-GMCNN: preview (content image: "Study after Velázquez's Portrait of Pope Innocent X" by Francis Bacon)

  • Image-Super-Resolution: preview (image credits: SuSuMa original source: https://en.wikipedia.org/wiki/White_tiger#/media/File:White-tiger-2407799_1280.jpg)

  • MaskRCNN: preview (image credits: Margaret Hamilton in 1969 with the source code her team developed for the Apollo missions. Photograph: Science History Images/Alamy Stock Photo via theguardian.com)

  • MobileNet: preview (content image: "Still Life with fruit dish" by Paul Cézanne)

  • OpenGPT-2: preview

  • OpenPifPaf-Pose: preview (image credits: Margaret Hamilton in 1969 with the source code her team developed for the Apollo missions. Photograph: Science History Images/Alamy Stock Photo via theguardian.com)

  • Photo-Sketch: preview

  • Pix2Pix: preview (content image: "Broadway Boogie Woogie" by Piet Mondrian)

  • Places365: preview (image credits: "London: The Thames from Somerset House Terrace towards the City" by Canaletto)

  • PoseNet: preview (image credits: Margaret Hamilton in 1969 with the source code her team developed for the Apollo missions. Photograph: Science History Images/Alamy Stock Photo via theguardian.com)

  • SPADE-COCO: preview (uses segmentation based on "The Card Players" by Paul Cézanne)

  • SPADE-Landscapes: preview (uses segmentation based on "The Card Players" by Paul Cézanne)

  • Style2Paints: preview (content image: "Self-Portrait with Striped Shirt" by Egon Schiele)

  • StyleGAN: preview (image credits: "Portrait of Ada Lovelace" by Margaret Sarah Carpenter)

  • YOLACT: preview (content image: "The Card Players" by Paul Cézanne)

  • UGATIT: preview (content image: "Still Life with fruit dish" by Paul Cézanne)

Extra platforms

Additionally you can use RunwayML on a machine on the local network and connect from another device capable of running Processing.

Raspberry PI

As long as you have a Raspberry PI running Processing, all you need to do is specify the IP (and optionally port) of the computer running the RunwayML app: that's it! (e.g. if your computer's LAN IP is 192.168.0.12 you would initialize Runway like so: runway = new RunwayHTTP(this,"192.168.0.12",8000);)

To setup Processing on a Raspberry Pi please follow the official Get Started tutorial

Raspberry Pi library example preview

Android

  1. please install Android Mode for Processing (if it's not already installed on your system).
  2. allow INTERNET permissions in Processing > Android > Sketch Permissions Android library example preview
  3. run the code (e.g. attnGANAndroid)

The one major caveat at the moment is the Base64 <-> PImage conversion is handled by a separate class: ModelUtilsAndroid.

This means on Android

PImage result = ModelUtils.fromBase64(base64ImageString);

becomes:

PImage result = ModelUtilsAndroid.fromBase64(base64ImageString);

Android library example preview

(Additionally, it's even possible to write RunwayML Processing sketchs on the Android device using APDE)

Dependencies

This Processing Library manages the OSC connection to Runway relying on the oscP5 library.

Please install oscP5 before using the OSC connection with this library via Sketch > Import Library... > Add Library... > Contribution Manager Filter > oscP5

Contributing

This is still a work in progress. Contributions are welcomed!

Credits

Special thanks for mentoring and support from Cris Valenzuela, Anastasis Germanidis and Daniel Shiffman

Additional thanks to Jen Sykes for updating the DenseCap and GPT2 examples

Main library development by George Profenza

Library examples are based partially on Runway Processing Examples by:

More Repositories

1

stable-diffusion

Latent Text-to-Image Diffusion
Jupyter Notebook
3,267
star
2

guided-inpainting

Towards Unified Keyframe Propagation Models
Python
220
star
3

RunwayML-for-Unity

RunwayML for Unity 🎯
C#
181
star
4

RunwayML-for-Photoshop

RunwayML for Photoshop
TypeScript
143
star
5

runway

[DEPRECATED ALPHA VERSION] Run, build and train machine learning models using a visual interface and then connect your models to your favorite software.
128
star
6

learn

👩‍🏫 Learn how to use RunwayML with tutorials, guides, and examples!
127
star
7

model-sdk

💥🐍 Runway Model SDK: port your own machine learning models to Runway
Python
102
star
8

ofxRunway

RunwayML + openFrameworks ☄️
Makefile
101
star
9

touchDesigner

RunwayML + TouchDesigner 🌝
101
star
10

javascript

RunwayML + JavaScript 👾
JavaScript
100
star
11

processing

[ARCHIVED] Runway + Processing 🔥
Processing
95
star
12

p5js

RunwayML + p5.js 🐠
JavaScript
94
star
13

model-template

🏌️‍♂️Model Template: Basic template structure of a Runway model.
Python
56
star
14

hosted-models

Interact with Runway Hosted Models with only a few lines of code!
TypeScript
55
star
15

unity

[ARCHIVED] Runway + Unity 🦚
C#
49
star
16

awssecret2env

Convert secrets stored in AWS Secrets Manager to environment variables
Go
48
star
17

maxmsp

RunwayML + Max/MSP 🐲
Max
45
star
18

Intro-Synthetic-Media

Introduction to Synthetic Media Class at ITP/NYU.
JavaScript
38
star
19

alpha_models

[ALPHA] Models for Runway
PureBasic
31
star
20

OpenRNDR

RunwayML + OpenRNDR 🦀
Kotlin
24
star
21

arduino

RunwayML + Arduino 🦊
C++
24
star
22

RunwayML-for-Grasshopper

RunwayML for Grasshopper
C#
19
star
23

puredata

RunwayML + Pure Data 🦜
14
star
24

Arbitrary-Image-Stylization

Python
7
star
25

design

Runway design resources
1
star