Releases: wkentaro/labelme
v6.3.1
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.1Full Changelog: v6.3.0...v6.3.1
v6.3.0
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:
- 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.
- 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, andmaskoutputs.
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.0Full Changelog: v6.2.0...v6.3.0
v6.2.0
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
rectangleorcirclederived from the predicted mask, in addition topolygonandmask(#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: nullnot skipping validation as documented
Contributors
- @kimchioverfit: AI-Box bbox normalization fix (#2032)
Install
pip install -U labelme==6.2.0
# or
uv tool install labelme==6.2.0Full Changelog: v6.1.3...v6.2.0
v6.1.3
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.3Full Changelog: v6.1.2...v6.1.3
v6.1.2
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.2Full Changelog: v6.1.1...v6.1.2
v6.1.1
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.1Full Changelog: v6.1.0...v6.1.1
v6.1.0
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.lblsavedeprecated. The old import still works (emits aDeprecationWarning) 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
.jsonfile 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; useimgviz.io.lblsaveinstead. 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
- @kancheng: Greek, Ukrainian, and Russian translations (#1891, #1892, #1893)
- @minewilliam: async canvas repainting and
boundedMoveVertexrefactor (#1868, #1869)
Install
pip install -U labelme==6.1.0
# or
uv tool install labelme==6.1.0Full Changelog: v6.0.2...v6.1.0
v6.0.2
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.2Full Changelog: v6.0.1...v6.0.2
v6.0.1
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.1Full Changelog: v6.0.0...v6.0.1
v6.0.0
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 setauto_save: falsein 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 setwith_image_data: truein your config.
CLI changes
- Positional argument renamed:
filename->path. Now accepts image files, label files, or directories. --outputsimplified: always expects a directory path (no longer accepts.jsonfile 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_jsonCLI entry points. Moved toexamples/as standalone scripts (e.g.,python examples/tutorial/draw_json.py).labelme_on_dockerCLI entry point.labelme.utils.polygons_to_mask()andlabelme.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 # disableThe 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 base64The 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.jsonChangelog
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-saveorauto_save: falsein 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-dataorwith_image_data: truein config to embed (#1814) - Breaking: Renamed the CLI positional argument from
filenametopath; it now accepts image files, label files, or directories (#1825) - Breaking: Changed
--outputto always expect a directory path (no longer accepts.jsonfile 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
--autosaveflag; use--no-auto-saveinstead (will be removed in v7) - Deprecated
--nodataflag; use--with-image-datainstead (will be removed in v7) - Deprecated config key
store_data; automatically migrated towith_image_data
Removed
- Breaking: Removed
labelme_draw_json,labelme_draw_label_png, andlabelme_export_jsonCLI entry points; moved toexamples/tutorial/as standalone scripts (#1846) - Breaking: Removed
labelme_on_dockerCLI entry point (#1821) - Breaking: Removed deprecated
labelme.utils.polygons_to_mask()andlabelme.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
- @kancheng: Polish and Thai translations (#1809, #1886)
- @minewilliam: canvas edge fix and refactoring (#1782, #1801, #1802)
- @oguz-hanoglu: Turkish translation (#1805)
Install
pip install -U labelme==6.0.0
# or
uv tool install labelme==6.0.0Full Changelog: v5.11.4...v6.0.0