宁波市建设工程检测协会网站/新浪舆情通
文章目录
- 一、xml文件
- 1.1 什么是 XML?
- 1.2XML 和 HTML 之间的差异
- 1.3XML 不会做任何事情
- 1.4通过 XML 您可以发明自己的标签
- 1.5XML 不是对 HTML 的替代
- 1.6XML 无所不在
- 二、json文件
- 基本的JSON结构体类型(共享部分)
- 三、转COCO数据集
- 3.1 info
- 3.2 licenses
- 3.3 Image
- 3.4 categories
- 3.5 annotations
- 四、组装coco
- 4.1定义大项集合
- 4.2 遍历组装
- 五、保存标注文件
- 为什么JSON比XML更受欢迎
一、xml文件
XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 指可扩展标记语言(eXtensible Markup Language)。
可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
1.1 什么是 XML?
- XML 指可扩展标记语言(EXtensible Markup Language)。
- XML 是一种很像HTML的标记语言。
- XML 的设计宗旨是传输数据,而不是显示数据。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准。
1.2XML 和 HTML 之间的差异
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
- XML 被设计用来传输和存储数据,其焦点是数据的内容。
- HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。
1.3XML 不会做任何事情
也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
下面实例是 Jani 写给 Tove 的便签,存储为 XML:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
1.4通过 XML 您可以发明自己的标签
上面实例中的标签没有在任何 XML 标准中定义过(比如 和 )。这些标签是由 XML 文档的创作者发明的。
这是因为 XML 语言没有预定义的标签。
HTML 中使用的标签都是预定义的。HTML 文档只能使用在 HTML 标准中定义过的标签(如< p > 、 < h1 >等等)。
XML 允许创作者定义自己的标签和自己的文档结构。
1.5XML 不是对 HTML 的替代
XML 是对 HTML 的补充。
XML 不会替代 HTML,理解这一点很重要。在大多数 Web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。
对 XML 最好的描述是:
XML 是独立于软件和硬件的信息传输工具。
1.6XML 无所不在
目前,XML 在 Web 中起到的作用不会亚于一直作为 Web 基石的 HTML。
XML 是各种应用程序之间进行数据传输的最常用的工具。
二、json文件
JSON是全称为JavaScript Object Notation,是一种有条理,易于访问的存储信息的方法。它为我们提供了一个可读的数据集合,我们可以通过合理的方式来访问这些数据。JSON文件可以存储简单的数据结构和对象。JSON文件在许多不同的编程API中都被支持。如今,JSON已被用于许多Web应用程序来进行数据交换,并且它们实际上不会在硬盘驱动器上保存“.JSON”文件,可以在互联网连接的计算机之间进行数据交换。某些应用程序允许用户将其保存在“.JSON”文件中
提到json,我们首先应该想到的是COCO格式的数据集。
COCO的 全称是Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像,其使用了亚马逊的Mechanical Turk(AMT)。
COCO通过大量使用Amazon Mechanical Turk来收集数据。COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用JSON文件存储。
基本的JSON结构体类型(共享部分)
object instances(目标实例)、object keypoints(目标上的关键点)、image captions(看图说话)这3种类型共享这些基本类型:info、image、license。而annotation类型则呈现出了多态:
{"info": info, # dict"licenses": [license], # list ,内部是dict"images": [image], # list ,内部是dict"annotations": [annotation], # list ,内部是dict"categories": # list ,内部是dict
}info{ # 数据集信息描述"description": str, # 数据集描述"url": str, # 下载地址"version": str, # 版本"year": int, # 年份"contributor": str, # 提供者"date_created": str # 数据创建日期},license{"id": int,"name": str,"url": str,
}
image{"id": int,# 图片的ID编号(每张图片ID是唯一的)"width": int,# 宽"height": int,# 高"file_name": str,# 图片名"license": int,"flickr_url": str,# flickr网路地址"coco_url": str,"date_captured": datetime,# 数据获取日期
}
三、转COCO数据集
# 定义coco集合
coco=dict()
3.1 info
info类型,比如一个info类型的实例
{"info": info,"licenses": [license],"images": [image],#数组元素的数量等同于划入训练集(或者测试集)的图片的数量;"annotations": [annotation],#数组元素的数量等同于训练集(或者测试集)中bounding box的数量;"categories": [category]
}
info={"description":"This is stable 1.0 version of the 2014 MS COCO dataset.","url":"http:\/\/mscoco.org","version":"1.0","year":2014,"contributor":"Microsoft COCO group","date_created":"2022-12-26"
}
# 定义coco的info部分,并加入coco集合info={"description":"This is stable 1.0 version of the 2014 MS COCO dataset.","url":"http:\/\/mscoco.org","version":"1.0","year":2014,"contributor":"Microsoft COCO group","date_created":"2022-12-26"
}
coco['info']=info
3.2 licenses
licenses是包含多个license实例的数组,对于一个license类型的实例
license{"id": int,"name": str,"url": str,
}
例如
licenses={"url":"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/","id":1,"name":"Attribution-NonCommercial-ShareAlike License"
}
license
跟图像id
有关,定义函数如下:
def generate_license(image_id):license = {"url": "http:\/\/goingtodo.cn\/licenses\/","id": image_id,"name": "nothing just awsome License"}return license
3.3 Image
Images是包含多个image实例的数组,对于一个image类型的实例:
image{"id": int,# 图片的ID编号(每张图片ID是唯一的)"width": int,# 宽"height": int,# 高"file_name": str,# 图片名"license": int,"flickr_url": str,# flickr网路地址"coco_url": str,"date_captured": datetime,# 数据获取日期
}
Image
跟图像id
以及图片尺寸有关,定义函数如下:
import cv2def image_info(image_name, image_id):# img = cv2.imread(image_name)# 加入相对路径img = cv2.imread(os.path.join('data/train/imgs', image_name))image_info = {"id": image_id, # 图片的ID编号(每张图片ID是唯一的)"width": img.shape[1], # 宽"height": img.shape[0], # 高"file_name": image_name, # 图片名"license": "awsome license","flickr_url": "no url", # flickr网路地址"coco_url": "no url","date_captured": "2022-12-26" # 数据获取日期}return image_info
3.4 categories
categories是一个包含多个category实例的数组,而category结构体描述如下:
"categories":{ # 类别描述"id": int,# 类对应的id (0 默认为背景)"name": str, # 子类别"supercategory": str,# 主类别
}
从instances_val2017.json文件中摘出的2个category实例如下所示:
{"supercategory": "person","id": 1,"name": "person"
},
{"supercategory": "vehicle","id": 2,"name": "bicycle"
}
categories
跟图像id
有关
def generate_categories(image_id):cat = {"supercategory": "table","id": image_id,"name": "table","keypoints": ['lb', 'lt' , 'rt' , 'rb'],"skeleton": [[1,2],[2,3],[3,4],[4,1]]}return cat
3.5 annotations
annotation{"id": int, # int 图片中每个被标记物体的id编号"image_id": int, # int 该物体所在图片的编号"category_id": int,# int 被标记物体的类别id编号"segmentation": RLE or [polygon],#分割区域的坐标,对象的边界点(边界多边形)"area": float,# float 被检测物体的面积"bbox": [x,y,width,height],# 目标检测框的坐标信息"iscrowd": 0 or 1,# 0 or 1 目标是否被遮盖,默认为0
}
这个类型中的annotation结构体包含了Object Instance中annotation结构体的所有字段,再加上2个额外的字段。
新增的keypoints是一个长度为3*k的数组,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。
num_keypoints表示这个目标上被标注的关键点的数量(v>0),比较小的目标上可能就无法标注关键点。
annotation{"keypoints": [x1,y1,v1,...],"num_keypoints": int,"id": int,"image_id": int,"category_id": int,"segmentation": RLE or [polygon],"area": float,"bbox": [x,y,width,height],"iscrowd": 0 or 1,
}
此次需要的数据如下:
- bbox
- keypoints
四、组装coco
前面定义了coco集合,加入了info,现在组装其他数据,主要有:
- license
- image
- annotation
4.1定义大项集合
coco['images'] = []
coco['annotations'] = []
coco['categories'] = []
coco['licenses'] = []
4.2 遍历组装
info前面已经组装了,现在组装其他部分:
- images
- categories
- licenses
- annotations
- 目标检测
- 关键点
# 遍历组装
ii=0for i in json_data.keys():image_temp=dict()# 1.coco['images']信息组装# 获取图片信息# print(i, ii)image_info_some = image_info(image_name=i, image_id=ii)# 添加到 coco['images'] 数组coco['images'].append(image_info_some)# 2.coco['images']信息组装# 类别信息获取cat_info=generate_categories(image_id=ii)# 添加到 coco['categories'] 数组coco['categories'].append(cat_info)# 3.coco['licenses'] 信息组装# 版权信息获取lic_info=generate_license(image_id=ii)# 添加到 coco['licenses'] 数组coco['licenses'].append(lic_info)# 4.coco['annotations'] 信息组装# 标注信息集合定义 annotation_temp=dict()# 4.1 annotations公共部分信息# 标注id信息annotation_temp['id']=ii# 图像idannotation_temp['image_id']=ii# 关键点个数 4个,上下左右 annotation_temp['num_keypoints']=4# 0好像是背景annotation_temp['category_id']=1image_anno= json_data[i][0]# 4.2 annotations目标检测部分# bbox,目标检测框的坐标信息,一张图只有一个表格,所以就这样了。# print(image_anno)# [{'box': [987, 2135, 2343, 2550], 'lb': [987, 2542], 'lt': [1029, 2135], 'rt': [2264, 2139], 'rb': [2343, 2550]}]annotation_temp['bbox']=image_anno['box']# 0 or 1 目标是否被遮盖,默认为0annotation_temp['iscrowd']=0# 被标记物体的类别id编号# 4.3 annotations关键点部分部分# 新增的keypoints是一个长度为3*k的数组,其中k是category中keypoints的总数量。# 每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。keypoints=[image_anno['lb'][0],image_anno['lb'][1],2, image_anno['lt'][0],image_anno['lt'][1],2,image_anno['rt'][0],image_anno['rt'][1],2,image_anno['rb'][0],image_anno['rb'][1],2]# 加入annotation标注集合annotation_temp['keypoints']=keypointscoco['annotations'].append(annotation_temp)ii=ii+1
五、保存标注文件
import jsonff = open('table_keypoints_val2017.json', 'w')
ff.write(json.dumps(coco, ensure_ascii=False ) + '\n')
ff.close()
参考文章表格关键点检测之COCO数据集转换
为什么JSON比XML更受欢迎
JSON和XML完全是两种不同的数据格式。都是在Web中用于数据交换目的。与XML相比,放置java脚本或JSON Object Notation是一种更轻量级的数据交换格式。而且XML使用了大量的开始和结束标记,而JSON只使用{}表示对象,[]表示数组,这使得它更加轻量级。有利于快速传输和处理,JSON的对象和数组的表示使得映射更直接容易
相关文章:

