深度学习-三维重建-新数据集引入方面的问题

本人刚入门深度学习关于三维重建方面的,想要在这篇代码上引入新数据集进行训练https://github.com/shunsukesaito/PIFu,新数据集是这个https://tianchi.aliyun.com/specials/promotion/alibaba-3d-future?spm=5176.14208320.0.0.46053cf7HEwH5H,我目前已经完成了代码作者数据生成部分的第一步,在第二步

python -m apps.render_data -i {path_to_rp_dennis_posed_004_OBJ} -o {path_to_training_data} [-e]

这卡住了,不知道如何设置training_data。是否需要更改这部分代码呢?https://github.com/shunsukesaito/PIFu/blob/master/lib/data/TrainDataset.py

希望深度学习方面的程序猿能够提供经验来解决我引入新数据集的问题,提供思路或者代码均可获得收益。一旦测试有效,立即采纳不含糊。
下面是我新数据集的格式:

img

img

有人已经利用此数据集进行了训练https://github.com/shunsukesaito/PIFu/issues/32

你这个是输出文件夹,这里自己新建一个文件夹就行比如out_put,然后在该文件夹下新建一个val.txt文件夹,也可以不新建,可以看这里apps/render_data.py文件的196行到207行:

    os.makedirs(os.path.join(out_path, 'GEO', 'OBJ', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'PARAM', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'RENDER', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'MASK', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'UV_RENDER', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'UV_MASK', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'UV_POS', subject_name),exist_ok=True)
    os.makedirs(os.path.join(out_path, 'UV_NORMAL', subject_name),exist_ok=True)

    if not os.path.exists(os.path.join(out_path, 'val.txt')):
        f = open(os.path.join(out_path, 'val.txt'), 'w')
        f.close()

如果有帮助,请采纳,多谢!

你把-e去掉试试

运行以下脚本。在指定的数据路径下,代码创建名为GEO、RENDER、MASK、PARAM、UV_RENDER、UV_MASK、UV_NORMAL和UV_POS的文件夹。请注意,您可能需要在{ path _ to _ training _ data }/val . txt中列出要从培训中排除的验证主题(本教程只有一个主题,将其留空)。如果您希望使用配备NVIDIA GPU的无头服务器渲染图像,请添加-e以启用EGL渲染。

运行
python -m apps.render_data -i {path_to_rp_dennis_posed_004_OBJ} -o {path_to_training_data} [-e]
[-e]是可选项,如果不需要就删除

然后,如果你要换自己的数据集,需要重新制作数据集标签,你现在的问题是不知道怎么进行数据标注吗?

把training_data保存到{path_to_training_data}这个文件中

对于自己的数据集而言:
首先,我们需要将数据分类保存在不同的文件夹中

./datasets
./class1
0.png
1.png
2.png
...
/class2
0.png
1.png
2.png
...
/class3
...
而后,编写一个函数将图片转为numpy类型

def read_image(imageName):
im = Image.open(imageName).convert('L')
data = np.array(im)
return data
两个列表,存放图片和标注信息

images = []
labels = []

读取在datasets里面有几个文件夹

test = os.listdir('./datasets')

把文件夹里面的图片和其对应的文件夹的名字也就是对应的字

for testPath in test:
for fn in os.listdir(os.path.join('datasets', testPath)):
if fn.endswith('.PNG'):
fd = os.path.join('./datasets', testPath, fn)
images.append(read_image(fd))
labels.append(testPath)

接着我们把刚刚得到的images和labels也变成numpy类型。当然,labels首先要变成int类型

X = np.array(images)
y = np.array(list(map(int, labels)))
最后,拆分成训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=30)

https://blog.csdn.net/electech6/article/details/122364296?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask