场景图生成——RelTR训练自己的数据集

news2024/11/18 21:35:58

RelTR训练自己的数据集

  • 省流量省时间版本
    • 框的标注
    • 关系的标注
    • 总的
  • 前言
  • Open Images V6的标注格式
  • RelTR中使用的Open Images V6的数据标注格式
  • 具体步骤
    • 框的标注生成格式
    • 关系三元组的生成格式
  • 结束语
  • 参考链接

省流量省时间版本

框的标注

共需要创建4个json标注文件
train.json, test.json, val.json为目标检测训练、测试、验证的标注,标注格式为COCO数据集的标注格式,包含图片的名字,检测框, 类别id.
在这里插入图片描述

关系的标注

rel.json:表示一张图片中的关系三元组
在这里插入图片描述
rel.json文件中有4个字段,tran,val,test分别为训练、验证、测试集的关系三元组,rel_categories表示关系类别。
详解:
train字段中,‘10000’:[0, 4. 30]表示图片的id号为10000,该图中有n个目标,也就是有n个框,框的id从0到n - 1,0表示第一个框,4表示第五个框,30是关系id。

总的

也就是说,把数据集中,每张图片的框标注单独放一个文件,然后所有的关系三元组放在一个文件。特别的,关系三元组标注中,每张图片的框的数目不一样,把属于一张图片的关系三元组放在 以图片id为 key,关系三元组为val的字典中。
在这里插入图片描述
在这里插入图片描述
就像上面这两张图一样,id为131691的图片有6个框,框的id从0到5

前言

最近在做关于视觉关系检测的任务,找文章的过程中发现了一篇使用transformer进行视觉关系检测(场景图生成)的文章——RelTR,于是想用这篇文章的模型来跑一下自己的数据集。因为当前用的数据集不是最终版本的数据集,所以先写个文章记录一下模型使用数据集的格式,方便后面处理数据集,避免大量重复的工作,所以就有了这篇文章。

Open Images V6的标注格式

在开始之前,先来看一下数据集的原始标注格式,这里我只展示Open Image V6的标注格式,这个数据集的官网上可以下载图片和标注。这里只下载关系部分的标注,如下图所示。
在这里插入图片描述
打开之后如下所示,第一行为标题,具体含义可以参考Open Images Dataset V6 简介,简单的一话总结就是:一个框的物体是什么类别,另一个框的物体是什么类别,这来两个框的关系是什么
在这里插入图片描述
这里简单的提一句,因为论文中使用的是类似于COCO数据集的检测方式,所以图片的名字以及物体的类别都是用数据表示的,所以在RelTR的代码中有提供将这些字符串转为数字的代码。

RelTR中使用的Open Images V6的数据标注格式

接着,将RelTR上提供的已经处理好的Open Images V6的标注下载下来,总共标注文件有4个,如下所示:
在这里插入图片描述
其中train.json, test.json, val.json为目标检测训练、测试、验证的标注,标注格式为COCO数据集的标注格式,包含图片的名字,检测框, 类别id如下:
在这里插入图片描述
图片名字:
在这里插入图片描述
框的标注:
在这里插入图片描述
类别id:
在这里插入图片描述
所以这三个json标注文件的准备就按照COCO数据集的标注格式准备就行。

