A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

VIAME

Video and Image Analytics for Marine Environments.
https://github.com/VIAME/VIAME

Category: Biosphere
Sub Category: Marine Life and Fishery

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

open-science image-analysis insight-toolkit itk medical-imaging numfocus multimedia data-management algorithm tensors

Last synced: about 17 hours ago
JSON representation

Repository metadata

Video and Image Analytics for Multiple Environments

README.md

VIAME is a computer vision application designed for do-it-yourself artificial intelligence including
object detection, object tracking, image/video annotation, image/video 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 525.60 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:

Windows Full Desktop Binaries:

Linux Full Desktop Binaries:

Web Applications:

Additional Packages:

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-latest

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 download_viame_addons.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.4 with CUDNN 8 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 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

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 metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 7,312
Total Committers: 54
Avg Commits per committer: 135.407
Development Distribution Score (DDS): 0.072

Commits in past year: 182
Committers in past year: 4
Avg Commits per committer in past year: 45.5
Development Distribution Score (DDS) in past year: 0.022

Name Email Commits
Matt Dawkins m****s@k****m 6785
Neal Siekierski n****i@k****m 107
Jon Crall e****c@g****m 79
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
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
Taylor J. Cook 1****2 8
Mmanu Chaturvedi m****i@k****m 7
Hannah DeFazio h****o@k****m 6
Matt Dawkins m****s@h****m 6
Matt Dawkins m****s@k****m 6
Kitware k****e@l****n 5
Ubuntu i****a@i****t 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
Aaron Bray a****y@k****m 3
Matthew Woehlke m****e@k****m 3
and 24 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 65
Total pull requests: 135
Average time to close issues: 5 months
Average time to close pull requests: about 1 month
Total issue authors: 31
Total pull request authors: 30
Average comments per issue: 1.28
Average comments per pull request: 0.67
Merged pull request: 104
Bot issues: 0
Bot pull requests: 1

Past year issues: 7
Past year pull requests: 18
Past year average time to close issues: 5 days
Past year average time to close pull requests: about 2 months
Past year issue authors: 5
Past year pull request authors: 5
Past year average comments per issue: 1.0
Past year average comments per pull request: 0.89
Past year merged pull request: 13
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/VIAME/VIAME

Top Issue Authors

  • mattdawkins (12)
  • subdavis (10)
  • abourbou (3)
  • ltetrel (3)
  • predicative (3)
  • csbrown (3)
  • gboeer (3)
  • russelldj (2)
  • rgov (2)
  • sharimatz (2)
  • JoakimHaurum (2)
  • Jordan-Pierce (1)
  • waxlamp (1)
  • eclairamb (1)
  • stephanecharette (1)

Top Pull Request Authors

  • mattdawkins (24)
  • Erotemic (24)
  • predicative (21)
  • hughed2 (7)
  • russelldj (6)
  • alexander-lynch (6)
  • subdavis (5)
  • m-chaturvedi (4)
  • Cookt2 (4)
  • Louis-Pagnier-KW (3)
  • readicculus (3)
  • KyleFromKitware (3)
  • mwoehlke-kitware (2)
  • neelsj (2)
  • nlauffenburger (2)

Top Issue Labels

  • bug (1)
  • enhancement (1)

Top Pull Request Labels

  • dependencies (1)

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

Score: 9.85828095969805