Package: voxel51-eta
ETA: Extensible Toolkit for AnalyticsAn open and extensible computer vision, machine learning and video analytics
infrastructure.RequirementsETA is very portable:Installable on Mac or LinuxSupports Python 3.6 or laterSupports TensorFlow 1.X and 2.XSupports OpenCV 2.4+ and OpenCV 3.0+Supports CPU-only and GPU-enabled installationsSupports CUDA 8, 9 and 10 for GPU installationsInstallationYou can install the latest release of ETA viapip:pipinstallvoxel51-etaThis will perform alite installation of ETA. If you use
an ETA feature that requires additional dependencies (e.g.,ffmpegortensorflow), you will be prompted to install the relevant packages.Docker InstallationIf you prefer to operate via Docker, see theDocker Build Guidefor simple instructions for building a Docker image with an ETA environment
installed.Installation from sourceStep 0: Setup your Python environmentIt is assumed that you already havePython installedon your machine.IMPORTANT:ETA assumes that the version of Python that you intend to use
is accessible viapythonandpipon your path. In particular, for Python
3 users, this means that you may need to aliaspython3andpip3topythonandpip, respectively.We strongly recommend that you install ETAin a virtual environmentto maintain a clean workspace.Step 1: Clone the repositorygitclonehttps://github.com/voxel51/etacdetaStep 2: Run the install scriptbashinstall.bashNote that the install script supports flags that control things like (on macOS)
whetherportorbrewis used to install packages. Runbash install.bash -hfor more information.For Linux installs, the script inspects your system to see if CUDA is installed
via thelspcicommand. If CUDA is available, TensorFlow is installed with GPU
support.The table below lists the version of TensorFlow that will be installed by the
installer, as recommended by thetested build configurations:CUDA Version FoundTensorFlow Version InstalledCUDA 8tensorflow-gpu~=1.4CUDA 9tensorflow-gpu~=1.12CUDA 10tensorflow-gpu~=1.15Other CUDAtensorflow-gpu~=1.15No CUDAtensorflow~=1.15Note that ETA also supports TensorFlow 2.X. The only problems you may face
when using ETA with TensorFlow 2 are when trying to run inference withETA modelsthat only support TensorFlow 1. A notable case here are TF-slim models. In
such cases, you should see an informative error message alerting you of the
requirement mismatch.Lite installationSome ETA users are only interested in using the core ETA library defined in theeta.corepackage. In such cases, you can perform a lite installation using
the-lflag of the install script:bashinstall.bash-lLite installation omits submodules and other large dependencies that are not
required in order for the core library to function. If you use an ETA feature
that requires additional dependencies (e.g.,ffmpegortensorflow), you
will be prompted to install the relevant packages.Developer installationIf you are interested in contributing to ETA or generating its documentation
from source, you should perform a developer installation using the-dflag of
the install script:bashinstall.bash-dSetting up your execution environmentWhen the rootetapackage is imported, it tries to read theeta/config.jsonfile to configure various package-level constants. Many advanced ETA features
such as pipeline building, model management, etc. require a properly configured
environment to function.To setup your environment, create a copy the example configuration file:cpconfig-example.jsoneta/config.jsonIf desired, you can edit your config file to customize the various paths,
change default constants, add environment variables, customize your defaultPYTHONPATH, and so on. You can also add additional paths to themodule_dirs,pipeline_dirs, andmodels_dirssections to expose custom
modules, pipelines, and models to your system.Note that, when the config file is loaded, any{{eta}}patterns in directory
paths are replaced with the absolute path to theeta/directory on your
machine.The default config includes themodules/,pipelines/, andmodels/directories on your module, pipeline, and models search paths, respectively.
These directories contain the necessary information to run the standard
analytics exposed by the ETA library. In addition, the relative paths./modules/,./pipelines/, and./models/are added to their respective
paths to support the typical directory structure that we adopt for our custom
projects.CLIInstalling ETA automatically installseta, a command-line interface (CLI) for
interacting with the ETA Library. This utility provides access to many useful
features of ETA, including building and running pipelines, downloading models,
and interacting with remote storage.To explore the CLI, typeeta --help, and see theCLI Guidefor
complete information.QuickstartGet your feet wet with ETA by running some of examples in theexamples folder.Also, see thedocs folderfor more documentation about the various components of the ETA library.OrganizationThe ETA package is organized as described below. For more information about the
design and function of the various ETA components, read the documentation in
thedocs folder.DirectoryDescriptioneta/classifierswrappers for performing inference with common classifierseta/corethe core ETA library, which includes utilities for working with images, videos, embeddings, and much moreeta/detectorswrappers for performing inference with common detectorseta/docsdocumentation about the ETA libraryeta/examplesexamples of using the ETA libraryeta/modelslibrary of ML models. Themanifest.jsonfile in this folder enumerates the models, which are downloaded to this folder as needed. See theModels developer's guidefor more information about ETA's model registryeta/moduleslibrary of video processing/analytics modules. See theModule developer's guidefor more information about ETA moduleseta/pipelineslibrary of video processing/analytics pipelines. See thePipeline developer's guidefor more information about ETA pipelineseta/resourcesresources such as media, templates, etceta/segmenterswrappers for performing inference with common semantic segmenterseta/tensorflowthird-party TensorFlow repositories that ETA builds uponGenerating DocumentationThis project usesSphinx-Napoleonto
generate its documentation from source.To generate the documentation, you must install the developer dependencies by
running theinstall.bashscript with the-dflag.Then you can generate the docs by running:bashsphinx/generate_docs.bashTo view the documentation, open thesphinx/build/html/index.htmlfile in your
browser.Uninstallationpipuninstallvoxel51-etaAcknowledgementsThis project was gratefully supported by theNIST Public Safety Innovation Accelerator Program.CitationIf you use ETA in your research, feel free to cite the project (but only if you
love it 😊):@article{moore2017eta,title={ETA: Extensible Toolkit for Analytics},author={Moore, B. E. and Corso, J. J.},journal={GitHub. Note: https://github.com/voxel51/eta},year={2017}}