S1NH

世界在旅程的尽头终结

0x00 Velodyne 简介

1. 数据结构及坐标系

Velodyne 通过网线发送的原始数据包为球坐标(spherical coordinates, r, ω, α)。它的 ros driver 提供了两种更方便的格式:/velodyne_points/velodyne_scan

其中,/velodyne_points是转换为XYZ后的坐标,转换的方式如下图;/velodyne_scan为第8根线的scan值(可直接用来模拟单线雷达)。

阅读全文 »

0x01 制作标定板

0x02 相机标定

  • camera_calibration: 使用棋盘格进行标定;
  • kalibr: 这个感觉更专业一些,可以同时标多目和IMU。

0x03 雷达–>相机外参标定

目前我成功的有两种方法:

  • autoware_camera_lidar_calibrator : 不需要自制标定板,需要手动人工点击9个点
  • velo2cam_calibration : 全自动,需要定制一个标定板
阅读全文 »

0x00

对文本进行OCR前,必须分析和定义文档的逻辑结构。 例如文本块、段落、行的位置;是否有应该重建的表格;是否有“图像”“条形码等”。

文档布局分析 (Document Layout Analysis) 是识别和分类文本文档的扫描图像中的感兴趣区域(RoI, Regions of Interest) 的过程。阅读系统需要从非文本区域分割文本区域,并按正确的阅读顺序排列。将文本正文,插图,数学符号和嵌入文档中的表格等不同区域(或块)的检测和标记称为几何布局分析。但文本区域在文档中扮演不同的逻辑角色(标题,标题,脚注等),这种语义标记是逻辑布局分析的范围。

文档布局分析是几何和逻辑标签的结合。它通常在将文档图像发送到OCR引擎之前执行,但也可用于检测大型存档中同一文档的重复副本,或者通过其结构或图示内容索引文档。

阅读全文 »

当宿命从你门前走过的时候,芸芸众生总是显得那么渺小

0x00 LCS

最长公共子序列最长不降子序列以及最长公共字串都不是一回事。这种用搜索时间复杂度太高的问题一般都会选择用DP来解决。状态转移方程为:

$$c[i,j] = \begin{cases}
0, & i=0 \text{ or } j=0
\\ c[i-1,j-1]+1, & x_i =y_j
\\ max(c[i-1,j],c[i,j-1]), &x_i \neq y_i
\end{cases}$$

阅读全文 »

2017年应该是最折腾的一年,为了传说中的梦想从深圳到了北京,离开了我超喜欢的一个领导,到计算所后由期待到失望…

时间过的很快,因为把时间都浪费在搬家和融入新团队中了。不过忙忙碌碌的好处就是没有时间发呆和难过了哈哈哈 >_<

阅读全文 »

不过我喝咖啡从来不是为了提神的 这个世界上唯一提神的东西就是你今天必须完成的事情呀

博士只考一门数据结构与算法分析,如果这都考不过那就真的重在参与了。本文把看完书以后手撸的代码贴出来,留个纪念。

阅读全文 »

Tensorflow 的使用者虽多,但真的很难用。幸亏有基于TF和Theano的高层框架Keras(不幸的是Theano已经停止更新了)。我们通过MNIST来熟悉一下Keras。

先推荐一个学习线性代数的教程http://www.bilibili.com/video/av6731067/,不管你多忙也请看上面这个视频。
3Blue1Brown制作,深入浅出、直观明了地分享数学之美。

阅读全文 »

本资源来自网络,侵权请按ALT+F4

0x01 深度学习基础框架

1.人脸检测、跟踪、识别、三维建模的开源框架、算法、论文

(1) 人脸检测

在人脸检测方面常用的用两个,一个是 Tinyface 能检测到比较小的人脸。可以先玩通demo
另外一篇更为常用,如果你们对固定场景,比如视频对话,检测效果不错。而且他们能标注人脸关键点。
文章:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networksb((Code)) 很多最近的创业公司用这个,但是如果场景特殊需要 re-train 一下

(2) 人脸跟踪

