diff --git a/docs/Annotation-QuickStart.md b/docs/Annotation-QuickStart.md
index d31e8ba4a..c15bf3c7c 100644
--- a/docs/Annotation-QuickStart.md
+++ b/docs/Annotation-QuickStart.md
@@ -1,131 +1,134 @@
# Annotation Quickstart
-[Single Frame Detections](#single-frame-detections) - creating multiple detections on a single image frame quickly
-
-[Track Annotations](#track-annotations) - How to quickly create track annotations for a video or image sequence
-
-* [Interpolation Mode](#interpolation-mode) - fastest and easiest way to generate track annotations
-* [Advance Frame Mode](#advance-frame) - This mode keeps you editing the same track while automatically advancing the frame each time a detection is drawn. In most cases the interpolation mode will be preferred.
-
-[Polygon Annotations](#polygon-annotations)
-
-[Head/Tail Annotations](#head-tail-annotations)
-
-[Important Keyboard Shortcuts](#important-keyboard-and-mouse-shortcuts)
+Before following the quickstart, it could be helpful to skim the [User Interface Guide](Annotation-User-Interface-Overview.md)
## Single Frame Detections
-1. Click the Settings wheel next to the '+Track' Icon
- 1. 
-1. From the dropdown choose “Detection” mode.
- 1. 
-1. Choose a type from the dropdown or type a name that you want all detections to inherit. If the type doesn't exist just type the name to create a new one. You should see the "+Detection" button change color to match the type. Now if you hover over the button it will display the default type.
- 1. 
-1. Turn on continuous mode if you would like to keep dragging the mouse to create detections.
-1. Create your first detection by clicking and dragging to generate a rectangle.
-1. If you are in continuous mode just click and drag again to create the next detection
-1. Otherwise edit the detection and then hit the “N” key on the keyboard or click on detection to create another detection.
+How to quickly create multiple detections on a single image frame.
+
+1. Click ==:material-cog:== (creation settings menu) in the [Track List](UI-Track-List.md) area.
+ 1. From the **Mode** dropdown, choose **Detection**.
+ 1. From the **Type** dropdown, choose or enter a default name that all new detections will have. If the type doesn't exist yet, enter a name to create a new one.
+ 1. Turn on the **Continuous Mode** switch if you would like to automatically re-enter the creation state so you can click-and-drag repeatedly to quickly create many detections.
+1. Enter the annotation creation state by clicking ==:material-plus: Detection== or pressing the ++n++ key.
+1. Create your first detection by clicking and dragging to draw a rectangle.
+1. If you are in continuous mode, click and drag again to create the next detection.
+ 1. Press ++escape++ to exit continuous creation mode.
### Single Detection Mode Demo
-The Demo below shows how to use Detection mode to quickly create numerous detections of the same type.
+The demo below shows how to use Detection mode to quickly create numerous detections of the same type.

## Track Annotations
+How to quickly create track annotations for a video or image sequence.
+
### Interpolation Mode
-1. Next to the "+Track" button click the Settings Icon to open the Creation Settings
-1. From the dropdown make sure that “Track” mode is selected.
-1. Also ensure that interpolation is turned on.
- 1. 
-1. Either click “+Track” or hit “N” on the keyboard to create the initial track.
-1. You can now advance through frames and an outline of the previous annotation will remain. You can advance either by using Left Arrow/Right Arrow or clicking on the timeline to a specific position.
-1. To set another frame you only need to move or resize the transparent annotation.
-1. There are controls on for the currently selected track to add/remove keyframes. The “Star” icon will allow you to add and remove keyframes. The "interpolate icon" (two overlapped dashed rectangles) will turn on/off interpolation for the current region you are in.
+Linear interpolation is a kind of spatio-temporal annotation that allows the inference of bounding boxes between keyframes. Interpolation mode is the fastest and easiest way to generate track annotations.
+
+Interpolation editing for existing tracks will only be enabled on tracks that span more than one frame. It is enabled on new tracks by default.
+
+1. Click ==:material-cog:== (creation settings menu) in the [Track List](UI-Track-List.md) area.
+ 1. From the **Mode** dropdown, choose **Track**.
+ 1. Also ensure that the **Interpolate** switch is turned **on**.
+1. Enter the annotation creation state by clicking ==:material-plus: Track== or pressing the ++n++ key.
+1. Create your first detection by clicking and dragging to draw a rectangle around the object you want to track.
+1. You can now go forward one or more frames by pressing ++f++ or ++arrow-right++ or by using the [Timeline controls](UI-Timeline.md) and an outline of the previous annotation will remain.
+ 1. 
+1. To set another keyframe, either move or resize the transparent annotation or press ++k++. There are also controls on for the currently selected track to add/remove keyframes.
+ 1. ==:material-star:== and ==:material-star-outline:== will allow you to add and remove the current keyframe.
+ 1. ==:material-vector-selection:== and ==:material-selection-off:== will turn on or off interpolation for the current keyframe interval region you are in.
1. 
-1. During editing there is a view within the event viewer which allows you to see where interpolation occurs and where the keyframes are located. If a line is not connecting two keyframes in a track then interpolation is disabled for that section.
- 1. 
-### Interpolation Mode Demo
+### Visualizing interpolated tracks
-The Demo below shows how to use Interpolation mode to quickly crate tracks for objects through a video/image-sequence.
+Click ==Events== in the [Timeline controls](UI-Timeline.md) to see where interpolation occurs and where the keyframes are located.
-
+* **Keyframes** are indicated by solid rectangular blue tick marks in the highlighted track.
+* **Interpolated regions** are indicated by a thin yellow line between keyframes.
+* **Gap regions** are indicated by areas with neither interpolated frames nor keyframes. Typically means that a track is off-camera or occluded.
+
+
-### Advance Frame
+### Interpolation Mode Demo
+
+
-1. Next to the "+Track" button click the Settings Icon to open the Creation Settings
-1. From the dropdown make sure that “Track” mode is selected.
+### Advance Frame Mode
- 1. 
+This mode keeps you editing the same track while automatically advancing the frame each time a detection is drawn. In most cases **interpolation mode will be easier**.
-1. Turn off interpolation and turn on "AdvanceFrame"
-1. Now each time an individual detection is drawn the frame will automatically advance to the next frame.
+1. Click ==:material-cog:== (creation settings menu) in the [Track List](UI-Track-List.md) area.
+ 1. From the **Mode** dropdown, choose **Track**.
+ 1. Also ensure that the **Interpolate** switch is turned **off**.
+1. Enter the annotation creation state by clicking ==:material-plus: Track== or pressing the ++n++ key.
+1. Create your first detection by clicking and dragging to draw a rectangle around the object you want to track.
+1. Now each time an individual detection is drawn the frame will automatically advance to the next frame. Press ++escape++ to end creation of the track.
### Advance Frame Mode Demo
-The Demo below shows how to use AdvanceFrame mode to travel through the video while creating annotations.
+The demo below shows how to use AdvanceFrame mode to travel through the video while creating annotations.

## Head Tail Annotations
-**Head/Tail creation on an existing Track:**
-
-1. Either create a new detection/track or select an existing one with “Left Click”
-1. When a track is selected Head/Tail annotations can be added by either going to the edit menu and selecting the line tool at the top of screen or by:
+### Adding Head/Tail points to existing annotations
-* H Key - Create Head annotation
-* T Key - Create Tail annotation
+1. **Right-click** an existing detection to enter edit mode.
+1. Enter head/tail creation mode
+ 1. In the [Edit bar](UI-Navigation-Editing-Bar.md), click ==:material-vector-line:==
+ 1. Or Press ++h++ to create a head point.
+ 1. Or press ++t++ to create a tail point.
+1. The mouse cursor will become a crosshair. Click in the annotator to place each point.
+1. Once the first marker is placed it automatically transitions to the second marker. If you start with head, the second one will be the tail and vice versa.
-1. After entering head/tail annotation mode the cursor becomes a crosshair and the the head or tail can be placed.
-1. Once the first marker is placed it automatically transitions to the second marker. (If you start with head, the second one will be the tail and vice versa if you start with tail)
+### Creating new annotations using Head/Tail points
-**Creating New Track from Head/Tail Annotation:**
You can create a track by starting with a head/tail annotation or just a single point.
-1. After clicking "+Track" you can switch the editing mode into the line tool.
- 1. 
-1. This will allow you place a single point initially by clicking
-1. You can then either hit escape and a bounding box will appear around that point
-1. Or you can place the second point and a new bounding box will be created which can be edited.
+1. Enter the annotation creation state by clicking ==:material-plus: Track== or pressing the ++n++ key.
+1. In the [Edit bar](UI-Navigation-Editing-Bar.md), click ==:material-vector-line:== to switch to head/tail creation mode or press ++h++, ++t++, or ++3++.
+1. The mouse cursor will become a crosshair. Click in the annotator to place each point.
+1. Press ++escape++ to finish creation after one or both points have been placed.
-Notes:
+### Other notes on Head/Tail
* The head point is denoted by a filled circle, while the tail point is denoted by a hollow circle.

-* You can also start with the tail: tap `t`
- *  - Indicates you are in tail mode and are going to place the tail point.
-* You don't have to place both markers. Press `Escape` on your keyboard at anytime to exit out of the line creation mode.. Your cursor will change back to a pointer.
-* You can modify an existing head/tail marker by placing the annotation into 'Edit Mode' and then selecting the line tool from the editing options.
-* **To Delete a head/tail pair**, select a detection with existing markers and have it in line edit mode. This will allow you click the Delete button at the top to delete both points.
+* You don't have to place both markers. Press ++escape++ on your keyboard at anytime to exit out of the line creation mode.
+* You can **modify** an existing head/tail marker by placing the annotation into 'Edit Mode' and then selecting the line tool from the editing options.
+* You can **delete** a head/tail pair by selecting a detection with existing markers, entering edit mode, and clicking ==Delete Linestring :material-delete:=={ .error }
-## Fish Head Tail Demo
+### Fish Head Tail Demo

## Polygon Annotations
-While every track is required to have a bounding box a polygon can be added as well for more detailed annotations of objects. When a polygon is created or edited it will adjust the bounding box to fit the size of the polygon.
+Every track is required to have a bounding box, but a polygon region may be added. When a polygon is created or edited it will generate or adjust the bounding box to fit the size of the polygon.
### Polygon Creation
-1. Click on "+Track" or hit the 'N' key then select the polygon tool - 
-1. Start by placing the first point and then start placing additional points for the polygon
- 1. **NOTE:** You can hold down the mouse to draw points quickly
-1. You can either close the polygon manually or "Right-Click" to automatically close the polygon
+1. Enter the annotation creation state by clicking ==:material-plus: Track== or pressing the ++n++ key.
+1. In the [Edit bar](UI-Navigation-Editing-Bar.md), click ==:material-vector-polygon:== or press ++2++ to enter polygon creation mode.
+1. Place each point on the polygon by clicking.
+1. **Right-Click** to automatically close the polygon or press ++escape++ to cancel creation.
### Polygon Editing
-1. In edit mode for a polygon you can select any large circle to move it. This will move the point to a new position and recalculate the bounding box.
-1. The smaller circles allow you you to create new points which can be used to adjust the polygon and make it appear smoother.
-1. A single click on a point will select a point which can then be deleted by using the delete button
- 1. 
+1. **Right click** an annotation to enter edit mode.
+1. In the [Edit bar](UI-Navigation-Editing-Bar.md), click ==:material-vector-polygon:== or press ++2++ to enter polygon edit mode.
+1. Click and drag any large circle handle to move it. This will move the point to a new position and recalculate the bounding box.
+1. Click and drag any small circle handle to create new points. This can be used to adjust the polygon and make it appear smoother.
+1. To **delete the whole polygon**, in the [Edit bar](UI-Navigation-Editing-Bar.md), click ==Del polygon :material-delete:=={ .error }
+1. To **delete a single keypoint**, click its handle then click ==Del Point N :material-delete:=={ .error }
-## Polygon Demo
+### Polygon Demo

diff --git a/docs/Annotation-User-Interface-Overview.md b/docs/Annotation-User-Interface-Overview.md
index f7a616c74..98fea4522 100644
--- a/docs/Annotation-User-Interface-Overview.md
+++ b/docs/Annotation-User-Interface-Overview.md
@@ -1,28 +1,12 @@
-# Annotation User Interface Overview
+# User Interface Guide Introduction
-The User Interface for the Annotation Editor is broken into a few main areas:
+This documentation section provides a reference guide to the annotation interface organized by screen region.

-* **[Navigation Bar](UI-Navigation-Bar.md)** - Controls to return back to browser as well as perform higher level functions such as running pipelines. Also the ability to save annotations to the server.
-* **[Edit Bar](UI-Edit-Bar.md)** - Controls the viewing of annotations on screen and allows for the editing/creation of annotations.
+* **[Navigation and Editing Bar](UI-Navigation-Editing-Bar.md)** - Controls to return back to browser as well as perform higher level functions such as running pipelines. Save Button. Controls the viewing of annotations on screen and allows for the editing/creation of annotations.
* **[Annotation View](UI-Annotation-View.md)** - where the image/video is displayed as well as all annotations
* **[Type List](UI-Type-List.md)** - A list of all the types of tracks/detections on the page that can be used to filter the current view.
* **[Track List](UI-Track-List.md)** - List of all the tracks as well as providing a way to perform editing functions on those tracks.
* **[Timeline](UI-Timeline.md)** - timeline view of tracks and detections, as well as an interface to control the current frame along the video/image-sequence
-* **[Attributes](Attributes.md)** - Attributes panel used to assign attributes to individual tracks or detections.
-
-## Concepts and Definitions
-
-**Detection** - A single slice of a track at a point in time. Unusually the point of time is a frame of a video or a sequence of images.
-
-**Features** - Bounding Rectangle, Head/Tail or other visible elements of a detection.
-
-**Track** - A collection of detections spanned over multiple frames in a video or image sequence. Tracks include a start and end time and can have periods in which no detections exist.
-
-**Types** - a set of tracks that share specific display properties including color, line thickness, opacity.
-Frame - a single image or point in time for a video or image sequence
-
-**KeyFrame** - While using interpolation for tracks these are indicated as a locked position. Interpolation is calculated linearly between keyframes to draw the bounding rects.
-
-**Interpolation** - linearly moving the bounding rect of a detection over time between two keyframes.
+* **[Attributes](UI-Attributes.md)** - Attributes panel used to assign attributes to individual tracks or detections.
diff --git a/docs/Attributes.md b/docs/Attributes.md
deleted file mode 100644
index 6f553acbc..000000000
--- a/docs/Attributes.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# Attributes
-
-Attributes are properties that can be assigned to an entire track or a single detection within a track. Attributes are created within a dataset using the Track Details panel.
-
-## Background/Terms
-
-It’s important to note that there are attribute definitations and then track/detection attributes. Attributes definitions are all the possible attributes that can be assigned to tracks or detection. Think of them as a template for the attributes that can be set on tracks/detections. Track attributes are information for the entire track and detection attributes are information for the specific frame or instance of time.
-
-- **Attribute Definition** - base attribute which defines the name and **type** for either a track or detection attribute
-- **Track Attribute** - attribute with a **value** associated with the entire track
-- **Detection Attribute** - attribute with a **value** specified for a detection during a single frame
-
-Example:
-
- - Attribute Definitions
- - Track
- - CompleteTrack: Boolean
- - FishLength: number (cm)
- - Detection
- - Swimming: Boolean
- - Eating: Boolean
-
-Usage of the above Attribute Definitions for a track and its detections:
-
- - Fish Track 1
- - Track Attributes
- - FishLength: 20
- - Detection Attributes
- - Frame 1
- - Eating: true
- - Frame 2
- - Swimming: false
- - Eating: false
-**Note:** All Attribute definitions do not need to be assigned to values. CompleteTrack (Track Attribute) and Swimming for Frame 1 (Detection Attribute) weren't assigned in this example.
-
-## Navigating to Attributes
-
-Controls for defining and editing attributes are found on the Track Details Panel.
-
-1. While your data is open you can select a track/detection to apply attributes.
-1. Open the Track Details page by clicking on the eye icon or by using the ‘A’ key as a shortcut.
- 1. 
- 1. 
-1. Here you will see the track/detection type, confidence pairs associated with it and then a list of track and detection attributes.
- 1. 
-1. For attributes there are two sections
- 1. *Track Attributes* - All track level attributes
- 1. *Detection Attributes* - attributes associated with the track on a per frame basis
-
-!!! info
-
- During import of a VIAME CSV file, attributes that are structured using the [VIAME CSV specification](https://viame.readthedocs.io/en/latest/section_links/detection_file_conversions.html) will automatically show up in the list. The type of the attribute is guessed by examining values and may need to be manually corrected.
-
-## Adding Attribute Definitions
-
-By default the view on the page shows all attributes associated with the dataset in editing mode. If you click on the Eye Icon this will only display the attributes that are set on the selected track and the current frame for that track.
-
-
- 
-
-After clicking the eye icon, all attributes that are unset will be removed from view. This is useful for reviewing or viewing attributes of a track when there is a large number of attribute definitions.
-
-1. To add attributes click on the corresponding "+Attribute" icon for either a track or detection attribute
- 1. 
-
-1. This will bring up a New Attribute dialog where you can enter a unique name for the attribute
- 1. 
-1. Next choose a datatype:
- 1. Number
- 1. Boolean - (True/False)
- 1. Text
- 1. Custom text that the user provides
- 1. A predefined list of text that can be chosen from
-1. After choosing a Track/Detection and a Datatype click Save to add the new attribute
-
-## Editing Dataset Attributes
-
-1. Click on the setting icon next to an existing attribute to edit it's definition details
- 1. 
-1. **Note:** Editing or deleting an attribute definition doesn’t change the existing track/detection attributes for the data
- 1. Deleting an attribute definition will cause it to disappear from the list. A future update will cause the attribute to also be removed from all tracks/detections.
- 1. Editing an attribute definition will change the way the controls behave, but will not change any existing set values.
-
-## Setting Track/Detection Attribute Values
-
-1. Click on the attribute value when in viewing mode to edit and set the attribute
-1. Or directly edit the value field when in the attribute editing mode
-1. Setting an attribute to the null/empty value will remove the value from the track/detection
-
-## Importing and Exporting Attributes
-
-Attributes are part of the dataset configuration that can be imported and exported.
-
-1. Set up a dataset with all the attributes you need
-1. In the download menu, create a configuration export
-1. Use this configuration with other datasets
- 1. Use the import button to load this configuration to other datasets.
- 1. Upload the configuration file when you create new datasets to initialize them with an existing configuration.
-
-## Applying Attributes Demo
-
-
diff --git a/docs/Command-Line-Tools.md b/docs/Command-Line-Tools.md
index 4385b9f5e..93142872c 100644
--- a/docs/Command-Line-Tools.md
+++ b/docs/Command-Line-Tools.md
@@ -8,20 +8,23 @@ Some of the DIVE data conversion features are exposed through `dive`.
## Features
-* Convert between VIAME CSV, DIVE Json, kpf, and coco.
+* Convert between [various supported formats](DataFormats.md)
* Verify the integrity of a DIVE Json annotation file.
## Installation
+Follow the docs in the [Debug Utils and Command Line Tools](https://github.com/Kitware/dive/tree/main/server#debug-utils-and-command-line-tools) section of `server/README.md`.
+
``` bash
-# Install the command line tools directly from source
-pip3 install git+https://github.com/Kitware/dive.git@main#subdirectory=server
+git clone https://github.com/Kitware/dive.git
+cd dive/server
+poetry install
```
## Usage
``` bash
-~$ dive convert --help
+~$ poetry run dive convert --help
# Usage: dive convert [OPTIONS] COMMAND [ARGS]...
diff --git a/docs/DataFormats.md b/docs/DataFormats.md
index df002f47d..03c9710a2 100644
--- a/docs/DataFormats.md
+++ b/docs/DataFormats.md
@@ -1,3 +1,8 @@
+---
+hide:
+ - navigation
+---
+
# Data Formats
DIVE Desktop and Web support a number of annotation and configuration formats. The following formats can be uploaded or imported alongside your media and will be automatically parsed.
@@ -6,7 +11,7 @@ DIVE Desktop and Web support a number of annotation and configuration formats.
* DIVE Configuration JSON
* VIAME CSV
* COCO and KWCOCO
-* KPF (Kitware Packet Format) for MEVA
+* KPF (KWIVER Packet Format) for MEVA
## DIVE Annotation JSON
@@ -88,6 +93,6 @@ Read the [VIAME CSV Specification](https://viame.readthedocs.io/en/latest/sectio
* Read the [COCO Specification](https://cocodataset.org/#format-data)
* Read the [KWCOCO Specification](https://kwcoco.readthedocs.io/en/release/getting_started.html)
-## Kitware Packet Format (KPF)
+## KWIVER Packet Format (KPF)
-KPF does not have a public specification.
+Read the [KPF Specification](https://kwiver-diva.readthedocs.io/en/latest/kpf.html)
diff --git a/docs/Deployment-Overview.md b/docs/Deployment-Overview.md
index f96d2f4fb..3566a5e2c 100644
--- a/docs/Deployment-Overview.md
+++ b/docs/Deployment-Overview.md
@@ -17,9 +17,9 @@ The goal of this page is to provide an overview of the ways to run VIAME or VIAM
Free to use; no maintenance costs | You pay hosting and maintenance costs |
Always up to date | Possible to configure automated updates |
One shared environment for everyone | Your organization has full control over access |
-Our team monitors this service for errors and can respond to issues proactively | Support by email requires logs, screenshots, and other error information if applicable
-Our team can provide guidance on annotation and training because we have direct access to your data | Support by email usually requires example data and annotations
-Having user data in our environment helps us understand user needs and improve the product | Feedback by email is always appreciated.
+Our team monitors this service for errors and can respond to issues proactively | Support requires logs, screenshots, and other error information if applicable
+Our team can provide guidance on annotation and training because we have direct access to your data | Support usually requires example data and annotations
+Having user data in our environment helps us understand user needs and improve the product | Feedback is always appreciated.
Limited shared compute resources (2 GPUs) available to process jobs. Can be mitigated by hybrid compute options | As much compute as you pay for
## Using our public server
@@ -28,7 +28,7 @@ The easiest option to get started using VIAME is to [try our public server](Web-
## Running your own instance
-You may wish to run your own deployment of VIAME Web in your lab or a cloud environment. Deploying VIAME Web is relatively straighforward with `docker-compose`.
+You may wish to run your own deployment of VIAME Web in your lab or a cloud environment. Deploying VIAME Web is relatively straightforward with `docker-compose`.
| Environment | Instructions |
|-------------|--------------|
@@ -73,6 +73,8 @@ AWS S3 | Use as backing storage, import existing data
MinIO | Use as backing storage, import existing data
Azure Blob Storage | Limited import support using [MinIO Azure Gateway](https://docs.min.io/docs/minio-gateway-for-azure.html)
+
+
## Get Help
-[Contact us](https://kitware.github.io/dive/#get-help) for support with any of these topics.
+[Contact us](Support.md) for support with any of these topics.
diff --git a/docs/Deployment-Provision.md b/docs/Deployment-Provision.md
index 8f8193633..0fee213c6 100644
--- a/docs/Deployment-Provision.md
+++ b/docs/Deployment-Provision.md
@@ -99,7 +99,7 @@ This step will prepare the new host to run a VIAME worker by installing nvidia d
### Ansible Extra Vars
-These are all the variables that can be provided with `--extra-vars` along with which scenario each on applies to.
+These are all the variables that can be provided with `--extra-vars`.
| Variable | Default | Description |
|----------|---------|-------------|
@@ -136,7 +136,7 @@ ansible-playbook -i inventory ansible/playbook.yml --extra-vars "run_worker_cont
Once provisioning is complete, jobs should begin processing from the job queue. You can check [viame.kitware.com/#/jobs](https://viame.kitware.com/#/jobs) to see queue progress and logs.
!!! tip
- This ansible playbook is runnable from any Ubuntu 18.04+ host to any Ubuntu 18.04+ target. To run it locally, use the `inventory.local` file instead. If you already have nvidia or docker installed, you can comment out these lines in the playbook.
+ This Ansible playbook is runnable from any Ubuntu 18.04+ host to any Ubuntu 18.04+ target. To run it locally, use the `inventory.local` file instead. If you already have nvidia or docker installed, you can comment out these lines in the playbook.
**If you run locally** you'll need to restart the machine and run the playbook a second time. The playbook will do this automatically for remote provisioning, but cannot restart if you're provisioning localhost.
diff --git a/docs/Deployment-Storage.md b/docs/Deployment-Storage.md
index ffd3d3625..6175bc48e 100644
--- a/docs/Deployment-Storage.md
+++ b/docs/Deployment-Storage.md
@@ -73,3 +73,19 @@ Secret Key:
Mount point folder:
Prefix (if applicable):
```
+
+## S3 and MinIO Mirroring
+
+If you have data in S3 or MinIO, you can mirror it in DIVE for annotation.
+
+* Data is expected to be either videos or images organized into folders
+* You should not make changes to folder contents once a folder has been mirrored into DIVE. Adding or removing images in a particular folder may cause annotation alignment issues.
+* Adding entire new folders is supported, and will require a re-index of your S3 bucket.
+
+### Mirroring setup
+
+To create a bucket mirror on your own DIVE deployment.
+
+1. Open `/girder#assetstores` and create a new S3 assetstore. Mark as **Read only**.
+1. Choose the green "Begin Import" button on the new assetstore.
+1. Choose a prefix within your bucket to mirror (probably just `/`) and a destination folder ID. You can get the destination folder ID from the URL of the folder location in your address bar.
diff --git a/docs/Dive-Desktop.md b/docs/Dive-Desktop.md
index 4d076f39f..b4b43a5b0 100644
--- a/docs/Dive-Desktop.md
+++ b/docs/Dive-Desktop.md
@@ -1,12 +1,18 @@
# DIVE Desktop
-DIVE is available as an electron based desktop application with deep [VIAME](https://github.com/viame/viame) integration.
+DIVE is available as an electron based desktop application with [VIAME](https://github.com/viame/viame) integration. It has most of the same UI and features web. You may want to use desktop if...
-DIVE Desktop has most of the same UI and features as DIVE **without** requiring a network connection or a server installation.
+* You want to make use of GPUs on your own workstation
+* You need to use DIVE without network access
+* You have large quantities of data on disk impractical for uploading to a server.
+
+DIVE Desktop is fully supported on Windows and Linux. MacOS users can use it as an annotator, but without NVIDIA Driver support, the machine learning features from VIAME are unavailable.
+
+
## Installation
-[⬇️ Download the latest DIVE Desktop from GitHub](https://github.com/Kitware/dive/releases/latest){ .md-button .md-button--primary }
+[:material-download: Download the latest DIVE Desktop from GitHub](https://github.com/Kitware/dive/releases/latest){ .md-button }
Choose an **asset** from the list matching your operating system:
@@ -20,40 +26,52 @@ Choose an **asset** from the list matching your operating system:
### Full VIAME Desktop Installation
-This is just the installation guide for DIVE. If you want the full VIAME tool suite, you can get it from [github.com/viame/viame](https://github.com/viame/viame#installations)
+This is the installation guide for DIVE. If you want the full VIAME toolkit, you can get it from [github.com/viame/viame](https://github.com/viame/viame#installations). The full toolkit installation includes DIVE.
-## Features
+## Supported Dataset Types
-Full Windows and Linux support. Annotation support for MacOS.
+DIVE Desktop supports single- and multi-camera datasets.
-* Annotate video and images on your computer (Instead of uploading to a server)
-* Run pipelines and training on multiple datasets using locally installed VIAME
+* **Single Camera Dataset** is the most common option. Single camera datasets are supported by the majority of VIAME pipeline and training configurations.
+* **Stereo Datasets** are for datasets collected from a camera rig with a left and right camera. These datasets can be used with certain specialty VIAME pipelines. Their physical relationship may be described by a camera transform `.npz` file (numpy transformation matrix).
+* **Multi-Cam Datasets** are for more generic multi-camera rig setups. They may have overlapping fields of view.
-
+### Importing Datasets
-## Importing Images & Videos
+Click either ==Open Image Sequence :material-folder-open:== or ==Open Video :material-file-video:== to begin a single camera default import. Click the ==:material-chevron-down:== dropdown button to show additional import options.
-* For video, DIVE will ask you to point directly to a file.
-* For images, DIVE Desktop imports **entire directories**. That means all images from a single folder will be imported as a dataset. You can use globbing to filter the contents of an image directory during import.
+* ==:material-file-video: From File== is the default option for videos. It will open a file picker and allow you to choose a single video file.
+* ==:material-folder: Directory== is the default option for image sequences. It will prompt you to choose an **entire folder** of images to import as a dataset.
+ * You can use globbing patterns to filter the contents of an image directory during import. Click ==:material-chevron-down: Show advanced options== to reveal the glob input.
+* ==:material-view-list-outline: Image List== will prompt you to choose a `.txt` file that contains an image name or full path on each line.
+* ==:material-binoculars: Stereo== will prompt you to choose 2 videos or 2 image sequences.
+* ==:material-camera-burst: Multi-Cam== will prompt you to describe the multi-cam configuration by naming several cameras and picking the source media for each.
-**Annotation Files** - In either case, either a `*.csv` or a `result*.json` annotaton file should be located in the same directory as the source media, and will be automatically discovered during import. Annotation files are not required.
+The import routine will look for `.csv` and `.json` files in the same directory as the source media, and you will be prompted to manually select an annotation file and a configuration file. Neither is required.
-## Video Transcoding
+### Video Transcoding
DIVE Desktop is an [Electron](https://www.electronjs.org/) application built on web technologies. Certain video codecs require automatic transcoding to be usable. Video will be transcoded unless _all_ the following conditions are met.
* `codec` = `h264`
* `sample_aspect_ratio (SAR)` = `1:1`
-## Configuration
+## Running Training
-DIVE Desktop requires a local installation of the VIAME toolkit to run pipelines, train, and do transcoding.
+1. Click on ==:material-brain: Training== to open the training tab.
+1. Add one or more datasets to the staging area by clicking ==:material-plus:==.
+1. Choose an appropriate training config file and any training parameters. These are documented on the [training configuration page](Pipeline-Documentation.md).
+1. Click ==Train on (N) Datasets==. Note that depending on what configuration and datasets you chose, training could take hours or days.
+
+## Desktop Settings
-
+DIVE Desktop requires a local installation of the VIAME toolkit to run pipelines, train, and do transcoding.
-* `VIAME Install Path` is set automatically if you use `examples/annotation_and_visualization/launch_dive_interface` from the VIAME install. Otherwise, you may need to set this yourself. Use `Choose` to choose the base installation path, then click save.
-* `Project Data Storage Path` defaults to a subfolder in your user workspace and should generally not be changed.
-* `Read only mode` disables the ability to save when using the annotator.
+* **VIAME Install Path** is set automatically if you use the `launch_dive_interface.[bat|sh]` script from a VIAME install. Otherwise, you may need to change this yourself.
+ * Use ==Choose :material-folder:== to choose the base installation path, then click ==:material-content-save: Save==.
+* **Project Data Storage Path** defaults to a subfolder in your user workspace and should generally not be changed.
+* **Read only mode** disables the ability to save when using the annotator.
+* **Synchronize Recents** - The ==:material-sync: Synchronize Recents with Project Data== button is useful if data in the Project Data Storage Path gets out of sync with what appears in the ==:material-folder-open: Recents== list.
### Data Storage Path
@@ -116,7 +134,7 @@ Trained models are kept in `${Project Data Storage Path}/DIVE_Pipelines` as desc
* The pipe file can be one of `detector.pipe`, `tracker.pipe`, or `generate.pipe`.
* Other files can be `.zip`, `.svm`, `.lbl`, or `.cfg`.
-You can use exteranally trained models in DIVE by creating a folder containing these files. The name of the configuration or pipeline in dive will be the folder name you create.
+You can use externally trained models in DIVE by creating a folder containing these files. The name of the configuration or pipeline in dive will be the folder name you create.
## Troubleshooting
@@ -124,18 +142,20 @@ You can use exteranally trained models in DIVE by creating a folder containing t
See [Importing images and video above](#importing-images-videos).
-> ffmpeg not installed, please download and install VIAME Toolkit from the main page
+> I get an error that says "ffmpeg not installed, please download and install VIAME Toolkit from the main page"
DIVE Desktop relies on an installation of `ffmpeg` for transcoding videos and some images. This tool comes with the VIAME installation. Verify your VIAME Install Base Path is correct.
-> Some VIAME canned pipelines are missing?
+> Some VIAME canned pipelines are missing, or there are no training configuration files.
+
+You may need to install VIAME Toolkit, or correct your **VIAME Install Base Path** setting.
If you don't see some pipelines you expect, you may not have installed the addons (also called Optional Patches) yet. Download and install these based on the [VIAME installation docs](https://github.com/viame/VIAME#installations).
> Advanced troubleshooting
-If you're experience problems or have questions about DIVE Desktop, [contact us](index.md#get-help) and include the content from the settings page such as `Build Version` as well as your currently installed VIAME version.
+If you experience problems or have questions about DIVE Desktop, [contact us](Support.md) and include the content from the settings page such as `Build Version` as well as your currently installed VIAME version.
-To help us address errors and exceptions, it's helpful to look in the debug console. Press `CTRL + SHIFT + i` to launch the Dev Tools and look under the console tab. Errors and warnings will appear in red and yellow. You can right-click in the console area and click "Save As" to save the log file to email to us.
+It's also helpful to look in the debug console. Press ++ctrl+shift+i++ to launch the Dev Tools and look under the console tab. Errors and warnings will appear in red and yellow. You can right-click in the console area and click "Save As" to save the log file and [open a support ticket](Support.md)

diff --git a/docs/FAQ.md b/docs/FAQ.md
index 085ac6ab4..cab0a7b70 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -1,14 +1,19 @@
+---
+hide:
+ - navigation
+---
+
# Frequently Asked Questions
## How do I find existing data to use?
-The [Training Data Collection](https://viame.kitware.com/#/collection/5e4c256ca0fc86aa03120c34) is organized rougly by domain and collection method.
+The [Training Data Collection](https://viame.kitware.com/#/collection/5e4c256ca0fc86aa03120c34) is organized roughly by domain and collection method.
## How do I share data with others?
This use case is covered [on the sharing page](Web-Version.md#sharing-data-with-teams).
-If you want to **publish** your data so that other groups can use it, please email `viame-web@kitware.com` .
+If you want to **publish** your data so that other groups can use it, please [contact us](Support.md).
## How do I run analysis workflows on my data?
@@ -16,7 +21,7 @@ In DIVE, these are called pipelines. You'll need to see what sorts of analysis
These sorts of AI workflows are the final goal for most users. They allow the user to quickly perform quantitative analysis to answer questions like **_how many individuals of each type appear on each image or video frame?_**
-If no suitable existing analysis exists for your use case or you aren't sure how to proceed, you're welcome to [email our team and ask for help](index.md#get-help).
+If no suitable existing analysis exists for your use case or you aren't sure how to proceed, you're welcome to [contact our team and ask for help](Support.md).
## How do I create new models?
@@ -61,7 +66,3 @@ There are caveats with this approach.
* It does not handle padding properly. If a video begins or ends with padding, you may see a black screen in DIVE, but kwiver will wait for the first true frame to use as the representative for the bucket.
* It does not handle variable width frames properly. If a video has variable width frames, the assumptions about the locations of true frame boundaries do not hold and kwiver training may have alignment issues.
-
-## Can I request new features or provide feedback?
-
-Yes! Please contact us at `viame-web@kitware.com` or log an issue [directly on the issue tracker](https://github.com/Kitware/dive/issues).
diff --git a/docs/Mouse-Keyboard-Shortcuts.md b/docs/Mouse-Keyboard-Shortcuts.md
index cb8c8ce35..8329a98ec 100644
--- a/docs/Mouse-Keyboard-Shortcuts.md
+++ b/docs/Mouse-Keyboard-Shortcuts.md
@@ -9,19 +9,19 @@
| Middle Click | pan camera |
| Scroll Wheel | zoom |
| Mouse Drag | pan |
-| `shift` + mouse drag | select area to zoom |
-| `Up Arrow` | select previous track in list |
-| `Down Arrow` | select next track in list |
-| `escape` | unselect, exit edit mode |
-| `a` | toggle attribute / merge pane |
+| ++shift++ + mouse drag | select area to zoom |
+| ++arrow-up++ | select previous track in list |
+| ++arrow-down++ | select next track in list |
+| ++escape++ | unselect, exit edit mode |
+| ++a++ | toggle attribute / merge pane |
## Playback
| control | description |
| ---------- | ------------|
-| `Left Arrow` or `d` | previous frame |
-| `Right Arrow` or `f` | next frame |
-| `space` | play/pause |
+| ++arrow-left++ or ++d++ | previous frame |
+| ++arrow-right++ or ++f++ | next frame |
+| ++space++ | play/pause |
## Editing
@@ -29,21 +29,22 @@ Most editing controls are available when a track or detection is selected.
| control | description |
| ---------- | ------------|
-| `delete` | delete entire track or detection |
-| `n` | create new track or detection |
-| `Home` or `End` | go to first or last frame of selected |
-| `1` | Enter **bounding-box** edit mode on selection |
-| `2` | Enter **polygon** edit mode on selection |
-| `3` | Enter **head/tail/line** edit mode on selection |
-| `h` or `g` | while in line mode, place head point next |
-| `t` or `y` | while in line mode, place tail point next |
-| `escape` | unselect, exit edit mode, exit merge mode |
-| `k` | toggle keyframe for the current frame and selected track |
-| `i` | toggle interpolation for the current range of the selected track |
-| `m` | enter merge mode for on selection |
-| `shift` + `m` | commit (finalize) merge for selected tracks. |
-| `shift` + `enter` | focus class select/text box on selected track in track list. Press `Down Arrow` to open all options. Pres `enter` twice to accept an option. Press `escape` to unfocus. |
+| ++delete++ | delete entire track or detection |
+| ++n++ | create new track or detection |
+| ++home++ | go to first frame of selected track |
+| ++end++ | go to the last frame of selected track |
+| ++1++ | Enter **bounding-box** edit mode on selection |
+| ++2++ | Enter **polygon** edit mode on selection |
+| ++3++ | Enter **head/tail/line** edit mode on selection |
+| ++h++ or ++g++ | while in line mode, place head point next |
+| ++t++ or ++y++ | while in line mode, place tail point next |
+| ++escape++ | unselect, exit edit mode, exit merge mode |
+| ++k++ | toggle keyframe for the current frame and selected track |
+| ++i++ | toggle interpolation for the current range of the selected track |
+| ++m++ | enter merge mode for on selection |
+| ++shift+m++ | commit (finalize) merge for selected tracks. |
+| ++shift+enter++ | focus class select/text box on selected track in track list. Press ++arrow-down++ to open all options. Pres ++enter++ twice to accept an option. Press ++escape++ to unfocus. |
## Adding new shortcuts
-If you think a new shortcut would be useful, [please send us feedback](/#get-help).
+If you think a new shortcut would be useful, [please send us feedback](Support.md).
diff --git a/docs/Pipeline-Documentation.md b/docs/Pipeline-Documentation.md
index cb2e0fb1f..1aef0bb65 100644
--- a/docs/Pipeline-Documentation.md
+++ b/docs/Pipeline-Documentation.md
@@ -1,14 +1,19 @@
+---
+hide:
+ - navigation
+---
+
# Pipelines and Training
Both web and desktop versions are capable of running canned pipelines and model training on your ground truth data. This document is to help you decide which pipeline to run.
## Help me choose
-Contact our team if you need help choosing the right data analysis strategy. Please upload some sample data to viame.kitware.com to allow us to better assist you.
+[Contact our team](Support.md) if you need help choosing the right data analysis strategy. Please upload some sample data to viame.kitware.com to allow us to better assist you.
## Detection
-Best for a series of images that have no temporal relationship, such as arial photography of multiple scenes. Also preferred if you only care about aggregate date for the dataset, such as max occurrences of an object per scene.
+Best for a series of images that have no temporal relationship, such as arial photography of multiple scenes. Also preferred if you only care about aggregate data for the dataset, such as max occurrences of an object per scene.
| Pipeline | Use case |
| -------- | -------- |
@@ -33,21 +38,21 @@ Best for a series of images that have no temporal relationship, such as arial ph
Run full tracking pipelines on your data. Appropriate for videos and image sequences that derive from a video. Tracking involves first running a detection pipeline then performing detection linking to form connected object tracks.
-> **Note** some trackers can perform differently on time-series data depending on the annotation framerate selected when you upload or import your dataset. Higer framerates take longer to process, but may produce better results.
+> **Note** some trackers can perform differently on time-series data depending on the annotation framerate selected when you upload or import your dataset. Higher framerates take longer to process, but may produce better results.
| Pipeline | Use case |
| -------- | -------- |
|
| tracker, trained with data from MOUSS (Modular Optical Underwater Survey System) |
|
sefsc bw *
| same as above, but with tracking |
## Utility
-An assortment of other types of utility pipelines. Utility piplines are named `utility_.pipe` and are unique in that they _may_ take detections as inputs (but are not required to).
+An assortment of other types of utility pipelines. Utility pipelines are named `utility_.pipe` and are unique in that they _may_ take detections as inputs (but are not required to).
| Pipeline | Use case |
| -------- | -------- |
@@ -100,7 +105,7 @@ By default, all classes from all input datasets are preserved in the output mode
#### Use annotation frames only
-By default, training runs include all frames from the chosen input datasets, and frames without annotations are considered negatives examples. If you choose to use annotated frames only, frames or images with zero annotations will be discarded. This option is useful for trying to train on datasets that are only partially annotated.
+By default, training runs include all frames from the chosen input datasets, and frames without annotations are considered negative examples. If you choose to use annotated frames only, frames or images with zero annotations will be discarded. This option is useful for trying to train on datasets that are only partially annotated.
### Configurations
@@ -118,6 +123,6 @@ By default, training runs include all frames from the chosen input datasets, and
| [object_classifier_netharn_resnet](https://github.com/VIAME/VIAME/blob/master/configs/pipelines/train_object_classifier_netharn_resnet.viame_csv.conf) | both | |
| yolo | desktop only | can train, but resulting model **is not runnable with desktop** yet |
-## Custom Pipelines
+## Pipeline Import and Export
-Pipelines created outside of VIAME Web can be upload and shared with other users. See [Custom Pipeline Upload](Pipeline-Upload.md) for details.
+Pipelines created outside of VIAME Web can be upload and shared with other users. See [Pipeline Import and Export](Pipeline-Import-Export.md) for details.
diff --git a/docs/Pipeline-Upload.md b/docs/Pipeline-Import-Export.md
similarity index 62%
rename from docs/Pipeline-Upload.md
rename to docs/Pipeline-Import-Export.md
index b6f70d5e8..1ce4fcecd 100644
--- a/docs/Pipeline-Upload.md
+++ b/docs/Pipeline-Import-Export.md
@@ -1,4 +1,27 @@
-# Custom Pipeline Upload
+# Pipeline Import and Export
+
+## Trained model downloads
+
+You can download your trained models through the administrative interface.
+
+!!! warning
+
+ Use caution when modifying data through the admin interface
+
+* Open the admin interface at [https://viame.kitware.com/girder](https://viame.kitware.com/girder) (or `myserver.com/girder` if you host your own instance)
+* Navigate to your personal workspace by clicking ==:material-folder: My Folders== under your user dropdown in the top right corner.
+
+ 
+
+* Navigate to the `VIAME/VIAME Training Results` folder and into the folder you wish to download
+
+ 
+
+* Select all items and download using the menu
+
+ 
+
+## Custom Pipeline Upload
It's possible to upload custom pipes to DIVE Web through the girder interface.
@@ -17,11 +40,11 @@ It's possible to upload custom pipes to DIVE Web through the girder interface.

-## Accepting input
+### Accepting input
If your pipe must accept input, set the **pipeline folder** metadata property `requires_input` to `true` .
-## Including base pipelines
+### Including base pipelines
User-uploaded pipelines may depend on any pipe already installed from the base image or an addon using `include .pipe` . Depending on other user-uploaded pipes is not supported.
diff --git a/docs/Support.md b/docs/Support.md
new file mode 100644
index 000000000..43679e254
--- /dev/null
+++ b/docs/Support.md
@@ -0,0 +1,24 @@
+---
+hide:
+ - navigation
+---
+
+# Support
+
+DIVE is free and open-source software published under an [Apache 2.0 License](https://github.com/Kitware/dive/blob/main/LICENSE) in accordance with [Kitware's Open Philosophy](https://www.kitware.com/open-philosophy/).
+
+## Community Support
+
+For feedback, problems, questions, or feature requests, please reach out on Discourse. Our team would be happy to hear from you!
+
+[:material-chat: Open a thread on Discourse](https://discourse.kitware.com/c/viame-dive/17){ .md-button }
+
+## Advanced Support
+
+If you or your employer have an active support contract with Kitware and you need individualized support, please email us directly at **`viame-web@kitware.com`**.
+
+[:material-email: Email us](mailto:viame-web@kitware.com){ .md-button }
+
+## Demos or Custom Development
+
+DIVE is built and maintained by the [Data & Analytics group at Kitware](https://www.kitware.com/teams/data-and-analytics) with financial support from contracts with government and commercial customers. If you would like to schedule a demo, sponsor custom software development, or purchase support related to DIVE, please email us or reach out through our [contact page](https://www.kitware.com/contact/).
diff --git a/docs/UI-Annotation-View.md b/docs/UI-Annotation-View.md
index 7ad859f77..595f83d8f 100644
--- a/docs/UI-Annotation-View.md
+++ b/docs/UI-Annotation-View.md
@@ -1,18 +1,29 @@
-# Annotation View
+# Annotation Window

-The Annotation View is where images an the annotations reside. Annotations have different states and properties based on the current mode.
-**Left Click** - this will select an annotation and highlight cyan
-**Right Click** - select an annotation and place it in editing mode allowing to edit existing geometry or create new ones
-**Middle Click** - Pan the camera. This is useful in polygon editing mode or while zoomen and creating annotations.
+The annotation window will look different based on the current mode and what visibility toggles are enabled.
+
+* **Left Click** an annotation to select it.
+* **Right Click** an annotation to select it and enter editing mode.
+* **Middle Click** and drag to pan the camera. This is useful when drawing annotations while zoomed such that you need to work on something slightly off-screen.
+
+## Viewer modes
+
+* **Default Mode** - In the default mode the annotation will have bounds associated with it as well as a text name for the type and an associated confidence level. The color and styling will match what is specified in the [Type List Style Settings](UI-Type-List.md). There are additional modes which can be toggled on and off in the [Edit Bar](UI-Navigation-Editing-Bar.md).
-* **Default Mode** - In the default mode the annotation will have bounds associated with it as well as a text name for the type and an associated confidence level. The color and styling will match what is specified in the TypeList Settings. There are additional modes which can be toggled on and off in the .
* **Selected Annotation** - selected annotations are cyan in color
- * 
+
+ 
+
* **Editing Annotation** - Editing annotations are cyan in color and provide handles to resize the annotation as well as a central handle to move the annotation to different spot.
- * 
-* **Creating Annotation** - Creating an annotation requires clicking and dragging the mouse. When the AnnotionView is ready to create the annotation the mouse will turn into a crosshair.
- * 
-* **Interpolated Annotation** - If an annotation has interpolation and the current frame isn't a keyframe it will appear slightly faded and will become a keyframe if the user edits the size or position
- * 
+
+ 
+
+* **Creating Annotation** - Creating an annotation requires clicking and dragging the mouse. Creating in the annotation window is indicated by a cursor crosshair and an icon that shows the type being drawn.
+
+ 
+
+* **Interpolated Annotation** - If a track has an interpolated box on the current frame it will appear slightly faded.
+
+ 
diff --git a/docs/UI-Attributes.md b/docs/UI-Attributes.md
new file mode 100644
index 000000000..5078355ad
--- /dev/null
+++ b/docs/UI-Attributes.md
@@ -0,0 +1,100 @@
+# Attributes
+
+## Concepts and Terms
+
+- **Attribute Definitions** are templates. They have a name and a value type, such as `String`, `Number`, or `Boolean`. Definitions must be created before attribute values can be assigned. Tracks and detections each have their own set of definitions.
+- **Track Attributes** apply to an entire track. Each track can only have one value for each track attribute definition.
+- **Detection Attributes** can be different for every frame in a track.
+
+### Example Attribute Definition
+
+- Track Attributes:
+ - CompleteTrack: `Boolean`
+ - FishLength: `number (cm)`
+- Detection Attributes:
+ - Swimming: `Boolean`
+ - Eating: `Boolean`
+
+### Example Attribute Values
+
+- Fish Track 1
+ - Track Attributes
+ - `{ "FishLength": 20 }`
+ - Detection Attributes
+ - Frame 1
+ - `{ "Eating": True }`
+ - Frame 2
+ - `{ "Swimming": False, "Eating": True }`
+
+!!! Info
+
+ All Attribute definitions do not need to be assigned to values. CompleteTrack (Track Attribute) and Swimming for Frame 1 (Detection Attribute) weren't assigned in this example.
+
+## Using the Attributes Panel
+
+{ align=right width=260px }
+
+1. Select an existing track or detection with left click.
+1. Open the Track Details page by clicking on the ==:material-swap-horizontal:== button in the [Type List](UI-Type-List.md) area or pressing the ++a++ key.
+1. Here you will see the track/detection type, confidence pairs associated with it and then a list of track and detection attributes.
+1. For attributes there are two sections
+ 1. **Track Attributes** - All track level attributes
+ 1. **Detection Attributes** - attributes associated with the track on a per frame basis
+
+
+
+!!! info
+
+ Attributes found during import in a [VIAME CSV](DataFormats.md#viame-csv) will automatically show up in the list. The data type of the attribute is guessed by examining values and may need to be manually corrected.
+
+By default, all attributes associated with the dataset are visible and editable. You can hide unused attributes by clicking the ==:material-eye:== toggle next to ==:material-plus: Attribute==.
+
+| Show Unused ==:material-eye:== | Hide Unused ==:material-eye-off:== |
+|-------------|-------------|
+ | 
+
+## Creating Attribute Definitions
+
+1. Click on the ==:material-plus: Attribute== icon for in either the track or detection attribute area.
+ 1. 
+1. Enter a unique name
+1. Choose a Datatype
+ 1. `Number`
+ 1. `Boolean` (True/False)
+ 1. `Text`
+ 1. Custom text that the user provides
+ 1. A predefined list of text to choose from, separated by newline.
+1. Click ==Save== to add the new attribute
+
+## Editing Attribute Definitions
+
+Click the ==:material-cog:== button next to an existing attribute to edit its definition.
+
+
+
+!!! warning
+
+ Editing or deleting an attribute **definition** doesn’t change any existing attribute **values**.
+
+ * **Deleting** an attribute definition will cause it to disappear from the list, but the values will remain in the database.
+ * **Editing** an attribute definition will change the way the controls behave, but will not change any existing set values.
+
+## Setting Attribute Values
+
+1. Click on the attribute value when in viewing mode to edit and set the attribute
+1. Or directly edit the value field when in the attribute editing mode
+1. Setting an attribute to the empty value will remove the value from the track/detection
+
+## Importing and Exporting Attributes
+
+Attributes are part of the dataset configuration that can be imported and exported.
+
+1. Set up a dataset with all the attributes you need
+1. In the ==:material-download: Download== menu, choose ==Configuration==.
+1. Use this configuration with other datasets
+ 1. Use the ==:material-application-import: Import== button to load this configuration to other datasets.
+ 1. Upload the configuration file when you create new datasets to initialize them with these attribute definitions.
+
+## Applying Attributes Demo
+
+
diff --git a/docs/UI-Edit-Bar.md b/docs/UI-Edit-Bar.md
deleted file mode 100644
index a5721c414..000000000
--- a/docs/UI-Edit-Bar.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# View and Edit Controls
-
-
-
-
-
-The View/Edit Bar is used to hide/view annotations as well as create and edit them. Tthe visibility section where different types of geometry associated with a track/detection can be hidden or shown. The edit section allows for the creation and editing of different geometries associated with a track.
-
-* **Visibility** - Toggle on/off the different geometries associated with tracks or detections. This may be necessary when having multiple geometries visbile to make it easier to see a specific type. By default all tracks/detections have an included bounding box. If there is a polygon as well as a bounding box the box will become thinner and dimmer. This tool allows you to disable one or the other to make groups of items more visible.
- * 
-* **Edit Section** - This bar is used for both editing and creating geometries associated with a track.
- * 
- * **Edit/Creation Mode** - When in edit or creation mode the selected geometry type will be highlighted blue. You can swap between them at anytime by clicking on the type or using the keyboard shortcuts corresponding to the numbers. If a geometry of that type already exists it will be placed in edit mode, if it doesn't exist you can then create it.
- * 
-* **Deletion** - Allows for the deletion of geometry types or points within a geometry.
- * **Delete Geometry** - This is the deletion of the entire type from the track. You cannot delete a bounding box. The bounding box is necessary for the representation of the track
- * 
- * **Delete Point** - When in edit mode for a polygon or a line segment it is possible to select individual points by clicking on them. They will turn Red and the Deletion button will indicate that you are now selecting a point for deletion. Clicking it will remove that current point from the line segment or the polygon.
- * 
- * 
diff --git a/docs/UI-Interpolation.md b/docs/UI-Interpolation.md
deleted file mode 100644
index 4202ad779..000000000
--- a/docs/UI-Interpolation.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Interpolation
-
-Interpolation allows the guessing of bounding boxes between sets of "keyframes". The intermediate bounding boxes are calculated between the keyframes and are adjusted accordingly. Interpolation allows a track to be created and edited much faster than drawing a detection for every single frame.
-
-See the Annotation Quickstart for a quick overview of enabling and using interpolation.
-
-Interpolation will be enabled on new tracks by default. If it isn't enabled it can be found under the "+Track Settings".
-Interpolation editing for existing tracks will only be enabled on tracks that span more than one frame.
-
-## Basics
-
-Interpolation is done by creating a detection then moving the current frame forward in time and placing the detection in a new spot. Each time the detection is edited or moved it becomes a "locked" keyframe meaning it is used in the interpolation.
-
-Interpolated Frame that is being edited has no name associated with it and has a light highlight for the bounds:
-
-
-
-## Track Interpolation Controls
-
-If the selected track spans more than one frame there will be interpolation controls available.
-
-
-
-* Delete - Delete the entire track
-* Split - Splits tracks that span more than one frame into two new tracks
-* Star [KeyFrame] - Represents if the current frame is a keyframe or not. Filled in means it is a keyframe
-* Interpolation Mode - The dashed rectangles mean that the current space without keyframes is interpolated. To show an occluded object this would be turned to off.
-* First Frame - '<<'
-* Previous Keyframe - '<'
-* Next Keyframe - '> '
-* Last Frame - '>>'
-* Edit Toggle - will toggle the currently selected track edit mode
-
-## Event Viewer
-
-The event viewer provides a quick and concise view of an interpolated track.
-
-* Keyframes - represented by solid individual markers in the track
-* Interpolated Ranges - represented by a thin cyan line joining keyframes
-* Blank Ranges - areas absent of keyframes and interpolated ranges.
-
-
-
-## Interpolated Extensive Demo
-
-Below is a longer demo showing creation of interpolated tracks as well as converting some areas to Blank ranges which contain no annotations.
-
-
diff --git a/docs/UI-Navigation-Bar.md b/docs/UI-Navigation-Bar.md
deleted file mode 100644
index 6ae05c121..000000000
--- a/docs/UI-Navigation-Bar.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## Navigation Bar
-
-
-
-
-
-* **Data Link** - Returns back to the folder which contains the current data.
- * 
-* **Run Pipeline** - Will run a pipeline from the dropdown on the current data.
- * NOTE: Current annotations will be backed-up and replaced by the pipeline when it is complete
- * 
-* **Download** - Allows for downloading all data, the image-sequence/video, dataset configuration, or just the detections.
- * 
- * **Exclude Tracks** - this allows you to remove tracks below a specific confidence threshold when exporting the CSV. It is how you can export only the higher detections/tracks after running a pipeline.
- * **Checked Types Only** - allows you to only export the annotations of types that are currently checked in the type list.
-* **Help** - Provides a small indication of currently available mouse/keyboard shortcuts as well as a link to this documention.
-* **Save** - This button is used to save the current annotations and any custom styles applied to the different types. Changes are not immediately committed and will instead update the save icon with a number indicating the number of changes that have occured. Clicking this button will reset the number and save the data at the same time.
- * 
diff --git a/docs/UI-Navigation-Editing-Bar.md b/docs/UI-Navigation-Editing-Bar.md
new file mode 100644
index 000000000..ae8aa6456
--- /dev/null
+++ b/docs/UI-Navigation-Editing-Bar.md
@@ -0,0 +1,38 @@
+
+
+## Navigation Bar
+
+The navigation bar is the row of controls at the very top of the window.
+
+* ==:material-database: Data== navigates to the folder that contains the current dataset.
+* ==:material-pipe: Run Pipeline== will launch a pipeline dropdown menu.
+ * **NOTE** Current annotations will be replaced by the pipeline output when it is complete. You should not perform annotations while a pipeline is running.
+* ==:material-application-import: Import== allows the upload of several kinds of files
+ * overwrite the current annotations with a `.json` or `.csv` annotation file.
+ * overwrite the style and attribute configuration with a config `.json` file.
+* ==:material-download: Download== (Web) or ==:material-application-export: Export== (Desktop) allows for exporting all or part of the current dataset.
+ * **Exclude Tracks** - this allows you to remove tracks below a specific confidence threshold when exporting the CSV. It is how you can export only the higher detections/tracks after running a pipeline.
+ * **Checked Types Only** - allows you to only export the annotations of types that are currently checked in the type list.
+ * **Web-specific options** are documented in the [web download section](Web-Version.md#download-or-export-data)
+* ==:material-content-copy: Clone== is documented in the [web clone section](Web-Version.md#dataset-clones).
+* ==:material-help-circle: Help== provides mouse/keyboard shortcuts as well as a link to this documentation.
+* ==:material-content-save:== is used to save outstanding annotation changes and any custom styles applied to the different types. Changes are not immediately committed and will instead update the save icon with a number badge indicating how many changes are outstanding. Clicking this button will commit your changes and reset the count to zero.
+
+## Editing Bar
+
+The editing bar is the second row below navigation.
+
+### Visibility Toggles
+
+The **:material-eye: visibility** section contains toggle buttons that control the different types of annotation data can be hidden or shown.
+
+* ==:material-vector-rectangle:== toggles **rectangle** visibility
+* ==:material-vector-polygon:== toggles **polygon** visibility
+* ==:material-vector-line:== toggles **head/tail line** visibility
+* ==:material-format-text:== toggles annotation type & confidence **text** visibility
+* ==:material-comment-text-outline:== toggles a **cursor hover tooltip**, helpful for reviewing very dense scenes with lots of overlap.
+* ==:material-navigation:== toggles **track trail** visibility. The track trail is configurable to show up to 100 frames both ahead and behind each bounding box. The trail line is made of bounding box midpoints.
+
+### Edit Mode Toggles
+
+Editing mode toggles control the type of geometry being created or edited during annotation. See the [Annotation Quickstart](Annotation-QuickStart.md) for an in-depth guide to annotation.
diff --git a/docs/UI-Timeline.md b/docs/UI-Timeline.md
index 8d0e871bf..acd665d5f 100644
--- a/docs/UI-Timeline.md
+++ b/docs/UI-Timeline.md
@@ -1,38 +1,52 @@
-# TimeLine
+# Timeline
+
+The timeline provides a control bar and a few different temporal visualizations. All timeline visualizations are updated live by type confidence slider(s), type checkboxes, and track checkboxes.


-The Timeline view provides an ability to quickly see data across the length of the video/image-sequence. Above it are standard video controls for controlling playback. Additionally a "Left Click" anywhere within the timeline will automatically seek to that frame. The current frame in the timeline is represented by a vertical cyan bar.
-
-Switching between the different modes can be done by clicking on the text either for **Detections** or **Events**. The Arrow on the left side of the timeline view can be used to minimize the view to provide more screen space for annotations.
-
-On the right side of the Timeline is a button used to recenter the camera on the annotation.
+## Control Bar
-## Event View
-
-
+* ==:material-chevron-down-box:== will minimize the timeline.
+* ==Detections== button selects the **Detection Count** histogram timeline view.
+* ==Events== button selects the **Event View**, which is a Gantt-style track chart.
+* ==:material-skip-previous:== ==:material-play:== ==:material-skip-next:== are standard media playback controls.
+* ==:material-lock-open:== will enable camera lock, which causes the annotation view to auto-zoom and pan to whatever annotation is currently selected. This is useful when reviewing the output of a pipeline.
+* ==:material-image-filter-center-focus:== or the ++r++ key will reset zoom/pan in the annotation view.
-The default event viewer shows a representation of the start/stop frames for the tracks filtered by the TypeList. The Tracks are presented using their corresponding type colors.
-When hovering over any Track the TrackID will display. Clicking on that track will select the track and transition the current frame to that frame.
+## Detection Count
-**Single Frame Detections** - Single frame detections are presented as single frames with spaces between.
+
-
+This is the default visualization. It is a stacked histogram of track/detection types over the duration of the sequence.
+* Line color matches the annotation type style.
+* Top green line is the sum count of all annotations of all types on each frame.
-**Selected Track View** - A selected track will be cyan and will cause the other tracks to fade out.
+## Event View
-
+
-**Selected Interpolated Track** - A selected track which has keyframes and interpolation will show the areas of interpolation, the keyframes and the track.
+The event viewer shows the start/stop frames for all tracks. It is a kind of Gantt chart, also similar to a swimlane chart but with more compact packing.
-
+* The tracks are drawn using their corresponding type color.
+* When hovering over any track the TrackID will display.
+* Clicking on a track will select it and jump to the track at the selected frame.
+### Interpreting
-## Detection Count
+
+ 
+ **Single frame detections** are presented as single frames with spaces between.
+
-
+
+ 
+ A **selected track** will be cyan and will cause all other tracks to fade out. If a selected track is solid cyan, that means every frame in the track is a keyframe.
+
-This provides a count of the types over the duration of the track. This is updated in realtime with the confidence slider so it can be used to filter out higher densities of types as well as get an indication of the number of the types visible at any one time.
+
+ 
+ A **selected interpolated track** will show the areas of interpolation as yellow lines, the keyframes as cyan ticks, and gaps as empty regions.
+
diff --git a/docs/UI-Track-List.md b/docs/UI-Track-List.md
index 5248f8615..acb87b19f 100644
--- a/docs/UI-Track-List.md
+++ b/docs/UI-Track-List.md
@@ -2,25 +2,48 @@

-
+## Track List Controls
- The tracklist allows for selecting and editing tracks that currently not filtered by the TypeList. The tracklist will present two different options depending on the Track that is selected.
+{ width=260px align=right }
-**Single Detection** - A track that spans a single frame.
+The track list allows for selecting and editing tracks. A selected track will look different depending on whether it's a single detection or a multi-frame track.
-
+* ==:material-cog:== opens track creation settings
+* ==:material-delete:=={ .error } deletes all tracks in the track list
+* ==:material-plus: Track/Detection== begins creation of a new annotation.
-* **Delete Detection** - Delete the detection
-* **Go to Frame** - Goes to the first frame of the detection
-* **Toggle Edit Mode** - selects the track and toggles edit mode on
+
-**Multiple Frame Track** - A track that spans multiple frames and has more options
+## Single Detection
-
+{ width=260px align=right }
-* **Delete Track** - Delete the entire Track
-* **Split Track** - Splits the track on the current Frame
-* **Toggle Keyframe** - Star is filled in if the current frame annotation is a keyfame. Clicking this will either remove the keyframe if it exists or make the current interpolated annotation a keyframe.
-* **Toggle Interpolation** - Turns interpolation on/off for a range between keyframes.
-* **Navigation Options** - Navigation for first frame of track, then to jump between keyframes, finally the last frame of the track
-* **Toggle Edit Mode** - selects the track and toggles edit mode on
+A track that spans a single frame.
+
+* ==:material-delete:=={ .error } deletes the entire detection annotation
+* ==:material-map-marker:== goes to the first frame of the detection
+* ==:material-pencil-box-outline:== selects the detection and toggles edit mode.
+
+!!! warning
+
+ The ==:material-delete:=={ .error } button will remove the whole track if it's longer than a single detection. To remove individual keyframes, use ==:material-star:== (the keyframe toggle button).
+
+
+
+## Multi-frame track
+
+{ width=260px align=right }
+
+A track that spans multiple frames and has more options
+
+* ==:material-delete:=={ .error } deletes the entire track
+* ==:material-call-split:== splits the track into 2 smaller tracks on the current frame.
+* ==:material-star:== is filled in if the current frame annotation is a keyfame. Clicking this will either remove the keyframe if it exists or make the current interpolated annotation a keyframe.
+* ==:material-vector-selection:== turns interpolation on/off for the interval between keyframes.
+* ==:material-chevron-double-left:== jumps to the first frame of track
+* ==:material-chevron-left:== jumps to the previous keyframe
+* ==:material-chevron-right:== jumps to the next keyframe
+* ==:material-chevron-double-right:== jumps to the last frame of the track
+* ==:material-pencil-box-outline:== selects the detection and toggles edit mode.
+
+
diff --git a/docs/UI-Type-List.md b/docs/UI-Type-List.md
index 59dc0a680..32a6b88af 100644
--- a/docs/UI-Type-List.md
+++ b/docs/UI-Type-List.md
@@ -2,50 +2,60 @@

-
+## Type List Controls
-The TypeList is used to control visual styles of the different types as well as filter out types that don't need to be displayed. The checkbox next to each type name can be used to toggle types on and off.
+{ align=right width=260 }
-**Confidence Filter** - for pipeline results the confidence filter can be used to filter out different items based on their current confidence level. As the confidence filter is adjusted the annotations in the AnnotationView as well as the Timeline views will update in realtime.
+Each dataset maintains its own list of types, and types can be defined on-the-fly.
+
+The Type List is used to control visual styles of the different types as well as filter out types that don't need to be displayed.
+
+* The checkbox next to each type name can be used to toggle types on and off.
+* ==:material-sort-alphabetical-ascending:== toggles the sort order between alphabetical and by number of annotations of each type.
+* ==:material-cog:== opens the type settings menu.
+* ==:material-delete:=={ .error } will remove the type from any visible track or delete the track if it is the only type.
+* ==:material-swap-horizontal:== will switch the left sidebar panel to show the track attribute editor view.
+* Confidence filtering is documented on the [confidence filter page](UI-Confidence-Filter.md)
+
+
## Type Style Editor
-When hovering over a type there is an Edit icon that is visible. Clicking on that will bring up the TypeList Editor.
+{ align=right loading=lazy width=260 }
-
+The type style editor controls the visual appearance of annotations in all other areas of the application. Launch the editor by hovering over a type row in the list and clicking ==:material-pencil:== (the edit pencil).
-The type editor allows you to change the visual representation of the Type within the annotation view as well as the color and name.
-* **Name** - You can change the name for the type and it will update all subsequent tracks that are using that Type.
-* **Border Thickness** - the line thickness can be changed to make a type stand out more or less
+* **Type Name** - You can change the name for the type and it will update all subsequent tracks that are using that Type.
+* **Show Label** - show the type name label in the text above each box.
+* **Show Confidence** - show the confidence value in the text above each box.
+* **Box Border Thickness** - the line thickness can be changed to make a type stand out more or less
* **Fill** - Fill allows the bounding box to be filled. This is useful for annotation of background items in an image.
-* **Opacity** - The opacity of the lines and the fill can be set here.
+* **Border & Fill Opacity** - The opacity of the lines and the fill can be set here.
* **Color** - The color for the type within the annotations and the timeline views.
-## Type (Class) Settings
+
-Each dataset maintains its own list of types (classes). These are customizable under type settings.
+## Type Settings Menu
-{ width=300px }
+Click the ==:material-cog:== button in the type list heading to open type settings.
-Type settings are available by clicking the `cog` button next to `Visiblity` in the type filter list heading.
+### Ad-hoc mode
-### Type Settings Options
+{ align=right width=260px }
-{ width=300px }
+In ad-hoc mode, new object classes are added as you annotate. The type list updates automatically when new classes are added or the last member of a class is deleted.
-#### Ad-hoc mode
+* Set **Lock Types** to off for ad-hoc type creation.
+* Set **Show Empty** to still show manually defined types with no track/detection examples in the type list.
-In ad-hoc mode, new object classes are added as you annotate. The type list updates automatically when new classes are added or the last member of a class is deleted.
+
-* Selecting `Lock Types = false` toggles ad-hoc mode.
-* Selecting `Show empty` is recommended
+### Locked mode
-#### Locked mode
+{ width=260px align=right }
In locked mode, only a specified list of classes can be used, and must be selected or autocompleted from the list for each object.
-* Selecting `Lock Types = true` toggles locked mode.
-* You can add types using the `+ Types` button under type settings
-
-{ width=300px }
+* Set **Lock Types** to on to constrain annotation types to those already defined.
+* You can add new types using the ==:material-plus: Types== button under type settings.
diff --git a/docs/User-Documentation.md b/docs/User-Documentation.md
deleted file mode 100644
index 5d69b9130..000000000
--- a/docs/User-Documentation.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# User Documentation
-
-Current capabilities of DIVE include:
-
-* User import of frame images or video.
-* Playback of existing annotation data.
-* Manual creation of new annotations.
-* Automatic object detection and tracking of user-imported data.
-* Manual user refinement of automatically generated tracks
-* Export of generated annotations.
-
-## Controls
-
-| control | description |
-| -------------------- | ---------------------------------- |
-| `f` or `right arrow` | skip forward 1 frame |
-| `d` or `left arrow` | skip backward 1 frame |
-| `h` | toggle annotate head position mode |
-| `t` | toggle annotate tail position mode |
-| `space` | play/pause |
-| mouse scroll | zoom |
-| mouse drag | pan |
-| `shift` + drag | select area to zoom |
-| left-click | select/de-select track |
-| right-click | toggle track edit mode |
-
-## Register for an account
-
-A user account is required to store data and run pipelines on viame.kitware.com.
-
-1. Visit https://viame.kitware.com
-2. Click **Register**
-
-## Adding a data source
-
-* Open the DIVE Homepage, and navigate to the "Data" tab.
-* Click the blue "user home" button at the top left of the data browser.
-* Choose your "public" or "private" folder.
-* Click the blue "Upload" button that appears in the toolbar.
-* Select either an `.mp4` video or multi-select a group of image frames.
-* If you already have `annotations.csv`, select that too.
-* Choose a name for the data, enter the optional video playback frame rate, and press start-upload.
-* In the data browser, a new blue "Annotate" button will appear next to your data.
-
-## General annotation controls
-
-General Definitions
-
-* **Track**: a series of bounding box detections of a single object over time
-* **Detection** a single bounding box on an individual frame
-* **Types**: a set of mutually exclusive object classifications that can be applied to a Track, such as "species" if annotating animals.
-* **Meatballs menu**: a horizontal 3-dot icon that expands to show a menu.
-
-General controls
-
-* **Select detection**: left-click on a detection.
-* **Edit existing detection**: right-click on a detection, adjust its position, then right click again to accept your changes. You'll notice the outline of the old detection go away when you successfully save the new one.
-* **Delete single detection**: Press `q` when a detection is selected.
-* **Delete single track**: In the track list, a meatballs menu will appear on hover. Click the meatballs menu and click "Delete Track".
-
-## Creating a new track
-
-* In the track list header, click the `+` button.
-* Your cursor will turn into a cross-hair.
-* **Click-and-drag** to draw a box over the object you intend to track. This creates a detection. If you edit it again, you must save the edits (see above).
-* Use the `f` and `d` keys or the `left/right arrows` to advance forward and backward in time frame-by-frame.
-* Notice that when you change the current frame, your cursor becomes a cross-hair again.
-* left-click within the editable region of the final detection to complete track creation.
-* left-click the track again to select it in the Track list.
-* Double-click its type to open the list of available types, and select one.
-
-## Adding head and tail point annotations
-
-When annotating fish, it's possible to add additional detection-level annotations for head and tail position. It's best to first create a complete track of a fish before adding head/tail annotations.
-
-* Select the detection you wish to add head/tail points for by left-clicking it.
-* To begin with the head, tap the `h` (or `g`) key.
-* Your cursor will change to a cross-hair. Left-click to place a marker.
-* If the tail does not exist, your cursor will stay a cross-hair, and you can left-click the tail immediately to place another marker.
-
-Notes:
-
-* You can also start with the tail: tap `t` (or `y`)
-* You don't have to place both markers. Press any of `g`, `h`, `t`, or `y` to exit head/tail annotation mode. Your cursor will change back to a pointer.
-* You can modify an existing head/tail marker by tapping the corresponding key. If you place one marker and the other already exists, you will not be automatically prompted to place the second.
-* **To Delete a head/tail pair**, select a detection with existing markers and tap `q`.
-* When a track is selected, a meatball menu will appear in the top-right corner of the annotation window. All hotkey controls are also available on that menu.
-
-## Persisting changes
-
-Annotations are not automatically persisted to the VIAME server. To save your changes, click the save disk at the right side of the top toolbar.
diff --git a/docs/Web-Version.md b/docs/Web-Version.md
index 6c3c1121c..7229f2cbe 100644
--- a/docs/Web-Version.md
+++ b/docs/Web-Version.md
@@ -1,101 +1,64 @@
-# Web Version
-
-[Try our public server ➥](https://viame.kitware.com){ .md-button .md-button--primary }
+!!! info
-You can also [run your own](Server-Operator.md).
+ **VIAME Web is automatically updated at 2AM EST/EDT every Thursday.** If you are running a pipeline or training workflow during update, it will be interrupted and restarted.
-!!! warning
- **VIAME Web is automatically updated at 2AM EST/EDT every Thursday.**
+ Also note that pipelines and training jobs on our public server are **limited to 3 days of execution** time on 1 GPU. If you have a job that needs more time, please run it with the Desktop version, your own cloud environment like GCP, or [contact us for support](Support.md).
- If you are running a pipeline or training workflow during update, it will be interrupted and started over.
-## Features
-
-* upload and download data
-* permissions and sharing support for team collaboration
-* image and video annotation
-* pre-trained model pipeline execution
-* multi-dataset model training
+[Use our public server :material-open-in-new:](https://viame.kitware.com){ .md-button }
+[Deploy your own](Deployment-Overview.md){ .md-button }
## Register for an account
A user account is required to store data and run pipelines on viame.kitware.com.
1. Visit [viame.kitware.com](https://viame.kitware.com)
-1. Click **Register**
+1. Click ==Register==
## Uploading data
-* Open the DIVE Homepage, and navigate to the "Data" tab.
-* Click the blue "user home" button at the top left of the data browser.
-* Choose your "public" or "private" folder.
-* Click the blue "Upload" button that appears in the toolbar.
-* Select a video or multi-select a group of image frames.
-* If you already have `annotations.csv`, select that too.
-* Choose a name for the data, enter the optional video playback frame rate, and press start-upload.
-* In the data browser, a new blue "Launch Annotator" button will appear next to your data.
-
-### Zip Files
-
-A zip import can have one of the following file combinations:
-
-* One or more images, an optional annotation file, and an optional configuration file
-* One video with an optional annotation file and an optional configuration file
-* One or more folders which contain the above examples (These will be converted to separate datasets)
+
-Zip import also accepts zip archive files that were generated by DIVE Web's `Download -> Everything` export button.
+### Uploading individual files
+* Open the DIVE Homepage, and navigate to the ==:material-database: Data== tab.
+* Click the ==:material-home-account: User Home== button at the top left of the data browser.
+* Click either your ==:material-folder: Public== or ==:material-folder-lock: Private== folder, or make a new folder and navigate into it.
+* Click the ==:material-file-upload: Upload== button that appears in the toolbar.
+* Select a video or multi-select a group of image frames.
+ * Use ++ctrl++ or ++shift++ to click every file you want to upload.
+ * If you already have `annotations.csv` or an annotation or configuration JSON select that too.
+* Choose a name for the dataset and enter the optional playback frame rate or select other optional files.
+* Press ==Start Upload==
+* In the data browser, a new ==Launch Annotator== button will appear next to your data
+ * If you uploaded a video, it may need to transcode first
!!! info
All video uploaded to the web server will be transcoded as `mp4/h264`.
-## Downloading Data
-
-After creating/modifying annotations or running pipelines the data may be exported through two methods:
-
-* File Browser Data Download
-* Annotation Viewer Download
-
-### Annotation Folder Structure
-
-An annotation folder in DIVE will consist of three main components:
-
-* **Source Data** - The image-sequence files or video used in the annotation.
-* **Detections File** - The current detections/tracks for the annotation which are stored in either a CSV format or JSON
- * After the first edit to a project, the data will be stored in JSON, when downloading the current detection it will **always be downloaded in .csv format**
-* **Auxiliary Folder** - Backups of the detection file each time a save is done.
+### Uploading zip files
-### File Browser Data Download
-
-Data can be downloaded directly from the FileBrowser by clicking the checkmark to the left of a folder. This allows you to download the source images/video, the current detection file converted to .csv or everything including all backups of the detection files.
-
-**Filtered Detections** - The ability to export detections/tracks based on the currently set confidence filter. This will only export tracks/detections that are higher than the confidence filter set for the folder. This can be adjusted through the UI interface within the Annotation Viewer. For more information check:
-
-
-
-
-
-### Annotation Viewer Download
+A zip import can have one of the following file combinations:
-Within the annotation viewer itself there is the option to download the same data in the file browser.
+* One or more images, an optional annotation file, and an optional configuration file
+* One video with an optional annotation file and an optional configuration file
+* One or more folders which contain the above examples (These will be converted to separate datasets)
-These options are explained in **[Navigation Bar](UI-Navigation-Bar.md)** UI Docs.
+Zip import also accepts zip archive files that were generated by the ==Download== :material-arrow-right: ==Everything== export button.
-### Trained model downloads
+## Download or export data
-You can download your trained models through the administrative interface. This will be added to the normal interface in a future update.
+{ width=260px align=right }
-!!! warning
+Data can be downloaded from the FileBrowser by clicking the checkmark to the left of a dataset name. This allows you to download the source images/video, the current detection file converted to `.csv` or everything including all backups of the detection files.
- Use caution when modifying data through the admin interface
+* ==Image Sequence== or ==Video== will export the source media as a `.zip`
+* ==Detections== will export a [VIAME `.csv`](DataFormats.md#viame-csv) of annotations
+ * Checkbox options are explained in the [Navigation Bar Section](UI-Navigation-Editing-Bar.md#navigation-bar).
+* ==Configuration== will export a [DIVE configuration](DataFormats.md#dive-configuration-json) `.json`
+* ==Everything== will export all of the above.
-* Open the admin interface at [https://viame.kitware.com/girder](https://viame.kitware.com/girder) (or `myserver.com/girder` if you host your own instance)
-* Navigate to your personal workspace by clicking `My folders` under your user dropdown in the top right corner.
- * 
-* Navigate to the `VIAME/VIAME Training Results` folder and into the folder you wish to download
- * 
-* Select all items and download using the menu
- * 
+
## Sharing data with teams
@@ -105,12 +68,8 @@ This information will be relevant to teams where several people need to work on
By default, data uploaded to your personal user space follows these conventions.
-* Data in the `Public` folder is readable by all registered users, but writable only by you by default.
-* Data in the `Private` folder is only visible to you by default.
-
-!!! note
-
- You can share your entire public or private folder with team members.
+* Data in the ==:material-folder: Public== folder is readable by all registered users, but writable only by you by default.
+* Data in the ==:material-folder-lock: Private== folder is only visible to you by default.
### Working with teams
@@ -118,11 +77,11 @@ A common scenario is for a group to have a lot of shared data that several membe
For most teams, we recommend keeping data consolidated under a single account then following the sharing instructions below to make sure all team members have appropriate access.
-It's easiest to create a single parent directory to share and then put all individual datasets inside that parent.
+It's easiest to create a single parent folder to share and then put all individual datasets inside that parent.
!!! warning
- You should note that 2 people **cannot** work on the same video at the same time. Your team should coordianate on who will work on each dataset.
+ You should note that 2 people **cannot** work on the same video at the same time. Your team should coordinate on who will work on each dataset.
## Managing Permissions
@@ -131,33 +90,28 @@ DIVE uses Girder's [Permissions Model](https://girder.readthedocs.io/en/latest/u
There are four levels of permission a User can have on a resource.
* No permission (cannot view, edit, or delete a resource)
-* READ permission (can view and download resources)
-* WRITE permission (includes READ permission, can edit the properties of a resource)
-* ADMIN also known as own permission, (includes READ and WRITE permission, can delete the resource and also control access on it)
+* **READ** permission (can view and download resources)
+* **WRITE** permission (includes READ permission, can edit the properties of a resource)
+* **ADMIN** also known as own permission, (includes READ and WRITE permission, can delete the resource and also control access on it)
### Granting access to others
* Navigate to your data in the data browser.
-* Right click a dataset folder or directory to share.
+* **Right click** a dataset or a folder of datasets and choose ==Access Control==
-
+ 
-* Search for and select users you want to grant permissions for.
+* Search for and select users you want to grant access to.
* Select the correct permissions in the drop-down next to each user.
-
-
-* **Be sure to enable `Include subfolders` at the bottom of the dialog.**
-
-
+ 
-* Click save.
-
-These users should now be able to view and edit your data.
+* If this is a folder of datasets, enable the **Include Subfolders** switch.
+* Click ==Save==. These users should now be able to view and edit your data.
## Data Shared with you
-You can view data shared with you by selecting the 'SHARED WITH ME' Tab above the data browser.
+You can view data shared with you by selecting the ==:material-share-variant: Shared With Me== tab above the data browser.

@@ -172,6 +126,10 @@ A clone is a **shallow copy** of a dataset.
* It has its own annotations, and can be run through pipelines and shared with others.
* It references the media (images or video) of another dataset.
+!!! warning
+
+ Be careful when deleting data that has been cloned. Clones "point to" their source dataset for loading media, so if the source is deleted, all of its clones will fail to load.
+
### Clone use cases
1. When you want to use or modify data that doesn't belong to you, such as data from the shared training collection or from other users.
@@ -183,6 +141,6 @@ A clone is a **shallow copy** of a dataset.
### How to clone
-* Open the dataset you wish to clone in the viewer.
-* Click the `Clone` chip in the top toolbar next to the name
+* Open the dataset you wish to clone by clicking ==Launch Annotator==.
+* Click the ==:material-content-copy: Clone== button in the top navigation bar on the right side.
* Choose a name and location for the clone within your own workspace.
diff --git a/docs/extra.css b/docs/extra.css
new file mode 100644
index 000000000..8af4ba0b1
--- /dev/null
+++ b/docs/extra.css
@@ -0,0 +1,20 @@
+.md-typeset mark {
+ padding: 1px 4px;
+ border-radius: 3px;
+ color: white !important;
+ font-weight: bold;
+ border: 1px solid #424242;
+ background-color: #0277bd; /* DIVE primary color */
+}
+
+.md-typeset mark.error {
+ background-color: #F44336 !important; /* DIVE error color */
+}
+
+.md-typeset a {
+ text-decoration: underline;
+}
+
+.md-typeset a.md-button {
+ text-decoration: none;
+}
diff --git a/docs/images/Banner.png b/docs/images/Banner.png
index d24a4bba1..b2dfcee79 100644
Binary files a/docs/images/Banner.png and b/docs/images/Banner.png differ
diff --git a/docs/images/FileBrowser/DownloadFiles.png b/docs/images/FileBrowser/DownloadFiles.png
index 1add2e2a6..a595f4a31 100644
Binary files a/docs/images/FileBrowser/DownloadFiles.png and b/docs/images/FileBrowser/DownloadFiles.png differ
diff --git a/docs/images/FileBrowser/UploadDialog.png b/docs/images/FileBrowser/UploadDialog.png
new file mode 100644
index 000000000..ee0bef51f
Binary files /dev/null and b/docs/images/FileBrowser/UploadDialog.png differ
diff --git a/docs/images/FileBrowser/UploadDialogOpen.png b/docs/images/FileBrowser/UploadDialogOpen.png
new file mode 100644
index 000000000..4c1e72c0d
Binary files /dev/null and b/docs/images/FileBrowser/UploadDialogOpen.png differ
diff --git a/docs/images/FileBrowser/button-home.png b/docs/images/FileBrowser/button-home.png
new file mode 100644
index 000000000..a26e5a51c
Binary files /dev/null and b/docs/images/FileBrowser/button-home.png differ
diff --git a/docs/images/General/Kitware-Logo-Stacked.png b/docs/images/General/Kitware-Logo-Stacked.png
new file mode 100644
index 000000000..627ee727c
Binary files /dev/null and b/docs/images/General/Kitware-Logo-Stacked.png differ
diff --git a/docs/images/General/Kitware-Mark.png b/docs/images/General/Kitware-Mark.png
new file mode 100644
index 000000000..67ce8d0fa
Binary files /dev/null and b/docs/images/General/Kitware-Mark.png differ
diff --git a/docs/images/General/Kitware_Logo_HighRes_thumbnail.jpg b/docs/images/General/Kitware_Logo_HighRes_thumbnail.jpg
new file mode 100644
index 000000000..e8f251b48
Binary files /dev/null and b/docs/images/General/Kitware_Logo_HighRes_thumbnail.jpg differ
diff --git a/docs/images/General/logo.png b/docs/images/General/logo.png
new file mode 100644
index 000000000..ed26e58a9
Binary files /dev/null and b/docs/images/General/logo.png differ
diff --git a/docs/images/General/web-annotator.png b/docs/images/General/web-annotator.png
index eb7fa1f93..af3c66a62 100644
Binary files a/docs/images/General/web-annotator.png and b/docs/images/General/web-annotator.png differ
diff --git a/docs/images/General/web-browse.png b/docs/images/General/web-browse.png
index 380c03e3b..7a91f9d3f 100644
Binary files a/docs/images/General/web-browse.png and b/docs/images/General/web-browse.png differ
diff --git a/docs/images/NavBar/DataIcon.png b/docs/images/NavBar/DataIcon.png
deleted file mode 100644
index 5d7c31518..000000000
Binary files a/docs/images/NavBar/DataIcon.png and /dev/null differ
diff --git a/docs/images/NavBar/DownloadMenu.png b/docs/images/NavBar/DownloadMenu.png
deleted file mode 100644
index 851f7eb2f..000000000
Binary files a/docs/images/NavBar/DownloadMenu.png and /dev/null differ
diff --git a/docs/images/NavBar/HelpScreen.png b/docs/images/NavBar/HelpScreen.png
deleted file mode 100644
index 19ec9de0a..000000000
Binary files a/docs/images/NavBar/HelpScreen.png and /dev/null differ
diff --git a/docs/images/NavBar/Navbar.png b/docs/images/NavBar/Navbar.png
deleted file mode 100644
index 02d8a1af4..000000000
Binary files a/docs/images/NavBar/Navbar.png and /dev/null differ
diff --git a/docs/images/NavBar/RunPipelinesMenu.png b/docs/images/NavBar/RunPipelinesMenu.png
deleted file mode 100644
index 4e8d22139..000000000
Binary files a/docs/images/NavBar/RunPipelinesMenu.png and /dev/null differ
diff --git a/docs/images/NavBar/SaveIcon.png b/docs/images/NavBar/SaveIcon.png
deleted file mode 100644
index 1adaacbc0..000000000
Binary files a/docs/images/NavBar/SaveIcon.png and /dev/null differ
diff --git a/docs/images/Timeline/EventViewerDefault.png b/docs/images/Timeline/EventViewerDefault.png
index 961f7308c..700775f51 100644
Binary files a/docs/images/Timeline/EventViewerDefault.png and b/docs/images/Timeline/EventViewerDefault.png differ
diff --git a/docs/images/Timeline/EventViewerInterpolatedTrack.png b/docs/images/Timeline/EventViewerInterpolatedTrack.png
index 6b41f475c..ecd461229 100644
Binary files a/docs/images/Timeline/EventViewerInterpolatedTrack.png and b/docs/images/Timeline/EventViewerInterpolatedTrack.png differ
diff --git a/docs/images/Timeline/EventViewerSelectedTrack.png b/docs/images/Timeline/EventViewerSelectedTrack.png
index 264c99093..c47b5e44a 100644
Binary files a/docs/images/Timeline/EventViewerSelectedTrack.png and b/docs/images/Timeline/EventViewerSelectedTrack.png differ
diff --git a/docs/images/Timeline/TimelineView.png b/docs/images/Timeline/TimelineView.png
index c639c5692..148900e1e 100644
Binary files a/docs/images/Timeline/TimelineView.png and b/docs/images/Timeline/TimelineView.png differ
diff --git a/docs/images/TypeAddDialog.png b/docs/images/TypeAddDialog.png
index 24291331e..21d2b0429 100644
Binary files a/docs/images/TypeAddDialog.png and b/docs/images/TypeAddDialog.png differ
diff --git a/docs/images/TypeEditor.png b/docs/images/TypeEditor.png
index 84eea5226..66014c3d4 100644
Binary files a/docs/images/TypeEditor.png and b/docs/images/TypeEditor.png differ
diff --git a/docs/images/TypeList.png b/docs/images/TypeList.png
index ef205780e..5baaea99b 100644
Binary files a/docs/images/TypeList.png and b/docs/images/TypeList.png differ
diff --git a/docs/images/TypeSettings.png b/docs/images/TypeSettings.png
index c9d35d612..e168f2596 100644
Binary files a/docs/images/TypeSettings.png and b/docs/images/TypeSettings.png differ
diff --git a/docs/images/UIView/AnnotationViewHighlight.png b/docs/images/UIView/AnnotationViewHighlight.png
index b1ef1d814..723c5bb62 100644
Binary files a/docs/images/UIView/AnnotationViewHighlight.png and b/docs/images/UIView/AnnotationViewHighlight.png differ
diff --git a/docs/images/UIView/NavBarHighlight.png b/docs/images/UIView/NavBarHighlight.png
index 7c074650e..36b5d2e7d 100644
Binary files a/docs/images/UIView/NavBarHighlight.png and b/docs/images/UIView/NavBarHighlight.png differ
diff --git a/docs/images/UIView/ThresholdHighlight.png b/docs/images/UIView/ThresholdHighlight.png
new file mode 100644
index 000000000..7402ca07a
Binary files /dev/null and b/docs/images/UIView/ThresholdHighlight.png differ
diff --git a/docs/images/UIView/TimelineHighlight.png b/docs/images/UIView/TimelineHighlight.png
index 18495019d..139a31ec4 100644
Binary files a/docs/images/UIView/TimelineHighlight.png and b/docs/images/UIView/TimelineHighlight.png differ
diff --git a/docs/images/UIView/TrackListHighlight.png b/docs/images/UIView/TrackListHighlight.png
index 4469169b0..9effc8381 100644
Binary files a/docs/images/UIView/TrackListHighlight.png and b/docs/images/UIView/TrackListHighlight.png differ
diff --git a/docs/images/UIView/TypeListHighlight.png b/docs/images/UIView/TypeListHighlight.png
index 66203105c..7fd0c5d09 100644
Binary files a/docs/images/UIView/TypeListHighlight.png and b/docs/images/UIView/TypeListHighlight.png differ
diff --git a/docs/images/UIView/UIFullView.png b/docs/images/UIView/UIFullView.png
deleted file mode 100644
index 2c5a129d5..000000000
Binary files a/docs/images/UIView/UIFullView.png and /dev/null differ
diff --git a/docs/images/UIView/UIFullViewHighlight.png b/docs/images/UIView/UIFullViewHighlight.png
index 686d65aff..28db589f0 100644
Binary files a/docs/images/UIView/UIFullViewHighlight.png and b/docs/images/UIView/UIFullViewHighlight.png differ
diff --git a/docs/index.md b/docs/index.md
index c11ed421f..cb40e1050 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,27 +1,63 @@
# DIVE Documentation
-This is the user documentation for DIVE, an open-source annotation and analysis platform which can be run either as a web or desktop application. DIVE was originally built for, and has deep integration with, the [VIAME toolkit](https://www.viametoolkit.org/), but it can also be integrated with other automated analytics.
+
+
+
+
-[:fontawesome-solid-compass: Try the web version](Web-Version.md){ .md-button } [:fontawesome-solid-desktop: Get the desktop app](Dive-Desktop.md){ .md-button }
-## Get Help
+This is the documentation site for DIVE, a [**free and open-source**](https://www.kitware.com/open-philosophy/) annotation and analysis platform for web and desktop built by [Kitware](https://kitware.com). DIVE integrates with the [VIAME toolkit](https://www.viametoolkit.org/), but it can also be used on its own.
+
+[:material-compass: Try the web version](Web-Version.md){ .md-button } [:material-desktop-mac: Get the desktop app](Dive-Desktop.md){ .md-button } [:material-lifebuoy: Get support](Support.md){ .md-button }
-For feedback, problems, questions, or feature requests, please email `viame-web@kitware.com`. Our team would be happy to hear from you!

-## Features
+## Feature Comparison
+
+| | Web | Desktop |
+|---------|-----|---------|
+| **Data Support** |
+Load your own images and videos | ✔️ | ✔️
+| Image and video transcoding | ✔️ | ✔️
+| Import using image lists | ❌ | ✔️
+Load annotations from [supported formats](DataFormats) | ✔️ | ✔️
+Create new object and track annotation | ✔️ | ✔️
+Annotation export | ✔️ | ✔️
+Dataset export for portability between web and desktop | ✔️ | ✔️
+Permissions and sharing support for team collaboration | ✔️ | ❌
+| **Annotation Support** |
+Bounding boxes | ✔️ | ✔️
+Polygons | ✔️ | ✔️
+Head/Tail lines | ✔️ | ✔️
+Linear interpolation | ✔️ | ✔️
+Track split | ✔️ | ✔️
+Multi-way track merge | ✔️ | ✔️
+| **VIAME Integration Support** |
+Run VIAME object detection and tracking | ✔️ | ✔️
+Run VIAME detector and tracker **training** | ✔️ | ✔️
+VIAME multi-camera pipelines | ❌ | ✔️
+Manual refinement of auto-generated annotations | ✔️ | ✔️
+
+## Concepts and Definitions
+
+**DIVE** is the annotator and data management software system. It is our name for the code and capabilities, including both web and desktop, that can be deployed and configured for a variety of needs.
+
+**VIAME** (Video and Image Analytics for Marine Environments) is a suite of computer vision tools for object detection, tracking, rapid model generation, and many other types of analysis. Get more info at [viametoolkit.org](https://www.viametoolkit.org/)
+
+**VIAME Web** is the *specific* DIVE Web deployment at [viame.kitware.com](https://viame.kitware.com). It includes a web-based annotator with the capabilities to run VIAME workflows on user-provided data. You may deploy the web system into your own lab or cloud environment.
+
+**Detection** - A single annotation. A detection could be associated with a point in time within a track, or it could have no temporal association.
+
+**Features** - Bounding box, polygon, head/tail points or other visible elements of a detection.
+
+**Track** - A collection of detections spanned over multiple frames in a video or image sequence. Tracks include a start and end time and can have gap periods in which no detections exist.
+
+**Types** - Every track (or detection, if tracks aren't applicable) has one or more types that should be used to annotate the primary characteristic you are interested in classifying. Types are typically used to train a single or multi-class classifier. A track (or detection) may have multiple types with confidence values associated.
-Current capabilities of DIVE include:
+**Frame** - A single image or point in time for a video or image sequence.
-* User import of frame images or video.
-* Playback of existing annotation data.
-* Manual creation of new annotations.
-* Automatic object detection and tracking of user-imported data.
-* Manual user refinement of automatically generated tracks
-* Export of generated annotations.
+**Key Frame** - Every manually drawn annotation is considered a keyframe, and all automated pipelines produce keyframes. Only keyframes can have attributes. Key frame detections are differentiated from interpolated detections, which are the implicit bounding boxes you see when linear interpolation is enabled.
-## Definitions
+**Interpolation** - The implicit bounding boxes between keyframes in a track.
-* **DIVE** is the annotator and data management software system. It is our name for the code and capabilities, including both web and desktop, that can be deployed and configured for a variety of needs.
-* **VIAME** (Video and Image Analytics for Marine Environments) is a suite of computer vision tools for object detection, tracking, rapid model generation, and many other types of analysis. Get more info at [viametoolkit.org](https://www.viametoolkit.org/)
-* **VIAME Web** is the *specific* DIVE Web deployment at [viame.kitware.com](https://viame.kitware.com). It includes a web-based annotator with the capabilities to run VIAME workflows on user-provided data. You may deploy the web system into your own labratory or cloud environment.
+**Attributes** - Attributes are free-form secondary characteristics on both tracks and detections. For example, a `fish` type track may have an `is_adult` boolean attribute.
diff --git a/mkdocs.yml b/mkdocs.yml
index b09373807..4933aca37 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -9,12 +9,22 @@ repo_url: https://github.com/Kitware/dive
theme:
name: material
highlightjs: true
- icon:
- logo: fontawesome/solid/fish
+ logo: images/General/Kitware-Mark.png
+ palette:
+ primary: black
+ features:
+ - navigation.tabs
+ - navigation.tabs.sticky
+ - navigation.expand
+
+extra_css: [extra.css]
markdown_extensions:
- admonition
- attr_list
+ - md_in_html
+ - pymdownx.keys
+ - pymdownx.mark
- pymdownx.highlight:
linenums: true
- pymdownx.superfences
@@ -22,33 +32,45 @@ markdown_extensions:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
+extra:
+ social:
+ - icon: fontawesome/brands/github
+ link: https://github.com/kitware/dive
+ - icon: fontawesome/brands/docker
+ link: https://hub.docker.com/r/kitware/viame-web
+ - icon: fontawesome/brands/discourse
+ link: https://discourse.kitware.com/c/viame-dive/17
+
nav:
- - Home: index.md
- - Screenshots: Screenshots.md
- - Web Version: Web-Version.md
- - Desktop Version: Dive-Desktop.md
- - Annotation Quickstart: Annotation-QuickStart.md
- - Mouse and Keyboard Shortcuts: Mouse-Keyboard-Shortcuts.md
+ - User Guide:
+ - Home: index.md
+ - Web Version: Web-Version.md
+ - Desktop Version: Dive-Desktop.md
+ - Annotation Quickstart: Annotation-QuickStart.md
+ - User Interface Guide:
+ - Introduction: Annotation-User-Interface-Overview.md
+ - Navigation and Editing Bar: UI-Navigation-Editing-Bar.md
+ - Annotation Window: UI-Annotation-View.md
+ - Type List: UI-Type-List.md
+ - Track List: UI-Track-List.md
+ - Timeline: UI-Timeline.md
+ - Attributes: UI-Attributes.md
+ - Keyboard Shortcut Reference: Mouse-Keyboard-Shortcuts.md
+ - Advanced features:
+ - Pipeline Import and Export: Pipeline-Import-Export.md
+ - Command Line Tools: Command-Line-Tools.md
+ - Screenshots: Screenshots.md
+ - Support: Support.md
- Pipelines & Training: Pipeline-Documentation.md
- - Annotation Interface Guide:
- - Introduction: Annotation-User-Interface-Overview.md
- - Navigation Bar: UI-Navigation-Bar.md
- - Edit Bar: UI-Edit-Bar.md
- - Annotation View: UI-Annotation-View.md
- - Type List: UI-Type-List.md
- - Track List: UI-Track-List.md
- - Interpolation: UI-Interpolation.md
- - Attributes: Attributes.md
- - Deployment Documentation:
+ - Data Formats: DataFormats.md
+ - Administrator Guide:
- Deployment Options Overview: Deployment-Overview.md
- Provisioning Google Cloud: Deployment-Provision.md
- Running with Docker Compose: Deployment-Docker-Compose.md
- Cloud Storage Integration: Deployment-Storage.md
- - Advanced features:
- - Custom Pipeline Upload: Pipeline-Upload.md
- - Command Line Tools: Command-Line-Tools.md
- - Data Formats: DataFormats.md
+ - REST API Specification: https://viame.kitware.com/api/v1
- Frequently Asked Questions: FAQ.md
+ - Support: Support.md
google_analytics:
- UA-6042509-43
diff --git a/server/tox.ini b/server/tox.ini
index d6f290116..78aa8a23e 100644
--- a/server/tox.ini
+++ b/server/tox.ini
@@ -61,7 +61,7 @@ skip_install = true
changedir = {toxinidir}/..
deps =
mkdocs
- mkdocs-material
+ mkdocs-material>=8.2.1
pymdown-extensions
commands =
mkdocs serve {posargs}