SubdivNet阅读笔记
SubDivNet 学习笔记
这篇文章主要讲述的是如何将卷积神经网络从图像迁移到三维模型中,
从而实现通过使用经典的神经网络模型(如resNet等)实现对三维模型的分类,分割等任务。
相关术语
1. Loop Subdivsion Connectivity
如果一个网格能够用一个更粗糙的网格通过Loop细分得到,则称这个网格拥有Loop Subdivsion Connectivity
2. Loop Subdivsion sequence connectivity
如果有一个网格序列{M0,M1,…,Mn}\{M_0, M_1, \ldots , M_n\}{M0,M1,…,Mn},满足以下两个条件,
对于序列中的任意一个网格Mi(i≠0)M_i (i \neq 0)Mi(i=0)都具有Loop Subdivsion Connectivity
对于任意一个网格Mi(0≤i<n)M_i(0 \le i < n)Mi(0≤i<n), 该网格中的所有点都存在于下一个网格中Mi+1M_{i + 1}Mi+1中
则称这样的一个网格序列具有Loop Subdiv ...
C语言中的位运算
这篇文章翻译自Bit Twiddling Hacks,相关版权信息可以参考原文
关于指令计数方法
在此处的计算算法的指令总数中,任何C运算符都计为一个指令。无需写入RAM的中间指令不计算在内。当然,这种方法只能用作机器指令实际数量和CPU时间的近似值。假定所有操作都花费相同的时间,这在现实中是不正确的,但是随着时间的流逝,CPU计算花费的时间会一直朝着这个方向发展。有许多细微差别决定了系统运行给定代码样本的速度,例如缓存大小,内存带宽,指令集等。最后,基准测试是确定一种方法是否真的比另一种方法更快的最佳方法,因此请考虑在你的CPU体系架构中使用该方法进行测试。
计算一个整数的符号
123456789int v; // we want to find the sign of vint sign; // the result goes here// CHAR_BIT is the number of bits per byte (normally 8).sign = -(v < 0); // if v < 0 then -1, else 0// or, to avoid ...
C语言中的Strict Aliasing Rule
环境介绍
本文中使用的gcc和clang的版本分别为10.2.0和10.0.1, 操作系统为Archlinux
1234567891011> gcc --version> gcc (GCC) 10.2.0 Copyright © 2020 Free Software Foundation, Inc. 本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保; 包括没有适销性和某一专用目的下的适用性担保。> clang --version> clang version 10.0.1 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin
本文用的标准是c18, 但是所用的内容在c99中也有同样的定义, 并不冲突。
事件起因
我在看kernel源代码中READ_ONCE宏的实现方法时,发现READ_ONCE宏的实现过程中定义了一个联合体,代码如下
12345678910111213141516171819static __always_inline void _ ...