Skip to content

Releases: wkentaro/labelme

v6.3.1

27 May 12:56

Choose a tag to compare

LabelMe v6.3.1 fixes a paint-time crash when create_mode is switched mid-drawing.

https://www.youtube.com/watch?v=5pEYMf53OXY

Changelog

Fixed

  • Fixed a crash when switching drawing modes while a shape was partially drawn; the in-progress shape is now retyped when both modes accept a single click as a starting point, and cancelled otherwise. Degenerate shapes (zero-area rectangle, zero-length line, polygon with fewer than 3 distinct vertices) are now rejected at the point of completion (#2103)

Install

pip install -U labelme==6.3.1
# or
uv tool install labelme==6.3.1

Full Changelog: v6.3.0...v6.3.1

v6.3.0

19 May 12:55
62219cd

Choose a tag to compare

LabelMe v6.3 sharpens AI-assisted annotation. A single AI-Box or AI-Points prompt no longer stacks redundant predictions on the same object, whether they came from nested SAM granularities or from an area you have already labeled.

Highlights

Smarter AI-assisted annotation

AI-Box, AI-Points, and AI-Text now run two suppression passes before any shape is created:

  1. Mask-aware NMS (#2088). A greedy per-label pass over SAM detections that uses both mask IoU and intersection-over-smaller (containment). The same region returned at multiple nested granularities (e.g. a tree-cluster mask and a single-tree mask that share a bbox) collapses to one shape. Plain bbox NMS cannot deduplicate nested masks that share a bbox; mask-aware NMS can.
  2. Overlap-with-existing suppression (#2087). A propagated AI detection whose mask IoU vs an already-annotated shape is >= 0.5 is dropped before becoming a shape. Drawing an AI-Box or clicking AI-Points over an object you have already annotated no longer duplicates it. Works against rectangle, polygon, oriented_rectangle, circle, and mask outputs.

Together these turn a noisy SAM pass into a clean, additive one: only genuinely new objects reach the label list.

Changelog

Added

  • Added mask-aware suppression that collapses redundant SAM detections at multiple granularities into a single shape per region (#2088)
  • Added suppression of AI detections whose mask overlaps an already-annotated shape (mask overlap >= 0.5), preventing duplicate annotations when prompting over existing labels (#2087)

Fixed

  • Fixed missing status bar feedback and disabled edit-mode button when AI inference produces no new shapes (#2083)
  • Fixed AI detections with empty segmentation masks being emitted as transparent shapes; they are now dropped (#2094)
  • Fixed vertex-drag handles appearing on mask shapes, which previously shifted the bounding box without moving the underlying bitmap (#2095)

Install

pip install -U labelme==6.3.0
# or
uv tool install labelme==6.3.0

Full Changelog: v6.2.0...v6.3.0

v6.2.0

10 May 05:47
bb16e01

Choose a tag to compare

LabelMe v6.2 introduces oriented rectangle as a first-class shape type, including in AI-assisted annotation where SAM masks can now be converted to oriented rectangles, axis-aligned rectangles, or circles in addition to polygons.

Changelog

Added

  • Added oriented rectangle shape type for rotated bounding box annotation, available in the toolbar and via keyboard shortcut (#1980)
  • Added AI-assisted oriented rectangle: SAM masks can now be emitted as an oriented rectangle, fitting the minimum-area rotated bounding box to the predicted mask (#2078)
  • Added rectangle and circle as AI-assisted output formats: AI-Points and AI-Box can now output rectangle or circle derived from the predicted mask, in addition to polygon and mask (#2064)
  • Added right-click "Add Point to Edge" context menu action to insert a vertex at the cursor position on the nearest edge of the selected shape (#2029)
  • Made hide/show shape undoable via the undo stack (#2034)
  • Propagated hide/show toggle across all shapes in a multi-selection (#2035)

Changed

  • Redesigned AI-Points and AI-Box toolbar icons to represent the input action (click vs. drag-box) with a sparkle accent, replacing the previous output-named polygon/mask icons (#1985)
  • Improved Turkish (tr_TR) translations for correctness, natural phrasing, and consistency with Apple/Microsoft Turkish UI conventions (#1967)
  • Retranslated Turkish (tr_TR) with corrected domain terminology and grammar (#1963)
  • Retranslated Simplified Chinese (zh_CN) to use standard CV/ML domain terms and idiomatic phrasing, including unifying "annotation" as 标注 (#1965)

Fixed

  • Fixed incorrect AI-Box predictions when the bounding box was drawn right-to-left or bottom-to-top by normalizing the corner points before sending to the model (#2032)
  • Fixed color indicator on annotation list rows disappearing after editing a shape's group ID (#2015)
  • Fixed Shift+wheel to scroll horizontally on Linux and Windows, matching macOS behavior (#2014)
  • Fixed oriented rectangle being lost when cancelling the label dialog after drawing (#2079)
  • Fixed validate_label: null not skipping validation as documented

Contributors

Install

pip install -U labelme==6.2.0
# or
uv tool install labelme==6.2.0

Full Changelog: v6.1.3...v6.2.0

v6.1.3

24 Apr 13:24

Choose a tag to compare

LabelMe v6.1.3 fixes a stale snap-highlight artifact left on the canvas after scroll, zoom, or window resize.

Changelog

Fixed

  • Stale snap highlight no longer stays on canvas after scroll, zoom, or resize (#1975)

Install

pip install -U labelme==6.1.3
# or
uv tool install labelme==6.1.3

Full Changelog: v6.1.2...v6.1.3

v6.1.2

21 Apr 13:16

Choose a tag to compare

LabelMe v6.1.2 restores the first-vertex snap highlight that's shown when closing a polygon.

Changelog

Fixed

  • Restored first-vertex snap highlight when closing a polygon (#1974)

Install

pip install -U labelme==6.1.2
# or
uv tool install labelme==6.1.2

Full Changelog: v6.1.1...v6.1.2

v6.1.1

19 Apr 01:53

Choose a tag to compare

LabelMe v6.1.1 fixes a keyboard shortcut regression: Ctrl/Cmd+A (Edit > Select All) now works when the canvas has focus.

Changelog

Fixed

  • Fixed Ctrl/Cmd+A (Edit > Select All) not working when the canvas has focus (#1964)

Install

pip install -U labelme==6.1.1
# or
uv tool install labelme==6.1.1

Full Changelog: v6.1.0...v6.1.1

v6.1.0

16 Apr 15:03

Choose a tag to compare

LabelMe v6.1 adds SAM3 support and reworks the AI toolbar. The "Open Recent" submenu has been removed and labelme.utils.lblsave is deprecated; if you depend on either, see Breaking changes and Migration guide below.

Breaking changes

  • "Open Recent" removed. The recent-files submenu in the File menu is gone. Use the file list dock or the OS file dialog. (#1921)
  • labelme.utils.lblsave deprecated. The old import still works (emits a DeprecationWarning) but will be removed in a future release. See Migration guide. (#1911, #1959)

Migration guide

labelme.utils.lblsave -> imgviz.io.lblsave

- from labelme.utils import lblsave
- lblsave(filename, lbl)
+ from imgviz.io import lblsave
+ lblsave(filename, lbl)

The old import still works in v6.1 but emits a DeprecationWarning. (#1911, #1959)

"Open Recent" replacement

There is no drop-in replacement. Use the file list dock (which now auto-populates with sibling images) or your OS file dialog. (#1921)

Changelog

Added

  • Added SAM3 to the AI model list with AI-Box support, producing multiple shapes from a single bounding box annotation (#1917)
  • Unified AI annotation tools into two modes: AI Points -> Shape and AI Box -> Shape, each with a polygon/mask output toggle; added a visual separator between manual and AI tools in the toolbar (#1914, #1915, #1916)
  • Added a progress bar with cancellation support during AI model downloads (#1948)
  • Added auto-import of sibling images from the same directory when opening a single image file (#1924)
  • Added highlighting of AI toolbar buttons when hovering the disabled AI-Assisted Annotation widget to help new users find them (#1961)
  • Switched canvas repainting from synchronous to asynchronous rendering, avoiding blocking redraws (#1869)
  • Added Greek (el_GR) translation (#1893)
  • Added Ukrainian (uk_UA) translation (#1892)
  • Added Russian (ru_RU) translation (#1891)

Changed

  • Shortened toolbar button labels by removing the redundant "Create" prefix (e.g., "Create Polygon" becomes "Polygon") (#1914)
  • Disabled the file list dock with an explanatory tooltip when a label .json file is opened directly; re-enabled it when a directory or image is opened (#1924)
  • Added support for cropped masks returned by osam 0.4.0 (SAM3) for accurate annotation on large images (#1919)

Deprecated

  • Deprecated labelme.utils.lblsave; use imgviz.io.lblsave instead. The old import will be removed in a future release (#1911, #1959)

Removed

  • Removed the "Open Recent" submenu from the File menu; use the file list dock (which now auto-populates with sibling images) or the OS file dialog instead (#1921)

Fixed

  • Fixed single undo to fully restore a deleted shape; previously two undos were required (#1932)
  • Disabled SAM3 in the model selector during AI-Points mode and showed a warning, as SAM3 does not support point prompts (#1918)
  • Fixed AI mode tooltip names to match the renamed menu labels (#1928)
  • Equalized button widths in the vertical toolbar (#1961)

Contributors

Install

pip install -U labelme==6.1.0
# or
uv tool install labelme==6.1.0

Full Changelog: v6.0.2...v6.1.0

v6.0.2

16 Apr 14:51

Choose a tag to compare

LabelMe v6.0.2 fixes broken images on the PyPI project page.

Changelog

Fixed

  • Fixed broken images on the PyPI project page by rewriting relative image paths to absolute GitHub raw URLs at build time (#1954)

Install

pip install -U labelme==6.0.2
# or
uv tool install labelme==6.0.2

Full Changelog: v6.0.1...v6.0.2

v6.0.1

16 Apr 14:51

Choose a tag to compare

LabelMe v6.0.1 fixes a "Save Automatically" regression introduced by the v6.0.0 default change.

Changelog

Fixed

  • Fixed the "Save Automatically" checkbox having no effect after v6.0.0 changed its default to enabled (#1953)

Install

pip install -U labelme==6.0.1
# or
uv tool install labelme==6.0.1

Full Changelog: v6.0.0...v6.0.1

v6.0.0

28 Mar 08:48
942f276

Choose a tag to compare

LabelMe v6 changes two important defaults (auto-save on, image data no longer embedded), renames CLI flags and UI labels, adds support for large and multispectral TIFF images, and removes several legacy CLI entry points. If you're upgrading from v5, read Breaking changes and Migration guide below.

Breaking changes

Defaults flipped

  • Auto-save is now ON by default. Files save automatically as you annotate. To disable: labelme --no-auto-save, or set auto_save: false in your config.
  • Image data is no longer embedded in JSON by default. JSON files are now much smaller and reference image paths instead of embedding base64. To embed: labelme --with-image-data, or set with_image_data: true in your config.

CLI changes

  • Positional argument renamed: filename -> path. Now accepts image files, label files, or directories.
  • --output simplified: always expects a directory path (no longer accepts .json file paths).
  • CLI flags standardized to hyphenated style:
    • --no-autosave -> --no-auto-save
    • --nosortlabels -> --no-sort-labels
    • --labelflags -> --label-flags
    • --validatelabel -> --validate-label
    • Old forms are kept as hidden aliases and will be removed in v7.

UI renames

  • "Shape Labels" dock -> "Annotation List". (#1828)
  • "polygon" -> "shape" in shortcuts and UI labels. (#1822)

Removed

  • labelme_draw_json, labelme_draw_label_png, labelme_export_json CLI entry points. Moved to examples/ as standalone scripts (e.g., python examples/tutorial/draw_json.py).
  • labelme_on_docker CLI entry point.
  • labelme.utils.polygons_to_mask() and labelme.utils.labelme_shapes_to_label() (deprecated since v4).

Migration guide

Auto-save default change

# v5: opt-in via flag
- labelme --autosave
# v6: on by default; opt out instead
+ labelme               # auto-save enabled
+ labelme --no-auto-save  # disable

The old --autosave flag still works but will be removed in v7.

Embedded image data

# v5: embedded by default; --nodata to opt out
- labelme --nodata
# v6: omitted by default; --with-image-data to opt in
+ labelme                     # paths only
+ labelme --with-image-data   # embed base64

The old --nodata flag still works but will be removed in v7. Existing config files using store_data are automatically migrated to with_image_data.

CLI rename example

- labelme --nosortlabels --labelflags labels.json img/
+ labelme --no-sort-labels --label-flags labels.json img/

Removed CLI entry points

- labelme_draw_json out.json
+ python examples/tutorial/draw_json.py out.json

Changelog

Added

  • Added support for multispectral and float32 TIFF images via tifffile (e.g., satellite imagery) (#1812)
  • Added Polish (pl_PL) translation (#1809)
  • Added Thai (th_TH) translation (#1886)
  • Added Turkish language support for AI-assisted annotation features (#1805)
  • Created sparse ~/.labelmerc containing only user-changed settings instead of copying the full default config (#1796)

Changed

  • Breaking: Changed auto-save default to on; use --no-auto-save or auto_save: false in config to disable (#1815)
  • Breaking: Changed the default so image data is no longer embedded in JSON files; JSON now references image paths instead of base64. Use --with-image-data or with_image_data: true in config to embed (#1814)
  • Breaking: Renamed the CLI positional argument from filename to path; it now accepts image files, label files, or directories (#1825)
  • Breaking: Changed --output to always expect a directory path (no longer accepts .json file paths) (#1813)
  • Breaking: Standardized CLI flags to hyphenated style: --autosave -> --no-auto-save, --nosortlabels -> --no-sort-labels, --labelflags -> --label-flags, --validatelabel -> --validate-label; old forms kept as hidden aliases until v7 (#1823)
  • Renamed the "Shape Labels" dock widget to "Annotation List" (#1828)
  • Renamed "polygon" to "shape" in shortcuts and UI labels (#1822)
  • Prioritized vertices over shape bodies in hover detection, making vertex editing easier (#1867)
  • Improved large image loading performance by skipping re-encoding for JPEG/PNG without EXIF rotation (#1811)

Deprecated

  • Deprecated --autosave flag; use --no-auto-save instead (will be removed in v7)
  • Deprecated --nodata flag; use --with-image-data instead (will be removed in v7)
  • Deprecated config key store_data; automatically migrated to with_image_data

Removed

  • Breaking: Removed labelme_draw_json, labelme_draw_label_png, and labelme_export_json CLI entry points; moved to examples/tutorial/ as standalone scripts (#1846)
  • Breaking: Removed labelme_on_docker CLI entry point (#1821)
  • Breaking: Removed deprecated labelme.utils.polygons_to_mask() and labelme.utils.labelme_shapes_to_label() (deprecated since v4) (#1821)

Fixed

  • Fixed point shapes not being clickable (#1860)
  • Fixed window position not recovering when the saved screen is no longer available (#1859)
  • Fixed out-of-bounds crash when highlighting AI-generated masks (#1858)
  • Fixed pasted shapes not being selected after cross-file paste (#1876)
  • Fixed RGBA/transparent images not rendering correctly in the brightness/contrast dialog (#1872)
  • Fixed crosshair guide lines extending beyond image bounds (#1870)
  • Fixed a crash when the previously selected shape was removed from the annotation list (#1871)
  • Fixed a crash on malformed JSON in the file dialog preview (#1900)
  • Fixed a hang with @ symbols in file paths on macOS with Unicode paths (#1904)
  • Fixed rectangle drawn right-to-left producing incorrect masks (#1817)
  • Fixed a crash when moving a vertex beyond valid range on the canvas (#1818)
  • Fixed RGBA PNG conversion in labelme2coco (#1830)
  • Fixed deprecated NumPy boolean type usage (#1831)
  • Fixed silent failure when an image file fails to open; an error dialog is now shown (#1810)
  • Fixed display issues by forcing light mode (dark mode not yet supported) (#1808)
  • Fixed points on the edge of the image being rejected; edge placement is now allowed (#1801)

Contributors

Install

pip install -U labelme==6.0.0
# or
uv tool install labelme==6.0.0

Full Changelog: v5.11.4...v6.0.0