I’ve done a clean-room re-implementation of streamlit-labelstudio component to work with the latest version of Label Studio v1.4.0. The component uses static HTML only and is doesn’t appear to have the errors reported in that discussion thread. It also doesn’t require any special installation or web framework such as React. I have not packaged and published this to PyPi so you can get the code and modify it to your heart’s content.
@fungidick please feel free to lift the code I have written to upgrade your own component so it works with the latest API of Label Studio Frontend.
Overview
Label Studio is an open source data labeling tool providing flexible data annotation. Label Studio comprises Label Studio Backend (LSB) server and ML service and Label Studio Frontend (LSF) which is based on React and mobx-state-tree and distributed as an NPM package. LSF can be integrated in third-party applications without using LSB to provide data annotation support to users. LSF can be customized and extended to build custom UIs or used with pre-built labeling templates.
This Streamlit application leverages Streamlit Components extensibility with the simple architecture of Component Zero discussed in my article, Introduction to Streamlit and Streamlit Components. Using Component Zero as a template it was straight-forward to take the code snippet in Label Studio’s Frontend integration guide and build the Streamlit component.
The Streamlit user interface can now be used to load any supported annotation task configurations which Label Studio Frontend then uses to display annotation tools appropriate for the annotation task at hand. Once annotations are done, the annotations data is passed by the custom LSF Streamlit component to Streamlit, where it is displayed. The app is also easily customised through externalized configuration.
I’m not a Label Studio Frontend expert and this integration for me was more about validating the design of the static html component framework I developed (i.e. how easy it was to integrate even a relatively complex external JavaScript library with Streamlit… easy, but took some care, of course). As far as I recall LSF takes a config file to drive the label names. So you can change the label names there. If you want to swap the label names in an already labeled job, then you’d have to write some code to do that directly in the JSON object that the component returned from the job. If you change (not swap) the label names in the JSON, you’d need to do the same in the config too.
P.S. I am looking out for LSF v1.6, but Heartex don’t seem to be paying any attention to my requests on their Slack channel. If you’re working for a commercial organisation, then buying a properly supported tool, like V7 Labs, may be advisable.
Hi @asehmi
Thanks for helping me out. And sorry for late reply, but I don’t know, why I don’tget notifications
Actually, we have set up our own CVAT server for labelling, here we want to provide the functionality to users, so that if they deem that predictions are not right, they can make improvements…
I have working Streamlit app right now, but I have no idea at all, how can I integrate the segmentation labelling in it…