学术垃圾的自我救赎
又决定放弃
这个作者很懒,什么都没留下…
展开
-
GeoTransformer的Coarse matching loss
# 先知道,左边点云和右边点云哪些点是有必要统计损失的, # 换句话说,拿到所有匹配对中的点,不在匹配对中的点,不算损失。 # 因为有的点 压根不在匹配对里,那这种点的特征就没必要算损失了。 row_masks = (torch.gt(pos_masks.sum(-1), 0) & torch.gt(neg_masks.sum(-1), 0)).detach() col_masks = (torch.gt(pos_masks.sum(-2), 0) &...原创 2022-05-23 22:03:29 · 514 阅读 · 4 评论 -
normalization,、standardization、regularization区别和联系
normalization和standardization是差不多的,都是把数据进行前处理,从而使数值都落入到统一的数值范围,从而在建模过程中,各个特征量没差别对待。normalization一般是把数据限定在需要的范围,比如一般都是【0,1】,从而消除了数据量纲对建模的影响。standardization 一般是指将数据正态化,使平均值0方差为1. 因此normalization和standardization 是针对数据而言的,消除一些数值差异带来的特种重要性偏见。经过归一化的数据,能加快训练速度,促.转载 2022-02-17 08:56:38 · 895 阅读 · 0 评论 -
《Predator》文章中的损失函数分析
Predator 中的损失:我们有了: 真实的 correspondences 、每个点的特征、每个点的Overlap分数、每个点的saliency分数Overlap的监督 : 真实Correspondences所有点对(是一个01序列)和你每个点的Overlap得分构建一个weight bce loss(交叉熵损失)saliency的监督 :挑出(真实的Correspondence所有点对)的描述子, 构建一个描述子相似度矩阵。 对src点云,选出score矩阵行最大值对应的点(也即src中这个点能原创 2022-01-15 15:44:12 · 2097 阅读 · 8 评论 -
GCN中的同配性
用来查看更进一步的社交网络局部邻居之间相关性的方法是考虑相互连接节点的度。我们的问题如下:给定一个度为k的节点,它邻居节点的度的平均值是多少?换句话说,如果一个节点有少量的连接,或者相反有大量的连接,它的邻居是否也会分别具有少量或大量的连接?同样,可以根据需要分别考虑出度和入度,对这个问题,不同的社交媒体系统可能会产生不同的结果。为了定量回答这个问题,我们可以取具有相同度的节点,然后测量它们邻居的度。因为我们使用的是有向的社交网络,首先就需要对使用出边还是入边来确定谁是邻居达成一致,也就是当我们对邻居进行原创 2022-01-11 15:07:08 · 489 阅读 · 1 评论 -
FMR,RR(Registeration Recall)3DMatch数据集的评估指标
FMRT是真实的位姿变换; xi, yi 是按照你自己的方法,预测选择出来的点云对(比如你直接用特征的余弦距离矩阵选择出来每行的TOP1,得到的xi和yi);τ1和τ2是人为设定的阈值(通常τ1=0.1,τ2=0.05)个人认为这个指标主要使用来评价你选择点云对的能力,也就是你选的点云对,里面有多少是正确的点云对,这就叫内点率inlier ratio。**PS:**当然啦,你可以只 选择1个点云对,如果你这一个点云对通过了上面的公式,你可以说你自己的内点率就是100%!笑Registration Re原创 2021-11-22 14:58:16 · 3355 阅读 · 2 评论 -
ICP算法,别说自己不会了
原创 2021-11-22 14:31:56 · 252 阅读 · 0 评论 -
关于warp操作
在两张 1/8 特征图上, 左边的某个点,我想找到在右边点的对应。这里d2net的处理方式,也成为warp。warp 需要的东西是:输入: 左图, 左图和右图的pose,左图和右图的内参输出: 左图合法点, 右图合法点,合法点的下标这里的合法点意思是,左图一个点投影到右图上的时候,不是一定有对应的。 因此我们只能保留那些有对应的点。...原创 2021-11-14 18:48:36 · 2933 阅读 · 0 评论 -
如何进行 interpolate_depth , 如何对深度进行插值
如果乍一看,比较奇怪的就是 D2net的 interpolate_depth的代码了,这里就进行我的粗浅的理解分析。首先是这部分代码:如果我用一句话概括,就这这里进行了简单的坐标是否合法的筛选, 因为按照前面教程,咱们输入的 pos 是一个小数的坐标。 这里得到的 valid_corners 其实就是 判断 例如 (3.5 7.5 )这个坐标的左上,左下,右上,右下是不是合法的坐标。 3.5 7.5 的四个角那肯定是没问题的啊。 但是你说 0,0 这个位置,他的左上角就是不存在的,所以说需要筛选原创 2021-11-14 17:52:14 · 1261 阅读 · 0 评论 -
什麽是 grid_position ; D2net 中的 grid_position
我们在进行半监督方法的时候,输入的仅仅是 rgbd 图像,这个时候呢, 两个图像的匹配点的 Ground truth 是通过 depth 生成的。过程是:左边图像某点 x1 + 深度信息 + 两个图的内参和外参 = 右边图像的对应点其实不用理解原理,只用记住有这样的技巧就够了。而我们所说的gird_position,只是上述过程代码中的中间产物罢了。看下面的图就明白了。本质上是【方便地构造两行索引】...原创 2021-11-14 16:54:59 · 498 阅读 · 0 评论 -
请注意, python函数参数若是 dict 、list, 则是传递引用
例子1a = [2,3,5,6]b = ab.append('x') #试问,这个时候 a 本身,被影响了吗???print(a) 结果是[2, 3, 5, 6, ‘x’]看来a被影响了,为什么呢?因为dict的传递,直接是引用地址。 同理如果你的函数中, 有参数是 dict或者list,那函数内部如果改变了 参数dict 或list, 外部的dict或者list,将会被影响改变!如何解决?深拷贝深拷贝可以解决此处的问题:a = [2,3,5,6]b = copy.deepc原创 2021-11-12 09:45:08 · 862 阅读 · 0 评论 -
Ransac计算F矩阵实战
关于Ransac为什么用到计算基础矩阵中, 它在计算中发挥了什么作用,可以先看如下的链接熟悉一下:https://blog.csdn.net/qq_42399848/article/details/89348740计算F矩阵步骤如下,Ransac总体来说就是 筛选出比较好的8个点供八点法计算使用sift提取特征 此算法原理在第三篇博客中讲过,这里就不再赘述 RANSAC去除错误点匹配 归一化8点算法估计基础矩阵 八点法是通过对应点来计算基础矩阵的算法。 外极约束可以写成线性系统的形式原创 2021-07-25 10:28:52 · 1471 阅读 · 4 评论 -
从分块重建打印的日志看分块重建的思路
原创 2021-07-16 18:54:04 · 73 阅读 · 0 评论 -
colmap 子模型对齐中的 Ransac
这段代码,用 src 和 ref_images 保存 在 src重建和ref 重建中都存在的图像。重建类包含有关单个重建模型的所有信息。 它由映射和捆绑调整类使用,并且可以写入磁盘和从磁盘读取。重建类中的图像类:图像类是保存有关图像的信息的类。 图像是在某个位置(参数化为姿势)拍摄的一台相机的产物。 一个图像可以与多个其他图像共享一个相机,如果它的内在特性是相同的 for (size_t i = 0; i < common_image_ids.size(); ++i) { src_im原创 2021-07-16 12:19:44 · 431 阅读 · 2 评论 -
ReconstructCluster : 分组重建中,对于单个Cluster的重建方法
这程序就是用于重建单个Cluster的程序,如果读懂了,就能理解分Cluster重建的整体思路了。 如果读懂了,分组重建就懂了。void IncrementalMapperController::Reconstruct( const IncrementalMapper::Options& init_mapper_options) { const bool kDiscardReconstruction = true; ////////////////////////////////原创 2021-07-14 22:45:32 · 666 阅读 · 1 评论 -
Colmap PartitionCluster 分块聚类的核心部分
这部分代码读完感觉作者写的很冷静,很缜密整个代码是用来 一个Image的集合进行分块的。 这些分出来的块可以用于并行的重建,听起来是挺不错的呃,下面我们来看看具体的实现:void SceneClustering::PartitionCluster( const std::vector<std::pair<int, int>>& edges, const std::vector<int>& weights, Cluster* cluste原创 2021-07-14 10:06:13 · 324 阅读 · 0 评论 -
Colmap中 patchmatch源码
惊世骇俗的Colmap PatchMatch源码500多行,简明易懂先了解PatchMatch的options:max_image_size: 任一维度的最大图像尺寸gpu_index: gpu的下标depth_min,depth_max: 随机采样的深度范围window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com)window_step: 用.原创 2021-07-08 09:55:37 · 1524 阅读 · 4 评论 -
Colmap中depth_map部分的源码
Colmap中depth_map部分的源码先来一个全部的代码,很短 82行#ifndef COLMAP_SRC_MVS_DEPTH_MAP_H_#define COLMAP_SRC_MVS_DEPTH_MAP_H_#include <string>#include <vector>#include "mvs/mat.h"#include "util/bitmap.h"namespace colmap {namespace mvs {class Dept.原创 2021-07-06 14:30:16 · 741 阅读 · 1 评论 -
colmap源码中 ConsistentGraph的部分
colmap源码中 ConsistentGraph的部分// Copyright (c) 2018, ETH Zurich and UNC Chapel Hill.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are.原创 2021-07-06 09:46:39 · 351 阅读 · 0 评论 -
big endian和little endian 的区别 ,BOOST_BIG_ENDIAN
big-endian是较高的有效字节放在编号较小的内存单元里,little-endian是较高的有效字节放在编号大的内存里。比如 16 进制数: 05 04 02 03内存单元编号为 低 -> 高则:big-endian: 05 04 02 03little-endian: 03 02 04 05 —就是INTEL 系列的 CPU 的排列顺序了。...原创 2021-07-06 09:33:55 · 318 阅读 · 0 评论