Skip to content

Releases: wkentaro/labelme

v6.1.0

16 Apr 15:03

Choose a tag to compare

LabelMe v6.1 adds SAM3 support, reworks the AI toolbar, and bumps test coverage to 125 e2e tests. If you call labelme internals from scripts, check the Migration guide below.

New features

  • SAM3 AI-Box mode — new AI annotation option. In AI-Box mode, a single bounding box can produce multiple shapes. (#1917)
  • Unified AI modes — the four old AI tools (ai_polygon, ai_mask, etc.) are now two: AI Points → Shape and AI Box → Shape, each with a polygon/mask toggle. A separator in the toolbar divides manual tools from AI tools. (#1915, #1916)
  • Download progress bar — AI model downloads now show progress and can be cancelled (#1948)
  • Sibling image import — opening a single image file loads all images in the same directory into the file list (#1924)
  • AI button hover hint — hovering the disabled AI widget highlights the AI toolbar buttons so new users can find them (#1961)
  • Async canvas repainting — canvas calls update() instead of repaint(), avoiding blocking redraws (#1869)
  • New translations — Greek (#1893), Ukrainian (#1892), Russian (#1891)

Fixes

  • Double-undo on delete — deleting a shape used to require two undos to restore it; now one undo is enough (#1932)
  • SAM3 disabled in AI-Points mode — SAM3 doesn't support point prompts, so it's now greyed out in the model selector with a warning (#1918)
  • Tooltip mismatch — AI mode tooltips now match the renamed menu labels (#1928)

Also includes fixes shipped in v6.0.1 and v6.0.2:

  • Unchecking "Save Automatically" had no effect since the v6.0.0 default change (#1953)
  • README images on pypi.org were broken due to relative paths (#1954)

Migration guide

labelme.utils.lblsave deprecated

Use imgviz.io.lblsave instead. The old import still works (emits a DeprecationWarning) but will be removed in a future release. (#1911, #1959)

"Open Recent" removed

The recent-files submenu in the File menu is gone. Use the file list dock or the OS file dialog. (#1921)

Internal

  • Type annotations on all functions, enforced by ty check (#1920, #1922)
  • E2E test suite went from ~20 to 125 tests (#1930#1939, #1960)
  • Core algorithm rewrites: boundedMoveShapes, storeShapes (now a deque), widget dialogs (#1941)
  • osam bumped to stable 0.4.0; cropped mask support (#1919)
  • New linters: flake8-annotations, typos, taplo, mdformat, yamlfix (#1927)
  • CI split into lint.yml + test.yml; setup-uv aligned to v6 (#1951, #1952)

Contributors

Full changelog: v6.0.0...v6.1.0

v6.0.2

16 Apr 14:51

Choose a tag to compare

Patch release fixing broken images on the PyPI project page.

Fixes

  • Fix PyPI README images — Relative image paths in the README are now rewritten to absolute GitHub raw URLs at build time using hatch-fancy-pypi-readme, so images render correctly on pypi.org. (#1954)

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

v6.0.1

16 Apr 14:51

Choose a tag to compare

Patch release with a bug fix and CI automation.

Fixes

  • Respect "Save Automatically" checkbox — Unchecking the checkbox in the UI had no effect since v6.0.0 changed the auto_save default to true. The redundant config check that short-circuited the checkbox state has been removed. (#1953)

Internal

  • Add publish.yml workflow to auto-publish to PyPI on tag push

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, adds support for large and multispectral TIFF images, and cleans up the CLI.
If you're upgrading from v5, read the Migration Guide below.

New Features

  • Large and multispectral TIFF image support — float32 and multi-band TIFFs (e.g., satellite imagery) now load correctly and much faster (#1811, #1812)
  • "Reset Layout" action — reset the window layout to default from the menu (#1864)
  • Point shape click selection — point shapes are now properly clickable (#1860)
  • Vertex hover priority — vertices are now prioritized over shape bodies in hover detection, making editing easier (#1867)
  • Sparse config file~/.labelmerc is now created with only user-changed settings instead of the full default config (#1796)
  • New translations — Polish (#1809), Thai (#1886), and Turkish (#1805)

Migration Guide

Auto-save is now ON by default

Files are saved automatically as you annotate. No data loss on accidental close.

  • To disable: labelme --no-auto-save
  • Or set auto_save: false in your config file
  • The old --autosave flag still works but will be removed in v7

Image data is no longer embedded in JSON by default

JSON files are now much smaller — they reference image paths instead of embedding base64 data.

  • To embed image data: labelme --with-image-data
  • Or set with_image_data: true in your config file
  • 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

Breaking Changes

CLI changes

  • Positional argument renamed: filenamepath — 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)

Fixes

  • Fix crash on arrow keys when no shape is selected (#1457)
  • Fix ValueError: Shape not in list when previously selected shapes are missing (#1396)
  • Fix hang with @ symbol in file paths due to natsort (#1672, #1904)
  • Fix crash on unknown config keys — now warns and skips (#1887)
  • Fix crash on malformed JSON in file dialog preview (#1900)
  • Fix RGBA/transparent images in brightness/contrast dialog (#1872)
  • Fix crosshair guide lines extending beyond image bounds (#1870)
  • Fix pasted shapes not selected after cross-file paste (#1876)
  • Fix rectangle right-to-left drawing in shape_to_mask (#1817)
  • Fix out-of-bounds vertex crash in canvas (#1818)
  • Fix RGBA PNG conversion in labelme2coco (#1830)
  • Fix deprecated np.bool usage (#1831)
  • Fix window position recovery when saved screen is no longer available (#1859)
  • Fix out-of-bounds highlight for AI-generated masks (#1858)
  • Fix mask incorrectly set on non-mask shapes (#1797)
  • Show error dialog when image file fails to open (#1810)
  • Force light mode — dark mode is not yet supported (#1808)
  • Allow points on the edge of the pixmap (#1801)

Contributors

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

v5.11.4

10 Mar 10:54

Choose a tag to compare

  • fix: reset window state for users upgrading from older versions
  • feat: add "Reset Layout" action to reset the window layout to default

Full Changelog: v5.11.3...v5.11.4

v5.11.3

20 Feb 10:07

Choose a tag to compare

  • fix: force light mode (dark mode not supported yet) #1808

Full Changelog: v5.11.2...v5.11.3

v5.11.2

31 Jan 07:42

Choose a tag to compare

Fixes

  • fix: stop setting and drawing mask for non-mask shapes (#1797)

Full Changelog: v5.11.1...v5.11.2

v5.11.1

28 Jan 21:23

Choose a tag to compare

Dependencies

  • Bump osam to >=0.3.1 to support imgviz>=2.0.0 (100c2a2)

Full Changelog: v5.11.0...v5.11.1

v5.11.0

28 Jan 13:00
49db715

Choose a tag to compare

Features

  • Support square drawing for "Create Rectangle" (#1748) @kancheng
  • Use style "Fusion" for consistent appearance across platforms (#1751)
  • Introduce SAM3 (smart) model for text-to-rectangle (#1762)
  • Support "polygon" and "mask" in AI text-to-annotation (#1774)
  • Add "Preferences..." menu for config file editing (#1781)

SAM3 AI text-to-annotation

FocuSee.Project.2026-01-19.7-29-43.PM.mp4

Preferences...

image

Bug Fixes

  • Clear selectedShapes to avoid crash on loading new image (#1717)
  • Import onnxruntime before PyQt5 (#1723)
  • Use canCloseShape for double-click finalization (#1724)
  • Fix typo in variable name in shape.py (#1733) @minewilliam
  • Handle empty input in nms_bboxes (#1761)
  • Load OsamSession lazily for AI-assisted shapes (#1775)
  • Handle Windows-style paths in LabelFile (#1784)
  • Replace np.cross with manual 2D cross product (#1785)
  • Reflect file_search in config at start time (#1788)

UI Improvements

  • Show model selection in AI Prompt widget (#1752)
  • Disable "AI Prompt" widget when not in rectangle create mode (#1753)
  • Add info button to AI-assisted annotation widget (#1764)
  • Add tooltip for AI Text-to-Annotation info button (#1766)
  • Disable AI-Assisted Annotation widget when not in AI modes (#1767)
  • Add newline for Japanese translation of menu items (#1768)
  • Allow label editing when non-edit mode only from label list (#1769)

Internationalization

Build

  • Drop Python 3.9 support (#1746)
  • Migrate to ty for type checking (replacing mypy) (#1720)
  • Use hatch dynamic versioning (#1771)

Dependencies

  • Bump filelock from 3.17.0 to 3.20.3 (#1747)
  • Bump urllib3 from 2.3.0 to 2.6.3 (#1756)
  • Bump requests from 2.32.3 to 2.32.4 (#1757)
  • Bump protobuf from 5.29.3 to 5.29.5 (#1758)
  • Bump fonttools from 4.56.0 to 4.60.2 (#1759)

Refactoring

  • Add OsamSession class for osam model and embedding caching (#1754, #1760)
  • Extract and rename AiAssistedAnnotationWidget (#1763, #1765)
  • Use importlib.metadata to get version (#1770)
  • Reorganize tests into e2e and unit tests (#1786)

CI

  • Check version of pylupdate5 before generating .ts files (#1731)
  • Add Discord notification for merged PRs (#1755)

Contributors

Thanks to all contributors for this release! 🎉

Full Changelog: v5.10.1...v5.11.0

v5.11.0a0

26 Jan 11:31
8cf2d48

Choose a tag to compare

v5.11.0a0 Pre-release
Pre-release

Prerelease for v5.11.0

uvx --python 3.13 --prerelease=allow --from labelme==5.11.0a0 labelme