VIAME

Video and Image Analytics for Multiple Environments

https://github.com/VIAME/VIAME

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 56 committers (3.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

annotation-framework artificial-intelligence computer-vision conservation deep-learning ecology image-annotation image-processing machine-learning marine-biology object-detection oceanography open-source video-analysis video-analytics video-annotation video-search

Keywords from Contributors

itk medical-imaging open-science computed-tomography vtk numfocus insight-toolkit image-analysis tractography tcia-dac
Last synced: 5 months ago · JSON representation

Repository

Video and Image Analytics for Multiple Environments

Basic Info
Statistics
  • Stars: 312
  • Watchers: 25
  • Forks: 85
  • Open Issues: 53
  • Releases: 0
Topics
annotation-framework artificial-intelligence computer-vision conservation deep-learning ecology image-annotation image-processing machine-learning marine-biology object-detection oceanography open-source video-analysis video-analytics video-annotation video-search
Created over 9 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

VIAME Logo

VIAME is a computer vision application designed for do-it-yourself artificial intelligence including object detection, object tracking, image/video annotation, query-based search, image mosaicing, image enhancement, size measurement, multi-camera data processing, rapid model generation, and tools for the evaluation of different algorithms. Originally targeting marine species analytics, VIAME now contains many common algorithms and libraries, and is also useful as a generic computer vision toolkit. It contains a number of standalone tools for accomplishing the above, a pipeline framework which can connect C/C++, python, and matlab nodes together in a multi-threaded fashion, and multiple algorithms resting on top of the pipeline infrastructure. Lastly, a portion of the algorithms have been integrated into both desktop and web user interfaces for deployments in different types of environments, with an open annotation archive and example of the web platform available at viame.kitware.com.

Documentation

The User's Quick-Start Guide, Tutorial Videos, and Developer's Manual are more comprehensive, but select entries are also listed below broken down by individual functionality:

Documentation Overview <> Installation <> Building <> All Examples <> DIVE Interface <> VIEW Interface <> Search and Rapid Model Generation <> Object Detector CLI <> Object Tracker CLI <> Detector Training CLI <> Evaluation of Detectors <> Detection File Formats <> Calibration and Image Enhancement <> Registration and Mosaicing <> Stereo Measurement and Depth Maps <> Pipelining Overview <> Core Class and Pipeline Info <> Plugin Integration <> Example Plugin Templates <> Embedding Algorithms in C++

Installations

For a full installation guide and description of the various flavors of VIAME, see the quick-start guide, above. The full desktop version is provided as either a .msi, .zip or .tar file. Alternatively, standalone annotators (without any processing algorithms) are available via smaller installers (see DIVE standalone, below). Lastly, docker files are available for both VIAME Desktop and Web (below). For full desktop installs, extract the binaries and place them in a directory of your choosing, for example /opt/noaa/viame on Linux or C:\Program Files\VIAME on Windows. If using packages built with GPU support, make sure to have sufficient video drivers installed, version 570.11 or higher. The best way to install drivers depends on your operating system. This isn't required if just using manual annotators (or frame classifiers only). The binaries are quite large, in terms of disk space, due to the inclusion of multiple default model files and programs, but if just building your desired features from source (e.g. for embedded apps) they are much smaller.

Installation Requirements:
* Up to 8 Gb of Disk Space for the Full Installation
* Windows 7*, 8, 10, or 11 (64-Bit) or Linux (64-Bit, e.g. RHEL, CentOS, Ubuntu)
* Windows 7 requires some updates and service packs installed, e.g. KB2533623.
* MacOS is currently only supported running standalone annotation tools, see below.

Installation Recommendations:
* NVIDIA Drivers (Version 570.11 or above, Windows [1] [2] Ubuntu [1] [2] CentOS [1] [2])
* A CUDA-enabled GPU with 8 Gb or more VRAM

Windows Full Desktop Binaries:
* VIAME v0.21.3 Windows, GPU Enabled, Mirror1 (.zip)
* VIAME v0.21.3 Windows, GPU Enabled, Mirror2 (.zip)
* VIAME v0.21.1 Windows, CPU Only, Mirror1 (.zip)
* VIAME v0.21.1 Windows, CPU Only, Mirror2 (.zip)

Linux Full Desktop Binaries:
* VIAME v0.21.1 Linux, GPU Enabled, Mirror1 (.tar.gz)
* VIAME v0.21.1 Linux, GPU Enabled, Mirror2 (.tar.gz)
* VIAME v0.21.1 Linux, CPU Only, Mirror1 (.tar.gz)
* VIAME v0.21.1 Linux, CPU Only, Mirror2 (.tar.gz)

Web Applications:
* VIAME Online Web Annotator and Public Annotation Archive
* VIAME Web Local Installation Instructions
* VIAME Web Source Repository

Additional Packages:
* DIVE Standalone Desktop Annotator (Linux, Mac, Windows) * Model Zoo and Add-Ons * Custom and Prior VIAME Versions

Docker Images

Docker images are available on: https://hub.docker.com. For a default container with just core algorithms, runnable via command-line, see:

kitware/viame:gpu-algorithms-default

This image is headless (ie, it contains no GUI) and contains a VIAME desktop (not web) installation in the folder /opt/noaa/viame. For links to the VIAME-Web docker containers see the above section in the installation documentation. Most add-on models are not included in the instance but can be downloaded via running the script downloadviameaddons.sh in the bin folder.

Quick Build Instructions

These instructions are intended for developers or those interested in building the latest release branch. Anyone interested in just running the software as-is and not modifying it should use the installers listed in the prior section, without needing to do a software build. More in-depth build instructions can be found here, but the software can be built either as a super-build, which builds most of its dependencies alongside itself, or standalone. To build VIAME requires, at a minimum, Git, CMake, and a C++ compiler. Installing Python and CUDA is also recommended. If using CUDA, version 12.6 with CUDNN 9 is most tested, though other versions of 11 or 12 also likely work. For python distributions, at a minimum Python3.6 or above is necessary, alongside having pip and numpy installed.

To build on the command line in Linux, use the following commands, only replacing [source-directory] and [build-directory] with locations of your choice. While these directories can be the same, it's good practice to have a 'src' checkout then a seperate 'build' directory alongside it:

git clone https://github.com/VIAME/VIAME.git [source-directory]

cd [source-directory] && git submodule update --init --recursive

Next, create a build directory and run the following cmake command (or alternatively use the cmake GUI if you are not using the command line interface):

mkdir [build-directory] && cd [build-directory]

cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]

