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对象转JSON字符串的方法
Apr 27 Python
Python三级目录展示的实现方法
Sep 28 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
用pandas按列合并两个文件的实例
Apr 12 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
pytorch forward两个参数实例
Jan 17 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Django REST 异常处理详解
Jul 15 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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/05/16 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php检测文本的编码
2015/07/26 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
javascript模拟命名空间
2015/04/17 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
Python requests模块实例用法
2019/02/11 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
美国社交购物市场:MassGenie
2019/02/18 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
写好求职信第一句话的技巧
2013/10/26 职场文书
大学生校园创业计划书
2014/02/08 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL