every blog every motto: Just live your life cause we don’t live twice.

0. 前言

因为遇到一个任务,需要自己制作标签。
题外话: 像mnist或是fashion_minst数据集,样本的标签是是一个数字(或是one-hot)或是字符串。对于搭建的模型最后一般用softmax调整下概率,最后交叉熵计算就行。刚开始制作标签的就一根筋的想着怎么把样本映射到一个数字上,擦,,,,浪费了不少时间。原来是遇到一个新的任务------图像分割(语义分割),minst那些是图像分类,两个不是一码事!!!!
这里的标签也是一个图片!!!
这里的标签也是一个图片!!!
这里的标签也是一个图片!!!

1. 正文

1.1 安装与使用

控制台输入

pip install labelme

打开软件,控制台输入

labelme

如下图,
open: 打开单个文件
open dir : 打开文件夹(内含多个文件)

打开多个图片,右下角显示文件夹中含有的图片,如下图。

进行标注,如下图(create polygons,首尾点合并就能输入标签名称。

保存,如下图(会在文件下生成对应的json文件)

接着进行下一张图片的标注,点击next image,如下图(图片仅为演示)

1.2 (批量)转成可用与训练的样本和标签

第一步,将上面生成的若干个json文件放在同一个文件夹下(文件夹内只含有json文件),如下图。
路径:

D:\Data_saved\Desktop\deep_learning_data\Sample\json


第二步,找到 json_to_dataset.py
在如下图路径下。

将json_to_dataset.py中的代码替换为以下。代码来源

import argparse
import json
import os
import os.path as osp
import warningsimport PIL.Image
import yamlfrom labelme import utils
import base64def main():warnings.warn("This script is aimed to demonstrate how to convert the\n""JSON file to a single image dataset, and not to handle\n""multiple JSON files to generate a real-use dataset.")parser = argparse.ArgumentParser()parser.add_argument('json_file')parser.add_argument('-o', '--out', default=None)args = parser.parse_args()json_file = args.json_fileif args.out is None:out_dir = osp.basename(json_file).replace('.', '_')out_dir = osp.join(osp.dirname(json_file), out_dir)else:out_dir = args.outif not osp.exists(out_dir):os.mkdir(out_dir)count = os.listdir(json_file) for i in range(0, len(count)):path = os.path.join(json_file, count[i])if os.path.isfile(path):data = json.load(open(path))if data['imageData']:imageData = data['imageData']else:imagePath = os.path.join(os.path.dirname(path), data['imagePath'])with open(imagePath, 'rb') as f:imageData = f.read()imageData = base64.b64encode(imageData).decode('utf-8')img = utils.img_b64_to_arr(imageData)label_name_to_value = {'_background_': 0}for shape in data['shapes']:label_name = shape['label']if label_name in label_name_to_value:label_value = label_name_to_value[label_name]else:label_value = len(label_name_to_value)label_name_to_value[label_name] = label_value# label_values must be denselabel_values, label_names = [], []for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):label_values.append(lv)label_names.append(ln)assert label_values == list(range(len(label_values)))lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)captions = ['{}: {}'.format(lv, ln)for ln, lv in label_name_to_value.items()]lbl_viz = utils.draw_label(lbl, img, captions)out_dir = osp.basename(count[i]).replace('.', '_')out_dir = osp.join(osp.dirname(count[i]), out_dir)if not osp.exists(out_dir):os.mkdir(out_dir)PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.png'))#PIL.Image.fromarray(lbl).save(osp.join(out_dir, 'label.png'))utils.lblsave(osp.join(out_dir, 'label.png'), lbl)PIL.Image.fromarray(lbl_viz).save(osp.join(out_dir, 'label_viz.png'))with open(osp.join(out_dir, 'label_names.txt'), 'w') as f:for lbl_name in label_names:f.write(lbl_name + '\n')warnings.warn('info.yaml is being replaced by label_names.txt')info = dict(label_names=label_names)with open(osp.join(out_dir, 'info.yaml'), 'w') as f:yaml.safe_dump(info, f, default_flow_style=False)print('Saved to: %s' % out_dir)
if __name__ == '__main__':main()

第三步,(在控制台中)切换到Scripts文件夹,路径如下
(其实可以不用切换,可以在任意路径下,不过后续生成的文件会在此文件夹下,因为是用的这个文件夹下的labelme_json_to_dataset.exe)

第四步,运行命令
命令格式:

labelme_json_to_dataset.exe + json文件的路径

我的图片标注后生成的json文件统一放在如下路径(1.1 中有提到),如下:

D:\Data_saved\Desktop\deep_learning_data\Sample\json

所以,完成的命令如下:

labelme_json_to_dataset.exe D:\Data_saved\Desktop\deep_learning_data\Sample\json



具体文件如下图

查看标签图像的位深度,如下图。是8位,即是可用于训练的标签。

参考文献

[1] https://blog.csdn.net/yql_617540298/article/details/81110685
[2] https://blog.csdn.net/u014513323/article/details/81166997
[3] https://www.cnblogs.com/roscangjie/p/10737053.html
[4] https://blog.csdn.net/xjtdw/article/details/94741984
[5] https://www.bilibili.com/video/BV16b411G7kB?p=3

【labelme】制作标签数据的完整流程相关推荐

  1. 医学图像分割制作标签数据

    医学图像分割制作标签数据 应该有更简单的办法,这里只记录一种可行的方法. 将图像中的对象分割,保存成stl文件,然后将stl文件转换成二值标签体数据. 因为深度学习训练的数据一般 要统一成固定的尺寸和 ...

  2. 制作用于图像语义分割训练的标签数据【图像分割】【labelme】

    制作用于图像语义分割训练的标签数据 *写在前面 一.使用labelme制作json数据 1.安装labelme 2.利用labelme制作json数据 二.将json数据转化为图像数据 1.单个jso ...

  3. 在Win10系统中使用labelme制作图像分割标签数据

    在Win10系统中使用labelme制作图像分割标签数据 文章目录 在Win10系统中使用labelme制作图像分割标签数据 前言 一. 安装labelme3.16.2 1. 安装Anaconda(若 ...

  4. 使用labelme标注工具制作图像分割标签数据

    labelme是一款python编写的用于图像检测.分割等神经网络标签数据制作的软件,可以实现点选形成闭合的多边形轮廓,并(批量)生成png标签图像的额功能,能够基本满足一般图像分割网络的需求. 1 ...

  5. 阿里年薪80w数据总监分享:一张图了解数据分析完整流程

    最近,老李已经陆陆续续给大家分享了一些数据分析的干货,包括数据分析方法和模型. 但也有粉丝私聊我说,跟着我学这些分析方法和模型一段时间了,是感觉到自己学了挺多,但总感觉自己缺少一套方法论,也就是从0- ...

  6. 实例分割和语义分割使用labelme制作的数据集如何转换为voc和coco格式的数据

    1.首选使用labelme进行数据集制作,制作完成后,会获取到图片和.json的文件,如下: 2.转换数据集为coco或者voc数据集 其实官方已经提供了,转换一个实例的代码,但是没有批量的转换代码, ...

  7. SARScape中用sentinel-1数据做SBAS-InSAR完整流程(1/2)

    SARScape中用sentinel-1数据做SBAS-InSAR完整流程 1 SABA-InSAR原理简述 2 数据采集和预设 2.1 SAR数据采集 2.2 DEM数据下载与放置 2.3 精密轨道 ...

  8. 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★

    文章目录 前言 一.查找子弹数据临时内存地址 二.查找子弹数据的静态地址 1.调试内存地址 05A59544 获取基址 05A59478 2.通过搜索基址 05A59478 获取内存地址 0E1DC1 ...

  9. 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )

    文章目录 前言 一.查找子弹数据临时内存地址 二.查找子弹数据真实地址 前言 在上一篇博客 [Windows 逆向]使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 ...

  10. 科研小技巧——制作学术会议报告视频的完整流程

    引言 近期由于受到疫情的影响,许多学术会议都转到线上举行了.由于各个地方时区不同,许多参会者有可能没办法在自己作报告的时间按时进入线上会议,所以许多会议都要求提供学术报告的视频版本,这篇文章就会介绍, ...

最新文章

  1. 「智源论坛Live报名」清华大学董胤蓬:深度学习对抗攻防平台
  2. Android开发工具GenyMotion安装和使用方法
  3. 3.通过现有的PDB创建一个新的PDB
  4. gym 101858
  5. Python Day03
  6. Numpy入门(详看注释)
  7. SQL Server常用的字符串/日期/系统函数
  8. 决策树CART介绍*
  9. 极化码生成矩阵的构造
  10. 图文介绍:Winhex的使用教程
  11. Unity3D动态加载FBX文件
  12. AI能力在智慧养殖应用现状
  13. Tlsr8258开发-BQB(DTM)测试
  14. android3d地图,百度地图Android版 新增卫星图及3D模式
  15. dz60自定义配列并用qmk编译固件
  16. c语言判断奇偶数的函数,c语言高手进,尽量多做点13. 定义一个函数even(),判断一个整数是否是偶数。如果是偶数返回1,否则返回0。(要求包...
  17. 天刀 服务器状态,天刀实用技巧_天刀各种游戏小技巧_玩游戏网
  18. 密室逃脱2 古堡迷城
  19. 笔记:源码修改开放5555端口
  20. Java多线程(超详解)

热门文章

  1. 通俗易懂的LDA模型
  2. java中的BigDecimal类型
  3. elementui 下拉框回显_elementUI Cascader 级联选择器回显
  4. 普通进销存管理系统设计2
  5. 用于黑客渗透测试的 21 个最佳 Kali Linux 工具
  6. Cesium-相机系统与视域移动
  7. 宽度学习详解(Broad Learning System)
  8. 这可能是最全的反爬虫及应对方案,再也不怕爬不到数据了
  9. 1.运动学分析-正运动学
  10. linux不识别iwconfig,CentOS中iwconfig命令not found的解决方法