python读取与写入json+csv变成coco的json文件+安装labelme

一.python读取与输出json

1.python字典和json互转这里用json.dumps,还原则用json.loads,dumps以后就变为字符串了

import json# info = {'name': 'Damin', 'address': '北京', 'salary':88888}
info = {"name": "Damin", "address": "北京", "salary": 88888}
print(info["name"])info_json = json.dumps(info)
print('====info_json===', info_json)#\u,表示这两个编码是Unicode编码
print('===type(info_json):', type(info_json))#注意这个时候已经变为字符串了info_json_json = json.dumps(info_json)
print('===info_json_json:===', info_json_json)
print('===type(info_json_json):', type(info_json_json))#注意这个时候已经变为字符串了print(json.loads(info_json_json))
print('===type(json.loads(info_json_json)):', type(json.loads(info_json_json)))
print(json.loads(json.loads(info_json_json)))
print('==type(json.loads(json.loads(info_json_json))):', type(json.loads(json.loads(info_json_json))))

2.处理文件

2.1读取json用json.load

path = './image/003.json'
with open(path) as file:json_info = json.load(file)#print(len(json_info['shapes']))

2.2写入json 

            with open(path+'/'+name+'.json', 'w+') as fp:json.dump(data, fp=fp, ensure_ascii=False, indent=4, separators=(',', ': '))
            with open(output_file, "w+") as jsonfile:json.dump(json_data, jsonfile, sort_keys=True, indent=4)

二.coco数据集介绍

{
    "info": info, # dict
    "licenses": [license], # list ,内部是dict
    "images": [image], # list ,内部是dict
    "annotations": [annotation], # list ,内部是dict
    "categories": # list ,内部是dict
}
 

三.csv转coco的json文件

1,train的csv生成coco,json文件

csv文件如下:

图片如下:

import cv2
import math
import numpy as np
import xml.etree.ElementTree as ET
import pandas as pd
from PIL import Image, ImageEnhance
import glob
import jsonCLASS_NAMES = ['steel']
class COCOStyleDataset(object):# @staticmethod# def json_info(json_path=None):#     # json_path = '/workspace/mmdetection-0p6rc/gangjin/train_annotations.json'#     from pycocotools import coco#     cd = coco.COCO(json_path)#     print('anno num: ', len(cd.anns))#     print('img num: ', len(cd.imgs))#     return len(cd.imgs), len(cd.anns)@staticmethoddef json_annotations_for_train():class_name2id = {}for idx, cls_nm in enumerate(CLASS_NAMES):class_name2id[cls_nm] = idx + 1print(class_name2id)final_json = dict()final_json['info'] = Nonefinal_json['licenses'] = Nonefinal_json['categories'] = []final_json['images'] = []final_json['annotations'] = []# categoriesfor i in range(1):cat = dict()cat['id'] = i + 1cat['name'] = CLASS_NAMES[i]cat['supercategory'] = CLASS_NAMES[i]final_json['categories'].append(cat)print(final_json)sv_nm = 'train_annotations_example.json'data_root = './'path_prefix = 'JPEGImages_example/'img_path = data_root + path_prefixprint('img_path=', img_path)img_names = glob.glob1(img_path, '*jpg')print('img_names=', img_names)def pre_data(df):df.iloc[:, 1] = df.apply(lambda x: [float(a) for a in x[1].split(' ')], axis=1)def collect(df):rlt = dict()for i in range(df.shape[0]):img_nm = df.iloc[i, 0]if img_nm in rlt.keys():rlt[img_nm].append(df.iloc[i, 1])else:rlt[img_nm] = [df.iloc[i, 1]]for key, val in rlt.items():rlt[key] = np.array(val)return rltdf = pd.read_csv(data_root + '/train_labels.csv')print(df)"""add part csv_name"""for i in img_names:df_part=df[df['ID']==i]pre_data(df_part)print(df_part)lb_dict = collect(df_part)print(lb_dict)"""df_part replace df"""assert len(lb_dict) == len(img_names)img_names = list(lb_dict.keys())print(img_names)# gene jsonimage_id_counter = 250annotation_id_counter = 30942for img_name in img_names:print(image_id_counter, annotation_id_counter, img_name)# imageimage = dict()img_data = Image.open(img_path + img_name)image['id'] = image_id_counterimage['width'] = img_data.widthimage['height'] = img_data.heightimage['file_name'] = img_namefinal_json['images'].append(image)print(lb_dict[img_name])# annotationfor i in range(lb_dict[img_name].shape[0]):x, y, x2, y2 = lb_dict[img_name][i]width, height = x2 - x, y2 - yannotation = dict()annotation['id'] = annotation_id_counterannotation['image_id'] = image_id_counterannotation['category_id'] = 1annotation['bbox'] = [x, y, width, height]annotation['area'] = float(width * height)annotation['iscrowd'] = 0final_json['annotations'].append(annotation)# update annotation idannotation_id_counter += 1# update image idimage_id_counter += 1# write jsonwith open(data_root + sv_nm, 'w') as fp:json.dump(final_json, fp=fp, ensure_ascii=False, indent=4, separators=(',', ': '))@staticmethoddef json_annotations_for_test():final_json = dict()final_json['info'] = Nonefinal_json['licenses'] = Nonefinal_json['categories'] = []final_json['images'] = []final_json['annotations'] = []img_path = './JPEGImages_example/'img_names = sorted([nm for nm in os.listdir(img_path) if 'jpg' in nm])print('img num: ', len(img_names))image_id_counter = 0for img_name in img_names:print(image_id_counter, img_name)img_data = Image.open(img_path + img_name)# imageimage = dict()image['id'] = image_id_counterimage['width'] = img_data.widthimage['height'] = img_data.heightimage['file_name'] = img_namefinal_json['images'].append(image)image_id_counter += 1with open('./test_annotations_example.json', 'w') as fp:json.dump(final_json, fp=fp, ensure_ascii=False, indent=4, separators=(',', ': '))
if __name__ == '__main__':# COCOStyleDataset.json_annotations_for_train()COCOStyleDataset.json_annotations_for_test()

