MatConvNet是一个基于Matlab的深度学习框架,在计算部分,最底层混编了C/C++或者CUDA C,这使得其速度并不是特别慢。就使用体验来说,MatConvNet是非常优秀的,借助于Matlab,定义网络,使用现有模型以及数据可视化都非常方便。
由于MatConvNet文档和Demo都比较完备,所以这篇博客主要介绍一些GPU的配置细节。
a blog driven by interest~
MatConvNet是一个基于Matlab的深度学习框架,在计算部分,最底层混编了C/C++或者CUDA C,这使得其速度并不是特别慢。就使用体验来说,MatConvNet是非常优秀的,借助于Matlab,定义网络,使用现有模型以及数据可视化都非常方便。
由于MatConvNet文档和Demo都比较完备,所以这篇博客主要介绍一些GPU的配置细节。
使用Matlab处理图像的时候,如果需要将文字或者图形嵌入图像中,就需要用到vision工具集了,如果嵌入的是文字,那么就要使用vision.TextInserter,这个在新版本的Matlab中提供了insertText函数,与其功能差不多,不过vision.TextInserter要强大一些,insertText可以修改文字背景色块但是不能修改字体。
目标识别的评价指标主要有ROC曲线,missrate(MR,其实就是FALSE Positive)、FPPI、FPPW等。单图像跟踪的评价指标主要有两个,一个是pixel error,一般是算中心距离,另一个是overlap rate,区域重叠率,用重叠区域除以两个矩形所占的总面积Aoverlap /(A1+A2-Aoverlap),常常用pixel error绘制帧误差曲线,用重叠率绘制误差曲线。除此之外,还有针对多目标图像跟踪的评价指标。在VOT中,目标跟踪的评价指标又多了EOA和EOF图,这篇博客都会介绍。
PCL库的各种依赖和冲突让人头大,这里记录了一些PCL使用过程中的问题,长期更新(本次更新时间,2016年12月)。
立体视觉中的矩阵变换比较多。总的来说,内参矩阵 K是针对单相机的,通过焦距和主点位置直接表示了相机坐标系和图像坐标系之间的关系,如果考虑镜头的畸变,还需要有畸变系数,如果图像传感器有倾斜,还需要有倾斜因子。基础矩阵和本质矩阵是针对双目的,其中基础矩阵 F根据左右相机的RT关系,表示了对极线关系,基础矩阵是左右摄像机坐标系之间的关系,求解基础矩阵的核心是求左右相机的RT。本质矩阵 E是图像坐标系下的,结合了基础矩阵和内参矩阵,直接反应左右图像坐标系下对应点像素坐标的关系。
OpenCV可以处理许多2D、3D的变换矩阵,包括但不局限于2D放射变换矩阵(2×3),二维点对的最优单映射变换矩阵H(3×3),四个二维点对之间的透射变换矩阵(3×3),多对三维点之间的旋转平移矩阵(3×4),计算多个点对之间的基矩阵和位姿变换矩阵等。这篇博客对这些变换函数进行了总结,可以通过该博客给出的名字搜索函数进行查询。
在使用Intel编译器(icc)时,如果还想调用Boost库,那么icc会自动调用icc编译的boost库,于是这篇博客就介绍了如何使用icc编译Boost库,并且附带Boost库编译时的参数说明,你可以按照这份说明编译出你想要的库版本。(如果你使用默认编译器,此博客也可做参考,除了编译器选择部分不同之外,其它都一样)
PCL库被广泛用于三维重建,其在三维世界中的地位正如OpenCV在二维世界中的地位。因为其调用了很多第三方库,所以配置极其复杂。官方也推出了简单安装版OneInAll包,这篇博客主要介绍官方简单安装版的方法。由于简单安装版没有CUDA等模块,如果你想用上CUDA就必须得自己重新编译了(博主在使用CUDA8.0,折腾了一个下午放弃了,不过CUDA7.5及以下都有教程)。另外就是,如果想自己编译,这里有一篇很好的博客。如果想快速入门,这里也有一篇很好的博客。
LM算法在诸多领域有着重要应用,Levmar库可以直接用来做LM,这篇博客主要介绍levmar库的编译过程。库编译本身十分普通,但是由于依赖了其它库,所以这篇博客列出了一些关键步骤,详细步骤参见这篇博客。这篇博客主要介绍CMake编译64为levmar库。
最近入手了一块GPU,就迅速的开始了GPU编程的学习,这里强行安利几个中文博客(很不错的哦):CUDA开发环境配置教程、CUDA从入门到精通、CUDA官方手册,这份官方手册的pdf版就在安装文件夹NVIDA Corporation的doc里面。
CUDA齐全丰富的开发工具使得VS可以直接新建CUDA C/C++工程,但是,如果我们要在一个已经建立好的C++工程中调用CUDA应该怎么做呢?这篇博客为您详细解答。
对于一般的函数指针我们都比较了解了,而类的成员函数指针以及调用方式都有所不同。博主在调Bug的过程中,将相关资料整理到这篇博客中,仅供参考。
前面介绍过张正友标定的原理和张正友标定工具箱的使用,现在就实际使用中遇到Disable View 和 矩阵奇异导致的NAN问题 进行解释和说明。
有两份资料,一是加州理工大学开发的标定工具箱,其中实现了全套张正友标定,网站也同样也有详细的使用文档。另一份是OpenCV的标定工具箱,其中使用的也是张正友标定,只不过略有简化。如果你不是直接使用C++书写标定程序的话,强烈推荐加州理工大学的标定工具箱。
张正友Matlab工具箱使用手册,这份文档详细介绍了该工具箱的使用。这篇博客是对这份文档的补充,所以,如果你本着学习工具箱使用方法而来,请点击题头的链接。学习玩使用手册,这篇博客的内容可能会对你进一步了解工具箱有一定帮助。
再附上张正友1998年的Paper,我们开始学习吧。
张正友标定法提出于1998年,自此相机标定只需要自行打印一张棋盘格就可以实现0.5pixel以上的精度,这样的精度已经可以满足绝大多数应用场合的要求。博主这一系列的博客分为三篇,本篇是第一篇,着重介绍数学推导,后面的博客会陆续介绍Matlab工具箱的使用及博主自己对代码的解释和修改。