UnrealSynth虚幻合成数据生成器

news2024/12/24 2:15:41

UnrealSynth 虚幻合成数据生成器利用虚幻引擎的实时渲染能力搭建逼真的三维场景,为 YOLO 等 AI 模型的训练提供自动生成的图像和标注数据。UnrealSynth 生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通标志检测、施工机械检测、车辆检测、行人检测、船舶检测等。

image-20231020145948378

1、UnrealSynth 合成数据工具包内容

UnrealSynth 基于 UE5 虚幻引擎开发,目前支持 YOLO 系列模型合成数据的生成,当前版本号 V1.0,主要文件和目录的组织结构如下:

目录内容
Engine/发布本程序的原始软件的编码和资源文件,其中包含构件此程序的二进制编码和一些存放在 content 文件中的原始资产等
UnrealSynth/Binaries/本程序兼容系统及其他的二进制文件
UnrealSynth/Content/本程序中所使用的所有资产文件已被烘焙成 pak 包
UnrealSynth.exe运行程序
LICENSE.md开发包许可协议文件

运行UnrealSynth的推荐配置为:

  • 处理器:13th Gen Intel(R) Core(TM) i5-13400 2.50 GHz
  • RAM:64.0 GB
  • 独显:NVIDIA GeForce RTX 3080 Ti

2、UnrealSynth 合成数据生成

以下是以 YOLO 模型为例,详细讲述如何使用 UnrealSynth 虚幻引擎数据生成器来生成为 YOLO 模型生成训练的合成数据。

打开 UnrealSynth 虚幻引擎合成数据生成器,点击【虚幻合成数据生成器】按钮,进入虚幻场景编辑页面,点击【环境变更】按钮切换合适的场景,输入【模型类别】参数后就可以开始导入模型,点击【导入 GLB 模型】弹出文件选择框,任意选择一个 GLB 文件,这里以抱枕文件为例,添加抱枕 GLB 文件后的场景如下:

image-20231020180416311

将 GLB 文件添加到场景后,接下来就可以配置 UnrealSynth 合成数据生成参数,参数配置说明如下:

  • 模型类别: 生成合成数据 synth.yaml 文件中记录物体的类型
  • 环境变更 : 变更场景背景
  • 截图数量 : 生成合成数据集 image 目录下的图像数量,在 train 和 val 目录下各自生成总数一半数量的图片
  • 物体个数 : 设置场景中的物体个数,目前最多支持 5 个,并且是随机的选取模型的类别
  • 随机旋转 : 场景中的物体随机旋转角度
  • 随机高度 : 场景中的物体随机移动的高度
  • 截图分辨率: 生成的 images 图像数据集中的图像分辨率
  • 缩放 : 物体缩放调整大小

点击【确定】后会在本地目录中...\UnrealSynth\Windows\UnrealSynth\Content\UserData 自动生成两个文件夹以及一个 yaml 文件:images、labels、test.yaml 文件。

UnrealSynth\Windows\UnrealSynth\Content\UserData
    |- images
        |-train
            |- 0.png
            |- 1.png
            |- 2.png
            |- ...
         |-val
            |- 0.png
            |- 1.png
            |- 2.png
            |- ...
    |- labels
        |-train
            |- 0.txt
            |- 1.txt
            |- 2.txt
            |- ...
        |-val
            |- 0.txt
            |- 1.txt
            |- 2.txt
            |- ...
    |- synth.yaml

UnrealSynth 合成数据已生成,可以利用数据集训练 YOLO 模型,会在 images 下生成两个图像目录:train 和 val。

train 目录表示训练图像数据目录,val 表示验证图像数据目录。

例如 train 目录下的图像集合:

img

同样在 labels 标注目录下也会生成两个标注目录:train 和 val。

train 目录表示标注训练数据目录,val 表示标注验证数据目录。

生成的 labels 标注数据格式如下:

