0%

这是2017年NIPS上的一篇做动作识别的论文,作者提出了second-order pooling的低秩近似attentional pooling,用其来代替CNN网络结构最后pooling层中常用的mean pooling或者max pooling, 在MPII, HICO和HMDB51三个动作识别数据集上进行了实验,都取得了很好的结果。此外作者还尝试了加入pose关键点的信息,再次提高了性能。下面我详细说明我对这篇论文的理解。

阅读全文 »

PyQt5是Qt的Python绑定库,既有Qt的强大,又有Python语言的简洁,要实现一个实际场景的GUI程序的时候,确实非常实用而且代码量不是太多。这里我总结了最近写一个界面时用到的代码片段,希望以后用到的时候能及时拾起来,也希望能帮助到别人。 此外我将这个内容也放到GitHub上,有兴趣的同学可以收藏下。

阅读全文 »

我们的Ubuntu服务器用命令行显示中文一直有问题,网上找资料说安装zhcon,依旧解决不了我们的问题。因此这里调查了下可能的原因,将其记录下来。

阅读全文 »

2017年过去已经有几天了,这几天我总结了2017年的学习、找工作、阅读和影视方面的大大小小的事情,希望坚持每年写一个年终总结,整理去年发生的事,更好地认识自我,做更好的自己。

阅读全文 »

简言之2条命令即可:

1
2
3
4
5
# 在命令行下
# Caffe
$ GLOG_minloglevel=2 caffe-command
# Tensorflow
$ TF_CPP_MIN_LOG_LEVEL=3 tensorflow-command

或者在python文件中,import caffe或tensorflow之前,执行如下的语句:

1
2
3
4
5
6
7
8
# 在Python文件中
# Caffe
import os
os.envrion['GLOG_minloglevel'] = '2'

# Tensorflow
import os
os.envrion['TF_CPP_MIN_LOG_LEVEL'] = '3'

参考:

  1. https://stackoverflow.com/questions/29788075/setting-glog-minloglevel-1-to-prevent-output-in-shell-from-caffe
  2. http://littlewhite.us/archives/157
  3. https://stackoverflow.com/questions/38073432/how-to-suppress-verbose-tensorflow-logging

有的时候系统安装的OpenCV版本和你需要的版本不一样,而你又没有权限或者为了兼容不能修改系统的OpenCV,这个时候你就得自己编译OpenCV,然后在需要的代码里面引用你编译的版本。整个过程不复杂,但是之前一直没搞清楚,最近经师弟点拨才明白,这里记录一下。

阅读全文 »

在Linux环境下执行程序的时候,有的时候会出现段错误(‘segment fault’),同时显示core dumped,就像下面这样:

1
[1]    15428 segmentation fault (core dumped)  ./a.out

下面是我网上找到的段错误的定义和说明:

A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.

Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

简单理解就是访问了不该访问的内存就会产生段错误。
而core dump是一种将出错时的调用堆栈等信息写入到一个文件中,方便后面调试。Ubuntu下需要进行一些设置才能正确地调试core dump,下面是详细的说明。

阅读全文 »

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
argparse使用比较简单,常用的功能可能较快地实现出来,下面我分几个步骤,以Python3为例,逐渐递增地讲述argparse的用法。

阅读全文 »

因为CuDNN函数接口更新的原因,以前用低版本写的项目在新版本的CuDNN环境下编译就会出问题。例如,py-faster-rcnn代码在最新版的CuDNN6上面编译时就会报错。
解决这个问题的一个方法是禁用CUDNN,即修改Makefile.config里面的第5行,在前面加#。这种方法没法使用CuDNN加速,不推荐。这里我们使用一种比较土的方法,即将使用了旧的CuDNN函数的文件都换成新的caffe里面的文件即可。

阅读全文 »

概述

这里列举了我常用的一些Linux命令行下的技巧,希望对大家有帮助。

阅读全文 »