-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #118 from xindeng98/master
add PointVector
- Loading branch information
Showing
10 changed files
with
263 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
|
||
|
||
model: | ||
NAME: BaseCls | ||
encoder_args: | ||
NAME: PointVectorEncoder | ||
blocks: [1, 1, 1, 1, 1, 1] | ||
strides: [1, 2, 2, 2, 2, 1] | ||
width: 32 | ||
in_channels: 3 | ||
radius: 0.15 | ||
radius_scaling: 1.5 | ||
sa_layers: 2 | ||
sa_use_res: True | ||
nsample: 32 | ||
expansion: 4 | ||
flag: 0 | ||
aggr_args: | ||
feature_type: 'dp_fj' | ||
reduction: 'max' | ||
group_args: | ||
NAME: 'ballquery' | ||
normalize_dp: True | ||
conv_args: | ||
order: conv-norm-act | ||
act_args: | ||
act: 'relu' | ||
norm_args: | ||
norm: 'bn' | ||
cls_args: | ||
NAME: ClsHead | ||
num_classes: 40 | ||
mlps: [512, 256] | ||
norm_args: | ||
norm: 'bn1d' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
|
||
model: | ||
NAME: BaseSeg | ||
encoder_args: | ||
NAME: PointVectorEncoder | ||
blocks: [1, 3, 5, 3, 3] | ||
strides: [1, 4, 4, 4, 4] | ||
sa_layers: 1 | ||
sa_use_res: False | ||
width: 32 | ||
in_channels: 4 | ||
expansion: 4 | ||
radius: 0.1 | ||
nsample: 32 | ||
flag: 1 #means s3dis | ||
aggr_args: | ||
feature_type: 'dp_fj' | ||
reduction: 'max' | ||
group_args: | ||
NAME: 'ballquery' | ||
normalize_dp: True | ||
conv_args: | ||
order: conv-norm-act | ||
act_args: | ||
act: 'relu' | ||
norm_args: | ||
norm: 'bn' | ||
decoder_args: | ||
NAME: PointVectorDecoder | ||
cls_args: | ||
NAME: SegHead | ||
num_classes: 13 | ||
in_channels: null | ||
norm_args: | ||
norm: 'bn' | ||
|
||
batch_size: 8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
|
||
model: | ||
NAME: BaseSeg | ||
encoder_args: | ||
NAME: PointVectorEncoder | ||
blocks: [1, 4, 7, 4, 4] | ||
strides: [1, 4, 4, 4, 4] | ||
sa_layers: 1 | ||
sa_use_res: False | ||
width: 64 | ||
in_channels: 4 | ||
expansion: 4 | ||
radius: 0.1 | ||
nsample: 32 | ||
flag: 1 #means s3dis | ||
aggr_args: | ||
feature_type: 'dp_fj' | ||
reduction: 'max' | ||
group_args: | ||
NAME: 'ballquery' | ||
normalize_dp: True | ||
conv_args: | ||
order: conv-norm-act | ||
act_args: | ||
act: 'relu' | ||
norm_args: | ||
norm: 'bn' | ||
decoder_args: | ||
NAME: PointVectorDecoder | ||
cls_args: | ||
NAME: SegHead | ||
num_classes: 13 | ||
in_channels: null | ||
norm_args: | ||
norm: 'bn' | ||
|
||
batch_size: 8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
|
||
model: | ||
NAME: BaseCls | ||
encoder_args: | ||
NAME: PointVectorEncoder | ||
blocks: [1, 1, 1, 1, 1, 1] | ||
strides: [1, 2, 2, 2, 2, 1] | ||
width: 32 | ||
in_channels: 4 | ||
sa_layers: 2 | ||
sa_use_res: True | ||
radius: 0.15 | ||
radius_scaling: 1.5 | ||
nsample: 32 | ||
expansion: 4 | ||
flag: 0 # means classification task | ||
aggr_args: | ||
feature_type: 'dp_fj' | ||
reduction: 'max' | ||
group_args: | ||
NAME: 'ballquery' | ||
normalize_dp: True | ||
conv_args: | ||
order: conv-norm-act | ||
act_args: | ||
act: 'leakyrelu' | ||
norm_args: | ||
norm: 'bn' | ||
cls_args: | ||
NAME: ClsHead | ||
num_classes: 15 | ||
mlps: [512, 256] | ||
norm_args: | ||
norm: 'bn1d' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
|
||
model: | ||
NAME: BasePartSeg | ||
encoder_args: | ||
NAME: PointVectorEncoder | ||
blocks: [ 1, 1, 1, 1, 1 ] # 1, 1, 1, 2, 1 is better, but not the main focus of this paper | ||
strides: [ 1, 2, 2, 2, 2 ] | ||
width: 64 | ||
in_channels: 7 # better than 4,6 | ||
sa_layers: 2 # better than 2 | ||
sa_use_res: True | ||
radius: 0.1 | ||
radius_scaling: 2.5 | ||
nsample: 32 # will not improve performance. | ||
expansion: 4 | ||
flag: 2 # means partseg | ||
aggr_args: | ||
feature_type: 'dp_fj' | ||
reduction: 'max' | ||
group_args: | ||
NAME: 'ballquery' | ||
normalize_dp: True | ||
conv_args: | ||
order: conv-norm-act | ||
act_args: | ||
act: 'relu' # leakrelu makes training unstable. | ||
norm_args: | ||
norm: 'bn' # ln makes training unstable | ||
decoder_args: | ||
NAME: PointVectorPartDecoder | ||
cls_map: curvenet | ||
cls_args: | ||
NAME: SegHead | ||
global_feat: max,avg # apped global feature to each point feature | ||
num_classes: 50 | ||
in_channels: null | ||
norm_args: | ||
norm: 'bn' | ||
|
||
|
||
# ---------------------------------------------------------------------------- # | ||
# Training cfgs | ||
# ---------------------------------------------------------------------------- # | ||
lr: 0.001 | ||
min_lr: null | ||
optimizer: | ||
NAME: adamw | ||
weight_decay: 1.0e-4 # the best | ||
|
||
criterion_args: | ||
NAME: Poly1FocalLoss | ||
|
||
# scheduler | ||
epochs: 300 | ||
sched: multistep | ||
decay_epochs: [210, 270] | ||
decay_rate: 0.1 | ||
warmup_epochs: 0 | ||
|
||
datatransforms: | ||
train: [PointsToTensor, PointCloudScaling,PointCloudCenterAndNormalize,PointCloudJitter,ChromaticDropGPU] | ||
val: [PointsToTensor, PointCloudCenterAndNormalize] | ||
kwargs: | ||
jitter_sigma: 0.001 | ||
jitter_clip: 0.005 | ||
scale: [0.8, 1.2] | ||
gravity_dim: 1 | ||
angle: [0, 1.0, 0] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
## PointVector: A Vector Representation In Point Cloud Analysis | ||
|
||
*by [Xin Deng](https://xindeng98.github.io/), [WenYu Zhang](https://wenyu1009.github.io/), [Qing Ding](https://sse.ustc.edu.cn/2020/0422/c19861a418817/page.htm), [XinMing Zhang](http://staff.ustc.edu.cn/~xinming/)* | ||
<p align="center"> | ||
<img src="./misc/pointvector/pointvector.png" width=100% height=100% class="center"> | ||
</p> | ||
|
||
|
||
|
||
--- | ||
### [arXiv](https://arxiv.org/pdf/2205.10528.pdf) | ||
|
||
### News | ||
- :boom: March, 2023: [**PointVector**](https://arxiv.org/pdf/2205.10528.pdf) accepted by CVPR'23 | ||
|
||
|
||
### Abstract | ||
|
||
In point cloud analysis, point-based methods have rapidly developed in recent years. These methods have recently focused on concise MLP structures, such as PointNeXt, which have demonstrated competitiveness with Convolutional and Transformer structures. However, standard MLPs are limited in their ability to extract local features effectively. To address this limitation, we propose a Vector-oriented Point Set Abstraction that can aggregate neighboring features through higher-dimensional vectors. To facilitate network optimization, we construct a transformation from scalar to vector using independent angles based on 3D vector rotations. Finally, we develop a PointVector model that follows the structure of PointNeXt. Our experimental results demonstrate that PointVector achieves state-of-the-art performance $\textbf{72.3\% mIOU}$ on the S3DIS Area 5 and $\textbf{78.4\% mIOU}$ on the S3DIS (6-fold cross-validation) with only $\textbf{58\%}$ model parameters of PointNeXt. We hope our work will help the exploration of concise and effective feature representations. The code will be released soon. | ||
|
||
### Note | ||
Since there is a small difference in the model code used in different datasets, mainly in the use of batchnorm and leakyrelu and relu, we have integrated it. However, some of the experiments fluctuated a lot, so we did not run them more than once, but at the same time put the original code into the checkpoint link, which is the pointvector.py in the folder, and in fact the original network structure is equivalent to our existing code. | ||
|
||
The modelnet40c showed a small difference, but it was acceptable. | ||
### Visualization | ||
More examples are available in the [paper](https://arxiv.org/pdf/2205.10528.pdf). | ||
|
||
![s3dis](./misc/pointvector/s3dis.png) | ||
|
||
|
||
--- | ||
|
||
### Citation | ||
If you find PointVector useful, please cite: | ||
```tex | ||
@misc{deng2023pointvector, | ||
title={PointVector: A Vector Representation In Point Cloud Analysis}, | ||
author={Xin Deng and WenYu Zhang and Qing Ding and XinMing Zhang}, | ||
year={2023}, | ||
eprint={2205.10528}, | ||
archivePrefix={arXiv}, | ||
primaryClass={cs.CV} | ||
} | ||
``` |
Submodule openpoints
updated
from ee100c to e2dc56