前言
Label Studio是一个非常好用的开源数据标注工具,拥有对包括音频、文本、图片、视频和时间序列等各种数据类型的标注能力,有简单易用的UI设计和多导出格式的支持,能够有利于数据准备和利用已有训练数据提升机器学习模型精度。
本文内容简要介绍如何在label-studio中批量上传本地数据。
实现
当我们希望在label-studio中批量上传本地数据时,可以通过将本地数据以http服务的方式暴露给label-studio访问。
以下以Ubuntu系统为例进行说明。
将本地数据(如待批量导入的图片)放在运行label-studio服务的远程机器上的某个路径(例如/data/dataset/
),新增一个批量导入的脚本:
# 切到python的label_studio包路径下
cd /data/miniconda3/lib/python3.7/site-packages/label_studio
# 新增sh脚本
vi serve_local_files.sh
添加以下内容:
#!/usr/bin/env bash
INPUT_DIR=$1
WILDCARD=${2}
OUTPUT_FILE=${3:-"files.txt"}
PORT=${4:-8081}
echo "Usage: sh serve_local_files.sh INPUT_DIR WILDCARD OUTPUT_FILE PORT"
echo "This script scans INPUT_DIR directory with WILDCARD filter [all files by default],"
echo "generates OUTPUT_FILE [files.txt by default] with a file list,"
echo "starts web server on the port PORT [8081 by default] that serves files from INPUT_DIR"
echo
echo "Scanning ${INPUT_DIR} ..."
FIND_CMD="find ${INPUT_DIR} -type f"
if [ -z "$WILDCARD" ]; then
echo "Files wildcard is not set. Serve all files in ${INPUT_DIR}..."
else
FIND_CMD="${FIND_CMD} -name ${WILDCARD}"
fi
echo "Replacing ${INPUT_DIR} to http://localhost:${PORT} ..."
INPUT_DIR_ESCAPED=$(printf '%s\n' "$INPUT_DIR" | sed -e 's/[\/&]/\\&/g')
eval $FIND_CMD | sed "/${INPUT_DIR_ESCAPED}/s//http:\/\/localhost:${PORT}/" > $OUTPUT_FILE
green=`tput setaf 2`
reset=`tput sgr0`
echo "${green}File list stored in '${OUTPUT_FILE}'. Now import it directly from Label Studio UI${reset}"
echo "Running web server on the port ${PORT}"
cd $INPUT_DIR
python3 -m http.server $PORT
执行导入脚本:
bash serve_local_files.sh /data/dataset/ *.jpg files.txt 8082
关于参数支持可见脚本内容和参考资料[3]。
执行后在/data/miniconda3/lib/python3.7/site-packages/label_studio
路径下会生成files.txt文件。
将生成的files.txt下载到本机上并将files.txt
文件中的localhost
批量替换为远程机器的实际ip
。
在label-studio服务的网页中,在新建project中使用import
功能上传files.txt文件。即可正常访问批量导入的数据。
版权说明
本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com或扫描个人介绍栏二维码咨询。
参考资料
[1] heartexlabs/label-studio: Label Studio is a multi-type data labeling and annotation tool with standardized output format
[2] Label Studio – Open Source Data Labeling
[3] Label Studio Documentation — Import Data into Label Studio
[4] label-studio/serve_local_files.sh at master · heartexlabs/label-studio