场景图生成,或者是说视觉关系检测,最重要的是目标之间的关系,使用python将rel.json加载显示出来,片段如下:
在这里插入图片描述
这个json文件中有4个字段,分别是:train、test、val、rel_categories,具体意思是,训练、测试和验证集中图片中的关系三元组以及关系的类别。之前第一眼看到这个文件里面的数据有点懵,不知道什么意思,然后去翻作者提供的process.py文件,发现也没有说,去论文里面找也没有说,所以我猜测这个文章使用经过处理的数据集是参考别人的,所以还要去找其他论文的工作才行。
找了挺久之后,发现在RelTR的GitHub网站中的数据集准备部分找到了来源,具体如下:
在这里插入图片描述
打开之后找到一个跳转链接:
在这里插入图片描述
然后可以下载一个文件,里面有处理数据的源码,主要部分的代码如下:
在这里插入图片描述
可以看到三元组是从这里添加的,b1_id为三元组里面的第一个框,它属于这张图片中所有标注物体的某一个框,框的id为b1_id,同理,b2_id也为其中的一个框,框的id为b2_id。举个例子,一张图片中有个5个物体,那就有5个框,框的id从0到4,然后id为2和id为4之间有一个关系为on,这个on的关系id为关系类别中的id,比如第10类,那么这个三元组为[2, 4, 10]。记住,这个框的id是相对于一张图片中的所有框来说的。
到这里,基本能理解RelTR中的json文件中的标注是什么意思了。

具体步骤

框的标注生成格式

COCO数据集的标注格式就很好找了,下面给出mmdetection中的自定义数据集准备的一个图:
在这里插入图片描述

关系三元组的生成格式

关系三元组的生成有两个原则:

  1. 每张图片有一个字典,图片的id为字典的key,里面存放着这张图片的全部关系三元组,即字典的val,是一个列表。
  2. 关系三元组里面的框的id是相对于这张图片而言。
    在这里插入图片描述
    在这里插入图片描述
    就像上面这两张图一样,id为131691的图片有6个框,框的id从0到5

最后,把所有的标注按照训练、测试、验证划分,得到如下的标注:
在这里插入图片描述
需要注意的是,一定要确保图片中的框的id对应起来要正确,这样得到的关系三元组才是正常的。比如,给框编号时,一定要准确。
另外提一句,RelTR是将所有的图片放在一个文件中的。

结束语

本人的水平有限,如有不当之处敬请指出。写文章的目的在于记录和分享,希望不喜勿喷。

参考链接

Open Images V6官网
Open Images V6数据集简介
mmdetection自定义数据集准备

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

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

相关文章

功能升级,数据同步更便捷!场景化数据同步助您提效60%!

在企业数仓建设初期,为了保障数字化转型的落地效果,需要提供充足的数据资源,除了基础的数据抽取、转换和加载等过程,数据的同步也是重要环节之一。数据同步常用于数仓ODS、ADS层的建设,通过不同数据源的同步&#xff0…

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于B…

Michael.W基于Foundry精读Openzeppelin第8期——Context.sol

Michael.W基于Foundry精读Openzeppelin第8期——Context.sol 0. 版本0.1 Context.sol 1. 目标合约2. 代码精读2.1 _msgSender()2.2 _msgSender() 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 0.1 Context.sol Github: https://gith…

MIT 6.S081 Lab 11 -- NetWork - 下

MIT 6.S081 Lab 11 -- NetWork -- 下 引言代码解析网络子系统初始化相关数据结构lab 分析e1000_transmit函数实现e1000_recv函数实现socket write全流程分析socket read全流程分析socket关闭ARP数据报的发送与接收 引言 本文为 MIT 6.S081 2020 操作系统 实验十一解析。 MIT …

HCIA-datacom认证最新资料共享

