GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - InfantLab/VideoAnnotator: A tool for automatic annotation of human interaction videos with pose, face, emotion, speech & more.

BranchesTags
Open more actions menu

Latest commit

 

History

703 Commits
703 Commits

Folders and files

NameName
Last commit message
Last commit date
.claude
.claude
 
 
.devcontainer
.devcontainer
 
 
.github
.github
 
 
.specify
.specify
 
 
.vscode
.vscode
 
 
configs
configs
 
 
docs
docs
 
 
examples
examples
 
 
launcher
launcher
 
 
paper
paper
 
 
reports
reports
 
 
scripts
scripts
 
 
specs
specs
 
 
src/videoannotator
src/videoannotator
 
 
tests
tests
 
 
viewer
viewer
 
 
weights
weights
 
 
.dockerignore
.dockerignore
 
 
.env.example
.env.example
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.hadolint_last_exit
.hadolint_last_exit
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.python-version
.python-version
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CITATION.cff
CITATION.cff
 
 
CLAUDE.md
CLAUDE.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTORS.md
CONTRIBUTORS.md
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
api_server.py
api_server.py
 
 
docker-compose.yml
docker-compose.yml
 
 
mkdocs.yml
mkdocs.yml
 
 
pyproject.toml
pyproject.toml
 
 
uv.lock
uv.lock
 
 

Repository files navigation

VideoAnnotator

CI License: MIT Python 3.12 | 3.13 DOI

Automatic annotation of videos of people, for behavioural research. VideoAnnotator finds the people, faces, speech and scenes in your videos, writes the results in standard formats, and shows them on the video so you can check them. Everything runs on your own computer: your videos are never uploaded anywhere.

It was built for studies of parent–child interaction, and suits any research that codes behaviour from video: developmental psychology, clinical observation, classroom and human–computer interaction studies.

The viewer showing pose, face boxes with emotion labels and a scene label over a video of a parent and infant, with a timeline of speech and speakers below

What it does

You choose videos and pipelines in the browser; VideoAnnotator runs them and keeps the results.

Pipeline What you get File format
Person tracking Each person's box and 17-point pose, with an ID that follows them COCO
Face analysis Faces with emotion estimates (age and gender optional) COCO
Face embeddings (OpenFace 3) A 512-number description of each face, for telling people apart JSON
Scene detection Where the scene cuts, and what kind of place each scene is JSON
Speech recognition A transcript with word timings (Whisper) WebVTT
Speaker diarization Who spoke when (pyannote) RTTM
VLM annotation Your own question, asked of video frames by a local vision-language model (Ollama) JSON

The viewer then lets you:

  • Play the video with every result drawn on it, and a timeline of speech, speakers and scenes.
  • Run the same settings again, or change one and compare the results.
  • Keep named lists of videos (datasets) to run studies on.
  • Write and test prompts for the VLM pipeline, and compare two models' labels against your own coding (ELAN .eaf).
  • Get every result out as one table for R or Python (CSV or Parquet, the same columns for every pipeline), as ELAN files to check alongside your own coding, or as a methods paragraph with citations. Worked R and Python notebooks start from the table.

Every output file records what made it: the pipeline and VideoAnnotator version, the model and its exact weights, and the settings. That is what you need to report the method (Export → Methods paragraph writes it for you), and to get the same results again later.

Get started

You need Docker Desktop or Podman Desktop, installed and started once. No Python.

  1. Install the start-up program, with one line:

    # Windows (PowerShell)
    powershell -ExecutionPolicy Bypass -c "irm https://github.com/InfantLab/VideoAnnotator/releases/latest/download/install.ps1 | iex"
    # macOS and Linux
    curl -LsSf https://github.com/InfantLab/VideoAnnotator/releases/latest/download/install.sh | sh
  2. Double-click Start VideoAnnotator. The first time, it asks which folder your videos are in and shares it read-only. Then it opens VideoAnnotator in your browser. Next time it just starts.

  3. Run a job. Choose New job, tick some videos and the pipelines to run. The first time you choose a pipeline, VideoAnnotator offers to install it. Jobs shows progress; open a finished job to see the results on the video. Results also go to a VideoAnnotator folder in your home folder; Export on a run's page gives you all of them as one table for R or Python.

Allow about 1 GB of disk, plus up to 12 GB if you install every pipeline, and 16 GB of RAM. A GPU is optional. The VLM pipeline needs Ollama running on the same computer.

The installation guide covers sharing more folders, the GPU, labs and servers (Docker Compose), and installing from source in your own Python environment (developers).

Learn more

  • Documentation: install options, every pipeline, output formats, configuration and troubleshooting.
  • Getting started: a first job, step by step.
  • Results out: the results table, ELAN files and the methods paragraph, from the viewer, the command line (videoannotator export) or the API.
  • Command line and API: everything the viewer does can also be scripted, via videoannotator commands or the REST API (documented at http://127.0.0.1:18011/docs while the server runs).
  • Docker: run it in a container, with or without a GPU.
  • Changelog: what changed in each release.

Citing VideoAnnotator

If you use VideoAnnotator in your research, please cite it (GitHub's "Cite this repository" gives the details from CITATION.cff):

Addyman, C. (2025). VideoAnnotator: Automated video analysis toolkit for human interaction research.
Zenodo. https://doi.org/10.5281/zenodo.16961751

Please also cite the models behind the pipelines you used; each output file names them.

Contributing and contact

  • Report a problem or ask for a feature: GitHub Issues
  • Questions and ideas: GitHub Discussions
  • Contributing code: CONTRIBUTING.md
  • Research collaborations: Caspar Addyman, [email protected]

Team

  • Caspar Addyman, Stellenbosch University, South Africa (ORCID): lead developer and corresponding author
  • Jeremiah Ishaya, Stellenbosch University, South Africa (ORCID)
  • Irene Uwerikowe, Stellenbosch University, South Africa (ORCID)
  • Daniel Stamate, Department of Computing, Goldsmiths, University of London, UK (ORCID)
  • Jamie Lachman, Department of Social Policy and Intervention, University of Oxford, UK (ORCID)
  • Mark Tomlinson, Stellenbosch University, South Africa (ORCID)

Funded by The Global Parenting Initiative (The LEGO Foundation).

Acknowledgements

VideoAnnotator stands on these open-source projects: Ultralytics YOLO (people and pose), DeepFace (faces and emotion), OpenFace 3.0 (face embeddings), PySceneDetect and OpenCLIP with weights trained on LAION-2B (scenes), OpenAI Whisper (speech), pyannote.audio (speakers), Ollama (vision-language models), PyTorch and FastAPI.

Development was helped by Visual Studio Code, GitHub Copilot and Claude Code.

Released under the MIT License.

About

A tool for automatic annotation of human interaction videos with pose, face, emotion, speech & more.

Topics

face-recognitionfacial-expression-recognitiongaze-estimationhuman-activity-recognitionhuman-pose-tracking

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

8 stars

Watchers

1 watching

Forks

2 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.