Skip to content

Releases: ILYAGRISH/yolo-annotator

v2.1 — time events on video

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 09 Oct 08:58

Download & run (Windows)

  1. Download YOLO-Annotator-2.1-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. 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.1 — time events on video

Besides objects on a frame, you can now mark what happens and when: "from frame 120 to frame 180 — lane change", "frame 300 — fall". Use it for action recognition, temporal action localization, finding moments in a video or counting events.

Marking events

  • Press E on the first frame of the event and E again on its last frame. Ending on an earlier frame works too: the bounds are put in order.
  • Shift+E cancels a started event.
  • Event types are shared by all videos of the project and each has its own colour. Pick the type under the frame strip, or create one there with + New event type…. Video → Event Types… renames, recolours and deletes them. If no type exists yet, the first event asks for a name.
  • Events about an object: select an annotation of a track (e.g. car #12) before the first E, and the event is linked to that object.

Seeing and editing them

  • Event strip under the frame strip:
    • each event is a coloured bar with its name, and overlapping events go to separate rows;
    • a started event is hatched up to the current frame;
    • click selects an event, double click edits it, hovering shows type, frames, time, duration, track and note.
  • Events tab:
    • all events of the video (type, frames, time, track, note); the ones on the current frame are in bold;
    • double click goes to an event;
    • Start here / End here move a bound of the selected event to the current frame;
    • Edit… changes type, first and last frame, object and note;
    • Delete (or the Delete key in the list) removes the selected event.
  • Video → Previous / Next Event jumps between event starts.
  • Ctrl+Z undoes adding, editing and deleting while you stay on the frame. E / Shift+E can be reassigned in Project Settings → Hotkeys.

Export: Video Events

  • events.csv: one row per event — video, type, first / last frame, start / end / duration in seconds, track, note, split.
  • activitynet.json: ActivityNet 1.3, with segments in seconds and subsets taken from the dataset split.
  • event_types.txt: the type names.
  • With Copy videos and frames, the export also includes the source videos (videos/) and their extracted frames (frames/<video>/).

Upgrading from 2.0: unpack into a new folder and run setup_venv.bat again. Projects (.annproj) are compatible: event types are added to project.json, and events are stored in events/<video>.json. 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.

v2.0 — video and object tracks

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 09 Oct 08:16

Download & run (Windows)

  1. Download YOLO-Annotator-2.0-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. 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.

v1.9 — Review of pre-labelled annotations

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 08 Oct 21:00

Download & run (Windows)

  1. Download YOLO-Annotator-1.9-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

For the AI features (YOLO pre-labelling and 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 v1.9

Review of pre-labelled annotations

A model makes mistakes, so every 🤖 annotation should be looked at — the app now remembers what has been reviewed and walks you through the rest.

  • Unreviewed model annotations stand out: dashed outline, paler fill and 🤖 on the canvas, an orange row in the Annotations panel, 🤖N next to each image in the image list.
  • New Review menu:
    • R accepts the selected annotation and moves to the next unreviewed one — press R, R, R…, delete what's wrong;
    • Shift+R accepts everything on the image and jumps to the next image to review;
    • U goes there without accepting;
    • "Mark selected as unreviewed" undoes a mistaken accept.
  • Editing accepts too: move a box or fix a vertex and the annotation counts as reviewed (one Ctrl+Z restores both). Accepted ones show ✓🤖 and who accepted them (File → Your Name).
  • Image filter 🤖 Unreviewed, QC rule Unreviewed (double-click jumps to it) and a 🤖 Review line in the statistics.
  • Export → Skip unreviewed 🤖 annotations exports only what a person has checked (off by default).
  • A new pre-labelling run (replace mode, Ctrl+L) and Remove Model Annotations now keep accepted annotations, like manual ones.
  • Keys can be changed in Project Settings → Hotkeys. The status is stored in annotation meta — older projects open unchanged.

Quality

  • Continuous integration: all test suites (~900 checks) now run on every push on Windows and Ubuntu with Python 3.12 and 3.13.
  • Fix: setup_venv.bat accepted Python 3.10 / 3.11, but the pinned NumPy 2.5 needs Python 3.12+ — installation on 3.10/3.11 failed. The installer now looks for 3.12+ and says so.

Upgrading from 1.8: unpack into a new folder and run setup_venv.bat again — projects (.annproj) are compatible. For pre-labelling and SAM, 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.

v1.8 — SAM: label by clicking, outlines for boxes

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 08 Oct 19:18

Download & run (Windows)

  1. Download YOLO-Annotator-1.8-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended; 3.10 / 3.11 do not work — NumPy 2.5 needs 3.12) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

For the AI features (YOLO pre-labelling and 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.

SAM weights: one file, e.g. sam2.1_b.pt (~155 MB, recommended) or sam2.1_t.pt (~75 MB, faster / CPU) from ultralytics/assets releases; choose it in ML → ML Settings… or on first use.

User guide (RU): About.md inside the archive.

What's new in v1.8

SAM — label by clicking

  • New ✧ SAM tool (I): click an object and Segment Anything outlines it. Right-click removes a wrongly included part, drag gives a box hint, Backspace undoes a click, Enter accepts into the current class (one Ctrl+Z).
  • The class type decides the result: polygon, brush mask, box, tight rotated OBB or point.
  • The image is encoded once when opened — every click then takes ~20 ms on an RTX 5060 Ti. Works with SAM 2.1 / SAM 2 / SAM / MobileSAM weights; no new dependencies.
  • SAM annotations count as manual ones (no 🤖) — you chose the object.

SAM outlines for boxes

  • ML → Boxes → Outlines with SAM… turns existing boxes of a class — hand-drawn or from a detector — into polygons, brush masks or tight rotated boxes of another class: current image, all images or a split. One SAM pass per image for all its boxes; a second run skips boxes already outlined; boxes can be kept or deleted; the target class can be created right in the dialog.
  • Pre-label Dataset → Outlines via SAM: a plain detector now fills polygon / mask / OBB classes with real outlines (also with Ctrl+L).
  • "+ new class" in the mapping table offers every fitting type (a detector: bbox, polygon, mask, OBB).

Other

  • The type of a class can be changed while it has no annotations (Schema editor); reassigning the annotations of a deleted class is limited to classes of the same type.
  • Fix: the Delete key removed the selected annotation only with the Select tool — now with any tool.

Upgrading from 1.7.x: unpack into a new folder and run setup_venv.bat again — projects (.annproj) are compatible. For pre-labelling and SAM, 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.

v1.7.1 — YOLO export fixes

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 08 Oct 17:09

Download & run (Windows)

  1. Download YOLO-Annotator-1.7.1-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended; 3.10 / 3.11 do not work — NumPy 2.5 needs 3.12) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

Optional pre-labelling with a YOLO model: run setup_ml_env.bat once (or point ML → ML Settings… at an existing conda / venv with Ultralytics) — see the v1.7 notes.

User guide (RU): About.md inside the archive.

What's fixed in v1.7.1

  • YOLO OBB export on non-square images. Rotated boxes were rotated in normalised coordinates, so on a non-square image the exported corners did not match the box drawn on the canvas. They are now rotated in pixels, exactly as drawn. Also applies to the auto-saved labels/.
  • YOLO class ids after deleting a class. Labels used the project class id while data.yaml lists names in a row, so deleting a class in the middle of the schema shifted the names and produced ids ≥ nc. All YOLO exports, multi-task export and labels/ now use indices 0…nc−1 in the order of names.
  • Docs: recipe for creating a new conda environment for pre-labelling.

If you trained on YOLO OBB exports of non-square images, or exported after deleting a class, please re-export your dataset.

Upgrading from 1.7: unpack into a new folder and run setup_venv.bat again — projects (.annproj) are compatible. For pre-labelling, either keep using your existing .venv-ml (in ML → ML Settings… choose the python.exe inside the old folder's .venv-ml\Scripts) or run setup_ml_env.bat in the new folder — don't copy .venv-ml between folders.

v1.7 — Pre-labelling with your YOLO model

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 08 Oct 16:50

Download & run (Windows)

  1. Download YOLO-Annotator-1.7-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended; 3.10 / 3.11 do not work — NumPy 2.5 needs 3.12) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

Optional — pre-labelling with a YOLO model: run setup_ml_env.bat once. It creates a separate .venv-ml with PyTorch + Ultralytics (CUDA 12.8 build if an NVIDIA GPU is found, ~3 GB; setup_ml_env.bat --cpu for the CPU build). Or point ML → ML Settings… at any existing conda / venv with Ultralytics. The annotator itself never imports PyTorch.

User guide (RU): About.md inside the archive.

What's new in v1.7

Pre-labelling with your YOLO model

  • ML → Pre-label Dataset… (Ctrl+Shift+L) runs any Ultralytics model — detect, segment, OBB, pose, classify — over all images or one split, with progress and Stop. Ctrl+L pre-labels the current image; one Ctrl+Z undoes it.
  • The project class decides the geometry: a segmentation model can fill polygon or brush-mask classes, a detector fills box / OBB / point classes, a pose model fills keypoint skeletons.
  • Class mapping by name, by hand in a searchable table, or create the selected / all missing classes with the right type (17-point pose models get the COCO skeleton; the empty default object class of a new project is replaced, so class ids start at 0).
  • Images that already have annotations: skip, replace earlier model annotations (manual ones kept), or add.
  • Model annotations are marked 🤖 0.87 (confidence) in the Annotations panel; ML → Remove Model Annotations… clears them on one image or everywhere.
  • Multi-user projects: only the images assigned to you are touched.
  • ~25 ms per image on an RTX 5060 Ti.

ML backend

  • Models run in a separate process with its own Python environment — PyTorch never enters the annotator, and a crash or out-of-memory in a model cannot take the app down.
  • ML Settings…: choose the interpreter, Check it (Python, PyTorch, Ultralytics, GPU), test-load a model. Status-bar indicator ML: off / ready / busy / error. Off by default — nothing starts until you use it.

Upgrading from 1.6: unpack into a new folder and run setup_venv.bat again — projects (.annproj) are compatible.

v1.6 — Shift-lines, pose editing, fixes

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 08 Oct 09:35

Download & run (Windows)

  1. Download YOLO-Annotator-1.6-windows.zip below and unpack it.
  2. Install Python 3.12+ (3.13 recommended; 3.10 / 3.11 do not work — NumPy 2.5 needs 3.12) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

User guide (RU): About.md inside the archive.

What's new in v1.6

Editing

  • Shift+click straight lines in Brush and Semantic brush (Photoshop-style): a straight stroke from the end of the previous one, chainable, with a dashed guide while Shift is held.
  • Pose keypoints can be dragged with the Select tool — the nearest keypoint is picked, its visibility is kept.

Fixes

  • Crash when clicking a keypoint of a selected pose.
  • Crash in the Class Schema Editor when deleting the last class; deleting or moving a class could also copy unsaved skeleton edges into its neighbour.
  • Dragging a vertex or handle with Select erased the annotation's attributes and subclass.
  • A pose could not be selected where two keypoints overlap (e.g. head and neck).
  • The Annotations panel showed a meaningless "(0 pts)" for masks, boxes, OBBs, points and poses.

Upgrading from 1.5: unpack into a new folder and run setup_venv.bat again — projects (.annproj) are compatible.

v1.5 — Semantic & panoptic segmentation

Choose a tag to compare

@ILYAGRISH ILYAGRISH released this 03 Oct 20:30

Download & run (Windows)

  1. Download YOLO-Annotator-1.5-windows.zip below and unpack it.
  2. Install Python 3.10+ (3.13 recommended) with "Add python.exe to PATH".
  3. Double-click setup_venv.bat once (creates .venv, installs pinned dependencies, ~150 MB).
  4. Start with run.bat.

User guide (RU): About.md inside the archive.

What's new in v1.5

Semantic segmentation mode

  • New class type semantic and the Semantic brush tool (S): the brush is the class — all strokes of a class merge into one region layer per image.
  • Each stroke is committed on mouse release and undone in one step; layers never overlap (overwrite / keep / erase modes).
  • Layers render pixel-exact (holes and disconnected parts included) underneath instance annotations.

Panoptic segmentation

  • Per-class Panoptic role (auto / thing / stuff) in the Class Schema Editor.
  • New COCO Panoptic export: panoptic_<split>.json + RGB segment-id PNG per image; stuff below, things on top.

Export

  • COCO Instances → "Masks as": polygons or RLE — pixel-exact masks with holes, pycocotools-compatible (no extra dependency).
  • Every region of a brush mask is now exported (Semantic Masks, YOLO Segment, COCO, LabelMe).

Quality of life

  • File → Open Recent — the last 10 projects.
  • Brush size ring under the cursor for Brush and Semantic brush.
  • Deploy folder / release archive with setup_venv.bat and run.bat; dependency versions pinned.
  • Unused mask files are cleaned up automatically (two-stage, safe for multi-user projects).

Fixes

  • Brush masks were missing from COCO Instances export.
  • OBB rotation was ignored in COCO export.
  • YOLO Detect with the Convert policy crashed on brush masks.
  • The Annotations panel was emptied after editing the class schema.
  • requirements.txt was missing NumPy and OpenCV.

License

The project is now released under GPL-3.0.


Что нового в v1.5 (кратко)

  • Семантический режим: кисть = класс, все мазки класса сливаются в одну область; клавиша S.
  • Panoptic-сегментация: роль класса thing/stuff, экспорт COCO Panoptic.
  • COCO: маски полигонами или RLE — точно по пикселям, с дырками.
  • Файл → Открыть недавние, круг размера кисти, готовый архив для установки.
  • Исправлены ошибки экспорта COCO/YOLO Detect и пустая панель аннотаций после правки схемы.
  • Лицензия GPL-3.0.

Установка: скачать архив ниже → setup_venv.bat → run.bat. Руководство — About.md в архиве.