深度学习数据集处理基础内容——xml和json文件详解
文章目录一、xml文件1.1 什么是 XML?1.2XML 和 HTML 之间的差异1.3XML 不会做任何事情1.4通过 XML 您可以发明自己的标签1.5XML 不是对 HTML 的替代1.6XML 无所不在二、json文件基本的JSON结构体类型(共享部分)三、转COCO数据集3.1 info3.2 l…...

蓝桥杯基础技能训练
51单片机系统浓缩图 1. HC138译码器 用3个输入引脚,实现8个输出引脚,而且这个八个输出引脚中只要一个低电平,所以我们只需要记住真值表就行 #include "reg52.h" sbit HC138_A P2^5; sbit HC138_B P2^6; sbit HC…...

【Kubernetes】第二十八篇 - 实现自动构建部署
一,前言 上一篇,介绍了 Deployment、Service 的创建,完成了前端项目的构建部署; 希望实现:推送代码 -> 自动构建部署-> k8s 滚动更新; 本篇,实现自动构建部署 二,推送触发构…...

蓝桥杯刷题第十天
第一题:裁纸刀问题描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来…...

网络安全缓冲区溢出与僵尸网络答题分析
一、缓冲区溢出攻击 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是…...

机器学习:逻辑回归模型算法原理(附案例实战)
机器学习:逻辑回归模型算法原理 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏&#x…...