Once your cmake command has completed, you can configure any build flags you want using 'ccmake' or the cmake GUI, and then build with the following command on Linux:

make -j8

Or alternatively by building it in Visual Studio or your compiler of choice on Windows. On Linux, '-j8' tells the build to run multi-threaded using 8 threads, this is useful for a faster build though if you get an error it can be difficult to see it, in which case running just 'make' might be more helpful. For Windows, currently VS2019 is the most tested compiler.

There are several optional arguments to viame which control which plugins get built, such as those listed below. If a plugin is enabled that depends on another dependency such as OpenCV) then the dependency flag will be forced to on. If uncertain what to turn on, it's best to just leave the default enable and disable flags which will build most (though not all) functionalities. These are core components we recommend leaving turned on:

| Flag | Description | |------------------------------|--------------------------------------------------------------------------------| | VIAME_ENABLE_OPENCV | Builds OpenCV and basic OpenCV processes (video readers, simple GUIs) | | VIAME_ENABLE_VXL | Builds VXL and basic VXL processes (video readers, image filters) | | VIAME_ENABLE_PYTHON | Turns on support for using python processes (multiple algorithms) | | VIAME_ENABLE_PYTORCH | Installs all pytorch processes (detectors, trackers, classifiers) |

And a number of flags which control which system utilities and optimizations are built, e.g.:

| Flag | Description | |------------------------------|--------------------------------------------------------------------------------| | VIAME_ENABLE_CUDA | Enables CUDA (GPU) optimizations across all packages | | VIAME_ENABLE_CUDNN | Enables CUDNN (GPU) optimizations across all processes | | VIAME_ENABLE_DIVE | Enables DIVE GUI (annotation and training on multiple sequences) | | VIAME_ENABLE_VIVIA | Builds VIVIA GUIs (VIEW and SEARCH for annotation and video search) | | VIAME_ENABLE_DOCS | Builds Doxygen class-level documentation (puts in install tree) | | VIAME_BUILD_DEPENDENCIES | Build VIAME as a super-build, building all dependencies (default) | | VIAME_INSTALL_EXAMPLES | Installs examples for the above modules into install/examples tree | | VIAME_DOWNLOAD_MODELS | Downloads pre-trained models for use with the examples and interfaces |

