最近在尝试做图像目标检测相关的模型训练工作,但是如果想要实现一个模型的训练,数据集是至关重要,而目标检测数据集的制作相对于图像分类要复杂一些,因此需要一个简单易用的标注工具,对比了网上的一堆工具之后,最后选择了label studio,主要是以下原因:
- 数据安全性:期望标注的数据可以只在自己内部使用,不希望暴露在外网
- 便捷性:可以通过部署一个网页服务来实现标注,这样后面也可以方便其他同学一起标注
- 自动/半自动标注:可以结合训练的模型来辅助标注实现自动/半自动标注,也可以可视化和验证训练模型的目标检测效果。 最后发现label studio是满足上面几个诉求,因此搭建了Label Studio标注工具,并且结合YOLO模型实现了数据集的自动/半自动标注,现将整个过程记录。
环境搭建
基本环境搭建
css
复制代码
> conda create -n label-studio python=3.10
> conda activate label-studio
前端服务
shell
复制代码
> cd /data/code/github/label-studio
# Run database migrations
> python label_studio/manage.py migrate
> python label_studio/manage.py collectstatic
# Start the server in development mode at http://localhost:8080
python label_studio/manage.py runserver
> python label_studio/server.py --host=0.0.0.0 --port=8081
数据保存路径如下:
javascript
复制代码
~/.local/share/label-studio/
如下所示
yaml
复制代码
(label-studio) # ls -lrt ~/.local/share/label-studio/
total 1212
drwxr-xr-x 2 xxxx xxxx 4096 Oct 20 10:36 test_data
drwxr-xr-x 4 xxxx xxxx 4096 Oct 20 11:02 media
drwxr-xr-x 2 xxxx xxxx 4096 Oct 20 12:05 export
-rw-r--r-- 1 xxxx xxxx 1228800 Oct 20 15:30 label_studio.sqlite3
- 项目界面
- 新建项目
- 基本设置
Labeling Interface中可以设置标注的物体类型
- 后端推理
Machine Learning可以设置后端推理服务来实现自动化标注,可以参考label-studio-ml-backend,如果使用了Yolov8来做检测的话,可以参考label-studio-yolov8-backend;如果结合SAM来做检测的话,可以参考分割一切?手把手教你部署SAM+LabelStudio实现自动标注
Retrieve predictions when loading a task automatically:会自动将导入的图片去调用预测服务
- 最终效果
下面的数字是对应类型的快捷键
可以清理标注结果
- Delete Tasks:删除图片和任务
- Delete Annotations:删除手动标注结果
- Delete Predictions:删除预测结果,需要接入了后端预测服务,如果对于预测结果不满意,希望重新预测的话,可以删除后,重新生成预测结果。
标注的数据code如下:
json
复制代码
{
"id": 50,
"data": {
"image": "/data/upload/7/437ac54a-csm_eb24002_58f4fb61dd.jpg"
},
"annotations": [
{
"id": 5,
"created_username": " xxxx@gmail.com, 2",
"created_ago": "0 minutes",
"completed_by": {
"id": 2,
"first_name": "",
"last_name": "",
"avatar": null,
"email": "xxxxx@gmail.com",
"initials": "li"
},
"result": [
{
"original_width": 1366,
"original_height": 768,
"image_rotation": 0,
"value": {
"x": 10.10689990281827,
"y": 27.483448736637506,
"width": 23.420796890184647,
"height": 37.68170958859735,
"rotation": 0,
"rectanglelabels": [
"Car"
]
},
"id": "8oMV4M5avz",
"from_name": "label",
"to_name": "image",
"type": "rectanglelabels",
"origin": "manual"
}
],
"was_cancelled": false,
"ground_truth": false,
"created_at": "2023-10-22T09:21:27.660411Z",
"updated_at": "2023-10-22T09:21:27.660435Z",
"draft_created_at": "2023-10-22T09:19:22.672990Z",
"lead_time": 114.60199999999999,
"import_id": null,
"last_action": null,
"task": 50,
"project": 7,
"updated_by": 2,
"parent_prediction": null,
"parent_annotation": null,
"last_created_by": null
}
],
"predictions": []
}
后端预测服务
可以部署后端预测服务来实现自动标注
shell
复制代码
> git clone https://github.com/HumanSignal/label-studio-ml-backend.git
> cd label-studio-ui-element-backend
> pip install -e .
# 环境验证
> label-studio-ml create env_verify
> label-studio-ml start env_verify -p 9091
- 创建正式环境
css
复制代码
> label-studio-ml create ui_element
> label-studio-ml start ui_element -p 9091
> nohup label-studio-ml start ui_element -p 9091 > ./ui_element/label.log 2>&1 &
> nohup label-studio-ml start ui_element_sam -p 9092 > ./ui_element_sam/label.log 2>&1 &
导出标注结果
会导出来所有的标注结果,并且可以导出来不同的标注格式,比如用作YOLO训练的话,一般可以使用YOLO
格式,当然也还有COCO
和VOC
数据格式
目前还没法只导出来选中图片的标注结果。 比如导出来的YOLO数据格式如下:
-
images:标注的图片
-
labels:标注数据,使用txt后缀保存,每一行代表一条标注数据,包含5列
- 第1列:标注的类别,和下面的
classex.txt
中的类别索引保持一致 - 第2列:标注的矩形框的中心点x坐标(经过了归一化处理:坐标点/图片宽度)
- 第3列:标注的矩形框的中心点y坐标(经过了归一化处理:坐标点/图片高度)
- 第4列:标注的矩形框的宽度(经过了归一化处理:宽度/图片宽度)
- 第5列:标注的矩形框的高度(经过了归一化处理:高度/图片高度)
- 第1列:标注的类别,和下面的
复制代码
0 0.7914317925591883 0.3476714942329373 0.3066516347237879 0.1781053970456451
0 0.7931228861330326 0.5379758910762293 0.30552423900789166 0.16834619720752755
0 0.7931228861330328 0.7221807880206979 0.30777903043968435 0.1756655970861157
- classes.txt: 保存标注的类型列表
这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
因篇幅有限,仅展示部分资料
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