语义分割之 数据标注

2023-11-17

数据标注的目的是为了在监督学习中告诉机器哪些东西是属于哪个类别或者具有某种属性. 语义分割其实是像素级的分类, 预测目标像素点属于哪个物体. 所以标注的目的就是告诉机器哪些个像素属于哪个类别

一. 标注工具

标注软件只是为了辅助标记物体的轮廓, 只要是有这个功能的软件都可以用. 我用的是 Labelme, 这个软件还是比较好用的, 以下就以 Labelme 为例说明

二. Labelme 安装和启动

1. 安装

打开 Anaconda Prompt, 输入 activate tf_gpu (tf_gpu 是我 Anaconda 中配置的环境, 你的就输入你的环境的名称, 没有的话, 直接用打开 Anaconda Prompt 时默认的 base 也是可以的) 回车. 接着再输入 pip install labelme 回车就开始安装了, 安装的过程会下载依赖项, 网速慢的话就会多等一阵, 下载失败就重新安装或者到 https://pypi.org/ 下载后在本地安装

install lablme

2. 启动

打开 Anaconda Prompt, 输入 activate tf_gpu, 再输入 labelme 就启动了. 如果刚才安装的窗口还在的话, 直接输入 labelme 也可以

labelme run

启动之后是下面这个样子

labelme window

三. 标注与保存

1. 打开图像

有两个方式可以打开图像, 一个是最左上面的 Open, 这个是打开单张图像, 基本不用. 最常用的还是用左上用的 Open Dir 选择要标注的图像的路径. 这样就可以把要标注的图像全部载入. Open Dir 打开路径之后, 在右下角的 File List 窗口中会列出所有图像的名称(绝对路径). 待标注的图像的名称没有什么要求, 不一定要按什么 0001 排到 9999 什么的, 除非你有强迫症

file list

文件名前面的复选框如果是勾上的, 表示这张图已经被标注过, 没有勾选就表示这张图还没有标注过

2. 标注

标注的形状可以有多种, 常用的有 Polygons(多边形), Rectangle (矩形), Circle(圆), 可以同时出现在一张图中, 根据目标的形状选择合适的标注形状. 语义分割一般会用 Polygons, 因为是像素级的分割, 所以其他的形状可能不合适. 这里只讲 Polygons, 其他的操作是一样的

假如我们要标注干脆面, 可以点左边工具栏的 Create Polygons 按钮, 也可以在图像显示区域右键, 选择 Create Polygons, 鼠标就变成十字了, 就开始沿它的边缘点击左键形成封闭的图形. 在标注过程中, 可以按住 Ctrl + 鼠标滚轮 放大缩小图像, 以方便标注细节的东西

pop menu
label

到最后一个点连接到第一个点时, 有一个大圆出现, 点击就会弹出一个窗口让你输入目标类别. 标注过程中双击会连接到第一个点, 一样的功能. 这里我输入raccoon, 如果没有标注过的话, 下面的列表是空的. 下次就可以在列表中选择而不用输入. 然后点 OK 按钮就标注好了一个目标了

class

标注好之后在右面的 Label List 中会出现标注的类别

label list

注意这里的 raccoon 后面有一个红色的点, 标注的图形也是红色. 记住这个颜色, 后面会讲. Polygon Labels 下面会出现刚才标注的图形. 这里也是红色, 因为这是第一个类别, 用红色表示

polygon labels

3. 保存

标记完成之后, 可以点左边工具栏的 Save 按钮保存, 如果是灰色的话, 表示不能被保存. 有可能是你刚才保存过, 还有可能是这张图没有被标注或者改动. 如果没有被保存, 则保存时会弹出窗口让你选保存的路径和保存文件的名称, 一般不用修改, 使用默认值, 方便以后处理. 如果你不保存, 在点 Next Image 按钮, 或者 Prev Image 按钮, 又或者右面的 File List 中的图像想标注其他图像时, 也会让你保存.