And lastly, a number of flags which build algorithms or interfaces with more specialized functionality:

| Flag | Description | |------------------------------|--------------------------------------------------------------------------------| | VIAME_ENABLE_TENSORFLOW | Builds TensorFlow object detector plugin | | VIAME_ENABLE_DARKNET | Builds Darknet (YOLO) object detector plugin | | VIAME_ENABLE_TENSORRT | Builds TensorRT object detector plugin | | VIAME_ENABLE_BURNOUT | Builds Burn-Out based pixel classifier plugin | | VIAME_ENABLE_SMQTK | Builds SMQTK plugins to support image/video indexing and search | | VIAME_ENABLE_KWANT | Builds KWANT detection and track evaluation (scoring) tools | | VIAME_ENABLE_LEARN | Builds additional methods for low-shot learning | | VIAME_ENABLE_SCALLOP_TK | Builds Scallop-TK based object detector plugin | | VIAME_ENABLE_SEAL | Builds Seal multi-modality GUI | | VIAME_ENABLE_ITK | Builds ITK cross-modality image registration | | VIAME_ENABLE_UW_CLASSIFIER | Builds UW fish classifier plugin | | VIAME_ENABLE_MATLAB | Turns on support for and installs all matlab processes | | VIAME_ENABLE_LANL | Builds an additional (Matlab) scallop detector |

Source Code Layout

 VIAME
   ├── cmake               # CMake configuration files for subpackages
   ├── docs                # Documentation files and manual (pre-compilation)
   ├── configs             # All system-runnable config files and models
   │   ├── pipelines       # All processing pipeline configs
   │   │   └── models      # All models, which only get downloaded based on flags
   │   ├── prj-linux       # Default linux project files
   │   └── prj-windows     # Default windows project files 
   ├── examples            # All runnable examples and example tutorials
   ├── packages            # External projects used by the system
   │   ├── kwiver          # Processing backend infastructure
   │   ├── fletch          # Dependency builder for things which don't change often
   │   ├── kwant           # Scoring and detector evaluation tools
   │   ├── vivia           # Baseline desktop GUIs (v1.0)
   │   └── ...             # Assorted other packages (typically for algorithms)
   ├── plugins             # Integrated algorithms or wrappers around external projects
   │   └── ...             # Assorted plugins (detectors, depth maps, filters, etc.)
   ├── tools               # Standalone tools or scripts, often building on the above
   └── README.md           # Project introduction page that you are reading
   └── RELEASE_NOTES.md    # A list of the latest updates in the system per version

Update Instructions

If you already have a checkout of VIAME and want to switch branches or update your code, it is important to re-run:

git submodule update --init --recursive

After switching branches to ensure that you have on the correct hashes of sub-packages within the build. Very rarely you may also need to run:

git submodule sync

Just in case the address of submodules has changed. You only need to run this command if you get a "cannot fetch hash #hashid" error.

License, Citations, and Acknowledgements

VIAME is released under a BSD-3 license.

A non-exhaustive list of relevant papers used within the project alongside contributors can be found here.

VIAME was developed with funding from multiple sources, with special thanks to those listed here.

Owner

  • Name: VIAME
  • Login: VIAME
  • Kind: organization
  • Email: viame.developers@gmail.com

A computer vision project majorly targeting conservation efforts, but with other applications as well.

GitHub Events

Total
  • Create event: 13
  • Issues event: 5
  • Watch event: 28
  • Delete event: 11
  • Member event: 1
  • Issue comment event: 18
  • Push event: 385
  • Gollum event: 2
  • Pull request review event: 7
  • Pull request review comment event: 4
  • Pull request event: 31
  • Fork event: 4
Last Year
  • Create event: 13
  • Issues event: 5
  • Watch event: 28
  • Delete event: 11
  • Member event: 1
  • Issue comment event: 18
  • Push event: 385
  • Gollum event: 2
  • Pull request review event: 7
  • Pull request review comment event: 4
  • Pull request event: 31
  • Fork event: 4

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 7,806
  • Total Committers: 56
  • Avg Commits per committer: 139.393
  • Development Distribution Score (DDS): 0.076
