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+Django搭建自己的blog网站
Mar 13 Python
python 判断网络连通的实现方法
Apr 22 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
Django基础知识 URL路由系统详解
Jul 18 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
Python用input输入列表的实例代码
Feb 07 Python
Python如何将将模块分割成多个文件
Aug 04 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
建筑系毕业生自我鉴定
2014/01/24 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
教师节校长致辞
2015/07/31 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
团干部培训班心得体会
2016/01/06 职场文书
为Centos安装指定版本的Docker
2022/04/01 Servers
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang