0

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

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

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

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

0

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

0

博客服务器维护中的小技巧

这里记录了小喵的博客的服务器的一些小的技巧,包括安装和各种参数的配置,便于以后查看。不定期更新。

1. LNMP环境的配置——oneinstack

LNMP环境就是Linux、Nginx、Mysql和Php这四个的组合,由于这四个都是免费的,因此在网站搭建的时候最常使用到,另一个名词是LAMP,其中A表示的是Apache。但Apache比较占资源,所以我用的还是Nginx。

这里,网上应该有超多的教程,我当时配置的时候也是参考了各种教程,但最终还是放弃了,自己去配置这些东西真的好难。于是,我就把目标转向了各种集成好的环境了。 read more

0

shadowsocks安装和配置

我使用的VPS是 https://www.vultr.com/?ref=7305758 ,感觉使用美国的服务器,速度真心还不错,带宽很高,流量也很足,日本的服务器响应最快,但是看不了pixiv,所以我也就换成美国的了。

如果需要注册的话,不妨用我的这个链接,这样也算是我的一个推荐。谢谢!

shadowsocks是一个十分方便安装和配置的代理工具。官网是:http://shadowsocks.org

这里记录一下,shadowsocks的安装和配置的过程,方便以后的查阅。这里使用的是python版本的shadowsocks。 read more

0

Python Trick

这里主要记录一些Python使用上的小技巧,以后使用的时候可以方便查阅。不定期更新。

1. 豆瓣源

使用pip为python安装一个第三方库的时候,由于国内可能不方便下载国外的库,这里可以使用豆瓣源来加速。只需要加上参数-i https://pypi.douban.com/simple/即可。比如安装scrapy就可以使用如下的指令:

2. Python环境管理

很多时候,我们可能需要用到不同版本的python,比如2.7和3.4两个版本。这时候可以使用virtualenv,virtualenvwrapper等工具。但实际上anaconda本身就已经支持python的版本控制了(我一直用的anaconda)。比如我们要新建一个2.7版本的python环境,就只需要输入:

这样就创建了一个2.7版本的python,且这个python环境的名字叫做py27。 read more