Win10系统下安装labelme及json文件批量转化方法


Posted in Python onJuly 30, 2019

一、安装环境:windows10,anaconda3,python3.6

由于框架maskrcnn需要json数据集,在没安装labelme环境和跑深度学习之前,我安装的是anaconda3,其中pyhton是3.7版本的,经网上查阅资料,经过一番查找资料,发现,原来在2019年,TensorFlow还不支持python3.7,所以,迫于无奈,我只能乖乖把python的版本退回到3.6版本,具体步骤也很简单。就是打开anaconda prompt ,然后输入conda install python=3.6,然后等待提示(y/n),输入y,等待十几分钟,就会提示done,这样的话,就表示python3.7已经退回到python3.6了。(经过尝试这种方法在我这里没有行得通,可能跟网速有关,又尝试了另一种方法,有兴趣的可以尝试一下。)索性就把labelme安装到3.6中了。

二、安装过程:

1、管理员身份打开 anaconda prompt

2、输入命令:conda create --name=labelme python=3.6

3、输入命令:activate labelme

4、输入命令:pip install pyqt5,pip install pyside2(自己刚开始没有安装pyside2,运行 \anaconda安装目录\envs\labelme\Scripts\label_json_to_dataset.exe 会出现module "pyside"缺失错误)

5、输入命令:pip install labelme(由于网络原因或者库的地址,经常运行一半出现错误,不要气馁,多执行几次)

6、输入命令:labelme 即可打开labelme。如下:

Win10系统下安装labelme及json文件批量转化方法

安装完成后,需要使用再次启动labelme。则需要重新打开anaconda prompt,输入activate labelme,进入labelme环境。再输入命令: labelme 即可

三、用labelme标注完图片后,会生成json文件

以小猫为例:点击保存会在自己的图片目录下生成json文件

Win10系统下安装labelme及json文件批量转化方法

点点

生成的json文件并不能直接用,我们需要对他进行批处理才能成为maskrcnn需要的数据集,批量转化如下:

abelme标注工具再转化.json文件有一个缺陷,一次只能转换一个.json文件,然而深度学习的项目通常需要大量的数据,那么转换.json文件就是一个比较耗时的工作;因此,对labelme做出了改进,可以实现批量转换.json文件。

在安装Anaconda中找到json_to_dataset.py文件如果未找到可以在计算机中搜索,将该文件代码修改为以下代码:

import argparse
import base64
import json
import os
import os.path as osp
import warnings
import PIL.Image
import yaml
from labelme import utils
def 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_file
  alist = os.listdir(json_file)
  for i in range(0,len(alist)):
    path = os.path.join(json_file,alist[i])
    data = json.load(open(path))
    out_dir = osp.basename(path).replace('.', '_')
    out_dir = osp.join(osp.dirname(path), out_dir)
    if not osp.exists(out_dir):
      os.mkdir(out_dir)
    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 dense
    label_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)
    PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.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()

操作命令如下图:

Win10系统下安装labelme及json文件批量转化方法

生成效果如下:每张图片生成五个文件 ,这就是我们所需要的

Win10系统下安装labelme及json文件批量转化方法

总结

以上所述是小编给大家介绍的Win10系统下安装labelme json文件批量转化方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python执行时间的计算方法小结
Mar 17 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
python写入并获取剪切板内容的实例
May 31 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python selenium抓取虎牙短视频代码实例
Mar 02 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
详解Python中namedtuple的使用
Apr 27 Python
python利用tkinter实现屏保
Jul 30 #Python
django 微信网页授权登陆的实现
Jul 30 #Python
python tkinter库实现气泡屏保和锁屏
Jul 29 #Python
django迁移数据库错误问题解决
Jul 29 #Python
python实现桌面托盘气泡提示
Jul 29 #Python
python实现桌面气泡提示功能
Jul 29 #Python
pycharm设置鼠标悬停查看方法设置
Jul 29 #Python
You might like
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python实现按行切分文本文件的方法
2016/04/18 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python 一句话生成字母表的方法
2019/01/02 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
J2EE面试题大全
2016/08/06 面试题
开办加工厂创业计划书
2014/01/03 职场文书
暑期学习心得体会
2014/09/02 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
cf战队宣传语
2015/07/13 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Python中的pprint模块
2021/11/27 Python
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python