hcia认证有哪些值得推荐的学习方向? 入门首选学习方向:HCIA:Datacom!但是HCIA云计算(Cloud Computing)方向、HCIA 无线(WLAN)方向、HCIA Data Center Facility方向、HCIA 安全(Secur…

TTX1995可调谐激光器控制软件系统

画了两周时间,利用下班时间,设计了一个ITLA可调谐激光器控制软件,从硬件到软件。 这是使用的界面,实现了下面的功能: 1、模块信息的读取,包括生产日期,生产厂家,型号,序…

产品流程图

流程图设计 1.什么是流程图2.流程图元素定义3.几种常见的产品流程图 3.1业务流程图 | 泳道图(给产品经理看)3.2任务流程图(给程序员看)3.3页面流程图(给UI设计人员看) 4.如何绘制流程图 4.1调查研究4.2梳理…

笔试题之地区经济数据分析

数据分析通常应用于商业领域,但对于政府、非盈利组织等机构而言,在考量城市发展、监控环境质量等方面,也会涉及到数据分析。这时,就需要我们根据实际场景,结合数据分析的理论知识,发现其中的规律&#xff0…

Tensorflow入门(2)——深度学习框架Tesnsflow 线程+队列+IO操作 文件读取案例

目录 一、二、Tesnsflow入门 & 环境配置 & 认识Tensorflow三、线程与队列与IO操作1.队列实例:完成一个出队列、1、入队列操作(同步操作) 2.队列管理器 创建线程3.线程协调器 管理线程案例:通过队列管理器来实现变量加1,入队&#xff…

强化学习:实现了基于蒙特卡洛树和策略价值网络的深度强化学习五子棋(含码源)

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

好用的门店信息管理系统推荐?门店信息系统系统应该注重什么?

传统门店的信息管理模式总是会存在人工成本高,效率低,流程麻烦、数据复盘繁琐等问题。围绕门店信息管理过程中面临的各类痛点,蚓链数字化门店信息管理系统可以帮助门店更好的管理门店经营,货品盘点,库存管理&#xff0…

「XKOI」Round 3 赛后题解

比赛链接:「XKOI」Round 3 本题解同步发表于 洛谷:传送门 CSDN:传送门 文章目录 比赛链接:[「XKOI」Round 3](https://www.luogu.com.cn/contest/117863)A [T343985 CRH的工作](https://www.luogu.com.cn/problem/T343985)1.1 …

CRC算法并行运算Verilog实现

因为CRC循环冗余校验码的算法和硬件电路结构比较简单,所以CRC是一种在工程中常用的数据校验方法。尽管CRC简单,但在工程应用中还是有些问题会对工程师产生困惑。这篇文章将介绍一下CRC,希望对大家有所帮助。 一、CRC算法介绍 CRC校验原理看起…

PPO(Proximal Policy Optimization Algorithms)论文解读及实现

论文标题:Proximal Policy Optimization Algorithms 核心思路:使用off policy 代替on policy,用一个策略网络来产生数据,用一个策略网络来更新参数,分别为policy_old和policy 0 摘要 Whereas standard policy gradient methods …

Python自动化办公:pptx篇

文章目录 简介能做什么PPT要素介绍官方demo高阶引申参考文献 202201笔记迁移 简介 python-pptx包是用来自动化处理ppt的。 使用的第一步是安装 pip install python-pptx相比python-docx,python-pptx的使用更为麻烦一些,原因有很多,比如说&…

波奇学Linux:make和Makefile

make和Makefile自动化构建并能决定源文件调用顺序,同时不必再写gcc命令 第一行依赖关系,第二行是tab键开头,是依赖方法 依赖关系:目标文件:依赖文件。 依赖方法:目标文件和依赖文件间的关系。 如果只有一条…

es下载历史的tar文件

第一步进入官网找到历史版本 第二步复制历史版本名称组合成下面的链接 直接get访问下载。如下链接所示只需要修改7.3.0这个版本号 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz

ChatGLM使用记录

ChatGLM ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存&#xff0…

opencv实战--角度测量和二维码条形码识别

文章目录 前言一、鼠标点击的角度测量二、二维码条形码识别 前言 一、鼠标点击的角度测量 首先导入一个带有角度的照片 然后下面的代码注册了一个鼠标按下的回调函数, 还有一个点的数列,鼠标事件为按下的时候就记录点,并画出点,…

uniapp微信小程序上传体积压缩包过大分包操作和上传时遇到代码质量未通过问题

1:首先我们得从项目最初阶段就得考虑项目是否要进行分包操作,如果得分包,我们应该创建一个与pages同级的文件夹,命名可以随意 2:第二部我们将需要分包的文件和页面放到分包文件夹里面subpage,这里我们得注意&#xff…