首页 > 其他分享 >UnrealSynth虚幻合成数据生成器

UnrealSynth虚幻合成数据生成器

时间:2023-10-31 10:48:13浏览次数:77  
标签:生成器 yaml train 虚幻 model 数据 UnrealSynth

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)

标签:生成器,yaml,train,虚幻,model,数据,UnrealSynth
From: https://www.cnblogs.com/mvrlink/p/17799727.html

相关文章

  • java基础漏洞学习----整数溢出漏洞+硬编码漏洞+不安全的随机数生成器
    java基础漏洞学习----整数溢出漏洞+硬编码漏洞+不安全的随机数生成器整数溢出漏洞publicclassNumberLearning{publicstaticvoidmain(String[]args){System.out.println(Integer.MAX_VALUE+1);System.out.println(Integer.MIN_VALUE-1);}}......
  • 银行贷款截图生成器,易语言写的
    这是界面:下面是程序集截图:.版本2.程序集窗口程序集_启动窗口.子程序_按钮1_被单击标签1.标题=编辑框1.内容标签2.标题=编辑框2.内容标签3.标题=编辑框3.内容标签4.标题=编辑框4.内容标签5.标题=编辑框5.内容标签1.可视=真标签2.可视=真标签3.可视=真......
  • e4a开发的一款银行转账截图生成器,提供源码下载
    这个APP其实没什么意义,就是为了装逼和娱乐使用,但是这个只有一个功能就是能生成虚拟的转账截图,这个图你还能通过自己手机的截图功能去截图,保证电量和时间的实时性,软件生成的图片是固定的图片模版,提前用PS文件改好了Logo和图标信息,然后在加入到软件,设置编辑框内容启动对应的世间改变......
  • 逆向手机银行余额修改生成器,实现自定义修改效果
    哈喽大家好,我又来了,我是专注于APP逆向的小库,我从网上找来了一款银行模拟器,就是装逼用的,然后它存在一个问题,就是每次打开那个余额固定死的,也没有其它修改的地方,而一些小伙伴想把这个余额改成自己想要的内容,这个软件我已经改好了,下面是软件的界面图。我这边主要教大家改这两处:教......
  • 易语言银行电子回执单生成器,转账对公都可以,程序集代码分享
    今天闲着没事用易语言的画板设计了一个回执单生成器,程序我就不分享了,然后源码我会分享代这里,仅供娱乐哈,装逼用的,用到的工具还是用易语言,毕竟我易语言学了10多年,需要的组件是:画板,编辑框,普通按钮,标签,主要就这些,下面看下我设计的UI界面。UI设计好的截图: 程序集源码分享:【你可以一......
  • 易语言银行余额虚拟生成器制作,提供源码思路,仅供学习
    今天这边带来的是一个图片生成器,是用易语言进行开发的,整个代码我算了一下不超过10行,然后就需要一个图片框组件和三个编辑框,三个标签,一个按钮就能实现,真的非常非常简单,大家可以照猫画虎哈,这也仅仅只是为大家做的一个演示示范。软件截图:程序集源码分享:.版本2.程序集窗口程......
  • 易语言农业银行模拟器电子回执单生成器,分享源码和程序
    比如朋友之间的装逼娱乐,这个工具挺有用的,我自己学易语言很多年了,要开发这么一个工具轻而易举,而且整个开发下来要不了200行代码,我下面开发的这个工具是农业银行的电子回执单生成器,就是可以生成一个回执单图,里面的参数都可以通过程序修改,开发工具用的是易语言。先看下界面吧: 软......
  • e4a开发了银行回执单生成器app,电子版都可以,分享源码和程序
    闲着没事,朋友之间装逼娱乐经常能用到,还好之前我还学了半年的e4a开发,虽然现在e4a已经被专卖了,但是软件正常可以用,但是启动的时候会有版权,然后这个APP也是用e4a进行开发的,就是内置了很多回执单图片,然后前台设置了很多编辑框,你只需要输入参数它会自动数据指定内容的回执单,我先把设计......
  • 易语言开发银行流水生成器,分享源码仅供学习
    小编我是做技术开发的,易语言的话学了将近有10年左右,然后看网上很多人都在找这个玩意,然后就是有一个人卖9000多,感觉那种人就是向前想疯了,我分析了一下它的软件源码,也就是辅助生成数据,并不是一键它会生成文档,就是给你按参数生成固定的数据,然后需要你自己复制粘贴,这个原理的实现真的......
  • 易语言开发微信流水生成器,分享源代码
    那么其实我是做技术开发的,今天就用易语言开发这么一款软件,就当是学习研究用的把,用的是精易模块奥,必须要用这个,具体怎么下载你可以百度就行了。源码分享:.版本2.支持库spec.程序集窗口程序集_启动窗口.子程序_按钮1_被单击置剪辑板文本(编辑框1.内容)_启动窗口.标......