0%

2019年5月25日 下午9:45

自己编写的指令:

openmp_bin

macos - Enable OpenMP support in clang in Mac OS X (Sierra & Mojave) - Stack Overflow

安装指令:

brew install llvm

安装结果,这个结果中提示了一些重要的配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
==> Summary
🍺 /usr/local/Cellar/llvm/8.0.0_1: 6,807 files, 3.3GB
Error: libomp 7.0.0 is already installed
To upgrade to 8.0.0, run `brew upgrade libomp`.
==> Caveats
==> llvm
To use the bundled libc++ please add the following LDFLAGS:
LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"

llvm is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have llvm first in your PATH run:
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.bash_profile

For compilers to find llvm you may need to set:
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"

openMP程序编译执行方法

1
2
3
4
5
6
7
8
9
10
11
localhost:OpenMP czh$ /usr/local/opt/llvm/bin/clang -fopenmp test.c
localhost:OpenMP czh$ ls
a.out test.c
localhost:OpenMP czh$ a.out
-bash: a.out: command not found
localhost:OpenMP czh$ ./a.out
Hello World from thread = 0
Number of threads = 4
Hello World from thread = 2
Hello World from thread = 3
Hello World from thread = 1

~/.bash_profile的配置,简化编译指令alias

1
2
3
#llvm OpenMP
export PATH="/usr/local/opt/llvm/bin:$PATH"
alias openmp_bin='/usr/local/opt/llvm/bin/clang -fopenmp'
1
2
3
localhost:OpenMP czh$ openmp_bin test.c
localhost:OpenMP czh$ ls
a.out test.c

2019年5月24日 下午3:33

::Homography = 单应矩阵 = 3*3矩阵::

从数学推导的角度

Homography 知多少? - 知行合一 - CSDN博客
这篇文章不仅仅讲了Homography

  1. 从几何模型推导出来一般形式的Homography:描述非纯旋转(还有平移)的所有观测点都在同一平面的情况
  2. Homography描述相机的纯旋转非共面情形
  3. 即非共面情形,又不是纯旋转,那我们使用一个Homography矩阵来进行坐标点的转换误差会咋样?
  4. 由H矩阵到本征矩阵E,
    1. 来引出六点法,四个共面点确定H,两个非共面点确定极点。
    2. 8点法计算求解本征矩阵不能应用于共面的情形
      1. 这里使用反正法,说明在这种情况下有无数的解

这里写的并不是特别详细,由于涉及到画图和公式,我写到笔记本上了: 日期:2019年6月26日

从应用的角度:

Homography Examples using OpenCV ( Python / C ++ ) | Learn OpenCV
Opencv日常之Homography - liuphahaha的专栏 - CSDN博客

2019年5月21日 下午8:31
向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读 - 牧野的博客 - CSDN博客

点乘结论:

  • 点乘
    • 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
  • 点乘几何意义
    1. 意义1:在b向量在a向量方向上的投影
    2. 意义2:可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系

叉乘结论

  • 叉乘:
    • 两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
  • 叉乘几何意义:
    1. 在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系
    2. 在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积

2019年5月20日 上午10:45

重要知识点

1
2
3
4
5
1.Hyperparameters_cross_validation_vailidation.pdf
2.SVM-loss.pdf
3.Regularization.pdf
4.Backprop.pdf
5.Conv Layer.pdf
  1. Cs231n的ppt写的非常循序渐进,对初学者友好,并且能够讲清楚基本的概念
  2. 我从ppt中提取出了几个我自己认为重要的知识点
    1. Hyperparameters_cross_validation_vailidation
    2. SVM-loss
      1. 这个loss其中也包含超参数
      2. 理解的方法:举个例子,在数轴上画,多画几个就能感受出来。
    3. Regularization
      1. 正则的理解
    4. Backprop
      1. 这张图真的太重要的,解决我对矩阵的一个心病。但是其中没有包括张量的内容
      2. 内容主要涉及到矩阵求导
    5. Conv Layer
      1. 主要是计算网络中参数的个数方法

2019年5月18日 下午11:33

  1. filtering和registration这两个项目都是使用.h直接实现函数
    1. 其实,只有.h就不算是单独的项目,应为对这两个项目点击编译,其实编译器啥都没有做,因为没有cpp文件。于直接放在polyfit项目中作用完全一致,只不过这样结构上更加分明一下而已。
    2. .h文件真正起作用的时候是在cpp中include,然后当成cpp的一部分进行处理
    3. 由于这两个项目中的.h文件只在polyfit这个主文件下被包含使用,那么也只有polyfit项目编译时,才会对对这些.h中的函数进行编译!
  2. plane_detection_liu这个项目是从exe项目直接改过来的,编译成了lib包的形式,然后在polyfit项目中调用这个lib包和对应的路径。
    1. 这样的操作就说明,对于polyfit这个主项目来说,plane_detection_liu项目就和PCL库一样,我们可以把他理解成单独的一部分进行操作
      1. 也就是说,我们可以新建一个项目plane_detection_liu,在这个项目生产lib文件,然后拷给polyfit项目,效果是一样的,
  3. 除了plane_detection_liu这个项目,其他的项目都是dll项目,但是并没有使用所谓的引导函数dllmain.c等写法,我也不知道为啥

