0

vim配置

下面是我的VIM的主要配置。应该就是网上找到的一个,加了点功能。权当在这里备份一下了。

将下面的内容写入自己的~/.vimrc文件即可。

针对自动跳转到上次关闭位置的这个功能,我在Ubuntu 14这个系统上失败了一次。是由于viminfo文件的权限不对。使用ls -l ~/.viminfo。如果发现其创建用户不是当前用户的话,那么可以将其删除。下次打开vim的时候会自动新建。这样就搞定了!

另外,附上Ubuntu下,VIM 8升级的命令:

read more

0

_rebuild_tensor_v2?pytorch版本间模型兼容性脱坑实践

最近使用Pytorch 0.4.0 进行模型训练,之后使用一个转模型的工具时,报了一个错,就是标题里面的_rebuild_tensor_v2相关的错误。最后发现是本地使用的pytorch的版本是0.3.0,和0.4.0模型上不兼容。各论坛上的解决方案都是说pytorch版本不向后兼容,建议升级pytorch。无奈我这里不方便升级pytorch版本。那么问题就来了,有没有什么不需要修改pytorch源码,或是不升级pytorch,又能让老版本的pytorch读取新版本模型的方案呢? read more

0

C++ Boost JSON解析库的使用

最近在写一个C++项目的时候,有大量的配置信息,于是将这些配置信息整合进一个文本文件中,选择了JSON这种数据格式。C++在处理JSON数据的库有很多,比如Jsoncpp,Boost等,这个项目中由于本身就已经用到了Boost这个库,因此,也就选用Boost来进行JSON的解析了。

Boost的JSON解析,使用的是property_tree这个数据类型,它可以方便的解析XML和JSON。

一、Boost JSON解析库的几个注意事项

在具体介绍之前,必须要强调一下,这个库默认不是线程安全的!不是线程安全的!不是线程安全的!不做任何处理的情况下,如果直接在多线程的程序中使用Boost解析JSON,可能会在奇怪的时候报段错误。 read more

0

C++ 并发队列的原理简介与开源库concurrentqueue安利

由于最近在做一个项目,但是框架本身有个不合理的设计。其中的代码是单线程的,数据的读取和计算都在一个线程里面完成。也就是说,我们的程序有很大的一部分时间在读取文件数据,导致最终的运行速度很慢。这里就可以使用多线程来优化。

这里需要使用最基本的生产者消费者模式

使用若干个线程作为生产者,负责数据的读取和预处理,这部分任务是IO密集型的,也就是不太占CPU,但是比较占带宽,而且有延时。在处理完数据之后,将数据放到一个队列中。 read more

2

CNN的目标检测概述(三)

本次介绍的是Fast R-CNN,与之前的RCNN和SPPNet不同,Fast R-CNN是一个清晰和快速的目标检测的框架。在训练和测试的速度上都远超过上述两种方法。同时,Fast R-CNN的训练是一次性的端到端的训练,同时训练的分类和回归两个任务。极大的简化的训练的流程。

项目代码:https://github.com/rbgirshick/fast-rcnn

三、Fast R-CNN

1)R-CNN与SPPNet的不足

R-CNN在目标检测中有很好的准确率,但是这个方法本身仍有很多的问题。

  1. 训练过程是多级的。R-CNN的训练分成三个部分,首先是finetune一个网络(目标检测的类别和ImageNet不一样)。之后是使用SVM进行目标的分类的训练。最后是使用feature map来进行目标的bounding-box的回归训练。
  2. 训练过程费时费空间。SVM和回归两个任务,需要存储目标的特征,需要很多空间。网络的训练过程很慢。
  3. 测试速度太慢。需要对每个proposal进行前馈,耗时太长。速度只有47s / image。

SPPNet可以加速R-CNN,在SPPNet中,在卷积的部分直接前馈整张图片,之后对于每个proposal,计算出它在feature map上的位置,然后使用SPP Pooling的方式,得到定长的特征向量。使得测试时间大大缩短。但SPPNet也有很多的问题。 read more

0

[转载] GDB十分钟教程

GDB十分钟教程

作者: liigo
原文链接: 
http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx
日期: 2006年1月16日

本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。

GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。

GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 read more

0

CNN的目标检测概述(二)


这次介绍的是2015年的Kaiming He的一篇论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,以下简称SPP-net。

SPP-net的主要贡献是提出了一种新的pooling的方式,spatial pyramid pooling,简称为SPP。使用这种pooling的方式,可以将任意大小的输入feature map给pooling到固定的大小。使用这种pooling的方式,最终在分类和检测任务上均有一定的效果。

二、SPP-net

1)问题描述

在介绍SPP这个pooling方式之前,我们先说一下,为什么需要这种特殊的pooling。 read more

0

CNN的目标检测概述(一)

在2012年的ImageNet中,AlexNet拔得头筹。之后,CNN成为了图像识别中的一大利器。

在目标检测中引入CNN,开山之作就是2013年的Rich feature hierarchies for accurate object detection and semantic segmentation,之后简称R-CNN。

一、R-CNN

1)算法原理

R-CNN中,将目标检测分成两步来实现:

  1. 首先是生成Region proposals,也就是候选框。有许多的基于图像的低维特征生成候选框的算法,例如selective search等。
  2. 训练一个分类和回归的网络。这个网络可以根据候选框的区域的图片,判断这个图片的类别,以及它应该回归到的位置。

2)检测过程

这样,在具体的一张图片的目标检测的时候,我们可以通过下面的过程来得到结果:

  1. 对于给定一张图片,通过算法得到大量的候选框(2k个左右)。
  2. 将候选框的图片裁剪出,然后输入到CNN网络中。
  3. 网络的输出为分类的结果和回归的结果。然后我们就知道这个区域是不是目标,如果是,计算出它的回归的位置。
  4. 得到大量的有类别的框,通过NMS算法,得到最终的目标的框。

3)网络训练

对于目标检测这个任务,我们现有的标注数据其实并不多。所以通常都是使用ImageNet等大的公开的数据进行预训练,或者直接使用预训练好的模型在finetune。 read more

0

[转载] 应用Valgrind发现Linux程序的内存问题

原文地址:https://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/

Valgrind 概述

体系结构

Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:

图 1 Valgrind 体系结构

Valgrind 体系结构 read more

0

本站的WordPress插件一览

其实Jetpack这个插件里面已经提供了大量的工具。如果安装了这个插件,那么下面的很多插件都是可以不用安装的。不过在国内使用Jetpack这个插件有点麻烦。我这里就一直没有用,等换了国外的服务器之后,之前的博客的很多内容都得重新编辑,太麻烦了,所以干脆不用了。

1. Akismet Anti-Spam

网址:https://wordpress.org/plugins/akismet/

由千百万人使用,Akismet可能是保护您的站点免受垃圾评论的世界上最好的方式。 您的站点已完全配置并受到不断的保护。 read more