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求相邻数的方法示例
Aug 18 Python
python多进程控制学习小结
Oct 31 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
在python中使用with打开多个文件的方法
Jan 07 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python拼接字符串的7种方式详解
Mar 19 Python
django model object序列化实例
Mar 13 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Django serializer优化类视图的实现示例
Jul 16 Python
python实现三种随机请求头方式
Jan 05 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
opencv实现图像几何变换
Mar 24 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
PHP在Web开发领域的优势
2006/10/09 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
企业人事任命书
2014/06/05 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
师范生教育见习总结
2015/06/23 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS