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功能相同。 一、克隆…

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网…

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

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

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

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

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

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

案例分析大汇总

案例分析心得 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.…

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…

idea 提升效率的常用快捷键 汇总

点击File --> Settings --> keymap便可进入看到 IDEA 提供的快捷键。我们也可以搜索和自定义所有快捷键 下面13个事我常用的快捷键,后面还有全部,可以当做字典来查 1.当前文件下查找:CtrlF 当前文件下替换:CtrlR 2.当前…

前端的简单介绍

前端核心的分析 CSS语法不够强大,比如无法嵌套书写,倒是模块化开发中需要书写很多重复的选择器 没有变量和合理的样式复用机制,使逻辑上相关的属性值必须字面量的心事重复的输出,导致难以维护 CSS预处理器,减少代码的笨重&#…

前端 :用HTML和css制作一个小米官网的静态页面

1.HTML&#xff1a; <body><div id "content"><div id "box"><div id "top"><div id "top-left"><span id "logo">MI</span><span id "text-logo">小米账…

leetcode-二叉树

B树和B树的区别 B树&#xff0c;也即balance树&#xff0c;是一棵多路自平衡的搜索树。它类似普通的平衡二叉树&#xff0c;不同的一点是B树允许每个节点有更多的子节点。 B树内节点不存储数据&#xff0c;所有关键字都存储在叶子节点上。B树&#xff1a; B树&#xff1a; 二叉…

一、灵动mm32单片机_开发环境的搭建(Keil)

1、安装Keil MDK。 略。 2、安装芯片对应的Pack包。 (1)这里以MM32F0130单片机为例。 (2)进入灵动微电子官网。上海灵动微电子股份有限公司 (3)点击“支持”→“KEILPacl”。 (3)点击下载Pack包。 (4)下载后&#xff0c;解压下载的压缩包&#xff0c;找到对应的Pack包&…

【ARMv8 SIMD和浮点指令编程】NEON 通用数据处理指令——复制、反转、提取、转置...

NEON 通用数据处理指令包括以下指令(不限于): • DUP 将标量复制到向量的所有向量线。 • EXT 提取。 • REV16、REV32、REV64 反转向量中的元素。 • TBL、TBX 向量表查找。 • TRN 向量转置。 • UZP、ZIP 向量交叉存取和反向交叉存取。 1 DUP (element) 将…

改进YOLOv3!IA-YOLO:恶劣天气下的目标检测

恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务&#xff0c;要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架&#xff0c;可以对每张图像进行自适应增强&#xff0c;以提高检测…

PHP如何批量修改二维数组中值

每个name值加pex&#xff0c;age加5&#xff0c; 原数据&#xff1a; $data[["name">a,age>12],["name">b,age>22],["name">c,age>33],["name">d,age>44], ];实现效果 方案一、foreach引用方式 $data[["…