赞
踩
- conda create --name pointnet python=3.6
- activate pointnet
- conda install tensorflow-gpu=1.12
- conda install matplotlib
- conda install plyfile
- conda install pillow
-
- conda create --name pointnet2 python=2.7 (windows不支持tensorflow-gpu=1.2)
- activate pointnet2
- conda install tensorflow-gpu=1.2(没有)
点云数据 http://modelnet.cs.princeton.edu/
hdf5数据 https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip
点云数据 http://web.stanford.edu/~ericyi/project_page/part_annotation/index.html
https://shapenet.cs.stanford.edu/ericyi/shapenetcore_partanno_v0.zip
hdf5数据 https://shapenet.cs.stanford.edu/media/shapenet_part_seg_hdf5_data.zip
hdf5数据 https://shapenet.cs.stanford.edu/media/indoor3d_sem_seg_hdf5_data.zip
点云数据 https://blog.csdn.net/zhulf0804/article/details/108609629
off点云数据---------->>>>>>>>hdf5文件---------->>>>>>>>训练---------->>>>>>>>model
- //pointnet-master目录下 识别 modelnet40
-
- python train.py
-
- python train.py -h
-
- tensorboard --logdir log
-
- python evaluate.py --visu
- //pointnet-master/part_seg目录下 分割 ShapeNetPart
-
- python train.py
-
- python test.py
数据---------->>>>>>>>修改indoor3d_util---------->>>>>>>>预处理collect_indoor3d_data,生成npy文件---------->>>>>>>>gen_indoor3d_h5---------->>>>>>>>hdf5文件
点云数据:23585个场景,每个场景4096个点,每个点9维向量(X,Y,Z,R,G,B,所在房间的归一化位置)
标签数据:23585个场景,每个场景4096个点,每个点对应不同的标签(桌子、椅子、沙发、书架和木板等3个语义标签)
训练:hdf5文件---------->>>>>>>>train.py---------->>>>>>>>模型
可以适当修改num_point的大小,但是注意train_one_epoch、eval_one_epoch函数里面也要改
可以tqdm.tqdm查看进度,但是记得安装conda install tqdm、引用import tqdm
预测:数据---------->>>>>>>>修改indoor3d_util---------->>>>>>>>预处理collect_indoor3d_data,生成npy文件---------->>>>>>>>预测batch_inference
python batch_inference.py --model_path log6/model.ckpt --dump_dir log6/dump --o
有个地方需要修改,不然会报错
现在对含背景的物体进行检测
如图,对模型进行训练,基本过程(文件内地址修改不做说明了):
- if points.shape[1] == 3: # 没有颜色
- color = np.zeros((points.shape[0], 3))
- color[:, 1] = 255
- points_list.append(np.concatenate([points, color, labels], 1)) # Nx7
得到npy文件,则就可以开始训练了(我这边就用了一个样本进行训练,所以很快4-5步就够了)
开始检测:将含背景的点云文件也放进去,生成npy文件,颜色任意就行
修改batch_inference文件的eval_one_epoch,这边用到预测得分,舍去评分小于0(不一定是0,可以自己设定阈值)的点云:
- loss_val, pred_val, pred_softmax_val = sess.run([ops['loss'], ops['pred'], ops['pred_softmax']],
- feed_dict=feed_dict) # 计算
- if pred_val[0, i, pred[i]] > 0: # 如果预测值大于0 则有分类
- color = a_my_util.g_label2color[pred[i]] # 预测标签对应的颜色分类
- else:
- color = [255, 255, 255] # 如果预测值小于0 则啥也不是,白色
- color_gt = a_my_util.g_label2color[current_label[start_idx + b, i]] # 实际标签对应的颜色分类
- if pred_val[0][i][pred[i]] > 0: # 如果预测值大于0 则有分类
- fout_data_label.write('%f %f %f %d %d %d %f %d\n' % (
- pts[i, 6], pts[i, 7], pts[i, 8], pts[i, 3], pts[i, 4], pts[i, 5],
- pred_softmax_val[b, i, pred[i]],
- pred[i])) # 预测标签,(pred_val的第几个批次、第几个点、的标签概率),标签
- else: # 如果预测值小于0 则啥也不是,白色
- fout_data_label.write('%f %f %f %d %d %d %f %d\n' % (
- pts[i, 6], pts[i, 7], pts[i, 8], pts[i, 3], pts[i, 4], pts[i, 5],
- pred_val[0, i, pred[i]],
- -1)) # 预测标签,(pred_val的第几个批次、第几个点、的标签概率),标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。