IO流之 File 类和字节流
文章目录一、File 类1. 概述2. 创建功能3. 删除功能4. 判断和获取功能5. 递归策略5.1 递归求阶乘5.2 遍历目录二、字节流1. IO 流概述2. 字节流写数据2.1 三种方式2.2 换行及追加2.3 加异常处理3. 字节流读数据3.1 一次读一个字节3.2 一次读一个字节数组3.3 复制文本文件3.4 复…...

【华为机试真题 Python实现】2023年1、2月高频机试题
文章目录2023年1季度最新机试题机考注意事项1. 建议提前刷题2. 关于考试设备3. 关于语言环境3.1. 编译器信息3.2. ACM 模式使用sys使用input(推荐)3. 关于题目分值及得分计算方式4. 关于做题流程5. 关于作弊2023年1季度最新机试题 两个专栏现在有200博文…...

【拳打蓝桥杯】最基础的数组你真的掌握了吗?
文章目录一:数组理论基础二:数组这种数据结构的优点和缺点是什么?三:数组是如何实现随机访问的呢?四:低效的“插入”和“删除”原因在哪里?五:实战解题1. 移除元素暴力解法双指针法2…...

断崖式难度的春招,可以get这些点
前言 大家好,我是bigsai,好久不见,甚是想念。 开学就等评审结果,还好擦边过了,上周答辩完整理材料,还好都过了(终于可以顺利毕业了),然后后面就是一直安享学生时代的晚年。 最近金三银四黄金…...

