Repository navigation
v2.0 — video and object tracks
Download & run (Windows)
- Download YOLO-Annotator-2.0-windows.zip below and unpack it.
- Install Python 3.12+ (3.13 recommended) with "Add python.exe to PATH".
- Double-click
setup_venv.batonce (creates.venv, installs pinned dependencies, ~150 MB). - Start with
run.bat.
For the AI features (YOLO pre-labelling, automatic tracking, SAM): run setup_ml_env.bat once — a separate .venv-ml with PyTorch + Ultralytics (CUDA 12.8 build if an NVIDIA GPU is found, ~3 GB; --cpu for the CPU build) — or point ML → ML Settings… at an existing conda / venv with Ultralytics. The annotator itself never imports PyTorch.
User guide (RU): About.md inside the archive.
What's new in v2.0 — video and object tracks
Video as frames
- File → Import Video… (or drop a video file on the image list) extracts every N-th frame of a chosen time range as JPEG images (default ≈ 5 per second). The frames are ordinary project images, so every tool, SAM, pre-labelling and review work on them.
- A frame strip under the canvas shows which frames have annotations, the active track and its keyframes; click or drag it to go to a frame.
Tracks with interpolation
- T turns the selected annotation into a track. On a later frame, Shift+T adds a keyframe (a copy you drag onto the object).
- The frames in between are interpolated: boxes, OBBs, polygons and polylines (resampled when the point count differs), points and poses.
- Editing an in-between frame makes it a keyframe. Every edit, delete, undo and redo re-interpolates.
- Shift+A / Shift+D jump between keyframes. Video → Delete Active Track… removes a track from all frames.
- Track ids are shown on the canvas and in the Annotations panel (
#3, keyframe#3◆).
Automatic tracking with your YOLO model
- In ML → Pre-label Dataset…, choose a video (🎞) and tick Track objects (video). The model runs with a tracker (ByteTrack or BoT-SORT) over the frames in order.
- Every object becomes a project track and every detection a keyframe (🤖, reviewed with R / Shift+R as usual). Frames where the model missed the object are interpolated.
- Works with detect, segment, OBB and pose models, and with Outlines via SAM (a detector plus SAM gives tracks of polygons or masks).
- A new run replaces the unreviewed keyframes of the previous one. Accepted ones stay.
- Tip: for tracking, import every 1st–3rd frame. On sparse frames, fast objects get lost.
Export and split
- New export format MOTChallenge:
gt/gt.txt+seqinfo.ini+img1/per video. - Split Dataset can keep all frames of a video in one split, so near-identical frames don't leak between train and val.
Editing
- Select tool: drag the body of an annotation to move it as a whole: box, OBB, polygon, polyline, point or pose. Before, only corners and vertices could be dragged. The annotation stops at the image edge, and a click with a small jitter doesn't move anything.
Upgrading from 1.9: unpack into a new folder and run setup_venv.bat again. Projects (.annproj) are compatible. For the AI features, keep using your existing ML environment (in ML → ML Settings… choose the python.exe of the old folder's .venv-ml\Scripts, or your conda env) or run setup_ml_env.bat in the new folder. Don't copy .venv-ml between folders. Tracking needs the small lap package: a new .venv-ml gets it automatically, while in an existing environment Ultralytics installs it on the first tracking run (internet needed), or you can run pip install lap yourself.