最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。
Ubuntu 16.04编译安装最新的OpenCV3.2
- 获取源代码
1 |
$ git clone https://github.com/opencv/opencv.git |
- 安装依赖库
1 2 3 4 |
$ sudo apt-get install -y cmake #借助系统自带的opencv简化依赖安装步骤 $ sudo apt-get install -y libopencv-dev |
- 编译源代码
1 2 3 4 5 6 7 8 9 |
$ cd opencv $ mkdir build $ cd build $ cmake .. $ make -j 10 |
- 替换已经安装的版本
1 |
$ sudo make install |
- 编译出错的处理
如果执行cmake
时候出现如下错误信息
1 2 3 4 5 6 7 8 9 10 |
CMake Error at CMakeLists.txt:11 (message): FATAL: In-source builds are not allowed. You should create separate directory for build files. -- Configuring incomplete, errors occurred! |
则应该是在代码根目录下直接执行过cmake
,导致根目录下生成了CMakeCache.txt
,需要删除CMakeCache.txt
再次执行编译即可。
Python 2.7中PIL.Image转换为OpenCV支持的Image格式
1 2 |
pil_image = PIL.Image.open('image.jpg') cv_image = cv2.cvtColor(numpy.asarray(pil_image), cv2.COLOR_RGB2BGR) |
参考链接
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
目前为止发现的性能最好,效果最好的人脸探测以及对齐的论文就是MTCNN
了。
完整论文如下
继续阅读Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
github上如何删除fork的项目
在github上如果看到有很不错的项目和作品,一般我们可以进行三种操作:那就是watch
, star
和fork
.
Ubuntu 16.04下同步github中fork出来的分支
在github上fork
出一些感觉比较好的项目,已经做了部分修改,由于某些原因,无法通过pull request
合并到原作者的分支,但是想把原项目的最近更新代码合并进来,可以通过git fetch
原始项目到本地,通过git merge
的进行代码合并。
以fork
出来的pyseeta
项目为例
- 检出自己的代码
1 |
$ git checkout https://github.com/wangqiang1588/pyseeta.git |
- 把原作者项目地址添加到刚刚检出的项目
1 |
$ git remote add upstream https://github.com/TuXiaokang/pyseeta.git |
- 从原作者仓库获取到分支,及相关的提交信息
1 |
$ git fetch upstream |
- 切换到想合并代码的分支
1 |
$ git checkout master |
- 代码合并,并解决冲突
1 |
$ git merge upstream/master |
- 提交合并后的代码
1 |
$ git commit -m "merge ......." |
- 推送提交到远程服务器
1 |
$ git push |
参考链接
TypeError: slice indices must be integers or None or have an __index__ method
执行如下Python
脚本时
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np dy = [0,1,2] edy = [0,1,2] dy[0:2] = np.fix(dy[0:2]) edy[0:2] = np.fix(edy[0:2]) box = [[1,2,3,4],[3,4,5,6]] box2 = box[dy[0]:edy[2]] |
会遇到错误信息
1 2 3 4 |
Traceback (most recent call last): File "test.py", line 11, in <module> box2 = box[dy[0]:edy[2]] TypeError: slice indices must be integers or None or have an __index__ method |
这个提示非常具有迷惑性,会让人不知所措。
其实非常简单
1 |
dy[0:2] = np.fix(dy[0:2]) |
这行导致整个数组变成了浮点数格式的数组,可以试着打印出结果,就会发现整个里面的数字完全变成了浮点数。
而浮点数是不可以用来作为数组的下标的。
修改成如下方式即可
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np dy = [0,1,2] edy = [0,1,2] dy[0:2] = np.fix(dy[0:2]) edy[0:2] = np.fix(edy[0:2]) box = [[1,2,3,4],[3,4,5,6]] box2 = box[int(dy[0]):int(edy[2])] |
请注意最后的
1 |
int() |
函数,强制转换浮点数为整数。
参考链接
微软Xbox One S音频输出到普通喇叭
最近买了个微软
Xbox One S
国行版,结果到货后,非常悲剧的发现音频输出部分只支持HDMI
跟光纤音箱的接口。注意:主机上那个貌似耳机插孔的地方,实际上是外置红外接收器的接口(接口附近有IR Input
字样)Xbox One S
自带的手柄上,有一个耳机的插孔,可以插上耳机,但是问题是,长时间带耳机会比较夹耳朵,因此还是用以前买的小喇叭最好了(本人对音质的追求不高)。
搜索了半天,在淘宝找到两个解决方法:
如何用Python PIL获取图片的RGB数值
1 2 3 4 5 6 7 8 9 |
from PIL import Image im = Image.open("xxx.jpeg") pix = im.load() width = im.size[0] height = im.size[1] for x in range(width): for y in range(height): r, g, b = pix[x, y] print(r, g, b) |
参考链接
Ubuntu 16.04命令行监视Nvidia显卡使用情况
在使用GPU
做计算,比如跑Deep Learning
代码的时候,我们可能希望能够实时检测显存的使用情况。
Nvidia
自带了一个名为nvidia-smi
的命令行工具,会显示显存使用情况,但这个命令行工具只能输出一次结果,不支持持续监控输出。
这时候就需要用到watch
命令了.