先上总结:
需要RGB图片 进行标注
**r.png ------main_label.py-----> **Label.txt ------generate_target_ggcnn.py---------> **grasp.mat
有 **grasp.mat , **r.png, 和 **d.tiff 时 就已经可以训练了。
如果没有 **d.tiff (因为没有深度相机所以无法获得深度图)。
使用 点云文件转化成 深度图 pcd*[0-9].txt ------> pcd*[0-9]d.tiff
使用grasp_label项目下的main_label.py
对**r.png 文件标注
(**r.png,普通彩色图,给人看的,在这个上面标注)
结果是生成 **Label.txt
里面是 : 抓取点的坐标,抓取角度,宽度。
使用grasp_label项目下的generate_target_ggcnn.py
读取**Label.txt 转化成 **grasp.mat
**grasp.mat 的内容是:
生成ggcnn抓取检测标签
抓取点、抓取角、抓取宽度 合成一个mat (3, 480, 640)
抓取点: 1通道
抓取角:1通道。单位弧度
抓取宽度:1通道。单位像素
然后下载cornell数据集
里面是三个txt加一个png为一份
然后运行下面的代码
把点云文件(pcd*[0-9].txt) 转化成了 d.tiff 的深度图。
这个txt可不是 上面讲的 Label.txt,注意区分
# import glob
# import os
# import numpy as np
# from imageio import imsave
# import argparse
# from utils.dataset_processing.image import DepthImage
#
# #康奈尔提供的数据是:pcd*[0-9].txt,并没有.tiff
# #这个程序就是把点云文件(pcd*[0-9].txt) 转化成了.tiff的深度图。
# if __name__ == '__main__':
# parser = argparse.ArgumentParser(description='Generate depth images from Cornell PCD files.')
# parser.add_argument('path', type=str, help='Path to Cornell Grasping Dataset')
# # parser.add_argument('--dataset-path', type=str, help='Path to Cornell Grasping Dataset')
# args = parser.parse_args()
#
#
# pcds = glob.glob(os.path.join(args.path, '*', 'pcd*[0-9].txt'))
# pcds.sort()
#
# for pcd in pcds:
# di = DepthImage.from_pcd(pcd, (480, 640))
# di.inpaint()
#
# of_name = pcd.replace('.txt', 'd.tiff')
# print(of_name)
# imsave(of_name, di.img.astype(np.float32))
import glob
import os
import numpy as np
from imageio import imsave
import argparse
from utils.dataset_processing.image import DepthImage
# #康奈尔提供的数据是:pcd*[0-9].txt,并没有.tiff
# #这个程序就是把点云文件(pcd*[0-9].txt) 转化成了.tiff的深度图。
if __name__ == '__main__':
path = r'E:\GGCNN\code\CORNELL_DATA\0-1034'
pcds = glob.glob(os.path.join(path, 'pcd*[0-9].txt'))
pcds.sort()
# print(pcds)
for pcd in pcds:
print(pcd)
di = DepthImage.from_pcd(pcd, (480, 640))
di.inpaint()
of_name = pcd.replace('.txt', 'd.tiff')
# print(of_name)
imsave(of_name, di.img.astype(np.float32))
课程补充:训练GGCNN的数据集说明 - 古月居 (guyuehome.com)
然后在这个文件夹里有 **r.png 和 **d.tiff 了。
最后把 **r.png ,**d.tiff ,**grasp.mat 三种文件放到一个路径下,让网络的数据集路径指向这里就可以了。
在训练的代码中,读取该路径下的:
**grasp.mat ,然后
depthf = [f.replace('grasp.mat', 'd.tiff') for f in graspf] #把.mat 替换为 .tiff
# print("depthf hahhahh ahhah ",depthf)
rgbf = [f.replace('grasp.mat', 'r.png') for f in graspf]
把 **d.tiff 和 **r.png 文件读进来,训练参数。
总结:
需要RGB图片 进行标注
**r.png ------main_label.py-----> **Label.txt ------generate_target_ggcnn.py---------> **grasp.mat
有 **grasp.mat , **r.png, 和 **d.tiff 时 就已经可以训练了。
如果没有 **d.tiff (因为没有深度相机所以无法获得深度图)。
使用 点云文件转化成 深度图 pcd*[0-9].txt ------> pcd*[0-9]d.tiff
萌新求带,如果有错误,欢迎指正。