python把ChestX-Det-Dataset的json样本转为COCO数据集的json格式

ChestX-Det-Dataset数据集网址:https://github.com/Deepwise-AILab/ChestX-Det-Dataset/tree/main
在这里插入图片描述
数据集JSON内容:

[{"file_name": "36199.png","syms": [],"boxes": [],"polygons": []},{"file_name": "36302.png","syms": ["Effusion"],"boxes": [[799,666,937,761]],"polygons": [[[799,678],[799,678],[799,680],[801,681],[805,684],[807,684],[809,685],[811,686],[813,686],[814,686],[817,687],[820,687],[824,690],[827,690],[830,691],[832,691],[833,691],[836,693],[837,693],[840,695],[844,696],[848,696],[851,697],[854,697],[855,697],[856,698],[861,699],[864,699],[870,701],[872,703],[875,704],[878,705],[881,705],[886,707],[890,709],[894,711],[896,713],[897,714],[899,714],[902,716],[903,717],[906,720],[908,721],[910,725],[912,726],[914,728],[916,731],[916,732],[917,733],[918,734],[921,738],[922,740],[924,741],[925,744],[927,745],[929,747],[930,751],[931,752],[934,753],[935,755],[935,756],[935,757],[936,758],[937,759],[937,761],[937,759],[937,757],[937,756],[937,752],[937,750],[937,747],[937,745],[937,744],[937,743],[937,741],[937,740],[937,739],[937,738],[937,737],[937,735],[937,733],[937,731],[937,729],[937,728],[937,726],[937,723],[937,720],[937,717],[937,716],[936,714],[935,710],[935,709],[935,708],[934,705],[934,704],[934,703],[934,702],[933,701],[933,698],[933,696],[931,695],[931,692],[931,691],[930,690],[930,686],[930,685],[929,681],[929,680],[929,679],[929,677],[928,674],[928,673],[927,672],[927,671],[925,671],[924,668],[924,666],[924,667],[924,669],[924,672],[924,674],[923,677],[923,678],[923,679],[923,680],[922,681],[921,683],[921,684],[920,685],[918,685],[918,686],[915,689],[912,690],[910,691],[909,692],[908,692],[906,692],[905,693],[904,693],[902,695],[900,695],[900,695],[899,695],[898,695],[896,695],[894,693],[891,693],[887,693],[886,693],[884,693],[881,692],[879,692],[876,691],[874,691],[870,690],[867,690],[866,690],[863,690],[861,689],[860,689],[857,689],[856,687],[854,687],[851,687],[848,686],[845,686],[842,686],[840,686],[839,685],[837,685],[834,684],[828,683],[825,683],[822,681],[819,680],[815,679],[814,679],[812,679],[811,679],[811,678],[808,677],[806,675],[803,675],[802,675],[801,675]]]},

转化后coco格式样本json:

在这里插入图片描述
使用的python代码如下:

import json
import os
import sys
import cv2
from tqdm import tqdm
import mathche_json = './chetrain.json'
dst_json = './chestrain_coco.json'
test_img = './train_data/train'# che_json = './chetest.json'
# dst_json = './chetest_coco.json'
# test_img = './test_data/test'def polygon_area(vertices):n = len(vertices)area = 0.0for i in range(n):x1, y1 = vertices[i]x2, y2 = vertices[(i + 1) % n]area += (x1 * y2 - x2 * y1)return abs(area) / 2.0def main():coco_data = {"info": {},"licenses": [],"categories": [],"images": [],"annotations": []}category_mapping = {}category_id = 1image_id = 1annotation_id = 1with open(che_json,'r',encoding='utf-8') as js:json_info = json.load(js)image = {}annotation = {}boxid = 0for jsfo in tqdm(json_info):image['file_name'] = jsfo['file_name']img =cv2.imread(test_img + '/' + jsfo['file_name']) image['height'] = img.shape[0]image['width'] = img.shape[1]image['id'] = image_idcoco_data["images"].append(image)image = {}category_name = jsfo['syms']for ii in range(len(category_name)):if category_name[ii] not in category_mapping:category_mapping[category_name[ii]] = category_idcoco_data["categories"].append({"supercategory": category_name[ii],"id": category_id,"name": category_name[ii]})category_id += 1box_cnt = len(jsfo['boxes'])for i in range(box_cnt):boxid = boxid + 1segpnts = []segtmp = jsfo['polygons'][i]for segt in segtmp:segpnts.append(segt[0])segpnts.append(segt[1])segarea = polygon_area(segtmp)annotation['segmentation'] = [segpnts]annotation['image_id'] = image_idannotation['area'] = segareaboxtmp = jsfo['boxes'][i]x_left,y_left,x_br,y_br = boxtmpbox_w,box_h = x_br-x_left, y_br-y_leftannotation['bbox'] = [x_left,y_left,box_w,box_h]annotation['category_id'] = category_mapping[category_name[i]]annotation['id'] = boxidcoco_data["annotations"].append(annotation)annotation = {}image_id = image_id + 1with open(dst_json,'w') as jsout:json.dump(coco_data, jsout)if __name__=='__main__':main()

先跑训练集或先跑验证集会生成category_mapping 的字典内容,生成后统一用同一个,就可以保证训练集和验证集的标签一致

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

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

相关文章

Hadoop学习总结(搭建Hadoop集群(伪分布式模式))

如果前面有搭建过Hadoop集群完全分布式模式,现在搭建Hadoop伪分布式模式可以选择直接克隆完全分布式模式中的主节点(hadoop001)。以下是在搭建过完全分布式模式下的Hadoop集群的情况进行 伪分布式模式下的Hadoop功能与完全分布式模式下的Hadoop功能相同。 一、克隆…

【Qt】QString怎么判断是否含有某个字符串

2023年10月29日,周日晚上 QString怎么判断是否含有某一字符串? 比如我想知道QString中是否含有"connectToHost error" 要判断一个 QString 是否包含特定的子字符串,可以使用 QString 类的 contains() 方法。 下面是使用 contain…

[Machine Learning] 领域适应和迁移学习

文章目录 领域适应核均值匹配 (Kernel Mean Matching, KMM) 迁移学习协变量偏移模型 (Covariate Shift Model)目标偏移模型 (Target Shift Model) 在机器学习中,我们的目标是找到一个假设或模型,它可以很好地描述或预测数据。当我们基于训练集训练模型时…

DAY38 动态规划 + 509. 斐波那契数 + 70. 爬楼梯 + 746. 使用最小花费爬楼梯

动态规划理论 动态规划,Dynamic Programming, DP, 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导…

buuctf_练[GYCTF2020]FlaskApp

[GYCTF2020]FlaskApp 文章目录 [GYCTF2020]FlaskApp常用绕过方法掌握知识解题思路解题一 -- 计算pin码解题二 -- 拼接绕过 执行命令 关键paylaod 常用绕过方法 ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客 CTF 对SSTI的一些总结 - FreeBuf网…

SQL注入原理及思路(mysql)

数据库知识 mysql数据库 show database; #列出所有数据库 show tables; #列出所有表名 show columns from 表名; #列出表的列 select * from 表名 #查询数据库中某表的信息 select * from 表名 where 列xx #查询某表中符合列xx的信息 select * from 表名 order by 数字 #用于将…

Spark UI中Shuffle dataSize 和shuffle bytes written 指标区别

背景 本文基于Spark 3.1.1 目前在做一些知识回顾的时候,发现了一些很有意思的事情,就是Spark UI中ShuffleExchangeExec 的dataSize和shuffle bytes written指标是不一样的, 那么在AQE阶段的时候,是以哪个指标来作为每个Task分区大…

了解单域名证书和通配符证书的区别,选择合适的SSL证书解决方案

随着互联网的不断发展,网站安全性问题一直备受关注,在保护网站数据安全的过程中,SSL证书一直发挥着至关重要的作用。而在选择SSL证书时,单域名证书和通配符证书是两种常见的选择。本文将详细介绍单域名证书和通配符证书的区别&…

多分类loss学习记录

这里简单的记录在人脸识别/声纹识别中常用的分类loss。详细原理可以参考其他博客。 扩展资料1 扩展资料2 L-softmax A-softmax AM-softmax L-softmax :基于softmax加入了margin, Wx 改写为||w||||x||cos(角度),将角度变为了m角度 A-softmax &…

Cocos Creator 中使用装饰器进行自动绑定

推荐一个偷懒的方式,使用装饰器自动绑定节点到脚本的属性 背景 用 Cocos Creator 写脚本组件的时候,有时需要场景中一个节点作为这个脚本的属性值。 按照官方文档推荐的方法,需要以下两步 添加一个 property 属性,在场景中拖入这个…

ORB-SLAM3算法2之开源数据集运行ORB-SLAM3生成轨迹并用evo工具评估轨迹

文章目录 0 引言1 数据和真值1.1 TUM1.2 EuRoc1.3 KITTI2 ORB-SLAM3的EuRoc示例3 ORB-SLAM3的TUM-VI示例4 ORB-SLAM3的ROS各版本示例4.1 单目4.2 单目和IMU4.3 双目4.4 双目和IMU4.5 RGB-D0 引言 ORB-SLAM3算法1 已成功编译安装ORB-SLAM3到本地,本篇目的是用TUM、EuRoc和KITT…

案例分析大汇总

案例分析心得 2018-2022年的案例分析考试内容汇总(近五年) 架构设计题型 软件系统建模 数据库 Web 系统设计 2018年 胖/瘦客户端 C/S 架构非功能性需求 数据流图DFDE-R图Essential Use Cases(抽象用例),Real Use Cases(基础用例)信息工…

双目视觉计算三维坐标

一、原理 双目视觉的基本原理,以及公式推导,我参考的b站上的视频,链接如下: 2-线性相机模型-Linear Camera Model-Camera Calibration_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Q34y1n7ot/?p2&spm_id_from333.…

vue 路由懒加载,图片懒加载,组件懒加载

1.路由懒加载 方法一: import { createRouter, createWebHistory } from vue-router;const Home () > import(./components/Home.vue); const About () > import(./components/About.vue); const Contact () > import(./components/Contact.vue);cons…

Android底层摸索改BUG(二):Android系统移除预置APP

首先我先提供以下博主博文,对相关知识点可以提供理解、解决、思考的 Android 系统如何预装第三方应用以及常见问题汇集android Android.mk属性说明及预置系统app操作说明系Android 中去除系统原生apk的方法 取消预置APK方法一: 其实就是上面的链接3&a…

03、SpringCloud -- 动态倒计时 及 当前用户的获取(用户未登录提示其登录)

目录 动态倒计时需求思路代码效果优化获取当前登录用户思路代码前端后端controllerservice接口impl实现效果问题修改动态倒计时 需求 根据不同时间展示不同状态,动态显示时间,如原型图: 思

Lua脚本语言

1. 概念 Lua(发音为"loo-ah",葡萄牙语中的"lua"意为月亮)是一种轻量级的、高效的、可嵌入的脚本编程语言。官网Lua最初由巴西计算机科学家Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开…

【JVM】字节码文件的组成部分

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、字节码文件的组成部分1.1 iconst_0…

Linux命令(108)之dirname

linux命令之dirname 1.dirname介绍 linux命令dirname是用来获取文件的指定路径 2.dirname用法 dirname [参数] NAME dirname参数 参数说明-z使用NUL而不是换行符分隔输出--help查看帮助信息--version查看版本信息 3.实例 3.1.获取文件的指定路径 命令: dirn…

聊一下Word2vec-训练优化篇

Word2vec 涉及到两种优化方式,一种是负采样,一种是层序Softmax 先谈一下负采样,以跳字模型为例。中心词生成背景词可以由两个相互独立事件的联合组成来近似(引自李沐大神的讲解)。 第一个事件是,中心词和…