0 0.68724 0.458796 0.024479 0.039815
0 0.511719 0.504167 0.021354 0.034259
0 0.550781 0.596759 0.039062 0.04537
0 0.549219 0.368519 0.023438 0.044444
0 0.47526 0.504167 0.009896 0.030556
0 0.470313 0.69537 0.027083 0.035185
0 0.570052 0.499074 0.016146 0.040741
0 0.413542 0.344444 0.022917 0.037037
0 0.613802 0.562037 0.015104 0.027778
0 0.477344 0.569444 0.017188 0.016667

生成的 synth.yaml 数据格式如下:

path:
train: images
val: images
test:
names:
 0: pear
 1: Fruit tray
 2: apple
 3: papaya
 4: apple

3、利用 UnrealSynth 合成数据训练 YOLOv8 模型

数据集生成后有三个办法可以进行模型训练:使用 python 脚本、使用命令行、使用在线服务。

第一种是使用 python 脚本,需首先安装 ultralytics 包,训练代码如下所示:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
results = model.train(data='synth.yaml', epochs=100, imgsz=640)

第二种是使用命令行,需安装 YOLO 命令行工具,训练代码如下:

# Build a new model from YAML and start training from scratch
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

第三种是使用ultralytics hub 或者其他在线训练工具。

合成数据生成器:UnrealSynth虚幻合成数据生成器 - NSDT

转载:UnrealSynth虚幻合成数据生成器 (mvrlink.com)

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

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

相关文章

RCD负载箱的价格和性价比如何?

RCD负载箱用于测试电力设备的专用设备,主要用于检测电路的电流、电压和功率等参数。 RCD负载箱的价格与其品牌、型号、功能和性能有关,知名品牌和高性能的RCD负载箱价格会相对较高,而一些普通品牌或功能较简单的RCD负载箱价格则相对较低&…

使用 :has() 选择前一个相邻元素

使用 CSS :has() 选择前一个兄弟姐妹 CSS 更令人抓狂的限制之一是长期以来它无法根据其子元素或前一个兄弟元素来选择元素。这使得构建可以针对元素的先前同级元素的 CSS 选择器变得不可能,但是has:()伪类(以及来自选择器级别 4 的、 和)已经…

【C++入门 二 】学习使用C++命名空间及其展开

C入门 二 1. C第一个小程序2.命名空间2.1命名冲突2.2 命名空间2.2.1 命名空间定义2.2.2.命名空间的展开方式1(直接展开)方式2(指定展开) 3.C输入&输出①输出②输入 1. C第一个小程序 下面这段代码有两个特性 1、io流 2、命名空…

innovus:如何解决editAddRoute不能在平行线间打孔的问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 用户使用editAddRoute命令或者图形界面手动拉线,默认只能在相同net 的不同层net shape crossover(交叉)位置上打孔,如图右侧GNDD交叉的位置有打孔,而左侧平行的两条net shape无法自动打孔。 有…

众和策略:鸿蒙4升级设备数量破亿;财政部调整保险公司考核方式

重要的消息有哪些 财政部调整保险公司查核办法 增强险资入市积极性 财政部10月30日消息显现,近日已印发《关于引导保险资金长时间稳健投资、调整国有商业保险公司绩效评价相关指标的告诉》(下称《告诉》),清晰将国有商业保险公司…

​CRM中的大客户销售是什么?​

对企业来说,大客户可能贡献了大部分的销售业绩。什么样的客户可以被认定为是大客户?大客户销售与普通销售有何区别?针对大客户又该采取什么样的销售策略呢?从回答这几个问题开始,我们来说说CRM中的大客户销售是什么&am…

数智领航未来∣2023契约锁企企通专题沙龙:数字建设,为企业高质量发展注入新动能

今年两会期间,“数字经济”是当之无愧的热词之一。中央经济工作会议提出,要大力发展数字经济,提升常态化监管水平,支持平台经济发展。 当前数据作为新型生产要素,价值尚未得到充分释放,需要疏通数据要素流通…

Microsoft 365 管理自动化

