{"id":13579672,"url":"https://github.com/microsoft/VoTT","last_synced_at":"2025-04-05T23:32:06.959Z","repository":{"id":37692645,"uuid":"77614310","full_name":"microsoft/VoTT","owner":"microsoft","description":"Visual Object Tagging Tool: An electron app for building end to end Object Detection Models from Images and Videos. ","archived":true,"fork":false,"pushed_at":"2021-12-06T21:10:56.000Z","size":59399,"stargazers_count":4373,"open_issues_count":246,"forks_count":845,"subscribers_count":114,"default_branch":"master","last_synced_at":"2025-03-30T21:39:21.139Z","etag":null,"topics":["annotation-tool","cntk","deep-learning","detection","detection-model","image-annotation","image-tagging","imagetagger","labeling","object-detection","tagging","taggingtools","tensorflow-object-detection-api","video-tagging"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-29T13:32:23.000Z","updated_at":"2025-03-30T11:13:51.000Z","dependencies_parsed_at":"2022-07-21T04:49:48.736Z","dependency_job_id":null,"html_url":"https://github.com/microsoft/VoTT","commit_stats":null,"previous_names":["catalystcode/cntk-video-tagging-tool"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FVoTT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FVoTT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FVoTT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FVoTT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/VoTT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415783,"owners_count":20935383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation-tool","cntk","deep-learning","detection","detection-model","image-annotation","image-tagging","imagetagger","labeling","object-detection","tagging","taggingtools","tensorflow-object-detection-api","video-tagging"],"created_at":"2024-08-01T15:01:41.866Z","updated_at":"2025-04-05T23:32:01.949Z","avatar_url":"https://github.com/microsoft.png","language":"TypeScript","readme":"# VoTT is no longer being maintained!\n\n[![Build Status](https://dev.azure.com/msft-vott/VoTT/_apis/build/status/VoTT/Microsoft.VoTT?branchName=master)](https://dev.azure.com/msft-vott/VoTT/_build/latest?definitionId=25\u0026branchName=master)\n[![Code Coverage](https://codecov.io/gh/Microsoft/VoTT/branch/master/graph/badge.svg)](https://codecov.io/gh/Microsoft/VoTT)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Microsoft_VoTT\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=Microsoft_VoTT)\n\n[Complexity Analysis Report](https://vottv2.z5.web.core.windows.net/)\n\n----------\n\nAn open source annotation and labeling tool for image and video assets.\n\nVoTT is a React + Redux Web application, written in [TypeScript](https://github.com/Microsoft/TypeScript). This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\nFeatures include:\n\n* The ability to label images or video frames\n* Extensible model for importing data from local or cloud storage providers\n* Extensible model for exporting labeled data to local or cloud storage providers\n\nVoTT helps facilitate an end-to-end machine learning pipeline:\n\n![alt text](docs/images/ml-workflow.png \"Machine Learning Workflow\")\n\n## Table of Contents\n\u003c!-- generated using: https://www.npmjs.com/package/markdown-toc--\u003e\n\u003c!-- command: `markdown-toc -i README.md --bullets \"*\"`--\u003e\n\n\u003c!-- toc --\u003e\n\n\n- [VoTT (Visual Object Tagging Tool)](#vott-visual-object-tagging-tool)\n  - [Table of Contents](#table-of-contents)\n  - [Getting Started](#getting-started)\n    - [Download and install a release package for your platform (recommended)](#download-and-install-a-release-package-for-your-platform-recommended)\n    - [Build and run from source](#build-and-run-from-source)\n    - [Run as Web Application](#run-as-web-application)\n  - [V1 \u0026 V2](#v1--v2)\n    - [Where is V1](#where-is-v1)\n      - [V1 releases](#v1-releases)\n    - [V1 projects in V2](#v1-projects-in-v2)\n  - [Using VoTT](#using-vott)\n    - [Creating Connections](#creating-connections)\n    - [Creating a New Project](#creating-a-new-project)\n      - [Project Settings](#project-settings)\n      - [Security Tokens](#security-tokens)\n    - [Labeling an Image](#labeling-an-image)\n    - [Labeling a Video](#labeling-a-video)\n    - [Exporting Labels](#exporting-labels)\n    - [Keyboard Shortcuts](#keyboard-shortcuts)\n      - [Tag Ordering](#tag-ordering)\n      - [Tag Locking](#tag-locking)\n      - [Editor Shortcuts](#editor-shortcuts)\n      - [Mouse Controls](#mouse-controls)\n  - [Collaborators](#collaborators)\n  - [Contributing to VoTT](#contributing-to-vott)\n\n\u003c!-- tocstop --\u003e\n\n## Getting Started\n\nVoTT can be installed as a native application or run from source. VoTT is also available as a [stand-alone Web application](https://vott.z22.web.core.windows.net) and can be used in any modern Web browser.\n\n### Download and install a release package for your platform (recommended)\n\nVoTT is available for Windows, Linux and OSX. Download the appropriate platform package/installer from [GitHub Releases](https://github.com/Microsoft/VoTT/releases). `v2` releases will be prefixed by `2.x`.\n\n### Build and run from source\n\nVoTT requires [NodeJS (\u003e= 10.x, Dubnium) and NPM](https://github.com/nodejs/Release)\n\n   ```bash\n    git clone https://github.com/Microsoft/VoTT.git\n    cd VoTT\n    npm ci\n    npm start\n   ```\n   \u003e **IMPORTANT**\n   \u003e\n   \u003e When running locally with `npm`, both the electron and the browser versions of the application will start. One major difference is that the electron version can access the local file system.\n\n### Run as Web Application\n\nUsing a modern Web browser, VoTT can be loaded from: [https://vott.z22.web.core.windows.net](https://vott.z22.web.core.windows.net)\n\nAs noted above, the Web version of VoTT *cannot* access the local file system; all assets must be imported/exported through a Cloud project.\n\n## V1 \u0026 V2\n\nVoTT V2 is a refactor and refresh of the original Electron-based application. As the usage and demand for VoTT grew, `V2` was started as an initiative to improve and make VoTT more extensible and maintainable. In addition, `V2` uses more modern development frameworks and patterns (React, Redux) and is authored in TypeScript.\n\nA number of code quality practices have been adopted, including:\n\n* Code Linting\n* Unit tests \u0026 mocks (Jest, Enzyme)\n* [Code coverage](https://codecov.io/gh/Microsoft/VoTT) ([CodeCov.io](https://codecov.io/))\n* [Complexity analysis](https://vottv2.z5.web.core.windows.net/) ([Plato](docs/PLATO.md))\n\nAll `V2` efforts are on the [master](https://github.com/Microsoft/VoTT/tree/master) branch\n\n### Where is V1\n\n`V1` will be on the [v1](https://github.com/Microsoft/VoTT/tree/v1)  branch. There will not be any fixes or updates.\n\n#### V1 releases\n\n1.x releases can still be found under [GitHub Releases](https://github.com/Microsoft/VoTT/releases).\n\n### V1 projects in V2\n\nThere is support for converting a V1 project into V2 format. Upon opening the JSON file, a window will pop up to confirm that the app should convert the project before redirecting to the editor screen. In this process, a `.vott` file will be generated in the same project directory, which may be used as the main project file going forward. We recommend backing up the V1 project file before converting the project.\n\n## Using VoTT\n\n### Creating Connections\n\nVoTT is a 'Bring Your Own Data' (BYOD) application. In VoTT, connections are used to configure and manage source (the assets to label) and target (the location to which labels should be exported).\n\nConnections can be set up and shared across projects. They use an extensible provider model, so new source/target providers can easily be added.\n\nCurrently, VoTT supports:\n\n* [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)\n* [Bing Image Search](https://azure.microsoft.com/en-us/services/cognitive-services/bing-image-search-api/)\n* Local File System\n\nTo create a new connection, click the `New Connections` (plug) icon, in the left hand navigation bar:\n\n![alt text](docs/images/new-connection.jpg \"New Connection\")\n\n### Creating a New Project\n\nLabeling workflows in VoTT revolve around projects - a collection of configurations and settings that persist.\n\nProjects define source and target connections, and project metadata - including tags to be used when labeling source assets.\n\nAs mentioned above, all projects require a source and target connection:\n\n* **Source Connection** - Where to pull assets from\n* **Target Connection** - Where project files and exported data should be stored\n\n![alt text](docs/images/new-project.jpg \"New Project\")\n\n#### Project Settings\n\nProject settings can be modified after a project has been created, by clicking on the `Project Setting` (slider) icon in the left hand navigation bar. Project metrics, such as Visited Assets, Tagged Assets, and Average Tags Per Asset can also be viewed on this screen.\n\n![alt text](docs/images/project-settings.jpg \"Project Settings\")\n\n#### Security Tokens\n\nSome project settings can include sensitive values, such as API keys or other shared secrets. Each project will generate a security token that can be used to encrypt/decrypt sensitive project settings.\n\nSecurity tokens can be found in `Application Settings` by clicking the gear icon in the lower corner of the left hand navigation bar.\n\n**NOTE:** Project files can be shared among multiple people. In order to share sensitive project settings, *all parties must have/use the same security token.*\n\nThe token name and key **must** match in order for sensitive values to be successfully decrypted.\n\n![alt text](docs/images/security-tokens.jpg \"Security Tokens\")\n\n### Labeling an Image\n\nWhen a project is created or opened, the main tag editor window opens. The tag editor consists of three main parts:\n\n* A resizeable preview pane that contains a scrollable list of images and videos, from the source connection\n* The main editor pane that allows tags to be applied to drawn regions\n* The tags editor pane that allows users to modify, lock, reorder, and delete tags\n\nSelecting an image or video on the left will load that image in the main tag editor. Regions can then be drawn on the loaded asset and a tag can be applied.\n\nAs desired, repeat this process for any additional assets.\n\n![alt text](docs/images/label-image.jpg \"Image Tagging\")\n\n### Labeling a Video\n\nLabeling a video is much like labeling a series of images. When a video is selected from the left, it will begin automatically playing, and there are several controls on the player, as seen here:\n\n![alt text](docs/images/video-player.jpg \"Video Player\")\n\nIn addition to the normal video playback controls, there are two extra pairs of buttons.\n\nOn the left, there are the previous and next frame buttons. Clicking these will pause the video, and move to the next appropriate frame as determined by the project settings. For example, if the project settings have a frame extraction rate of 1, these buttons will cause the video to be moved back or forward 1 second, while if the frame extraction rate is 10, the video will be moved back or forward a tenth of a second.\n\nOn the right, there are the previous and next tagged frame buttons. Clicking these will pause the video and move to the next or previous frame that has a previously tagged region on it, if a tagged frame exists.\n\nColored lines will also be visible along the video's timeline. These indicate the video frames that have already been visited. A yellow line denotes a frame that has been visited only, while a green line denotes a frame that has been both visited and tagged. The colored lines can be clicked for quick navigation to the indicated frame.\n\nThe timeline can also be used to manually scrub through the video to an arbitrary point, though the project settings for frame extraction rate are always obeyed. Pausing the video will move to the closest frame according to this project setting. This way, a very low frame extraction rate, such as 1 frame per second, can be set for sections of the video known to contain few taggable items, and a much higher frame extraction rate, such as 30 frames per second, to allow fine-grained control.\n\nTagging and drawing regions is not possible while the video is playing.\n\n### Exporting Labels\n\nOnce assets have been labeled, they can be exported into a variety of formats:\n\n* [Azure Custom Vision Service](https://azure.microsoft.com/en-us/services/cognitive-services/custom-vision-service/)\n* [Microsoft Cognitive Toolkit (CNTK)](https://github.com/Microsoft/CNTK)\n* TensorFlow (Pascal VOC and TFRecords)\n* VoTT (generic JSON schema)\n* Comma Separated Values (CSV)\n\nIn addition, users may choose to export\n\n* all assets\n* only visited assets\n* only tagged assets\n\nClick on the `Export` (arrow) icon in the left hand navigation. Select the appropriate export provider and which assets to export. The percentage separated into testing and training sets can be adjusted here too.\n\n![alt text](docs/images/export-labels.jpg \"Export Labels\")\n\n### Keyboard Shortcuts\n\nVoTT allows a number of keyboard shortcuts to make it easier to keep one hand on the mouse while tagging. It allows most common shortcuts:\n\n* Ctrl or Cmd + C - copy\n* Ctrl or Cmd + X - cut\n* Ctrl or Cmd + V - paste\n* Ctrl or Cmd + A - select all\n* Ctrl or Cmd + Z - undo\n* Ctrl or Cmd + Shift + Z - redo\n\n#### Tag Ordering\n\nHotkeys of 1 through 0 are assigned to the first ten tags. These can be reordered by using the up/down arrow icons in in the tag editor pane.\n\n\n#### Tag Locking\n\nA tag can be locked for repeated tagging using the lock icon at the top of the tag editor pane. Tags can also be locked by combining Ctrl or Cmd and the tag hotkey, i.e. `Ctrl+2` would lock the second tag in the list.\n\n![alt text](docs/images/reorder-tag.jpg \"Tag Editor\")\n\n#### Editor Shortcuts\n\nIn addition, the editor page has some special shortcuts to select tagging tools:\n\n* V - Pointer/Select\n* R - Draw Rectangle\n* P - Draw Polygon\n* Ctrl or Cmd + S - Save Project\n* Ctrl or Cmd + E - Export Project\n\nVOTT allows you to fine tune the bounding boxes using the arrow keys in a few different ways. While a region is selected:\n\n* Ctrl + Arrowkey - Move Region\n* Ctrl + Alt + Arrowkey - Shrink Region\n* Ctrl + Shift + Arrowkey - Expand Region\n\nThe slide viewer can be navigated from the keyboard as follows:\n\n* W or ArrowUp - Previous Asset\n* S or ArrowDown - Next Asset\n\nWhen the video playback bar is present, it allows the following shortcuts to select frames:\n\n* A or ArrowLeft - Previous Frame\n* D or ArrowRight - Next Frame\n* Q - Previous Tagged Frame\n* E - Next Tagged Frame\n\n#### Mouse Controls\n\n* Two-point mode - Hold down Ctrl while creating a region\n* Square mode - Hold down Shift while creating a region\n* Multi-select - Hold down Shift while selecting regions\n* Exclusive Tracking mode - Ctrl + N to block frame UI allowing a user to create a region on top of existing regions\n\n## Release Process\n\n![alt text](./docs/images/release-process.png \"Create Release Process\")\n\nFor more details on github/web releases and versions -- please review our [release process document](./docs/RELEASE_GUIDE.md)\n\nTo build VoTT executable using command:\n```\nnpm run release\n```\nFor details on packaging executable for the release -- please review our [PACKAGING.md](./docs/PACKAGING.md)\n\n## Collaborators\n\nVoTT was originally developed by the [Commercial Software Engineering (CSE) group at Microsoft](https://www.microsoft.com/developerblog/) in Israel.\n\nV2 is developed by the CSE group at Microsoft in Redmond, Washington.\n\n## Contributing to VoTT\n\nThere are many ways to contribute to VoTT -- please review our [contribution guidelines](CONTRIBUTING.md).\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see\nthe [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com)\nwith any additional questions or comments.\n","funding_links":[],"categories":["TypeScript","Action Recognition and Video Understanding","Labeling Tools","Annotation Tools"],"sub_categories":["Video Annotation","Images"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2FVoTT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrosoft%2FVoTT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2FVoTT/lists"}