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 theSampleType
machinery. Similar to how Numpy arrays and Torch tensors are handled,bytes
are handled differently based on their size.SmallBytes
are stored directly in theTable
, whereasLargeBytes
are written to a file whose URL is stored in theTable
.[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
toTable.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 itRemoved 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 intlc.Table
, and their presence may lead to unpredictable behavior or inconsistencies within the system.