Microsoft 365 服务被大多数组织广泛使用,每天生成的数据量巨大。解决 Microsoft 365 中的问题可能非常困难,并且使用多个管理中心来保护组织变得复杂。本机控制台还缺少某些批量管理任务、全面的审计报告和基于角色的精细访问控制。 Microsoft 360 管理…

2、NLP文本预处理技术:词干提取和词形还原

一、说明 在上一篇文章中,我们解释了文本预处理的重要性,并解释了一些文本预处理技术。在本文中,我们将介绍词干提取和词形还原主题。 词干提取和词形还原是两种文本预处理技术,用于将单词还原为其基本形式或词根形式。这些技术的…

OpenGL ES相关库加载3D 车辆模型

需求类似奇瑞的这个效果,就是能全方位旋转拖拽看车,以及点击开关车门车窗后备箱等 瑞虎9全景看车 (chery.cn) 最开始收到这个需求的时候还有点无所适从,因为以前没有做过类似的效果,后面一经搜索后发现实现的方式五花八门&#xf…

十月听书笔记

十月听书笔记 1、《宝贵的人生建议》2、《后工作时代》3、《我们何以不同》4、《恰到好处的帮助》5、《24个比利》6、《恰到好处的安慰》7、《为什么越无知的人越自信》8、《陌生人效应》9、《往里走,安顿自己》10、《为什么学生不喜欢上学》11、《自律力》12、《弹…

浅析Redis大Key | 京东云技术团队

一、背景 在京东到家购物车系统中,用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储,如下代码块所示。不知细心的你有没有发现,如果单门店加车商品过多,或者门店过多时,此Key就会越来越大…

Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线

一.效果 二.原理 1.正态分布 高斯分布(Gaussian distribution),又名正态分布(Normal distribution),也称"常态分布",也就是说,在正常的状态下,一般的事物,都会符合这样的分布规律。 比如人的身高为一个随机变量,特别高的人比较少,特别矮的也很少,大部分都…

轻量封装WebGPU渲染系统示例<9>- 基本光照(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/SimpleLightTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户操…

初始SpringSecurity

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏&#xf…

【JavaSE专栏55】Java集合类HashTable解析

🌲Java集合类HashTable解析 🌲Java集合类HashTable解析摘要引言Hashtable是什么?Hashtable vs. HashMap:何时使用Hashtable?多线程环境:历史遗留系统:不需要进行特殊操作: Hashtable…

Mysql系列 -索引数据结构

索引就是排好序的数据结构,可以帮助我们快速的查找到数据,那么底层的数据到底是如何存储的呢? 为什么InnoDB 用的是Btree 存储结构? 大家可以看看这个可视化的网站 数据结构和算法的可视化工具 可以看到数据结构里面有链表&…

@ModelAttribute注解之如何使用postman传递参数

代码实例&#xff1a; GetMapping("/selectOpenList")ApiOperation(value "公开问卷列表")AnonymityAnnotation(access true)public WebResponse<PageInfo<QuestionnaireVo>> selectOpenList(ModelAttribute QuestionnaireDto dto){xxxxxxxx…

如何在3dMax中创建具有自定义图标和MaxScript的自定义按钮?

如何在3dMax中创建自定义按钮? 在本教程中,将向您展示如何创建具有自定义图标组和MaxScript的自定义按钮。 在3dMax中,主工具栏上有许多按钮。许多3dMax用户会问:是否可以制作一个带有自定义图像图标的自定义按钮,该按钮后面有自定义MaxScript代码来实现一定的功能?那么…

rust代码学习笔记(未完待续10/31)

文章目录 一、案例一&#xff1a;读取输入打印出来二、案例二&#xff1a;&#xff08;引入新包&#xff09;猜数字游戏三、案例三&#xff1a;循环猜测数字四、案例四&#xff1a;猜字游戏&#xff08;彩色版本&#xff09;五、rust一些注意事项1&#xff09;声明变量默认是不…