如果你是按默认的路径和名称保存的话, 在你放图像的文件夹中会多出一个 json 文件, 名称和对应的图像一样. 里面记录了标注的图形和类别, 标注的图像名称等, 以后会分析这个文件

jpg and json
在 File 菜单中有一个 Save With Image Data 选项, 默认是勾选上的. 意思是保存的时候连同图像数据一同保存到 json 文件中, 这样就可以不用原始图像了. 取不取消看个人使用情况, 我建议可以勾选上, 方便以后使用

4. 修改

如果你想修改刚才标注的图形, 可以点左边工具栏 Edit Polygons 按钮, 也可以右键选择 Edit Polygons. 然后拖动标注的图形, 完成后保存. 其他一些修改功能可以看右键菜单中的菜单项来操作, 相信聪明的你一看就会

四. 多类别标注

同上面讲的一样标注, 可以是不同类型的形状. 只是输入目标类别的时候输入你想要的类别就可以了, 比如 dog 之类的

raccoon and dog
dog
这是第二个类别. 所有与之相关的颜色都会是绿色.

label_dog
polygon_dog

如果是第三个类别的话. 颜色就会是暗黄色, 如下表颜色依次向后. 从红色开始是因为黑色表示的是背景. 这个就是所谓的索引表. 黑色排在 0, 就表示第 0 个类别(背景). 红色排第 1, 表示第 1 个类别. 依次类推…, 最后用这个索引在表里面找出颜色来显示标注相关的颜色. 就是一个查表操作. 如果用 labelme 提供的代码生成标签图像的话, 所以生成的标签图像中目标的颜色和这个表里的颜色是对应的. 这个排序(索引)就是标签图像的 像素值

color table
多类别标注完成后, 生成的 json 文件里面会记录所有类别的名称和标记数据等, 和单个类别是一样的. 只是类别多一点而已. 如果类别超过 256 个的话, 颜色我也不知道怎么显示, 因为我没有标注过这么多的类别. 你可以试一下

五. 快捷键

  • Ctrl + 鼠标滚轮: 放大与缩小图像
  • 鼠标滚轮: 上下移动图像
  • Alt + 鼠标滚轮: 左右移动图像
  • D: 下一张图像
  • A: 上一张图像
  • File 菜单中有一个 Save Automatically: 自动保存, 选上之后就不用每张图像都要确认保存了
  • 如果在标注过程中有一个点错了想删除那个点, 可以按 Back sapce, 新版本 Labelme 可能是 Ctrl + Z, 删除完了后, 就可以点左键继续标注

如果有什么不明白的功能的话, 可以留言一起讨论

按上面的方法把所有图像都标注完成后, 你的标注工作就完成了

下一篇: 语义分割之 json 文件分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

语义分割之 数据标注 的相关文章

  • IDEA:Warning: No artifacts configured FIX

    问题 办法 Warning No artifacts configured 警告 未配置项目 给idea项目添加tomcat的时候出现 解决办法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 现在还不够 16 17
  • QT连接SQLserver详细教程

    Qt 连接 SQL Sever数据库 环境 一 配置 ODBC数据源 一 在SQL Sever Manger中添加 新的用户 1 打开如下自带的 MSS Management Studio 2 登录时选择 Windows 身份验证 3 去往
  • 在python中使用python-docx实现word文档自动化

    五一马上就要结束了 趁着今天休息的一天 给大家说说在python对办公文档处理 文章中说要详细的介绍python中几个对文档处理的库 今天就介绍一下word文档处理的python docx库 好了废话不多说开始吧 哈哈哈哈哈哈哈啊哈哈 py

