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中序列与字典的相同和不同之处
Jan 19 Python
python基于phantomjs实现导入图片
May 13 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
Python中and和or如何使用
May 28 Python
keras.layer.input()用法说明
Jun 16 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
python 模块重载的五种方法
Apr 24 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
Python实现数据的序列化操作详解
Jul 07 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执行linux命令常用函数汇总
2016/02/02 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
python字符串替换的2种方法
2014/11/30 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Django学习之文件上传与下载
2019/10/06 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
海量信息软件测试笔试题
2015/08/08 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
保卫工作个人总结
2015/03/03 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
php png失真的原因及解决办法
2021/11/17 PHP