生成的json文件截图如下:

2,test的图片生成coco,json文件

test的json文件如下图

四,安装labelme

sudo apt-get install python-qt4 pyqt4-dev-tools
sudo pip install labelme  # python2 works

labelme --nodata --autosave

会自动生成对应的json文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于原始套接字的嗅探器

嗅探器这个代码我去年的时候就已经写过了,这个学期并不是非常忙,顺手复习网络,就又尝试着写了一遍。 其实在写嗅探器的时候,最主要的还是要将网卡设置为混杂模式。在此基础之上,对抓到的数据包进行分析。 这个是我写出…

3D打印探讨:三个应用方向与四项风险

来源:学习时报摘要:3D打印技术已经诞生超过30年,今天已经被应用到众多领域。它在解决国际人道主义危机、提高医学水平、保护生态环境方面具有重要的应用价值,同时也在危机就业、新型犯罪与安全威胁等方面存在风险。3D打印技术从诞…

discuz x2.5用户注册后邮箱认证后无法收到邮件或者直接进垃圾箱

又是一个周末,jquery特效继续折腾我那discuz论坛,我开启了个邮箱验证,恶意注册的太恶心了,没有办法。 能稍微屏蔽点,但是问题来了,据亲们反应,无法收到验证邮件,或者有时间直接进入垃…

新能源汽车产业链:锂电设备站上风口

来源:乐晴智库精选摘要:政策宠儿,高额补贴下新能源汽车行业快速成长。全球新能源汽车在过去几年高速成长,从2011年到2017年,全球新能源汽车销量从5.1万辆增长到162.1万辆,期间的复合增速达到77.9%。中国对全…

CNN分类,ResNet V1 ,ResNet V2,ResNeXt,DenseNet

一.CNN分类 1.基于空间利用的CNN 2.基于深度的CNN 3.基于多路径的CNN 4.基于宽度的多连接 5.基于特征图的CNN 6.基于通道的CNN 7.基于注意力的CNN 二,ResNet V1 2015 ILSVRC 第一 论文指出归一化包括BN,权重初始化已经很大程度解决了梯度消失和爆炸的问题&…

基于AI的视频分析正在推动智能社会的到来

来源:资本实验室摘要:随着我们日渐掌握越来越强大的计算能力、更先进的计算算法、更易用的软件系统,以及不断下降的数据存储成本,我们正在具备对无处不在的大量视频进行实时分析的能力。尤其值得关注的是,当人工智能技…

Reporting Services 的伸缩性和性能表现规划(转载)

简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台。Reporting Services 是微软功能全面的商业智能平台的重要组件。 对于许多组织,通过报告提供信息是日常…

卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS

