Package: vcd
Video Content Description (VCD)VCD is a metadata format designed to enable the description of scene information, particularly efficient for discrete data series, such as image or point-cloud sequences from sensor data.
Originally, VCD focused on video content data, but has been extended to provide structures to describe, potentially, any type of information of a scene.VCD is defined as a structure of data, and as such, can be represented as a JSON Schema.The syntax (seeopenlabel_json_schema-v1.0.0.json), as a JSON Schema file, contains the full description of the VCD structure. This schema follows the ASAM OpenLABEL standard (OpenLABEL Concept Paper).DetailsMore details can be found at the project's website:https://vcd.vicomtech.orgInstallPythonUsing pip (Python >= 3.8)):pip install vcdUsagePythonVCD Python API exposes functions to load, create, manipulate and serialize VCD content.The recommended way to learn VCD is throuhg the samples at thetest folder.As a basic example, VCD can be used in a Python script as follows:importvcd.coreascoreimportvcd.typesastypes# Create a VCD instancemyVCD=core.VCD()# Add Objects, Actions, etc.uid1=myVCD.add_object(name='ped1',semantic_type='#Pedestrian')myVCD.add_object_data(uid=uid1,object_data=types.bbox(name="head",val=[0,0,100,200]))...# SerializemyVCD.stringify(pretty=False,validation=True)The API contains useful functions that ensures the produced content is compliant with the syntax. Nevertheless, the VCD class allows the user to access directly the content, in the form of a Python dictionary.importvcd.coreascore# Create empty vcd objectmyVCD=core.vcd()# Load a VCD filemyVCD.load_from_file('./tests/etc/openlabel100_test_scene_KITTI_Tracking_3.json')# Access data directlymetadata=myVCD.data['openlabel']['metadata']# Modify data directlymyVCD['openlabel']['objects'][3]['type']="#Car"...# Serializestringified_vcd=myVCD.stringify(pretty=False,validation=True)This can be useful some times, but it is not recommended, as the dictionary may deviate from a valid VCD syntax. To check if a content is valid, the API exposes a validation function:# ValidatemyVCD.validate(stringified_vcd)This validation function is optionally called when saving to JSON files.VersionsVCD is a toolkit with APIs in various programming languages (Python, Typescript, C++) which allows anyone to create, read, update and delete labels that follow the ASAM OpenLABEL standard v1.0.0.Last version is VCD 6.0.0 compliant with OpenLABEL 1.0.0.VCD has evolved as follows:VCD 1.0 (2013)VCD 2.0 (2014)Integrated into Viulib library (module viulib_evaluation)Element-wise and Frame-wise modesXML and JSON serialization via ASL libraryVCD 3.0 (2018)Independent C++ libraryElement-wise and Frame-wise modesMulti-sensor supportJSON serialization via ASL libraryPixel-wise loss-less compression modesComparison routinesVCD 4.0 (2019)Python APIElement and Frame-wise mode simultaneouslyMulti-sensor and multi-intervalNative Python JSON serializationGoogle's Protocol Buffer serializationObject data 'num' for single numbers, 'vec' for arrays of numbersVCD 4.1.3 (2020-2021)Explicit definition of intrinsics, extrinsics and odometryEnhanced timestamping and sync informationEnhanced semantics management (RDF triplets)Integrated SCL and complex calibration set-upsDrawing functionsPreliminar work on Ontology and Neo4j connectionMulti-value attributes ('vec' of strings)Typescript APINPM and Pypi packagesVCD 5.0.0 (2021)VCD as toolkit to produce OpenLABEL compliant labelsAddition of C++ lite versionGeneral improvements and consistency (Python, Typescript)Removed support for protobuf serializationVCD 6.0.0 (2023)VCD Library for Python separated from other language developmentsMajor Python API updateRelated projectsVCD has been used in the following projects: Cloud-LSVA, VI-DAS, inLane, P-REACT, EWISA, Viulib, begirale, SmaCS, HEADSTART, ACCURATE.TheDMD(Driver Monitoring Dataset) project also uses VCD!If your project also uses VCD, let us know!OpenLABELAlong with the development of VCD, we are participating in the definition of the incoming labeling standard for the automotive sector: ASAM OpenLABEL.https://www.asam.net/project-detail/asam-openlabel-v100Since v5.0.0 VCD is shaped to be compliant with the format defined in OpenLABEL v1.0.0.
VCD is the first labeling toolset compliant with the standard and used during the elaboration of the standard to produce samples and create the JSON schema.CreditsVicomtech created VCD in 2013, and since, has maintained VCD syntax and libraries. Developments of VCD were supported and funded by the European Commission (EC) Horizon 2020 programme (project [Cloud-LSVA] (http://cloud-lsva.eu), grant agreement 688099).VCD was registered at the "Registro territorial de la propiedad intelectual de la comunidad autonoma del Pais Vasco", under number 55-354-17, by the Basque Governement, at 2017/07/07.Main developers:Marcos Nieto, Orti Senderos, Jon GoenetxeaContributors:
Thanks to Andoni Mujika, Paola Cañas, Eider Irigoyen, Juan Diego Ortega, Peter Leskovsky, Mikel Garcia, Gonzalo Pierola, Stefano Masneri, Lorena Garcia, Itziar Urbieta and many others in Vicomtech.Also thanks to Nicola Croce (Deepen.ai), Jason Zhang (Warwick University), Tim Raedsch (Understand.ai) and other colleagues in ASAM for their ideas and comments during the ellaboration of the OpenLABEL v1.0.0 standard.Finally, special thanks to Oihana Otaegui, as head of the ITS & Engineering department in Vicomtech. Without her lead this project would have never been possible. She believed in the VCD idea and supported me to carry on. Thanks Oihana! ; )LicenseCopyright (c) 2023 VicomtechPermission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.CitationPart of the work carried out to make VCD a reality has been published in Elsevier SoftwareX journal. If you find VCD useful and want to cite it in your publications, please use the following citation (the paper pdf can be accessedhere).M. Nieto, O. Senderos, and O. Otaegui, "Boosting AI applications: Labeling format for complex datasets," SoftwareX, 2021, p. 100653, vol. 13 (https://doi.org/10.1016/j.softx.2020.100653).