Release
- Added raillabel.filter() and raillabel.Scene.filter()
- Fixed a bug when comparing raillabel.CoordinateSystems with differing base children
- Fixed a naming dispute in raillabel.save()
- Tested the package for Python 3.8 and 3.10
- Created a requirements.txt
- The filter() function is now accessible via raillabel.filter() instead of raillabel.io.filter()
- Implemented frame specific data, that does not belong to any object
- Implemented the Num annotation type
- Made the saved data VCD-compatible
- URIs of the annotation files (like the .png, where a bounding box is located) are now stored in the "frame_properties" under "sensors"
- Implemented object data pointers
- Devkit version is now stored in the metadata
- FrameInterval.__len__() now returns the number of frames in the FrameInterval
- Frame.annotations returns a dict of all annotations in the frame regardless of type or object
- Removed proprietary parts
- Added poly3d as a supported annotation type
- All annotations are now stored in object_data.annotations (before they were stored in different fields according to their type)
- raillabel.Scene.filter() has been removed. Use raillabel.filter() instead
- Fields "coordinate_system" and "frame_intervals" have been removed from the raillabel.format.Object class
- stream and coordinate system have been combined into a single sensor type
- Changed name of PyPI package from 'raillabel' to 'pyraillabel' due to name collision
- Changed name of PyPI package back to 'raillabel' because the problematic package has been removed
- Fixed bug related to saving the annotator field in the metadata
- Fixed bug related to the package version
- Added IntrinsicsRadar to the devkit and the json-schema
- Raillabel schema is now more restrictive regarding intrinsic calibration
- Support for understand.ai t4 format
- Renaming of raillabel.format.Frame.data to frame_data
- Fixed bug, that prevented loading a understand ai file via raillabel.load()
- Made the project_id field in the understand ai files less restrictive
- Support for additional, undefined attributes in raillabel.format.Metadata
- Removed deprecated features
- Annotation classes now contain information about the object they annotate
- Removed
ObjectData
- frames now directly contain the annotations name
field in annotation classes now is automatically generated- Separated
frame_data
andobject_data
in the schema and devkitframe_data
can only containNum
instancesobject_data
can not containNum
instances anymore
- Major restructuring of the project directories
FrameInterval.from_frame_ids()
: createFrameIntervals
by providing a list of frame uidsObject.object_data_pointers()
: generateElementDataPointers
Scene.frame_intervals()
,Object.frame_intervals()
: generateFrameIntervals
Object.asdict()
now provides also frame intervals and object data pointers, if the frames from the scene are providedScene.fromdict()
for loading a scene from a dictionary
LoaderUnderstandAi
now passes the warnings from theLoaderRaillabel
onto the userLoaderUnderstandAi.load()
validate
parameter defaults toFalse
now
LoaderUnderstandAi
now includes warnings for duplicate annotation id and duplicate frame idLoaderRaillabel
now includes a warniing for duplicate frame id
- Introduce support for Python 3.12
- Fix bug related to Python 3.12
- Introduce support for Python 3.13
- Add DeprecationWarnings for all functionalities, that have changed in 4.0.0
New Major changes to RailLabel! Over the time two major use cases for this package have crystalized. The first one are the users of the data sets published by Deutsche Bahn. The second one are the contractors providing the annotations. Since the two groups have vastly different requirements for this package, we decided to split it accordingly.
If you just want to work with out data, then you are in luck. You can just continue using this package with even more focus on your needs.
If you are building raillabel scenes yourself or want to manipulate the data in a safe way, then the raillabel_providerkit is for you. All functionality you may be missing in this new raillabel version will be provided over there with even better APIs.
Functionality, that has been moved to the raillabel_providerkit
:
- loading annotations in formats other than raillabel itself
- validating the content of files
Other breaking changes:
- the
fromdict()
andasdict()
methods inraillabel.format
classes have been replaced withfrom_json()
andto_json
respectively raillabel.format.FrameInterval
fields have been changed byframe_start -> start
andframe_end -> end
to make it more concise- all uid fields of classes have been removed (like
raillabel.format.Frame.uid
) have been removed to avoid redundant information raillabel.format.Sensor
has been removed in favor of the different sensor type classesraillabel.format.Camera
,raillabel.format.Lidar
,raillabel.format.Radar
andraillabel.format.GpsImu
raillabel.filter()
has been removed in favor ofraillabel.Scene.filter()
with different input arguments
New features:
raillabel.json_format
has been introduced as an interface between the JSON format and theraillabel
classesraillabel.scene_builder.SceneBuilder
is now available to easily build scenes for testing purposes
- Add value arguments to
SceneBuilder.add_bbox()
,SceneBuilder.add_cuboid()
,SceneBuilder.add_poly2s()
,SceneBuilder.add_poly3d()
andSceneBuilder.add_seg3d()
likeSceneBuilder.add_bbox(pos=Point2d(1.0, 2.0))