2019年5月18日 下午10:35

Vs中的文件的一些基本概念:

visual C++ 项目和解决方案的区别 - roucheng - 博客园

VS 多工程之间管理与调用(超详细)

VS 多工程之间管理与调用(超详细) - Neverland_LY‘s Domain - CSDN博客

vs属性表的使用

vs如何将工程配置,保存到属性表 - 宋桓公 - 博客园
VS2013中全局属性与局部属性的设置 - 玻尔兹曼机 - 博客园

vs配置项的理解

注:不仅包括配置过程,而且还包括原理的讲解:

  1. Opencv、VTK在vs2013中的配置 - CSDN博客
    1. 配置过程一句话概括就是将Include、lib、bin三个文件的路径放置在合适的位置
    2. Include、lib、bin的作用
  2. VTK6.2&6.3+VS2013+QT5编译配置 - luoru - 博客园
    1. cmake的理解和作用
  3. 静态链接库和动态链接库的区别及优缺点 - 奕涵 - 博客园
  4. VS工程项目相关文件讲解:vcxproj.filters文件分析-项目经验
  5. C++:无法解析的外部符号问题 与 头文件包含注意要点 - CSDN博客
  6. Pdb文件的作用
    1. pdb文件 小结 - DoubleLi - 博客园
    2. PDB文件详解 - CSDN博客

vs中调试要进行的配置

2019年5月18日 下午10:26

新安装的软件

  1. OpenGL
    1. VS2015下OpenGL库的配置 - 同勉共进 - 博客园
    2. 这里一个坑,我天然的调过去了,可能是polyfit这个程序没有用
      1. 我完全按照这篇博客安装的,而这篇博客使用安装的是32位的系统,我的系统是64的,但是却没有报错。
  2. Gurobi
    1. Gurobi Installation Guide
    2. Gurobi安装使用说明(Windows环境) - 死水的博客 - CSDN博客
    3. 必须使用学校的网线,不能是wifi
  3. CGAL
    1. Download CGAL for Windows
    2. 需要4.10版,我原先是4.12版

2019年5月13日 下午9:19

从协议的角度去理解:

浅谈vpn、vps、Proxy以及shadowsocks之间的联系和区别 – Thomas Xu – Medium

  1. 我认为把shadowsock理解成协议是最正确的
  2. clowwindy设计的这套协议,参数少,还能满足我们的需求(安全等等)
  3. 协议:就是表述:我对一份数据是怎么进行加工处理的
    1. 就像整理家一样,clowwindy一定是一个居家好男人

从端口的角度去理解:

你也能写个 Shadowsocks - 吴浩麟的技术博客 - SegmentFault 思否
shadowsocks实现原理 | Hexo
https://fanzheng.org/archives/2
这里面有几个关键的概念:这三个监听对应的收拾电脑上的三个服务(每个服务有自己的端口、进程),并且shaowsock的是同时执行这三个程序的

  1. SOCK监听:负责与加密+与远程服务器通讯
  2. PAC监听:负责监听用户想访问哪里,是否需要转到sock
  3. Http监听:为了为满足扩展性更强,让那些只能通过http通讯的程序也可以访问外网,将http协议转换成sock协议

2019年5月6日 上午10:39

PageRank - 维基百科,自由的百科全书

2. 这个就是pageRank的核心思想,用数学公式来表示。
100 行代码实现 PageRank 算法 | 始终

  1. 这篇文章中给出了代码的实现
  2. 代码实现巧妙的地方:
    1. 利用图论的入度和出度的概念,来统计一个页面的自己包含的连接数自己被连接的个数
      1. 入度在这个程序中没用,出度有用
    2. 迭代
      1. 从上面的数学公式可以看出来,这就是一个迭代公式。
      2. 迭代公式如何执行(程序实现)呢?
        1. 首先,设置一个初识值:这里的pagerank初始值都为1/N
        2. 迭代过程:设置迭代的轮次
          1. 注:我觉得执行到指定伦次也不一定收敛,收敛性的证明才是pageRank最难的地方。
          2. 我这个还不会