The platform exposes a rich interface to manipulate graphs for generating a wide variety of datasets. While generated images and videos have virtually infinite randomness, the graph parameters provide for the control one needs when addressing specific computer vision training and validation issues. These guidelines for graph editing help users get the most from channels.

Graph Basics

A basic graph performs three functions - object creation, scene generation, and scene rendering. Most channels are built with a set of objects of interest so the graph will have one or more nodes that create those objects. Another node creates the scene and places objects of interest in it. Finally, a simulator node renders the output of the scene into a synthetic image.

Following is a basic graph that performs these three operations.

Minimal Graph: Only Objects

In the above graph, the “Yo-yo” node creates a yo-yo generator that is passed to the “RandomPlacement” node. The “RandomPlacement” node creates a scene and makes a Yo-yo cloud because it calls the Yo-yo generator 25 times and places the objects randomly in the scene. The “RenderNode” then renders the scene.

While some channels use placement to deliberately place objects on backgrounds, the example channel simulates dropping the toy objects over a container and a floor. Following is a graph that does this.

Basic Graph: The objects are placed in the scene and then dropped over a container and floor.

Generators: Objects and Modifiers

Though not required, channels developed by use generators for objects. An object generator is a factory that provides new instances of the objects as many times as the code requests one. The Ana generator class has a weight that can be used in a placement node. By using object generators instead of manually adding objects, a scene can be built procedurally based on the structure of the graph.

Object modifiers are generators with children and make changes to the children generators. For example, the ‘ColorVariation' modifier adds a call to the color method to it’s children.

The placement node creates the ‘Number of Objects’

Using Graphs Locally

Graphs can be uploaded and downloaded through the graph editor in the web interface or by using the anatools SDK. There are several opportunities to test a channel before deploying it to, and sometimes developers need a graph to test a new feature.

Graph Download provides graph upload and download through our SDK. Graphs can be updated, uploaded and run in a script, or Jupyter notebook, when conducting CV experiments.

Graph Functions

For more on using graphs see: Creating and Using Graphs