因为这个已经不是学术前沿问题,所以 CVPR、ICCV 上没有文章研究这一块
人脸跟踪这一块 openCV 有一个比较好的教程 http://opencv-java-tutorials.readthedocs.io/en/latest/06-face-detection-and-tracking.html
但是,工程上通用的做法还是,逐帧用最好的 face detector(比如 tiny face)检测后,用 optical flow 串起来。因为现在 face detection 已经很快了,没必要用 tracking 来加速,能做到很快。具体怎么弄我们可以当面讨论。
我的学生找了一下开源库(仅作参考,不建议用),但是不是正规的文章 https://github.com/kylemcdonald/ofxFaceTracker

阅读全文 »

首先庆祝一下我用TX-1做实验写的《GPU加速与L-ORB特征提取的全景视频实时拼接》发表啦^_^
导师表示很开心,又给我买了两台TX-2

TX-2比TX-1除了性能的升级,其它部分没有太大变化,接下来要写的小技巧对于TX-1/2都适用。使用期间发现的问题都会持续更新到这篇博客,目前发现的问题有:

  • OpenCV4Tegra 不支持 -lopencv_nonfree
  • OpenCV4Tegra 在TX-2中不支持 GPU 模块
  • 如何开启被屏蔽的2块CPU并设置为最大频率
  • 开启Nvidia TX-1/2 的VNC
阅读全文 »

不要代码写多了就变得那么没有人情味了

0x00 Intro

1. 读入MNIST数据库

执行mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)后,会检查MNIST_data/文件夹下有没有数据库文件,如果没有会自动下载。这一步如果执行比较慢,可以用迅雷手动下载下面四个文件,保存到MNIST_data目录(不需要解压)

阅读全文 »

公司发的圣诞礼物被一个自以为是的胖女人拿走了,不开心

众所周知GPGPU的性能瓶颈为PCI-E传输速度,数据传输时会导致运算资源闲置。因此NVIDIA发明了一个很牛逼的技术Zero Copy,它把主机内存直接映射到GPU内存上,在GPU需要数据时直接从主机内存寻找,隐式的传输到GPU中。还有另一个技术叫Pinned Memory,会在产生一个不会被分页的内存,这块内存不会被交换到磁盘的虚拟内存上,内存地址也不会被重新定位,因此,相比普通的Pageable Memory有更高的速度。使用Pinned Memory是一定会提高性能的,不过也需要适当使用,否则太多Pinned Memory会把Host Memory给挤爆了(因为它不会分页到虚拟内存去)。
图1 Pageable 和 Pinned 的区别

阅读全文 »

2016-09-27 07:49 Fixed in Version 2016.3

秉承着以解决问题为乐趣,没有问题创造问题也要解决问题为基本准则。今天发现了一个gnome-theme-kal主题在xfce4下的Bug

最近用Nvidia提供的Nsight来写OpenCV/CUDA,白色主题实在是太丑了,就采用通用的方法换成了黑色主题。结果不管怎么折腾,旁边的Navigator都还是白色的,使得整个界面不白不黑的,简直比VIM还丑。

阅读全文 »

编译OpenCV with CUDA

编译方法官方文档写的特别清楚。此外,如果要使用python接口,编译完成后需要把opencv/site-packages目录下的cv2.so链接(或复制)到python/site-packages中,我执行的命令为sudo ln -s /usr/local/opencv3/lib/python2.7/dist-packages/cv2.so /usr/lib/python2.7/dist-packages/cv2.so(如果不清楚可以参照[翻译]Python 2.7 和 Python 3+ 的OpenCV 3.0 安装教程

查看Api和Guides推荐使用Zeal/Dash,就不用那么麻烦跑去官网搜索了:

阅读全文 »

Hikvision的web摄像头界面需要npapi的支持。Chrome42之前的版本都不支Npapi,Chrome42~45可以通过chrome://flags/#enable-npapi开启支持,Chrome45之后的版本不支持Npapi。

花了很久的时间找到了低版本的Chrome安装包,安装完以后依然无法执行插件。

仔细查阅文档后,发现只有Mac和Windows的Chrome对NPAPI提供支持

0%