Global-Local Bidirectional Reasoning for Unsupervised Representation Learning of 3D Point Clouds 笔记

本文介绍CVPR2020中的一项研究,利用全局与局部双向推理,实现3D点云无监督表示学习,精度媲美有监督方法。通过自监督度量学习和多任务训练,该方法在ModelNet和ScanNet数据集上取得优异成果。

Global-Local Bidirectional Reasoning for Unsupervised Representation Learning of 3D Point Clouds

本文介绍一篇cvpr2020里面关于点云无监督识别的文章。
论文
代码

1. 问题

以无监督的方式来学习点云,而且在modelnet和scannetobject 数据集上达到了和有监督方式的一样的精度。

2. 思想

这篇文章认为,由于3D物体自身的集合特性,应该可以根据局部推断出整体的类别,并且更好的区分类内的差别。反过来,整体的特征应该也可以推断出各个局部的细节。
在这里插入图片描述
显而易见,本文包含两个步骤。Local to Global Reasoning 和 Global to Local Reasoning

3. 算法

3.1 Local to Global Reasoning

思想就是,从提取到的局部特征,映射得一个全局特征,然后衡量由局部特征得到的全局特征与直接的全局特征之间差异,进行反复学习。

所以,首先需要一个预测网络。

  • Prediction Networks:
    将局部特征和全局特征映射到一个共享的特征空间内

接下来,就是需要衡量二者的差异

  • Self-Supervised Metric Learning:

本文没有选取常规的二范数,而是将其看作是unsupervised metric learning task,并如此建模(我不太了解metric learning)还使用multi-class N-pair loss 来监督预测任务
在这里插入图片描述仿照人脸识别的metric learning将特征放在一个超球上。

在这里插入图片描述

3.2 Global to Local Reasoning

进行Global to Local Reasoning 的原因是为了保证直接提取的global feature质量,如果直接提取的global feature质量比较差,那么Local to Global Reasoning 模块提取的local feature 就会像一个错误的方向移动,导致模型无法学习到有用的知识。

这个模块通过两个子任务来保证全局特征的有效性

  • Self-Reconstruction
  • Normal Estimation
    在这里插入图片描述
    在这里插入图片描述
    注意,因为法向量估计是一个很难的任务,所以本文在modelnet数据集上,把此子任务变成了一个有监督的任务。这里其实有点小疑问,个人觉得法向量ground truth含有的信息可能还要多于classification label。

得到最终的loss

在这里插入图片描述

4 实验结果

分类精度很棒,大大超越了所有的无监督方法,甚至可以和有监督的分类方法相比拟。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从对比实验中可以看出,每个部分都起到了比较大的作用。不是很了解metric learning的建模方式对这篇文章的贡献有多大。也就是说为什么要使用metric learning 对loss进行约束呢?猜想一下,二范数约束loss的效果应该不好。

总结

文章做的很棒,以无监督方式甚至超过了一些有监督的模型。作者的知识面很广,佩服!

### 如何复现 Attention-Based Bidirectional LSTM Networks for Relation Classification #### 准备工作 为了成功复现基于注意力机制的双向长短期记忆网络(Att-BLSTM)用于关系分类的任务,需准备必要的环境数据集。确保安装了Python以及常用的机器学习库如TensorFlow或PyTorch等框架。 #### 数据预处理 首先加载并清理训练所需的数据集。这通常涉及去除无关字符、分词、转换大小写等工作。对于每个样本中的词语,利用预先训练好的词向量模型将其转化为固定长度的向量表示形式[^3]。 ```python import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences def preprocess_data(texts, labels=None): tokenizer = Tokenizer(num_words=MAX_NB_WORDS) tokenizer.fit_on_texts(texts) sequences = tokenizer.texts_to_sequences(texts) word_index = tokenizer.word_index data = pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH) if labels is not None: label_encoder = LabelEncoder() encoded_labels = label_encoder.fit_transform(labels) return data, encoded_labels, word_index else: return data, word_index ``` #### 构建模型架构 构建包含五个主要组件的神经网络结构:输入层、嵌入层、双向LSTM层、注意层层及输出层。这里采用Keras API来定义这一复杂的深度学习模型[^4]。 ```python from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Embedding, Bidirectional, LSTM, Dense, Dropout, concatenate, Attention embedding_layer = Embedding(input_dim=vocab_size, output_dim=EMBEDDING_DIM, weights=[embedding_matrix], input_length=max_len, trainable=False) sequence_input = Input(shape=(max_len,), dtype='int32') embedded_sequences = embedding_layer(sequence_input) l_lstm = Bidirectional(LSTM(units=LSTM_UNITS, return_sequences=True))(embedded_sequences) attention_output = Attention()([l_lstm, l_lstm]) dense_1 = Dense(DENSE_UNITS, activation="relu")(attention_output) dropout_1 = Dropout(rate=DROPOUT_RATE)(dense_1) output = Dense(len(label_names), activation='softmax')(dropout_1) model = Model(inputs=sequence_input, outputs=output) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` #### 模型训练与评估 完成上述准备工作之后就可以开始训练过程,在此期间可以设置早停策略防止过拟合现象发生;同时保存最佳性能参数以便后续测试阶段调用。最后通过验证集上的表现衡量整个系统的有效性[^2]。 ```python history = model.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=EPOCHS, validation_split=0.1, callbacks=[ EarlyStopping(monitor='val_loss', patience=PATIENCE), ModelCheckpoint(filepath=model_path, save_best_only=True)] ) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值