包这个错的原因是labelme(我的是5.0.1)的版本太新了,与旧版本labelme标注生成的json文件有所区别

解决办法1:把labelme版本降低,降到3.16.7

解决办法2:直接换代码,json_to_data的目的其实就是根据标注完的json文件来获取到mask图。

因为在语义分割在训练的时候用到的其实也就是原图和mask图,所以只要达到目的就好了。

import argparse
import base64
import json
import os
import os.path as ospimport imgviz
import PIL.Imagefrom labelme.logger import logger
from labelme import utilsdef main():logger.warning("This script is aimed to demonstrate how to convert the ""JSON file to a single image dataset.")logger.warning("It won't handle multiple JSON files to generate a ""real-use dataset.")# json_file是标注完之后生成的json文件的目录。out_dir是输出目录,即数据处理完之后文件保存的路径json_file = r"D:\Code\python\pytorch\unet-pytorch-main\myself_datas\01_cat_dog\before"out_dir1 = r"D:\Code\python\pytorch\unet-pytorch-main\myself_datas\01_cat_dog\SegmentationClass"# 如果输出的路径不存在,则自动创建这个路径if not osp.exists(out_dir1):os.mkdir(out_dir1)for file_name in os.listdir(json_file):# 遍历json_file里面所有的文件,并判断这个文件是不是以.json结尾if file_name.endswith(".json"):path = os.path.join(json_file, file_name)if os.path.isfile(path):data = json.load(open(path))# 获取json里面的图片数据,也就是二进制数据imageData = data.get("imageData")# 如果通过data.get获取到的数据为空,就重新读取图片数据if not imageData:imagePath = os.path.join(json_file, data["imagePath"])with open(imagePath, "rb") as f:imageData = f.read()imageData = base64.b64encode(imageData).decode("utf-8")#  将二进制数据转变成numpy格式的数据img = utils.img_b64_to_arr(imageData)# 将类别名称转换成数值,以便于计算label_name_to_value = {"_background_": 0}for shape in sorted(data["shapes"], key=lambda x: x["label"]):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_valuelbl, _ = utils.shapes_to_label(img.shape, data["shapes"], label_name_to_value)label_names = [None] * (max(label_name_to_value.values()) + 1)for name, value in label_name_to_value.items():label_names[value] = namelbl_viz = imgviz.label2rgb(label=lbl, image=imgviz.asgray(img), label_names=label_names, loc="rb")# out_dir = osp.basename(file_name).replace('.', '_')# out_dir = osp.join(out_dir1, out_dir)# if not osp.exists(out_dir):#     os.mkdir(out_dir)#     print(out_dir)# 将输出结果保存,# PIL.Image.fromarray(img).save(osp.join(out_dir, "%s_img.jpg" % file_name.split(".")[0]))utils.lblsave(osp.join(out_dir1, "%s.png" % file_name.split(".")[0]), 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")logger.info("Saved to: {}".format(out_dir1))if __name__ == "__main__":main()

深度学习分割json_to_data报错Too many dimensions: 3 > 2相关推荐

  1. 关于安装李沐深度学习d2l包报错的解决办法(保姆教程)

    目录:d2l包安装失败的解决过程 前言 一.李沐提供的安装方式 1. 创建一个新的环境 2. 激活 d2l 环境 3. 安装深度学习框架和d2l软件包 3.1 安装PyTorch的CPU或GPU版本 ...

  2. 深度学习-skimage.transform报错的玄学问题

    背景: 将实验室工作站环境复制进公司的linux机器中,中间出现报错.错误原因是shape问题,不能将(1,112,112)转为(1,3,112,112),应该是(3,112,112),所以这里sha ...

  3. 李沐动手学深度学习概率部分报错

    我用的版本情况: tensorflow                   2.9.1 tensorflow-estimator         2.9.0rc0 tensorflow-io-gcs- ...

  4. pytorch | 深度学习分割网络U-net的pytorch模型实现

    原文:https://blog.csdn.net/u014722627/article/details/60883185 pytorch | 深度学习分割网络U-net的pytorch模型实现 这个是 ...

  5. 安卓学习专栏——安卓报错android.support.v4.widget.SwipeRefreshLayout飘红

    步骤 系列文章 1.报错效果 2.修改方法使用新的标签名 总结 系列文章 提示:转到安卓学习专栏,观看更多内容! 点我直达–>安卓学习专栏 1.报错效果 第一行代码酷欧天气实战时飘红 安卓报错a ...

  6. 安卓学习专栏——安卓报错android.support.v4.widget.DrawerLayout飘红

    步骤 系列文章 1.报错效果 2.修改方法使用新的标签名 总结 系列文章 提示:转到安卓学习专栏,观看更多内容! 点我直达–>安卓学习专栏 1.报错效果 第一行代码酷欧天气实战时飘红 安卓报错a ...

  7. 【paper 1】2022 一种用于脑内出血血肿体积检测的鲁棒性深度学习分割方法-英文

    A Robust Deep Learning Segmentation Method for Hematoma Volumetric Detection in Intracerebral Hemorr ...

  8. Node.js 学习 ——nodemon 运行报错解决

    Node.js 学习 --nodemon 运行报错解决 报错记录 nodemon : 无法加载文件 C:\Users\Administrator.DESKTOP-0RUBNO7\AppDat on.p ...

  9. 强化学习Gym Atari报错缺少ale_c.dll

    强化学习Gym Atari报错缺少ale_c.dll 问题: 一般在Windows10(及以上)系统中使用Anaconda配置强化学习的Gym环境时,如使用Breakout训练场,需要安装以下工具包 ...

最新文章

  1. 1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】
  2. 11.20 java 方法
  3. 【算法随记一】Canny边缘检测算法实现和优化分析。
  4. 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)
  5. 2月第三周各国家.NET域名排名Top10:中国第三
  6. 2021绩溪中学高考成绩查询,2021年宣城高中学校排名及录取分数线 宣城重点高中分数线...
  7. CCF NOI1118 序列第K小
  8. 揭开阿里P2P面纱:大数据是泡泡
  9. 计算机的选材标准,GBT26642-2011无损检测金属材料计算机射线照相检测方法国家标准.pdf...
  10. 微信小程序测试注意事项
  11. LeetCode刷题攻略
  12. Wireshark抓取VLAN包
  13. 物联网工程毕业设计选题推荐
  14. 对随机数去重并进行排序 java
  15. misc.imresize
  16. 容量因子k计算公式_K因子计算方法
  17. 分布式事务解决方案之2PC(两阶段提交)入门简介
  18. P4716 【模板】最小树形图(朱刘算法模板题)
  19. mac设置应用来自任何来源
  20. 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据

热门文章

  1. boost::multiprecision::float128用法的测试程序
  2. boost::topological_sort用法的测试程序
  3. boost::geometry::model::multi_point用法的测试程序
  4. boost::fusion::as_map用法的测试程序
  5. GDCM:SCU功能的测试程序
  6. Boost:circular buffer的测试程序
  7. DCMTK:类DcmVR:值表示
  8. DCMTK:测试dcmseg的DcmSegUtils功能
  9. DCMTK:列出DICOM结构化报告文件的内容
  10. DCMTK:使用RLE传输语法压缩DICOM文件