自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Point cleannet训练代码解析

在这里插入代码片from __future__ import print_functionimport argparseimport osimport sysimport randomimport mathimport shutilimport torchimport torch.nn.parallelimport torch.optim as optimimport torch.optim.lr_scheduler as lr_schedulerimport torch.util

2020-08-30 09:48:02 806 2

原创 Point cleannet代码解析

PCPNET部分from __future__ import print_functionimport numpy as np import torchimport torch.nn as nnimport torch.nn.parallelimport torch.utils.dataimport torch.nn.functional as Ffrom torch.autograd import Variableimport utilsclass STN(nn.Module):

2020-08-20 09:17:47 1138 11

原创 PointNet:基于深度学习的3D点云分类和分割模型

简介深度学习已经成为了计算机视觉领域的一大强有力的工具,尤其在图像领域,基于卷积神经网络的深度学习方法已经攻占了绝大多数问题的高点。然而针对无序点云数据的深度学习方法研究则进展相对缓慢。这主要是因为点云具有三个特征:无序性、稀疏性、信息量有限。以往学者用深度学习方法在处理点云时,往往将其转换为特定视角下的深度图像或者体素(Voxel)等更为规整的格式以便于定义权重共享的卷积操作等。PointNet则允许我们直接输入点云进行处理。输入输出输入为三通道点云数据,也可以有额外的通道比如颜色、法向量等,

2020-08-12 09:30:02 1915

原创 算法基础课:区间DP

首先区间DP:顾名思义:区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在写代码时必须要将区间从小到大枚举,为的是保证后面大的区间所用到的已经是被算过了,然后开始枚举左端点,枚举完左端点以后,再确立右端点,此步实质上是确定区间的一个过程,最后一步再去枚举我中间的分点即可。代码模板:在这里插入代码片i

2020-07-04 15:16:17 233

原创 算法基础课:动态规划之背包问题

首先动态规划,应该理解为一个递推的过程,很多时候对于动态规划来说都应该是从前向后递推的一个过程。但是思考的方式还是应该按照递归的思想来去思考,比如说按照集合划分,状态表示,状态表示又可以划分成状态表示的东西是什么?状态表示的条件是什么,属性又是什么?状态计算就是正常的一个递推的过程,思考方式是该属性可以来源于哪些部分,然后然后以递推的方式进行即可。01背包:每个物体只有选与不选。完全背包:每个物体可以选择无数次。多重背包:每个物体只能选择有限次。分组背包:分成若干组,每次只能从每组之中选择一个(类似

2020-07-03 22:20:23 209

原创 算法基础课:集合结构

堆:首先来讲什么是堆,首先,对于堆来说,分为大根堆,小根堆,其维护是应用数组来维护,对于堆来说有几个常用操作:增加新元素,删除元素,调整堆序。堆的常见应用:优先队列。对于此来说常常应用于维护最大最小值的集合。哈希表:将大范围的数,映射到一个小范围上。对于哈希表,在C++里一般用STL实现。...

2020-07-01 16:48:49 159

原创 算法基础课:线性结构

1:链表,顾名思义,就是一个向链子一样套在一起的结点,对于每个结点,分为地址和数据两个块,在算法竞赛中我们常常使用静态链表(数组模拟链表)也就是说对于链表我们什么时候使用这个数据结构呢?通常情况下,我们对于需要频繁插入和删除的数据结构我们才会使用链表,因为此时对于插入和删除的时间复杂度是O(1)对于链表个人感觉感觉用的最多的地方还是在于邻接表和哈希里。下面讲讲静态链表:...

2020-06-30 22:50:45 147

原创 算法基础课:双指针算法

首先对于双指针算法,必须明确,对于此问题来说,只能是一个优化问题,核心思想是把一个O(n2)的时间复杂度问题给优化到O(N)来解决。通用模板:按照朴素算法:for(int i=0;i<n;i++)for(int j=0;j<n;j++){具体问题的逻辑}按照某种性质进行优化:for(int i-0,j=0;i<n;i++)while(j<i&&check(i,j)(某种属性)){每道题目具体逻辑}具体题目举例:给定一个长度为n的整数

2020-06-29 12:04:57 155

原创 算法基础课:前缀和与差分

对于前缀和:实质上就是背公式,对于前缀和分一维和二维首先应该是一维前缀和的公式:s[i]=s[i-1]+a[i];a[i]+=a[i-1];常用的就是这两个公式,对于前缀和实质就是某一段区间的和。作用:求出某一段区间的和。比如说对于[l,r]这个区间,我们应该做的就是s[r]-s[l-1]即可。对于二维前缀和我们也叫做矩阵的和:对于矩阵的和应该如何取?s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]a[i][j]+=a[i-1][j]+a[i]

2020-06-29 09:55:31 208

原创 算法基础课:高精度

j高精度算法:常用的有加减,对于乘除我们只会用小数乘大数。首先对于高精度加法,应该使用string类来进行表示,然后对于此类问题还需要特别注意的就是对于一个大数来说,我们应该进行倒置,这样对于加减来说更为有利。对于高精度加法模板如下:应该先设置一个t=0;然后分别加上每一个数的对应位即可解决问题。对于高精度减法注意的点就比较多了:1:首先对于高精度减法来说,首先最重要的就是确定大小,应该是大数减小数,那么如何大数减小数呢,此时涉及到的细节就比较多:比较大小:首先应该是将size进行比较,若size

2020-06-28 22:36:51 137

原创 算法基础课:二分

整数二分:对于一个区间,必须具有左属性,右属性,对于二分本质来说,就是可以找到这个属性的边界值,单调必然可以二分(因为左右两部不同)对于整数二分分两种情况,第一种是满足左属性,另一种是满足右属性。对于左属性模板:int l,r;l=left,r=right;while(l<r){int mid=(l+r+1)>>1;if(check(mid))(写题的时候关键是check函数,确定左部属性还是右部属性)l=mid;elser=mid-1;}...

2020-06-28 21:34:35 111

原创 PointAugment:点云分类的自动增强框架

创新性:作为探索3D点云自动增强的首次尝试,作者展示了用PointAugment代替传统的数据增强方法,可以显着改善ModelNet40 (参见图1)和SHREC16(参见第5节)在四个有代表性的网络上的实现,包括PointNet,PointNet ++,RSCNN 和DGCNN。 此外,我们演示了PointAugment在形状检索上的有效性,并评估了其健壮性,损失配置和模块化设计。思路:1:注意样本,对于每个样本不是采取通用的策略,而是通过考虑样本的基本几何结构,为每个输入样本回归一个特定的增广函数

2020-05-24 22:55:18 878

原创 PCPNET与POINTNET的比较

对于PCPNET,相比于POINTNET有许多改进,首先是将全局的FEATURE改成局部的FEATURE具体结构如下:1:Preprocessing首先提取出P = {p1,…, pN},对于这些点都是取半径为r所得的点,为了去除不必要的自由度,所以进行了一个归一化操作,变成1/r,并且对于输入的点数都是固定的2:Architecture:1:空间旋转器:相较于之前的空间旋转器用的是矩阵乘法,本文的输入改成了一个四元组。其中STN1便是此旋转器但是对于STN2本文仍然采用了64✖64的旋转矩阵

2020-05-24 18:20:20 1445

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除