一年经验年初被裁面试1月有余无果,还遭前阿里面试官狂问八股,人麻了
最近接到一粉丝投稿:年初被裁员,在家躺平了6个月,然后想着学习下再去面试,现在面试了1个月有余,无果,天天打游戏到半夜,根本无法静下心来学习。下面是他这些天面试经常会被问到的一些问题&#…...

我从功能测试到python接口自动化测试涨到22k,谁知道我经历了什么......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 常见的接口…...

SDG,ADAM,LookAhead,Lion等优化器的对比介绍
本文将介绍了最先进的深度学习优化方法,帮助神经网络训练得更快,表现得更好。有很多个不同形式的优化器,这里我们只找最基础、最常用、最有效和最新的来介绍。 优化器 首先,让我们定义优化。当我们训练我们的模型以使其表现更好…...

【项目实现典型案例】12.数据库数据类型不一致导致查询慢
目录一:背景介绍二:索引失效复现四:索引实现的六种情况1、类型转换,函数2、ISNULL3、通配符开头4、范围查询5、组合索引,不符合最左匹配原则6、WHERE子句中的OR四:总结一:背景介绍 MySql数据库…...

【大数据开发】报错汇总
目录 Hadoop Attempting to operate on hdfs namenode as root jps后没有namenode Hive Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V Caused by:o…...

