pcc_geo_cnn_v2_yehua
point clouds, compression, neural networks, geometry, octree
pcc_geo_cnn_v2 is based on pcc_geo_cnn_v1, for lossy point cloud compression. And for performance optimization, the author comes up with 5 thoughts, and verifies them by experiments.
our contributions
1.benchmark test on different PC files, and on different metrics, including bpp, D1, D2, time, compared TensorFlow with pytorch.
2.draw a flow chart about encoding process.
3.BD-BR and BD-PSNR calculation over GPCC(octree), also compared with pcc_geo_cnn_v1.
4.transplant from tensorflow to pytorch
file structure
root
└── TensorFlow code
└── compression-1.3.zip: TensorFlow-compression module
└── pytorch: pytorch version code, models included
└── Improved Deep Point Cloud Geometry Compression.pdf: origional paper
└── flowchart.vsdx: flow chart about encoding process
└── trainsets: ModelNet40_200_pc512_oct3_4k.zip
└── pc_error_d: gpcc metrics software
└── tmc3: gpcc compression software
environment
- tensorflow
refer to pcc_geo_cnn_v2-master/readme.md
- pytorch
Python 3.6.9
torch 1.8.1
torchac 0.9.3
command
- tensorflow
Training specific model:
python tr_train.py
'/userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2-master/ModelNet40_200_pc512_oct3_4k/**/*.ply'
/userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2/models/c4-ws/1.00e-04
--resolution 64 --lmbda 1.00e-04 --alpha 0.75 --gamma 2.0 --batch_size 32 --model_config c3p
Experiment (compress, decompress, remap colors, compute metrics):
python ev_experiment.py
--output_dir /userhome/pcc_geo_cnn_v2/output_yh/ev_experiment
--model_dir /userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2/models/c4-ws/1.00e-04
--model_config c3p --opt_metrics d1_mse d2_mse --max_deltas inf
--pc_name redandblack_vox10_1550
--pcerror_path /userhome/pcc_geo_cnn_v2/pc_error_d
--pcerror_cfg_path /userhome/PCGCv2/PCGCv2-8.3/mpeg-pcc-tmc13-master/cfg/trisoup-predlift/lossy-geom-lossy-attrs/redandblack_vox10_1550/r04/pcerror.cfg
--input_pc /userhome/pcc_geo_cnn_v2/MPEG_PCC_dataset/redandblack_vox10_1550.ply
--input_norm /userhome/pcc_geo_cnn_v2/MPEG_PCC_dataset/redandblack_vox10_1550_n.ply
Compress/decompress (for D1 and D2 optimized point clouds):
python compress_octree.py
--input_files /userhome/pcc_geo_cnn_v2/MPEG_PCC_dataset/redandblack_vox10_1550.ply
--input_normals /userhome/pcc_geo_cnn_v2/MPEG_PCC_dataset/redandblack_vox10_1550_n.ply
--output_files /userhome/pcc_geo_cnn_v2/output_yh/compress_d1d2/redandblack_vox10_1550_d1.ply.bin
/userhome/pcc_geo_cnn_v2/output_yh/compress_d1d2/redandblack_vox10_1550_d2.ply.bin
--checkpoint_dir /userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2/models/c4-ws/1.00e-04
--opt_metrics d1_mse d2_mse --resolution 1024 --model_config c3p --octree_level 4
--dec_files /userhome/pcc_geo_cnn_v2/output_yh/compress_d1d2/redandblack_vox10_1550_d1.ply.bin.ply
/userhome/pcc_geo_cnn_v2/output_yh/compress_d1d2/redandblack_vox10_1550_d2.ply.bin.ply
Compress/decompress (for D1 optimized point cloud only):
python compress_octree.py
--input_files /userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2/redandblack_vox10_1550/redandblack_vox10_1550.ply
--output_files /userhome/pcc_geo_cnn_v2/output_yh/redandblack_vox10_1550_d1.ply.bin
--checkpoint_dir /userhome/pcc_geo_cnn_v2/pcc_geo_cnn_v2/models/c4-ws/1.00e-04
--opt_metrics d1_mse --resolution 1024 --model_config c3p --octree_level 4
--dec_files /userhome/pcc_geo_cnn_v2/output_yh/redandblack_vox10_1550_d1.ply.bin.ply
For more instructions, please refer to pcc_geo_cnn_v2-master/readme.md
- pytorch
Training:
python train_new.py
Compress/decompress:
python compress_octree.py
performance
We first caculate the BD-PSNR and BD-BR rate of pcc_geo_cnn_v2 with the model of c4-ws, which has the best performance than others, over GPCC(octree), the result shows as below. We can see from the table, that for dense PC with bitwidth of 10 and 11, pcc_geo_cnn_v2 gets better performance over octree, while for sparse or vox12 PC, it gets worse. The main reason is that there is no PC data in training sets with similar distributions or geometry features. Compared with pcc_geo_cnn_v1, pcc_geo_cnn_v2 has better performance, no matter for dense or sparse, or other bitwidth.
We then carry out a benchmark test on PC files both on TensorFlow and Pytorch, including those are not tested by author. The result shows below. From the result, we can see that the bpp of pytorch is much smaller than tensorflow, while d1 and d2 is just a little bit smaller, it may be because we adjust the lmbda parameter to get best performance for pytorch. As for running time, pytorch takes less time, for the faster speed of 3d convolution operation.
PC files |
TF_bpp |
TF_d1 |
TF_d2 |
TF_Enc_Dec_time |
PT_bpp |
PT_d1 |
PT_d2 |
PT_Enc_dec_time |
queen_vox10_0200.ply |
0.692 |
75.759 |
79.388 |
1469.03 |
0.385 |
74.798 |
77.93 |
1364.85 |
longdress_vox10_1300.ply |
0.885 |
74.75 |
78.481 |
1896.43 |
0.483 |
73.518 |
76.717 |
1369.51 |
basketball_player_vox11_00000200.ply |
0.872 |
82.321 |
86.291 |
3133.21 |
0.464 |
80.7 |
83.963 |
4989.24 |
loot_vox10_1200.ply |
0.887 |
75.119 |
78.854 |
1683.22 |
0.482 |
73.859 |
77.037 |
1383.46 |
dancer_vox11_00000001.ply |
0.848 |
82.376 |
86.314 |
2686.44 |
0.455 |
80.733 |
83.86 |
4377.09 |
soldier_vox10_0690.ply |
0.915 |
74.908 |
78.689 |
2480.98 |
0.498 |
73.563 |
76.781 |
1740.23 |
sarah_vox9_0023.ply |
0.891 |
66.564 |
70.048 |
1835.59 |
0.474 |
65.759 |
68.818 |
424.65 |
sarah_vox10_0023.ply |
0.79 |
72.492 |
75.916 |
2548.6 |
0.434 |
71.838 |
74.84 |
1642.06 |
phil_vox9_0139.ply |
0.892 |
66.164 |
69.615 |
1928.87 |
0.473 |
65.957 |
69.14 |
394.04 |
phil_vox10_0139.ply |
0.807 |
72.197 |
75.622 |
2549.86 |
0.44 |
71.476 |
74.564 |
1727.18 |
redandblack_vox10_1550.ply |
0.91 |
74.082 |
77.674 |
1390.07 |
0.496 |
72.904 |
76.05 |
951.54 |
We also draw D1-bpp and D2-bpp figures, to clearly show the performance between different PC files as below. It is obvious that, PCs of vox11 have best performance, which are on up-left part of the figure, PCs of vox10 are second in the middle, and PCs of sparse have bad performance on the bottom part.
Cite from:
@misc{quach2020improved,
title={Improved Deep Point Cloud Geometry Compression},
author={Maurice Quach and Giuseppe Valenzise and Frederic Dufaux},
year={2020},
eprint={2006.09043},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
contributors
name: Ye Hua
email: yeh@pcl.ac.cn