X-AnyLabeling v4.0.0-beta.5
GeCo2-Demo.mp4
PyPI: https://pypi.org/project/x-anylabeling-cvhub/
Baidu Cloud: https://pan.baidu.com/s/1pgaw02inCvbEgOme9ajDJA?pwd=e528
Note
Due to compatibility issues across different systems, if the precompiled version doesn’t work properly on your machine, you can try building and running it from source instead. For details, check out the official installation guide and user documentation.
🚀 New Features
- Add client-side SAM 3 ONNX support for text-grounded segmentation. (#1232)
- Add HEIC and HEIF image loading support.
- Add configurable Qt image allocation limit via
--qt-image-allocation-limitflag.
🐛 Bug Fixes
- Replace
evalwithast.literal_evalin label dialog to prevent arbitrary code injection. - Scope SSL verification bypass to model downloads only to avoid unintended side effects.
- Avoid shared mutable defaults in shape and label dialogs.
- Guard
loaded_model_configreads and writes with a lock to prevent race condition. - Connect QThread
finishedtodeleteLaterin model manager to prevent use-after-free. - Load an independent config copy in
fetch_models_asyncto eliminate shared-dict race with main thread. - Move non-video batch inference loop to QThread to prevent UI freeze.
- Call
quit()onpre_inference_threadin GroundingSAM2 unload to actually stop the thread. - Disconnect
scan_finishedsignal before EXIF cleanup to prevent a stale signal from killing a new scan. - Launch Ultralytics training via a stable worker subprocess. (#1354)
- Return
(None, None)fromimread_unicodewhenimdecodefails on corrupt images. - Guard VOC XML
sizeand objectnameelement lookups against missing elements. - Correct "diccicult" typo to "difficult" in MOT export shape lookup.
- Guard all
classes.indexcalls against unknown labels to preventValueError. - Unpack shape in canvas label-text loop to fix stale variable reference in
paintEvent. - Guard
shapes_backupsaccess inmouseReleaseEventagainst empty list and out-of-range index. - Guard
scale_fit_windowandscale_fit_widthagainst zero pixmap or widget dimensions. - Replace
textChangeddisconnect/connect withQSignalBlockerto preventTypeErroron first load. - Raise on download failure in
get_model_abs_pathinstead of silently returningNone. - Remove always-false membership loop in provider config handling.
- Clear stale PPOCR output files before each export run to prevent data accumulation.
- Log unhandled settings keys instead of silently ignoring them.
- Log skipped files in async EXIF scan instead of silently swallowing exceptions.
- Correct remote server debug log to use
current_model_idand fixparameterstypo.
🛠️ Improvements
- Speed up canvas
fill_drawingpath by replacingdeepcopywith a shallow copy. - Avoid redundant base64 decode-encode round-trip in
LabelFile.load. - Speed up temporary video handling by using
shutil.copy2instead of a full in-memory read. - Add GeCo2 counting example and usage documentation. (#1293)
- Add troubleshooting tip for SOCKS proxy error in the Chatbot FAQ.
- Harden PyInstaller executable build script and normalize repository line endings.
🌟 Contributors
A total of 2 developers contributed to this release.
Thank @CVHub520, @fhong-jpg
Full Changelog: v4.0.0-beta.4...v4.0.0-beta.5