Log your results to Picsell.ia

We will see how you can store any variable, function output, array, image, and visualize it in your experiment's tab in our platform.

The Log method

Logging something to Picsell.ia is as simple as this :

from picsellia.client import Client

api_token = '4d388e237d10b8a19a93517ffbe7ea32ee7f4787'
project_token = '9c68b4ae-691d-4c3a-9972-8fe49ffb2799'

experiment = Client.Experiment(
    api_token=api_token,
    project_token=project_token,
    name='my_new_experiment'
    )

data = [3, 1.25, 1.4, 0.35, 0.95]
experiment.log('TotalLoss', data, 'line')

Now let's check your experiment's dashboard :

What you just created is what we call a data asset, now we will dive into it to see how to use it properly and how far we can go.

The Data Asset

To store something related to an experiment and visualize it in Picsell.ia, you have to store it in what we call a data asset, it is composed of the following properties :

  • name, it is the name of the tab you will see in your experiment, it can group several data assets

  • data, is the value, dictionary, array, image, that you want to store

  • type, the type of visualization your want to render your asset in (e.g array, line-chart, bar-chart...)

experiment.log(name='logs', data=data, type='line')

Supported types

These are just basic usage example of what how to display different kinds of data in Picsell.ia.

To see the complete list of options and arguments for each type, please check the data reference.

We are doing our best to offer you as much data visualization possibilities but it takes time to integrate. Here is the list of the visualization we support for now. If you need something that is not in the list, please send us a kind message and we will do our best to treat your request a.s.a.p 😊

Single Value

Store one value to be displayed alone. It can be of any types (int, float, str...)

experiment.log(name='accuracy', type='value', data=0.95)

Single values will appear in your experiment dashboard in the Summary at the top of the page like this :

Line

A basic line chart

data = [3, 8, 2, 7, 9]
experiment.log(name='logs', type='line', data=data)

The format of your data to display a line-chart must be one of the following.

List format

If you don't specify it, we automatically increment the steps/x_axis for you so you can just send the y values like this:

experiment.log(name='logs', type='line', data=[5, 8, 2, 9, 10])

If there is already existing data with the name you provided ('logs' in this example), the values will be append to the current list of values.

If you want to completely replace the existing values with a brand new list you can set the replace parameter to True

experiment.log(name='logs', type='line', data=[5, 8, 2, 9, 10], replace=True)

Dict format

If you want to specify your own x_axis steps, you can send the data this way:

data = {
    'steps': [0, 2, 4, 8, 10],
    'values': [0.7, 0.8, 0.9, 0.3, 0.12]
}
experiment.log(name='logs', type='line', data=data)

You can also visualize multiple lines on the same chart by adding keys to your dictionary (with or without steps) :

data = {
    'loss1': [0.45, 0.2, 0.98, 0.47, 0.28],
    'loss2': [0.7, 0.8, 0.9, 0.3, 0.12],
    'loss3': [0.21, 0.47, 0.74, 0.56, 0.86]
}
experiment.log(name='logs', type='line', data=data)

Bar

A basic bar chart

data = {
    'x': ['car', 'person', 'birid'],
    'y': [5, 8, 2],
}
experiment.log(name='labels', type='bar', data=data)

Table

data = {
    "Loss/total_loss": 1.202446, 
    "Loss/localization_loss": 0.022069892, 
    "Loss/classification_loss": 1.1457626, 
    "Loss/regularization_loss": 0.034613654, 
    "DetectionBoxes_Recall/AR@1": 	0.0
}
experiment.log(name='metrics', type='table', data=data)

Image

path = "path/to/my/image.jpg"
experiment.log("img3", type="image", data=path)

Heatmap

Please note that you can send an array of values whose shape is (N+1xN+1) whereas the list of your categories as a length of N. The last dimensions of the array will be labeled as FP (False Positive) and FN (False Negative).

conf = [[33,  0, 13],
       [ 2,  7, 16],
       [10,  0,  0]]

confusion = {
    'categories': ['car', 'pedestrian'],
    'values': conf.tolist()
}
exp.log('confusion', confusion, 'heatmap')

Last updated