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提取html文件中的特定数据的实现代码
Mar 24 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python发送http请求解析返回json的实例
Mar 26 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
pytorch使用Variable实现线性回归
May 21 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
openCV提取图像中的矩形区域
Jul 21 Python
python运行脚本文件的三种方法实例
Jun 25 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
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
发布你的Python模块详解
2016/09/15 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
python如何制作缩略图
2019/04/30 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
python支付宝支付示例详解
2019/08/22 Python
python dumps和loads区别详解
2020/02/04 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Java平台和其他软件平台有什么不同
2015/06/05 面试题
园长自我鉴定
2013/10/06 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
教师节简报
2015/07/20 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
文明礼仪主题班会
2015/08/13 职场文书
javaScript Array api梳理
2021/03/31 Javascript