• UnrealSynth - 基于虚幻引擎的YOLO合成数据生成器


    UnrealSynth虚幻合成数据生成器利用虚幻引擎的实时渲染能力搭建逼真的三维场景,为YOLO等AI模型的训练提供自动生成的图像和标注数据,官方下载地址:UnrealSynth虚幻合成数据生成器

    UnrealSynth生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通标志检测、施工机械检测、车辆检测、行人检测、船舶检测等。

    在这里插入图片描述

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

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

    目录文件内容
    Engine发布本程序的原始软件的编码和资源文件,其中包含构件此程序的二进制编码和一些存放在content文件中的原始资产等
    UnrealSynth本程序的发布版本二进制编码和资产文件夹,其中Binaries文件夹存放着本程序兼容系统及其他的二进制文件,Content文件则存放着本程序中所使用的所有资产文件已被烘焙成pak包
    UnrealSynth.exe运行程序
    LICENSE.md许可协议文件
    推荐配置处理器:13th Gen Intel® Core™ 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    path: 
    train: images
    val: images
    test: 
    names:
     0: pear
     1: Fruit tray
     2: apple
     3: papaya
     4: apple
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    第二种是使用命令行,需安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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


    原文链接:UnrealSynth虚幻合成数据生成器 — NSDT

  • 相关阅读:
    ​力扣解法汇总907. 子数组的最小值之和
    重置FCV 账号
    中高级Java程序员,你不得不掌握的基本功,挑战20k+
    网络个各种协议
    云原生Kubernetes:K8S常用服务端口
    BGP路径属性与路由反射器
    IntelliJ IDEA 开发Vue项目 ElementUI 未知HTML标记 提示问题的解决
    阿里开源玄铁RISC-V系列处理器,推动RISC-V架构走向成熟
    word2vec发展过程
    Linux 提权-Docker 容器
  • 原文地址:https://blog.csdn.net/shebao3333/article/details/134069423