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下利用OpenCV来旋转图像的教程
Apr 16 Python
python使用opencv读取图片的实例
Aug 17 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
用python做游戏的细节详解
Jun 25 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
用python对excel查重
Dec 07 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 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
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
JavaScript 基本概念
2015/01/20 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python类的基础入门知识
2008/11/24 Python
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python实现实时监控文件的方法
2016/08/26 Python
Python实现注册登录系统
2017/08/08 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
2014小学植树节活动总结
2014/03/10 职场文书
十八大演讲稿
2014/05/22 职场文书
校车安全责任书
2014/08/25 职场文书
解除同居协议书
2015/01/29 职场文书
信用卡催款律师函
2015/05/27 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS