3LC Python Package Version 2.10#

2.10.2#

Enhancements and Fixes#

  • [14050] Automatically relativize URLs written in TableWriter.add_batch based on the the table being written to rather than requiring the user to specify the table manually

  • [14047] Disable the notifier-based indexer that had been enabled by default starting with 3lc version 2.10.0. It caused problems with network-mounted drives in particular.


2.10.1#

Enhancements and Fixes#

  • [13935] Fixed an issue where serialized Tables could fail to be created due to a schema mismatch because they were created before a recent change to automatically add sample weights

  • [13803] Fixed an issue where some uses of TableWriter could incorrectly raise an error that no sample URL prefix had been set


2.10.0#

Features#

  • [13296] Greatly reduced the runtime and memory usage for dimensionality reduction, generally used with embeddings

  • [13744] Made it possible to allow any table to specify a list of Table URLs as input_tables, which will show as inputs when lineage is viewed in the Dashboard. Example use cases:

    • You are importing a new table, but you want it to be the latest table in an existing lineage

    • You are writing a brand new table using TableWriter but want the written table to be part of a lineage

  • [13849] Convert YOLO segmentation polygons to bounding boxes instead of ignoring them. Ultralytics YOLO allows using a segmentation dataset (polygons) for object detection by converting to bounding boxes. With 3LC this is currently not possible. Until we support instance segmentation, we fall back to writing a TableFromYolo with bounding boxes by converting the polygons to boxes. If a polygon is encountered when parsing the data, a warning is logged once and the bounding box is formed by taking the min and max values in both directions and converting to a xywh box.

  • [13762] Added handling of bytes objects within the SampleType machinery. Similar to how Numpy arrays and Torch tensors are handled, bytes are handled differently based on their size. SmallBytes are stored directly in the Table, whereas LargeBytes are written to a file whose URL is stored in the Table.

  • [13381] Added 3lc license command that can be used to check the status of or deactivate the license key

Enhancements and Fixes#

  • [13598] Made some fixes to when and how the config file is written

  • [13723] Added support for picking up the 3LC config file from the project root directory

  • [13456] Deprecated picking up config.yaml from the current working directory

  • [13723] Made it possible to specify the project root in the 3lc command using --global-project-root

  • [13483] Added sparse class name override option label_overrides to Table.from_image_folder(), either with strings to override the internal name or full MapElements for further customization

  • [13774] Fixed a bug that could cause an issue when using Table.relative_from_absolute under certain circumstances

  • [13652] Improved file indexing on Windows and Ubuntu by only re-scanning when notified of a change

  • [13690] Raise a more appropriate error message in the case where the Schema of a Table writer specifies that batches should contain a Url column, but where no such column exists in a provided batch

  • [13691] Catch inconsistent batch column lengths in TableWriter.add_batch() and add all the provided lengths to the error message in order to be more helpful

  • [13761] Improve error messages for exporter

  • [13856] In TableFromYolo, raise if a pose estimation dataset is encountered since we do not yet support it

  • Removed duplicate label removal from TableFromYolo, as it should be done on the Ultralytics / end user side (or even in the Dashboard)

  • [13903] Skip boxes in TableFromCoco where we would previously raise. This occurred for negative box width/heights or where the image width or height is not specified.

Known Issues#

  • The tlc Python package does not detect, handle, or support NaN (Not-a-Number) values in tlc.Table, and their presence may lead to unpredictable behavior or inconsistencies within the system.