随机推荐

  • 学习MongoDB 三: MongoDB无法启动的解决方法

    一简介 我们之前介绍了MongoDB入门 安装与配置 我们今天在打开MongDB时 我们先运行cmd exe进入dos命令界面 然后进入cd D mongodb bin目录下 启动服务或者mongo命令都报了错误 二 解决 1 net st
  • vue实现三级联动

    div div
  • 图片在盒子内等比展示不变形

    通过这个属性 object fit cover 使用场景如下 fatherBox 父盒子要有宽高 width 240px height 240px sonBox 子盒子 width 100 height 100 object fit cov
  • 7种Git错误以及解决方法

    使用Git的时候如果出现报错 要会解决Git错误 以下整理了七种Git错误以及解决的方法 1 当出现fatal not a git repository or any of the parent directories git时 说明不是一
  • vector find() 用法

    int main vector
  • STM32的PA0输出高电平的具体库函数代码操作

    在STM32中 可以使用库函数控制PA0输出高电平 具体的代码如下 初始化GPIOA的引脚模式 设置PA0为输出模式 GPIO InitTypeDef GPIO InitStruct HAL RCC GPIOA CLK ENABLE GPI
  • Score SDE 三种随机微分方程代码解读

    定义SDE类 定义了7个子函数 T End time of the SDE sde marginal prob Parameters to determine the marginal distribution of the SDE p t
  • 计算机二级-简单应用题

    题目要求 编写代码 以实现如下功能 键盘输入小明学习的课程名称及考分等信息 信息间采用空格分隔 每个课程一行 空行回车结束录入 示例格式如下 数学 90 语文 95 英语 86 物理 84 生物 87 屏幕输出得分最高的课程及成绩 得分最低
  • 去除指定css属性

    使得指定css样式失效 layui btn background image initial important 优先使用 layui btn background image initial important padding 0 10p
  • 像程序员一样思考_如何像程序员一样思考-解决问题的经验教训

    像程序员一样思考 by Richard Reis 理查德 里斯 Richard Reis 如何像程序员一样思考 解决问题的经验教训 How to think like a programmer lessons in problem solv
  • Vue-router2.0基础,秒会。

    如果不是模块式开发 请先引入 1 0基础 div h1 Hello App h1 p p div
  • Docker打开远程API服务

    一 开发环境 1 系统环境 2 docker版本 二 步骤 1 查看docker配置文件路径 2 编辑配置文件 3 重启docker 三 测试 1 查看docker客户端服务端版本 docker H localhost 2375 versi
  • C++ 在一个程序中调用exe

    生成exe的代码 include
  • StarRocks 运维工具 StarGo

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Spring Boot Admin 监控告警

    Spring Boot Admin 监控告警 要进行监控 需要两个Project 一个是Admin Server端 负责监控Spring boot的项目 另一个是Admin Client端 是被监控的Spring boot服务 当然也可以一
  • Android优化

    一 布局优化 布局优化就是删除布局中无用的控件和层级 可以用Hierarchy Viewer工具来检测 其次有选择地使用性能较低的ViewGroup include标签 include标签只支持以android layout开头的属性 比如
  • Synchronized的三种写法

    文章目录 前言 一 synchronized是什么 二 synchronized的三种写法 1 同步代码块 2 在实例方法上使用synchronized 3 在静态方法上使用synchronized 总结 前言 总结一下自己在学习Synch
  • STA——multicycle path

    目录 0 多周期路径 1 发射时钟和捕获时钟相同 2 发射时钟和捕获时钟不同 3 examples 之前去地平线面试的时候被问到了multicycle path的一点问题 其实这个问题我应该知道 看过 Constraining Design
  • 【Linux】Linux Centos 7.6 离线RPM安装NTP(时间同步)服务器及基本配置

    文章目录 1 概述 2 安装 2 1 查看服务器 2 2 安装NTPDATE NTP服务 2 3 NTP相关配置 2 4 启动 20230118日 22点13分回到家 3年后第一次回家 发个博客纪念一下 1 概述 一个环境 因为需要需要nt
  • 语义分割之 数据标注

    语义分割之 数据标注 一 标注工具 二 Labelme 安装和启动 1 安装 2 启动 三 标注与保存 1 打开图像 2 标注 3 保存 4 修改 四 多类别标注 五 快捷键 数据标注的目的是为了在监督学习中告诉机器哪些东西是属于哪个类别或