S1NH

世界在旅程的尽头终结

0%

首先庆祝一下我用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目录(不需要解压)

阅读全文 »

上一节已经对HackRF升级了最新的固件,今天我们利用它做一些简单的实验。因为本人也是小白,所以本文并没有任何复杂的理论知识,只要会用Linux按照顺序一步一步操作都可以实验成功。

阅读全文 »

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

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

阅读全文 »

绝大部分摘自光流Optical Flow介绍与OpenCV实现光流法介绍

光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。

阅读全文 »

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

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

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

阅读全文 »

本周基于OpenCV进行了一次完整的图像拼接测试,和移动物体探测实验

图像拼接测试

测试采用Python2.7, OpenCV3, 对26张12Mp(4000×3000)进行SIFT角点检测,每张图片缩放为之前的0.12倍,利用CPU(8线程i7-6700HQ)进行完整拼接的时间为30秒。(代码链接:https://github.com/duchengyao/mosaic

阅读全文 »

编译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提供支持

配置Matcaffe的时候碰到了两个小坑,记录一下:

第一个坑:

1
Invalid MEX-file '/root/caffe/matlab/+caffe/private/caffe_.mexa64': /matlab/r2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/caffe/matlab/+caffe/private/caffe_.mexa64)

第二个坑与前一篇文章《在anaconda下安装caffe失败》错误相同。

1
2
3
4
5
6
7
8
9
10
11
12
Invalid MEX-file
'/home/xw/caffeBuild/caffe-master/matlab/+caffe/private/caffe_.mexa64':
/home/xw/caffeBuild/caffe-master/matlab/+caffe/private/caffe_.mexa64: undefined
symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE

Error in caffe.set_mode_cpu (line 5)
caffe_('set_mode_cpu');

Error in caffe.run_tests (line 6)
caffe.set_mode_cpu();

阅读全文 »

Python 跟 Python3 完全就是两种语言

0x00 import caffe FAILED

环境为 Ubuntu 16 cuda 8.0 NVIDIA 361.77 Anaconda2。昨天莫名其妙Caffe不能用了:

1
2
3
4
5
6
7
8
>>> import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/duchengyao/project/caffe/python/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
File "/home/duchengyao/project/caffe/python/caffe/pycaffe.py", line 13, in <module>
from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: /home/duchengyao/project/caffe/python/caffe/../../build/lib/libcaffe.so.1.0.0-rc3: undefined symbol: _ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE

各种折腾都无效,重装Anaconda以后错误消失,import caffe 成功。

0x01 import FAILED again after “$conda install opencv”

conda install opencv 安装完Opencv后,又出现了同样的错误提示,卸载后错误消失。

Conda 安装后的Opencv 版本为2.4.10,而系统apt安装的版本为2.4.9.1。我尝试从conda 安装2.4.9版,可是需要处理很多conflict。

最后实在走投无路了准备换成Anaconda3,环境搭建完成后运行程序的时候简直尴尬了,各种库不兼容。终于知道为啥老鸟们调侃Python 跟Python3完全是两种语言了

0x02 解决方案

暂时的解决方案为放弃anaconda,全部用apt安装软件包,使用系统默认的Opencv,运行成功。

为什么计算机系的学生也应该学经济学?因为,从经营一家公司的角度来看,比起那些不懂的程序员,一个理解基本商业规则的程序员将会更有价值。就是这么简单。我无法告诉你有多少次我是那样地充满挫折感,因为我看到了太多提出一些疯狂的想法的程序员,这些想法在代码上也许可行,但在资本主义世界中毫无意义。如果你懂得商业规则,你就是一个更有价值的程序员,你会因此得到回报的,但是前提是你要去学习微观经济学。——《软件随想录》

阅读全文 »

今天的朋友圈都被王宝强和她出轨的老婆刷屏了
想起了一句话:“他们自以为美貌是自己人生的武器,却被自己的美貌支配着走进了困顿。”

Nvidia TX1

信用卡大小的 NVIDIA Jetson TX1 有内置ARM64 CPU,256 cores CUDA GPU,还内置了4G内存、16G emmc、Wi-Fi、蓝牙,集成度超级高,用来做机器人,嵌入式图像处理特别方便。 比较详细的一个介绍

阅读全文 »

转载自https://zhuanlan.zhihu.com/p/21533724

2016年的CVPR会议目标检测(在这里讨论的是2D的目标检测,如图1所示)的方法主要是基于卷积神经网络的框架,代表性的工作有ResNet[1](Kaiming He等)、YOLO[5](Joseph Redmon等)、LocNet[7](Spyros Gidaris等)、HyperNet[3](Tao Kong等)、ION[2](Sean Bell等)、G-CNN[6](Mahyar Najibi等)。在这里之所以把ResNet也放进来,是因为有效的特征对于目标检测领域是极为重要的。

2D目标检测示意图

阅读全文 »

其实我们的表面是一幅天真纯洁的样子,内心却始终悖逆潜行。
像冰冷的机器,心中没有远方,也不会去追问未来
时光很快就会把我们从微弱的闪光体变成一个无能的普通人。
我们要做的只有觉悟而已,去追求自由,去向往风居住的街道。
就像穿越稠密的交集望透世界,就像沉没在镂空的意境里寻找奇迹。

阅读全文 »

翻出了去年工程管理那边十二五结题时,帮他们画的图。百度了一下午,照猫画虎,闭门造车而成(不得不吐槽一下他们搞些课题,几个博士论文一凑,并没有什么研究,也没有什么价值,感觉纯属骗钱。)

阅读全文 »

最近记性特别差,做的东西如果不记下来,过几天就忘光了。照这样发展下去马上就老年痴呆了,趁年轻还是多学点东西

最近正在学习一些大数据、机器学习的一些算法,脑子一热准备把遗传算法/模拟退火算法这些经典的算法用动图模拟出来。在《白话大数据与机器学习》中有实现遗传算法的代码,本文基于教程上的代码进行修改,实现模拟遗传算法求极值的过程。

阅读全文 »

本文作者在2017年提出了L-ORB算法。速度是传统ORB算法的11倍、传统SIFT算法的639倍。将算法应用到嵌入式系统中性能提升了29倍,但其功耗低至10W。有兴趣的可以点击:**杜承垚,袁景凌,陈旻骋,李涛. GPU加速与L-ORB特征提取的全景视频实时拼接[J]. 计算机研究与发展, 2017, 54(6): 1316-1325.**


本文翻译自:Ghosh, Debabrata, and Naima Kaabouch. “A survey on image mosaicing techniques.” Journal of Visual Communication and Image Representation 34 (2016): 1-11.. 如有错误请指正。

一、简介

图像拼接在运动检测和跟踪、增强现实、分辨率增强、视频压缩和图像稳定等机器视觉领域有很大的应用。

如图所示,图像拼接分为四个步骤:图像匹配(registration)、重投影(reprojection)、缝合(stitching)和融合(blending)。

阅读全文 »

可靠性导论的汇报PPT,介绍了我自己搭建的入侵检测平台,其中包含:

  • Man-in-the-Middle Attack (MITM, 中间人攻击)
  • Lan Tap
  • WiFi Hacking
  • NFC Hacking
  • Software Defined Radio
阅读全文 »