Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); labelit/README.md at master · verloop/labelit · GitHub
Skip to content

Latest commit

History

History
90 lines (77 loc) · 6.75 KB

File metadata and controls

90 lines (77 loc) · 6.75 KB

Labelit

Data labelling platform for small teams

Description

Labelit is a data labelling platform based on open source tool Label Studio. We want to help small teams (having 3 to 5 annotators) who use Label Studio to manage multiple projects.

How it works

Labelit creates a Label Studio server for each project in multi-session mode so that it works for multiple users. So, if you have N projects, there will be N Label Studio servers running. Labelit then routes user requests to these servers based on project using reverse-proxy technique. Labelit takes care of managing projects, user authentication and assigning annotators to projects.

Features

  • Create and manage multiple data labelling projects.
  • Label data using the familiar Label Studio tool.
  • Access control using Admin, Manager and Annotators roles.
  • Support for datasets from remote storage such as AWS S3.
  • Export labelled data automatically at regular intervals.

How to Setup

  1. Download latest release from releases page using Source code option and decompress the downloaded file.
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY='<generated_key>'
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the server using gunicorn : gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8000' labelit.wsgi

Development Setup

  1. Clone the repo : git clone git@github.com:verloop/labelit.git; cd labelit
  2. Create a conda environment (recommended) : conda create -n label-studio python=3.7
  3. Switch to conda env (recommended) : conda activate label-studio
  4. Install requirements for Labelit : pip install -r requirements.txt
  5. Enter Django app directory : cd labelit
  6. Set secret key for Django as Environment variable (You can generate secret key using https://gist.github.com/ndarville/3452907 or https://djecrety.ir): export DJANGO_SECRET_KEY="<generated_key>"
  7. Perform database migration (By default, it uses local SQLite database. If you want to connect to another database, check Django documentation) : python manage.py migrate
  8. Create admin user : python manage.py createsuperuser
  9. Run the development server : python manage.py runserver --noreload

How to use

After you perform setup, you can use Labelit as follows:

Admins

  1. Go to http://127.0.0.1:8000/ and login using your credentials.
  2. You can see projects created by all managers in projects list page.
  3. You can create new users by going to admin panel at http://127.0.0.1:8000/admin.
  4. While creating users, make sure you assign the correct access role using Staff type field.

Managers

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • Listing projects
    • You will be shown all the projects you created after successful login. You can also go to http://127.0.0.1:8000/projects/list for the same.
  • Creating new project
    • You can create new projects using create project page at http://127.0.0.1:8000/projects/create and following instructions give there.
    • You can provide local directory or remote storage directory in the dataset path. We currently support AWS S3 and Google storage (plugin needs to be installed and the server needs to have access to the bucket)
    • You need to give labelling configuration as Label Studio XML config. You can test the config first on Label Studio Playground.
    • Select export option if needed and we'll automatically export the labelled data in format selected.
  • Assigning annotators
    • From the project listing page, click Manage annotators to add or remove annotators for the project.
    • Once you are in the annotator managing page, you can select annotators to be assigned and click Save once done to apply the changes.
  • Deleting projects
    • From the project listing page, click Delete button for the project you want to delete.
    • Confirm deleting the project from the popup when its shown.

Annotators

  • Go to http://127.0.0.1:8000/ and login using your credentials.
  • You can view all projects assigned in the homepage.
  • Click the Tasks UI button to view all the tasks that needs to be labelled for the project
  • Click the Labelling UI button to go to labelling page.

Remote storage support

Labelit now supports datasets that are stored remotely. We have right now added plugins for the following storage :

  • AWS S3
  • Google storage

Since this is optional, Labelit by default doesn't install the packages needed for accessing data from these storages. Install package for the storage you need:
For AWS S3 support : pip install boto3
For Google storage support : pip install google-cloud-storage

Make sure the instance/machine is configured with access to the remote storage and check Django settings (./labelit/labelit/settings.py) for few additional settings.
And that's it! Labelit automatically detects the storage type when you give it while creating project, just make sure you use the right prefix (eg. s3:// for AWS s3 storage). Currently, Labelit only supports downloading dataset from remote storage. This is performed only one time after project is created. So, in case the data in remote storage is modified later, it won't reflect here. We will be adding support for remote upload soon to automatically upload labelled data to remote storage.

Using other remote storages

If you are using any other remote storage type, you can easily write a plugin. Check our Storage module for this. Once plugin is created, you need to modify Jobs module for using it.

Deploying to Production

We strongly advise not to use Labelit on production as it's still under development. In case you want to try, you need to run Django using a proper server such as Gunicorn. Here's an example of how to run it:
gunicorn --worker-class=gevent --worker-connections=500 --workers=1 -b '0.0.0.0:8080' labelit.wsgi

The above command starts a Gunicorn server on port 8080. Make sure you don't run multiple worker processes as it will start duplicate Label Studio servers, hence we are using gevent in the above example. We will be fixing this in a future release.