一.卷积在计算机中实现 1.卷积 将其存入内存当中再操作(按照“行先序”): 这样就造成混乱. 故需要im2col操作,将特征图转换成庞大的矩阵来进行卷积计算,利用矩阵加速来实现,牺牲了…

业界 | 清华发布《人工智能芯片技术白皮书(2018)》

来源:大数据文摘12月11日,在第三届未来芯片论坛上,清华大学联合北京未来芯片技术高精尖创新中心发布《人工智能芯片技术白皮书(2018)》。整个《白皮书》总共分为10个章节,第一章节首先对芯片发展的背景做了…

玩转html5canvas画图

导航 前言基本知识绘制矩形清除矩形区域圆弧路径 绘制线段绘制贝塞尔曲线 线性渐变径向渐变(发散)图形变形(平移、旋转、缩放)矩阵变换(图形变形的机制)图形组合给图形绘制阴影绘制图像(图片平铺…

Gartner预测:2019年七大AI科技趋势,百万行业将颠覆!

来源:网络大数据摘要:尽管科幻小说可能将人工智能机器人描绘成坏人,但一些科技巨头现在也将其用于安全。 微软和优步等公司使用Knightscope K5机器人巡逻停车场和大型户外区域来预测和预防犯罪。 机器人可以读取车牌,报告可疑活动…

Xception,Inception-ResNet,SENet(Squeeze-and-Excitation)

一.Xception Xception是在InceptionV3基础上修改的,主要引入了深度可分离卷积,将空间和通道的操作进行解耦合。 与“extreme” Inception两个区别: 1,11卷积的顺序,Xcption用于33之后,而Inception用于之前 2,Xcepti…

物联网白皮书【2018】重磅发布|今年的物联网产业交出了一张怎样的答卷

来源:中国信息通信研究院摘要:物联网白皮书(2018)由中国信息通信研究院、中国信息通信研究院西部分院、物联网智库、上海市物联网行业协会、杭州市物联网行业协会、中信建投证券股份有限公司、国家智能传感器创新中心联合撰写发布…

Deep Alignment Network(人脸对齐)

一,DAN 由于使用了关键点热力图的可视化信息,故可以将整张图输入网络。 网络分为多个阶段(STAGE),每个阶段的结构都是相同的(STAGE 1除外)。第一阶段的输入仅有原始图片,和S0。面部…

斯坦福全球AI报告:人才需求两年暴增35倍,中国机器人部署量涨500%

来源:量子位作者:安妮 栗子 乾明 一璞刚刚,斯坦福全球AI报告正式发布。从去年开始,斯坦福大学主导、来自MIT、OpenAI、哈佛、麦肯锡等机构的多位专家教授,组建了一个小组,每年发布AI index年度报告&#xf…

ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存

一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\*ubuntu-drivers devices 查看显卡类型 Nvidia驱动下载地址:https://www.geforce.com/drivers选择对应的显卡和Linux 64 系统,可以下载最新版本。 要注意的是…

英特尔发布全新CPU架构 称摩尔定律未死 中国研究院迎20周年

来源:网易智能摘要:英特尔分别在大洋两岸,几乎同时上演了两个大秀。在中国,研究院院长宋继强与各实验室负责人详细阐述了团队构成以及目前的四大研究领域,在彼岸,英特尔举行架构日活动,英特尔处…

2018 年最引人注目的科学时刻,《科学》杂志选出14 张年度最佳科学照片

来源:Deeptech深科技摘要:2018 年 12 月 11 日,《科学》杂志从 2018 年发表的科学报道中,筛选出 14 张年度最佳照片,记录了 2018 年最引人注目的科学时刻。伊瓜苏大瀑布INGE JOHNSSON/ALAMY STOCK PHOTO伊瓜苏瀑布位于…

Linked dylibs built for GC-only but object files built for retain/release for architecture x86_64

编译开源Xcode 插件 SCXcodeSwitchExpander 源码地址: https://github.com/stefanceriu/SCXcodeSwitchExpander 编译环境:Xcode5.1 系统版本:OSX 10.8.5 提示下面错误 考虑是不是ARC引起的,发现building setting 已经设置了开启ar…

不平等加剧与问责机制:纽约大学AI Now研究所2018 AI现状报告 | 报告

来源:AI NOW Institute编译:机器之心 微胖摘要:纽约大学 AI Now 研究所发布了第三份关于人工智能现状的年度报告。2018 年 AI Now 报告重点关注行业 AI 丑闻和不平等加剧等主题,还评估了人工智能道德与有意义的问责制之间的差距&a…