如何用 3D 模型而不是一百万张图片来训练 GAN

How to Train a GAN with a 3D Model Instead of a Million Images

我正在尝试使用 TensorFlow 在椅子的 3D 模型上训练 GAN。目的是让 GAN 模型具有椅子的完整上下文,然后能够基于 3D 模型生成椅子的图像。

我一直在做的是将 3D 模型读入 python 并围绕它的 (x,y,z) 轴旋转模型并存储图像(用于训练)。结果是从各个角度拍摄了 130 万张椅子图像。我想知道是否有更好的方法来代替为单个 3D 模型生成百万张图像。

如果让 GAN 学习 3D 模型,然后在真实场景中用学习的椅子模型生成图像,效率会高得多。

Python 我用于旋转 3D 模型和保存图像的代码

from stl import mesh
from mpl_toolkits import mplot3d
from matplotlib import pyplot

stl_mesh = mesh.Mesh.from_file('./chair.stl')

def generate_save_figure(elev,azim,dist):         
    figure = pyplot.figure(figsize=(1,1))
    axes = mplot3d.Axes3D(figure)
    axes.grid(False)
    axes._axis3don=False    
    axes.add_collection3d(mplot3d.art3d.Poly3DCollection(stl_mesh.vectors))
    scale = stl_mesh.points.flatten(-1)
    axes.auto_scale_xyz(scale, scale, scale)
    axes.view_init(elev=elev,azim=azim)
    axes.dist = dist
    axes.autoscale(True)
    figure.savefig('./numpy-stl-images/elev({})-azim({})-dist({}).png'.format(elev,azim,dist))   
    print('saved elev {}, azim {}, dist {}'.format(elev,azim,dist))
    del figure,axes,scale
    pyplot.close('all')

for elev in range(0,180,1):
    for azim in range(0,360,1):
        for dist in range(5,25,1):
            generate_save_figure(elev,azim,dist)

link 到我正在处理的 github 回购以获得该问题的其他上下文(请注意,椅子数据集尚不可用) https://github.com/RauxaDataScience/GansContextDataSets

https://www.tensorflow.org/graphics/ 是用 3D 数据训练 ML 模型的答案