当前位置:网站首页>[point cloud series] pointfilter: point cloud filtering via encoder decoder modeling
[point cloud series] pointfilter: point cloud filtering via encoder decoder modeling
2022-04-23 13:18:00 【^_^ Min Fei】
List of articles
1. Summary
Published in TVCG2021 Periodical
Code :http://github.com/dongbo-BUAA-VR/Pointfilter
It basically uses the thinking of bilateral filtering
2. motivation
Learn the displacement vector , Denoised points = noise + Displacement vector
So the essential processing is to calculate The displacement vector here .
3. Method
Preprocessing :
Given a set of point clouds Real block P P P And noise block P ^ \hat{P} P^, r r r It's a block radius , Generally, it is the diagonal of the bounding box 5%
P P P: Clean point cloud
N N N: noise
Once the block is generated , Two problems need to be considered in point cloud filtering :
- How to avoid Unnecessary degrees of freedom in the observation domain ?
- How to protect Pointfilter Sensitive to some geometric transformations ?
about 1, You can transform the block to the origin ( With p i ^ \hat{p_i} pi^ Centered ), And make a telescopic transformation
In order to ensure the invariance of rigid body , Use PAC alignment , First of all Z Axis , then X Axis .
For the convenience of parameter adjustment , The default input is fast ∣ P ^ i ∣ = 500 |\hat{P}_i|=500 ∣P^i∣=500, The number of blocks is less than 500 Then fill , If it is greater than, conduct down sampling .
The overall framework :
According to the adjacent structure Project each noise onto the foundation surface , Therefore, the codec network is designed :
Encoder Encoder
Input :PCA Processed point cloud
Purpose : Or features represent information
Content :
- feature extraction : use MLP Realization , Different scale feature extraction
- Collector: In fact, that is max-pooling operation , Turn the feature into a 1024 Dimension characteristics .
The whole is basically PointNet+Batch Norm, Ensure that the characteristics of each layer are standard distribution .
The code description :
class pointfilter_decoder(nn.Module):
def __init__(self):
super(pointfilter_decoder, self).__init__()
self.fc1 = nn.Linear(1024, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 3)
self.bn1 = nn.BatchNorm1d(512)
self.bn2 = nn.BatchNorm1d(256)
self.dropout_1 = nn.Dropout(0.3)
self.dropout_2 = nn.Dropout(0.3)
def forward(self, x):
x = F.relu(self.bn1(self.fc1(x)))
# x = self.dropout_1(x)
x = F.relu(self.bn2(self.fc2(x)))
# x = self.dropout_2(x)
x = torch.tanh(self.fc3(x))
return x
Decoder decoder
The decoder is directly FCN, Then convert to the coordinate domain .
Here we need to pay attention to , What we learned is the part of denoising , So the formula 7 r R − 1 f ( . ) r\mathbf{R}^{-1}f(.) rR−1f(.) This term is a displacement vector .
As shown in the figure , In fact, it's here n i n_i ni
The code description :
class pointfilter_decoder(nn.Module):
def __init__(self):
super(pointfilter_decoder, self).__init__()
self.fc1 = nn.Linear(1024, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 3)
self.bn1 = nn.BatchNorm1d(512)
self.bn2 = nn.BatchNorm1d(256)
self.dropout_1 = nn.Dropout(0.3)
self.dropout_2 = nn.Dropout(0.3)
def forward(self, x):
x = F.relu(self.bn1(self.fc1(x)))
# x = self.dropout_1(x)
x = F.relu(self.bn2(self.fc2(x)))
# x = self.dropout_2(x)
x = torch.tanh(self.fc3(x))
return x
Loss function
There are two kinds of : Projection loss L p r o j a L^a_{proj} Lproja + Loss of similarity L r e p L_{rep} Lrep
Using the aggregation of exclusion penalty terms , The total loss is as follows 5 Shown . among η = 0.97 \eta=0.97 η=0.97
Projection loss : The formula 3
Gauss function : The formula 4
d i a g diag diag The size is P i P_i Pi The diagonal length of the bounding box , m = ∣ P ^ i ∣ m=|\hat{P}_i| m=∣P^i∣, The default angle is supported 15 degree . n \mathbf{n} n Is the normal vector .
analysis
Combined with the traditional denoising method loss, Compact expression ; But it is not very good to retain sharp noise .
4. experiment
版权声明
本文为[^_^ Min Fei]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230611136878.html
边栏推荐
- 【快排】215. 数组中的第K个最大元素
- 叮~ 你的奖学金已到账!C认证企业奖学金名单出炉
- [51 single chip microcomputer traffic light simulation]
- [wechat applet] flex layout usage record
- Learning notes of AMBA protocol
- 超40W奖金池等你来战!第二届“长沙银行杯”腾讯云启创新大赛火热来袭!
- Design of STM32 multi-channel temperature measurement wireless transmission alarm system (industrial timing temperature measurement / engine room temperature timing detection, etc.)
- 【行走的笔记】
- Translation of attention in natural language processing
- mui picker和下拉刷新冲突问题
猜你喜欢
Design and manufacture of 51 single chip microcomputer solar charging treasure with low voltage alarm (complete code data)
[untitled] PID control TT encoder motor
Lpddr4 notes
UEFI learning 01-arm aarch64 compilation, armplatformpripeicore (SEC)
CSDN高校俱乐部“名师高校行”——湖南师范大学站
mui + hbuilder + h5api模拟弹出支付样式
Imx6ull QEMU bare metal tutorial 1: GPIO, iomux, I2C
Request和Response及其ServletContext总结
【微信小程序】flex布局使用记录
Hbuilderx + uniapp packaging IPA submission app store stepping on the pit
随机推荐
MySQL 8.0.11 download, install and connect tutorials using visualization tools
FFmpeg常用命令
100 GIS practical application cases (34) - splicing 2020globeland30
playwright控制本地穀歌瀏覽打開,並下載文件
Three channel ultrasonic ranging system based on 51 single chip microcomputer (timer ranging)
[untitled] PID control TT encoder motor
Translation of attention in natural language processing
Metalama简介4.使用Fabric操作项目或命名空间
Lpddr4 notes
Learning notes of AMBA protocol
These vscode extensions are my favorite
MySQL5.5安装教程
100 GIS practical application cases (51) - a method for calculating the hourly spatial average of NC files according to the specified range in ArcGIS
Vscode tips
普通大学生如何拿到大厂offer?敖丙教你一招致胜!
decast id.var measure.var数据拆分与合并
SSM整合之pom.xml
STD:: shared of smart pointer_ ptr、std::unique_ ptr
Playwright controls local Google browsing to open and download files
AUTOSAR from introduction to mastery 100 lectures (87) - key weapon of advanced EEA - AUTOSAR and DDS