打造自己的RAG解析大模型:Labelme版面标注并顺利完成训练
今天,我们将重点讲解 LabelMe,介绍其安装、标注流程及数据导出方法,并结合版面标注实例,展示如何建立标签和导出数据,并最终实现与飞桨模型的适配。这将帮助大家更好地理解如何利用 LabelMe 高效构建数据集,为后续模型训练打下坚实基础。
Labelme全面介绍
LabelMe 是由麻省理工学院(MIT)计算机科学与人工智能实验室(CSAIL)开发的强大开源图像标注工具,广泛应用于计算机视觉任务的数据标注。它支持多种标注类型,包括边界框、多边形、线段、关键点等,帮助用户高效地构建高质量的数据集。
一、Labelme的安装与使用
-
使用pip安装:这是推荐的安装方式,只需在命令行中输入 ‘pip install labelme’ 即可。
-
使用Anaconda安装:首先创建一个新的Python环境,然后激活该环境并安装Labelme。具体命令如下:
conda create --name=labelme python=3
conda activate labelme
pip install labelme
3. 从源码安装:如果需要进行二次开发或者希望获取最新的代码,可以从Labelme的GitHub仓库克隆代码并进行安装。具体步骤为:
git clone https://github.com/labelmeai/labelme
cd labelme
pip install -e .
无论选择哪种安装,安装完成后,可以通过命令行输入**labelme
启动Labelme的图形界面。**
二、Labelme的功能与标注方式
Labelme支持多种标注方式,包括但不限于多边形标注、矩形标注、圆形标注、线条标注和点标注。这些标注方式可以满足不同应用场景的需求。
-
多边形标注:适用于标注复杂的形状和轮廓,如人形、图章等。
-
矩形标注:适用于标注简单的矩形区域,如车辆、建筑物等。
-
圆形标注:适用于标注圆形物体,如车轮、果实等。
-
线条标注:适用于标注路径、轨迹等线性结构。
-
点标注:适用于标注关键点、特征点等。
此外,Labelme还支持图像级别标注,可以对整张图像进行分类标注。同时,Labelme还提供了自定义界面功能,用户可以根据需求预定义标签、设置自动保存等,实现界面定制。
三、能标注的场景
Labelme广泛应用于各种计算机视觉项目中,包括但不限于:
-
自动驾驶:标注道路、车辆、行人等目标,为自动驾驶系统提供训练数据。
-
医疗影像分析:标注病变区域、器官轮廓等,辅助医生进行诊断。
-
遥感图像处理:标注地物、建筑等,为遥感图像分析提供数据支持。
-
工业检测:标注产品缺陷、零件位置等,用于质量控制和故障预测。
-
文档解析:版面标注,用于对PDF、图片的结构化解析。
Labelme还支持对视频进行逐帧标注,适用于需要处理视频数据的场景。
四、标注结果的导出与格式转换
Labelme支持导出多种数据格式,如JSON、COCO、VOC等,方便与其他软件和框架进行集成和互操作。
需要注意的是,虽然Labelme本身不直接支持边界框标注,但可以通过多边形等标注方式间接实现目标检测数据集的标注。此外,对于特定的模型训练需求,可能需要进行数据格式的转换。例如,YOLO模型需要特定的标签格式,可以通过编写脚本将JSON格式的标注数据转换为YOLO模型可以解析的标签格式。
适配飞浆平台需要将Labelme标注版面数据使用工具类转换为COCO格式。
Labelme实际操作
下面我们就以版面标注为例,讲解一下Labelme标注版面训练数据的方法。
一、建立版面类别
一个中文文档版面基本类别至少要包含以下8个:
Text,正文
Title,标题
Figure,图片
Figure caption,图片标题
Table,表格
Table caption,表格标题
Header,页眉
Footer,页脚
如果你所在的行业文档中有更丰富的分析要求,并且文档中会出现除基础类别以外的类别,那你可以根据需要添加类别。
例如:
论文类文档,通常会添加“引用”类别和“公式”类别
-
引用,Reference
-
公式,Equation
二、选择合适的标注框进行标注
一般文档版面标注,我们会使用矩形框、正方形框、多边形框进行标注,下图是使用矩形框标注的示例,我们可以在图中看到几个区域,标注区域、标签列表、多边形标签。
其中,标签列表就是版面的分类,多边形标签就是当前这页文档所有标注后的类别,当前这页我标注了3个Title、2个Text、1个Header、1个Table、1个Table caption 。
标注完保存后,我们会在图片目录看到一个与图片文件同名的json文件,如下图所示:
选取其中一个图片,查看JSON文件内容如下:
{
"version": "5.5.0",
"flags": {},
"shapes": [
{
"label": "Header",
"points": [
[
529.2301587301587,
89.61904761904768
],
[
657.8015873015873,
105.49206349206355
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Text",
"points": [
[
130.02380952380955,
155.49206349206355
],
[
1063.357142857143,
204.69841269841277
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Title",
"points": [
[
168.91269841269846,
211.8412698412699
],
[
326.05555555555554,
231.68253968253975
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Text",
"points": [
[
127.6428571428572,
237.2380952380953
],
[
1064.9444444444446,
315.01587301587307
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Title",
"points": [
[
169.70634920634924,
320.5714285714286
],
[
283.9920634920635,
340.4126984126985
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Text",
"points": [
[
126.84920634920636,
346.7619047619048
],
[
1064.1507936507937,
503.904761904762
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Title",
"points": [
[
130.81746031746033,
542.0
],
[
213.35714285714286,
565.8095238095239
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Text",
"points": [
[
127.6428571428572,
576.1269841269841
],
[
283.9920634920635,
598.3492063492064
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Title",
"points": [
[
126.84920634920636,
635.6507936507936
],
[
1013.3571428571428,
662.6349206349206
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Text",
"points": [
[
128.43650793650798,
669.7777777777778
],
[
285.57936507936506,
693.5873015873016
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
},
{
"label": "Footer",
"points": [
[
563.3571428571429,
1564.2222222222222
],
[
626.0555555555555,
1584.857142857143
]
],
"group_id": null,
"description": "",
"shape_type": "rectangle",
"flags": {},
"mask": null
}
],
"imagePath": "train_21.jpg",
"imageData": null,
"imageHeight": 1684,
"imageWidth": 1191
}
JSON文件核心内容如下:
-
label, 表示分类
-
points,表示左上角坐标和标注框的宽、高,也就是{x,y,w,h}的表示方式。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
三、将JSON数据转换为COCO格式
使用labelme标注的版面训练集采用的JSON格式存储,需要转换为飞浆支持的COCO格式进行模型训练。
执行以下命令实现转换:
# train
python3 labelme2coco.py CDLA_dir/train train_save_path --labels labels.txt
# val
-
CDLA_dir/train,为你的标注目录,里面是你的标注图片和JSON文件
-
train_save_path,为转换后的的训练集存储地址
-
–labels 是扩展参数,后面跟着labels.txt分类数据字典。
labels.txt内容如下:
Text
Title
Figure
Figure caption
Table
Table caption
Header
Footer
Reference
Equation
COCO数据结构介绍:
{
"images": [{
"file_name": "a9336d1f-train_5012.jpg",
"height": 601,
"width": 792,
"id": 0
}],
"annotations": [{
"id": 0,
"image_id": 0,
"category_id": 4,
"segmentation": [[528.0, 87.0, 658.0, 87.0, 658.0, 106.0, 528.0, 106.0]],
"bbox": [528.0, 87.0, 131.0, 20.0],
"ignore": 0,
"iscrowd": 0,
"area": 2620.0
}],
"categories": [
{"id": 0, "name": "Equation"},
{"id": 1, "name": "Figure"},
{"id": 2, "name": "Figure caption"},
{"id": 3, "name": "Footer"},
{"id": 4, "name": "Header"},
{"id": 5, "name": "Reference"},
{"id": 6, "name": "Table"},
{"id": 7, "name": "Table caption"},
{"id": 8, "name": "Text"},
{"id": 9, "name": "Title"}
]
}
标注格式包含以下信息:
info,表示标注文件info。
images,表示标注文件中图像信息列表,每个元素是一张图像的信息。如下为其中一张图像的信息:
file_name,表示目标图片的名称
height,表示目标图片的高度。
width,表示目标图片的宽度。
id,表示目标图片的id。
annotations,表示标注文件中目标物体的标注信息列表,每个元素是一个目标物体的标注信息。如下为其中一个目标物体的标注信息:
segmentation,表示目标物体的分割信息。
area,表示目标物体的面积。
iscrowd,表示目标物体是否为密集型,0为非密集,1为密集。
image_id,表示目标物体所属的图像id。
bbox,表示目标物体的边界框,格式为[x1,y1,w,h],此处为左上角坐标和宽高。
category_id,表示目标物体的类别id。
id,表示目标图片的id。
ignore, 表示目标物体是否为忽略的,0为否,1为是。
categories,版面数据字典
模型训练
转换成COCO的格式后,目录结构如下:
-rw-r--r-- 1 root root 1.2M Aug 31 03:54 annotations.json
drwxr-xr-x 2 root root 20K Aug 31 03:54 JPEGImages/
-
annotations.json,为转化后的标注文件,格式参考[COCO数据结构介绍]
-
JPEGImages/存放图片的目录
按照飞浆要求将转换后的标注文件与图片目录拷贝到相应的开发套件内,使用训练命令,即可完成标注文件的训练。
重点注意:训练集与验证集一定要使用同一个标注工具标注,保证导出后的标注文件格式中categories字典 ”数量“ 与 ”顺序“ 是一致的。
写在最后
今天我们详细讲解了如何使用 LabelMe 进行版面标注,展示了它操作简便、易于上手的特点。LabelMe 强大的标注功能为各种复杂的视觉任务提供了良好的支持。在接下来的内容中,我们将介绍另外两款标注工具的使用方法。掌握这些标注技能不仅能促进个人技术成长,还具备广阔的市场应用前景。希望更多人能熟练掌握标注工具,为视觉 AI 发展贡献力量。
在大模型时代,我们如何有效的去学习大模型?
现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
掌握大模型技术你还能拥有更多可能性:
• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;
• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;
• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;
• 更优质的项目可以为未来创新创业提供基石。
可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF书籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型各大场景实战案例
结语
【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
原文地址:https://blog.csdn.net/2401_84208172/article/details/143501723
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!