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

新知榜官方账号

2023-12-11 08:46:21

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

UnrealSynth基于UE5虚幻引擎开发,可用于生成合成数据集,包括图像和标注数据。可用于各种行业细分场景中目标识别任务的实施效率提高。

UnrealSynth合成数据工具包内容

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

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

运行UnrealSynth的推荐配置为:处理器:13thGenIntel(R)Core(TM)i5-134002.50GHz,RAM:64.0GB,独显:NVIDIAGeForceRTX3080Ti。

UnrealSynth合成数据生成

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

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

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

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

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

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

同样在labels标注目录下也会生成两个标注目录:train和val。train目录表示标注训练数据目录,val表示标注验证数据目录。生成的labels标注数据格式如下:

00.687240.4587960.0244790.03981500.5117190.5041670.0213540.03425900.5507810.5967590.0390620.0453700.5492190.3685190.0234380.04444400.475260.5041670.0098960.03055600.4703130.695370.0270830.03518500.5700520.4990740.0161460.04074100.4135420.3444440.0229170.03703700.6138020.5620370.0151040.02777800.4773440.5694440.0171880.016667

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

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

利用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
yolodetect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolodetect 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
yolodetect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

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

本页网址:https://www.xinzhibang.net/article_detail-22543.html

寻求报道,请 点击这里 微信扫码咨询

相关工具

相关文章

相关快讯