Use File -> Import Network to import an existing .prototxt network file. To import a solver .prototxt file, use File -> Import Solver. If the solver contains a network definition itself, you get the choice to import it too.
Importing a network automatically arranges the layer nodes.
Note: The current network/solver configuration gets replaced by the imported network/solver.
Navigation in the Node Editor
Move the scene - Click and drag the left mouse button on an empty space / Use the scrollbars
Zoom - Mouse wheel
Select a layer - Click the left mouse button on the layer
Select multiple layers - Click the left mouse button on the layers while holding CTRL
Rectangular selection - Hold CTRL and drag the left mouse button
Move layers - Click and drag the layer / any selected layer
Center view on specific layer - Right click a layer in the Network Layers-dock and select Focus from the context menu
To create a new layer node, drag the layer type name from the Layers-dock into the graph editor. This creates a new layer of the given type with the default name [type] #[number]. The new layer has no top/bottom blobs. Default parameters get added if available (e.g. convolution_param for Convolution layers)
By dropping the layer type name on an existing layer node, you can choose to replace the existing layer with the new layer type. This will remove all parameters from the layer with the exception of top/bottom blobs and their connections.
The list of available layer types can be filtered by typing part of the name in the search box above the list.
It is also possible to copy and paste layers by selecting the layers, right clicking any selected layer and select Copy from the context menu, or by pressing CRTL-C, use right clickPaste or CRTL-V to create the copy. The new layers have the same amount of top and bottom blobs, top blobs are renamed to be unique, parameters are copied, connections between copied layers are preserved.
Selected layers can be deleted by pressing Del. All connections, to and from the selected layer will be removed.
All layers currently in the network are listed in the Network Layers-Dock. The list can get sorted by order, name or type in ascending or descending order, by clicking the captions. Order represents the connection hierarchy of the layers, where for every two layers connected with at least one blob the creating layer (the connecting blob is a top blob) is in front of the consuming layer (the connecting blob is a bottom blob). In cases where layers process blobs in parallel, the order is ambiguous.
Blobs and Connections
To add a top or bottom blob to a layer, right click the node and select Add top or Add bottom. When creating a top blob, a dialog will ask for the blobs name.
The name of bottom blobs can be changed too, but if attached connections exist, these will be deleted, since the connected top and bottom blobs always have to be named equally. Otherwise the name of added bottom blobs will get updated automatically when connecting to a top blob.
The rectangles in the lower part of the layer node represent the top and bottom blobs, data flows through the network from left to right. Hence, connectors on the left represent bottom blobs, connectors on the right represent top blobs.
To change a top blobs name, select the blob in the Layer Properties-dock then click on the name and type a name of your choice. This will also update all bottom blob names, connected to the changed top blob.
You can connect a top and a bottom blob by clicking on a blobs rectangle, then dragging and releasing on the rectangle of the blob you want to connect. This will create a visible connection between both blobs. Note, that you can't create a connection between two top or two bottom blobs. A top blob can be connected to multiple bottom blobs, but a bottom blob can only be connected to one top blob. (If the layer of the top blob has the include.phase parameter, a second top blob can be connected to the bottom blob. The second top blob needs to have the same name as the first and its include.phase parameter needs to have another phase. Please note that Barista does not support training stages or levels, yet. If those are needed, please use the prototxt editor.)
Connections can be hidden if they clutter the network view: Right click the connection and select Hide from the context menu. To show the connection select Show. Hidden connections are represented by dashed lines at the start and end of the connection.
If a layer has a top and a bottom blob with the same name, the border of the layer, the blobs rectangle and the connection turn blue, to indicate in-place working layers. Blue top blobs can not be connected to other bottom blobs. Use the last top blob with the name instead.
To remove a connection between two blobs, either select the connection and hit Del or right click it and select Remove in the opening context-menu.
Removing a blob can be done by right clicking the blobs rectangle and selecting Remove from the context menu. Removing a blob also removes all connections connected to the blob.
Editing Layer and Solver Parameters
To add, remove and alter the parameters of the different layers and the solver, Barista offers the docks Solver Properties and Layer Properties, which visibility can be set in the menu bar under View -> Docks -> Layer/Solver Properties.
The dock Layer Properties lists the parameters of a selected layer in the Graph View, the dock Solver Properties lists the parameters of the Solver. If multiple layers are selected, a tab for each one is shown on the top of the Layer Properties dock, from which the user can choose one.
The parameters are listed in a nested way, which directly reflects their definition in the underlying prototxt-file.
They can be separated into two major types:
Primitive parameters, which directly describe a parameter which can be set by the user.
Group parameters, which have a group of different parameters (primitive or group) associated to them, hence the nested structure.
In Barista, a primitive parameter is shown with its name on the left side, and a field to alter the value on the right side. Primitive parameters are also marked with a single adjuster as an icon.
Group parameters are marked with a multiple adjuster as an icon. They also have a tiny arrow beside them, pointing either to the right when the content of the group parameter is hidden, or down when the content is shown.
To add a new parameter, select the Group Parameter the required (sub)parameter should be part of, then choose the parameter in the selection-menu and click on Add.
The selection-menu automatically shows only the suitable parameters when you selected a Group parameter before.
Depending on the type of a primitive parameter, you can choose an option from a combobox, change a string, alter a number, set a path and so on. Simply click on the value you want to change and alter it.
Removing a parameter works the same way. Select a parameter and click on the Remove-Button. Some parameters like the name or the type of a layer are not removable, if so the Remove-Button is deactivated.
To allow the user to directly alter the prototxt-files, Barista offers a prototxt editor which can be invoked in the menu bar under Edit -> Edit Network/Solver as Prototxt.
Here, the underlying prototxt-files of the network and the solver can be edited directly.
Syntax highlighting has been implemented to improve readability.
The text size can be changed via the slider in the bottom right corner.
If the prototxt-file has been changed, you can save it by clicking the Save- or Save & Close-button. The changes are automatically applied to the network/solver.
To prevent erroneous alterations which could leave the project in an inconsistent state, trying to save an invalid prototxt-file results in an error-message, which shows the line in which the problem occurred.
Barista supports exporting your data in the prototxt format at all times during runtime. If you only need a file containing your network definition (without the solver), click File -> Export Network in the top menu and specify a desired output path in the shown file dialog.
If you want to export your solver configuration as well, you get some more options by clicking File -> Export Solver. As shown in the following screenshot, you can choose how to link the required network with the solver. It can point to an existing file (see the previously-described step) or just include the full net definition inside of the solver's prototxt. The latter is quite handy, if you plan to export both at once.