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保存MongoDB上的文件到本地的方法
Mar 16 Python
Python科学计算之Pandas详解
Jan 15 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
使用Scrapy爬取动态数据
Oct 21 Python
python调用java的jar包方法
Dec 15 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 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
adodb与adodb_lite之比较
2006/12/31 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
收集的DedeCMS一些使用经验
2007/03/17 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP中文编码小技巧
2014/12/25 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
JQUERY dialog的用法详细解析
2013/12/19 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
python实现串口通信的示例代码
2020/02/10 Python
使用Python发现隐藏的wifi
2020/03/04 Python
python画环形图的方法
2020/03/25 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
自荐信格式
2013/12/01 职场文书
出纳岗位职责范本
2013/12/01 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript