Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This is the command line tool from das-element for .

It contains the API (supporting Python 2 & 3) and the classification of image, sequence and movie files.

Tip

You can deploy it on your render farm to use it in a post-render process for labeling of elements.

...

tagging of elements

Versions

There are two command line tool (CLI) versions with a different range of features and file size.

cli

This version is optimized to receive data from the database or update an element.
Smaller in file size and fast to use, but has a reduced set of features.

Code Block
  get-categories                 Get all categories of the library
  get-category                   Get category entity
  get-element-by-id              Get element entity from element ID
  get-element-by-name            Get element entity from element name
  get-element-by-uuid            Get element entity from element UUID
  get-elements                   Get all elements of the library
  get-libraries                  Get all libraries data for current config
  get-library-template-mappings  Get all library template mappings
  get-tag                        Get tag entity
  get-tags                       Get all tags of the library
  license                        Show license
  update                         Updates database entity

cli_full

Includes all features of the CLI, like ingesting files, rendering proxies or running a machine learning model.
This version has larger in file size and is slower.

Code Block
  delete-element                 Delete element
  get-categories                 Get all categories of the library
  get-category                   Get category entity
  get-element-by-id              Get element entity from element ID
  get-element-by-name            Get element entity from element name
  get-element-by-uuid            Get element entity from element UUID
  get-elements                   Get all elements of the library
  get-libraries                  Get all libraries data for current config
  get-library-template-mappings  Get all library template mappings
  get-meaningful-frame           Validate meaningful thumbnail frame number
  get-paths-from-disk            Get all file paths from a given folder.
  get-tag                        Get tag entity
  get-tags                       Get all tags of the library
  info                           Show machine learning model info
  ingest                         Ingest new element
  license                        Show license
  predict                        Predict the category for a give file path.
  render-element-proxies         Render the proxy files for an element...
  update                         Updates database entity

...

Installation

Save the software to your preferred location. That’s all!

On Linux make sure to run this command to make the file executable:

Code Block
chmod +x das-element-cli_{version}_lin

API

To learn more about the application programming interface (API) follow this link here.

Documentation

docu.api.das-element.com

Python API

https://github.com/das-element/python-api

How To machine learning prediction

Info

Each version will be shipped with the model inside. Use the info flag to get the version number

Simple usage

Code Block
languagebash
das-element-cli.exe {file}
Code Block
languagebash
classifier# Linux & Mac
das-element-cli predict /path/to/file.#.exr

# Windows
C:\das-element-cli.exe predict C:\path\to\file.#.exr

# result:
{"/path/to/file.#.exr": [{"labeltag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"}]}
Info

Valid file paths are …

  • single file (single image or movie file):

    • /path/to/file.exr

    • /path/to/file.mov

  • sequence of files

    • /path/to/sequence.#.exr

    • /path/to/sequence.%04d.exr

  • directory

    • the software will crawl the folder structure to find any media files or sequences


Multiple files

You can pass multiple file paths to the software.

classifier
Code Block
languagebash
das-element-cli.exe predict {file1} {file2} {file3}
Code Block
languagebash
classifierdas-element-cli.exe predict /path/to/files.#.exr /path/to/another/file.mov

# result:
{"/path/to/files.#.exr": [{"labeltag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"}],
"/path/to/another/file.mov": [{"labeltag": "torch", "description": "stick with a flaming end used as a source of light", "value": "Q327954"}]}


Multiple results

Get the top X predicted categories by using the flag: --top {number}

Code Block
languagepowershell
classifier das-element-cli.exe predict --top 3 /path/to/file.mov

# result:
{"/path/to/file.mov": [
      {"labeltag": "torch", "description": "stick with a flaming end used as a source of light", "value": "Q327954"},
      {"labeltag": "fire", "description": "rapid oxidation of a material", "value": "Q3196"},
      {"labeltag": "flame", "description": "visible, gaseous part of a fire", "value": "Q235544"}
]}


Python Example

Here is an example code snippet that you could use in your python code.

Code Block
languagepy
# print the top 3 labeltag predictions for a given file path

import json
import subprocess

path = '/path/to/file.mov'
command = ['./classifierdas-element-cli.exe', 'predict', '--top', '3', path]
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()

if process.returncode != 0:
    print('Something went wrong: {} - Error: {}'.format(path, error))
else:
    result = json.loads(output)
    for path, predictions in result.items():
        wikidata_ids = [item['value'] for item in  predictions]  # list of IDs from wikidata
        readable_labelstags = [item['labeltag'] for item in predictions]  # list of human readable labelstags
        print('For path: "{}" predicted the labels:tags {}'.format(path, ', '.join(readable_labelstags)))

# result:
# For path: "/path/to/file.mov" predicted the labelstags: torch, flame, fire

Software info

Get information about the current software version and the categories that can be classified.

classifier --
Code Block
languagebash
das-element-cli.exe info

key

description

id

the identifier for the class from Wikidata

human-readable

meaningful readable

label

tag

synonym

a list of different words for this class


Result Format

For each file path you get an a list of predictions for labelstags.

Info

The result is in JSON format. The default string format is Unicode.
File path gets returned as PosixPath with forwards slash, even for Windows.

Code Block
languagejson
{'/path/to/file.mov': [{
                          'value': 'Q327954',
                          'labeltag': 'torch',
                          'description': 'stick with a flaming end used as a source of light'
                          'parents': "parents": [{'id': 'Q3196', 'name': 'fire'}, {'id': 'Q235544', 'name': 'flame'}]
                        }]}

key

description

value

identifier value - see here for more details

label

tag

human readable text of this category

description

description text for this category

parents

the parent

labels

tags based on the category hierarchy structure

Flags for prediction

These are the flags that can be set for the prediction.

flag

description

--

info

Shows information of the software.
List all categories that this version of the model can classify.

predict --top {number}

Get the top X predictions of

labels

tags.

Info

The first two predictions are probably the most significant ones.

predict --model

File path to another model file (.wit)
Each version will be shipped with a model file inside the executable

predict --filmstrip_frames

Set the number of frames of a filmstrip for a sequence of images or movie

file

files.
default value: 36

higher value: takes longer, but this might give you

a

more different

labels

tags
lower value: faster, but might return less

labels

tags

Info

Example: for a sequence of 1000 frames only a number of frames get validated. This helps to speed up the process and still gets you a good result.

--debug

debugging mode

Troubleshooting

issue

solution

MacOS shows unidentified developer for 'ffprobe'

For MacOS you should add the ffprobe to your trusted applications if you want to use the software.

We use the ffmpeg and ffprobe build from MacOS from the following source: https://evermeet.cx/ffmpeg/

Windows startup is quite slow

Unfortunately that is an issue with Window that can not be fixed at the moment.