Past Year
  • Commits: 526
  • Committers: 7
  • Avg Commits per committer: 75.143
  • Development Distribution Score (DDS): 0.137
Top Committers
Name Email Commits
Matt Dawkins m****s@k****m 7,210
joncrall j****l@k****m 125
Neal Siekierski n****i@k****m 107
Kyle Edwards k****s@k****m 44
Linus Sherrill l****l@k****m 34
ajlynch a****h@k****m 31
Jerome Dias j****s@k****m 28
Thibault Pelletier t****r@k****m 19
Mohamed Mssaouri m****i@k****m 15
Matt Dawkins m****s@c****m 13
Kitware K****e@k****m 12
Lea Vauchier l****r@k****m 11
David Russell d****l@k****m 11
kitware k****e@k****m 10
David Hughes s****6@g****m 10
Joseph Snyder j****r@k****m 10
Cookt2 t****k@k****m 9
Mmanu Chaturvedi m****i@k****m 7
Louis Pagnier l****r@k****m 7
Hannah DeFazio h****o@k****m 6
Matt Dawkins m****s@h****m 6
Matt Dawkins m****s@k****m 6
Ubuntu i****a@i****t 5
Kitware k****e@l****n 5
zwhile z****e@o****m 5
Paul Tunison p****n@k****m 5
Brandon Davis g****t@s****m 5
Kresimir Williams k****s@n****v 4
zwhile z****e@o****m 4
Zack While z****e@k****m 4
and 26 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 66
  • Total pull requests: 148
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 32
  • Total pull request authors: 30
  • Average comments per issue: 1.23
  • Average comments per pull request: 0.71
  • Merged pull requests: 113
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 6
  • Pull requests: 28
  • Average time to close issues: N/A
  • Average time to close pull requests: about 2 months
  • Issue authors: 5
  • Pull request authors: 4
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.89
  • Merged pull requests: 19
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mattdawkins (12)
  • subdavis (10)
  • predicative (3)
  • abourbou (3)
  • ltetrel (3)
  • gboeer (3)
  • russelldj (2)
  • rgov (2)
  • csbrown (2)
  • sharimatz (2)
  • JoakimHaurum (2)
  • BryonLewis (1)
  • Jordan-Pierce (1)
  • NatashaHynes (1)
  • csbrown-noaa (1)
Pull Request Authors
  • Erotemic (35)
  • mattdawkins (25)
  • predicative (21)
  • hughed2 (7)
  • russelldj (6)
  • Louis-Pagnier-KW (6)
  • alexander-lynch (5)
  • subdavis (5)
  • Cookt2 (4)
  • medmssaouri (4)
  • m-chaturvedi (4)
  • KyleFromKitware (3)
  • readicculus (3)
  • xkortex (2)
  • mwoehlke-kitware (2)
Top Labels
Issue Labels
bug (1) enhancement (1)
Pull Request Labels

Dependencies

docs/manuals/requirements.txt pypi
  • breathe *
packages/patches/pytorch/setup.py pypi
  • typing_extensions *
plugins/pytorch/mdnet/roi_align/setup.py pypi
  • torch >=1.0.0
plugins/pytorch/mdnet/setup.py pypi
  • torch >=1.0.0
packages/patches/detectron2/setup.py pypi
  • Do *
  • If *
  • In *
  • Lock *
  • NOTE *
  • Pillow >=7.1
  • The *
  • These *
  • To *
  • black ==21.4b2
  • choosing *
  • cloudpickle *
  • dataclasses *
  • future *
  • fvcore >=0.1.5,<0.1.6
  • guaranteed *
  • hydra-core >=1.1
  • iopath >=0.1.7,<0.1.10
  • matplotlib *
  • omegaconf >=2.1
  • on *
  • opencv *
  • probably *
  • pydot *
  • tabulate *
  • tensorboard *
  • termcolor >=1.1
  • tqdm >4.29.0
  • yacs >=0.1.8
packages/patches/pyav/setup.py pypi
packages/patches/pydensecrf/setup.py pypi
packages/patches/torchvideo/setup.py pypi
  • av *
  • fvcore *
  • iopath *
  • networkx *
  • parameterized *
packages/patches/torchvision/setup.py pypi