HTTPS的加密原理(工作机制)
现在很多网站使用的都是HTTPS协议,比如CSDN他们为什么要使用HTTPS协议而不是继续使用HTTP协议呢?以及HTTPS都做了些什么?HTTP协议与HTTPS有哪些区别? 下面我来 讲解这些问题?(篇幅可能有些长,请求耐心观看,我以0基础的角度去讲解这些东西, 如果你有一定的基础前面的跳过就好…...

Git仓库迁移
背景 由于公司原来的gitee地址需要改完新的gitlab仓库,大量的服务模块已再本地进行开发,且存在大量分支进行维护,迁移要求历史提交记录也得同步,需要简单快捷一并完成各服务已经分支迁移。 一、在新的目标git中创建新代码仓 新…...

用CHATGPT生成C++面试题及答案
以下是C的面试题及其答案: 什么是C?C与C语言有什么区别? C是一种高级编程语言,是对C语言的扩展。C具有更强大的面向对象编程能力,支持类、继承、多态等特性。 什么是面向对象编程? 面向对象编程是一种编程…...

二进制,八进制,十进制,十六进制的相互转换【简单易懂】(含代码模板)
目录 二进制转十进制 十进制原理: 二进制转十进制计算: 八、十六进制转十进制 八、十六进制转十进制计算: 十进制转其他进制 十进制转二进制: 十进制转八进制: 十进制转十六进制: 不同进制之间的相互转…...

Redis技术详解
Redis技术详解 Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存&…...

解决mybatis-plus updateById方法不能set null
原因 因为 MyBatis-Plus 自带的更新方法,都有对对象空值进行判空。只有不为空的字段才会进行数据更新 所以像updateById等方法,在更新时会自动忽略为null的字段,只更新非null字段值 但在某些情况下,我们的需求就是将数据库中的值…...

Linux的mysql 数据库及开发包安装
注意:以下操作都以 root 用户进行操作 直接按照下列步骤在命令行输入即可 下载 1: sudo yum install -y mariadb 2: sudo yum install -y mariadb-server 3: sudo yum install -y mariadb-devel 接下来配置文件:在相应…...

π-Day快乐:Python可视化π
π-Day快乐:Python可视化π 今天是3.14,正好是圆周率 π\piπ 的前3位,因此数学界将这一天定为π\bold{\pi}π day。 π\piπ 可能是最著名的无理数了,人类对 π\piπ 的研究从未停止。目前人类借助计算机已经计算到 π\piπ 小数…...

【论文速递】ACM MM 2022 - 基于统一对比学习框架的新闻多媒体事件抽取
【论文速递】ACM MM 2022 - 基于统一对比学习框架的新闻多媒体事件抽取 【论文原文】:Multimedia Event Extraction From News With a Unified Contrastive Learning Framework 【作者信息】:Liu, Jian and Chen, Yufeng and Xu, Jinan 论文ÿ…...

数据库分库分表
一、为什么要分库分表 如果一个网站业务快速发展,那这个网站流量也会增加,数据的压力也会随之而来,比如电商系统来说双十一大促对订单数据压力很大,Tps十几万并发量,如果传统的架构(一主多从),主库容量肯定无法满足这么高的Tps,业务越来越大,单表数据超出了数据库支持…...

【C缺陷与陷阱】----语义“陷阱”
💯💯💯 本篇处理的是有关语义误解的问题:即程序员的本意是希望表示某种事物,而实际表示的却是另外一种事物。在本篇我们假定程序员对词法细节和语法细节的理解没有问题,因此着重讨论语义细节。导言…...

JavaWeb--VUE
VUE1 概述2 快速入门3 Vue 指令3.1 v-bind & v-model 指令3.2 v-on 指令3.3 条件判断指令3.4 v-for 指令4 生命周期5 案例5.1 需求5.2 查询所有功能5.3 添加功能目标 能够使用VUE中常用指令和插值表达式能够使用VUE生命周期函数 mounted 1 概述 接下来我们学习一款前端的框…...

2分钟彻底搞懂“高内聚,低耦合”
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...

网络编程UDP TCP
定义:关注底层数据的传输 区分网页编程:关注上层应用 端口号:区分软件 2个字节 0~65535表示端口号 同一协议下端口号不能冲突 8000以下称为预留端口号,建议之间设置端口号为8000以上 常见的端口号: 80:http 8080:tomcat 3306:mysql 1521:oracle InetSocketAddress:此类实现IP套…...

【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测
随着社会和经济的持续发展,电力系统的投资与建设也日益加速。在电力系统中,输电线路作为电能传输的载体,是最为关键的环节之一。而绝缘子作为输电环节中的重要设备,在支撑固定导线,保障绝缘距离的方面有着重要作用。大…...