Fast Style Transfer(快速风格转移)

简介

自从Gatys在2015年在Arxiv挂出一篇使用Deep Learning进行艺术画风格学习的文章[1]后,Style Transfer就成为了学术界和业界一个非常火的问题,凭借这个idea产生的移动端应用Prisma也是风靡全球,不过非常神奇的是,以往Paper更新速度奇快的CV领域,居然在2015年的后半段几乎没有新的效果好的idea出现,直到今年三月,来自俄罗斯斯科尔科沃科技学院(SkolTech)的Dmitry Ulyanov和来自斯坦福视觉实验室的Justin Johnson分别发布了一篇论文[2, 3],相比Gatys原有的方法具有较大的创新,并且解决[......]

Read more

通过C/C++扩展的方式在Python中进行并发

这段时间一直被Python下的多线程所困扰,很是不爽,不过虽然很早就知道了GIL这个东西的存在,却依然不信邪,在想会不会有什么办法可以绕过它,经过一段时间的苦逼尝试后,总算想到了一个曲线救国的方法,今天就来详细介绍一下。

小故事

首先简单回顾一下我们常说的Python多线程蛋疼之处,这里用一个简单例子来进行介绍:

from multiprocessing.dummy import Pool

def cpu_fun(arg):
    K = 1000
    while K>0:
        i = 3000[......]

Read more

一个简单有效的判别性区域定位方法(Learning Deep Features for Discriminative Localization)

前两天偶然看到一篇idea非常简单有效的用于定位图片判别性区域的paper,来自MIT大神Bolei Zhou,做了一个简单的实现,发现确实work,在此做个简单分享。

论文尝试解决的问题个人觉得非常有意义,就是在只有image-level label而没有类似detection、segmentation的标注时,我们该如何发现图片中对分类起决定性的那些判别区域。例如我们用ResNet对一张图片进行分类,输出结果显示有99%的概率这张图片里有一只熊猫,那么有没有办法可以告诉我们到底这只熊猫处在图片的哪个位置?

下图给出了一个更加具体的例子,即我们到底可以从[......]

Read more

对抗自编码器:Adversarial Autoencoders

前一篇文章介绍了原始的GAN理论,包括后续提出的能够适用于更高分辨率的DCGAN在内,其模型本质都是训练一个生成器G,然后去不断欺骗一个也在实时更新的判别器D,虽然这个模型框架一定程度上非常好的解决了以往Generative Model需要非常多监督信息的弊端(例如Learning to Generate Chairs, Tables and Cars with Convolutional Networks),但是也具有一些不太好的缺陷:比如因为G的输入噪声完全不具有任何语义信息,因此即使在允许使用一些类别label的情况下我们依然完全无法控制生成的样本是什么样子;除了使用一些限制生成样[......]

Read more

生成对抗式网络(Generative Adversarial Networks)

在近期深度学习技术的各项突破中有一个非常有趣的研究工作,叫做生成对抗式网络:Generative Adversarial Networks(以下简称GAN),最开始由Bengio所在实验室的人提出[1],然后被其他人做了一些改进,应用到一些更大的数据上后并做了进一步的拓展分析。

模型介绍

与一般的被用于Supervised Learning任务的深度神经网络不同,GAN同时要训练一个生成网络(Generator)和一个判别网络(Discriminator),前者输入一个noise变量 z ,输出一个伪图片数据 G(z; \theta_g) ,后者输[......]

Read more

使用Stacked Attention Networks进行图片QA(paper reading)

论文:Stacked Attention Networks for Image Question Answering(CVPR 2016)。

这篇来自CMU的文章主要研究的是Image Question Answering的问题,且是CVPR 2016第一个session的oral,虽然这次去开会一路听人吐槽现在CV完全就是DL灌水活动,但是不得不说深度学习技术让我们可以开始尝试很多以前不太敢想的新问题,这一点在计算机这种应用科学领域中显得尤为重要,而这篇关于Image QA的文章就是一个很好的例子。

Image QA的问题定义其实非常清晰,就是给定一张图[......]

Read more

RCNN, Fast-RCNN, Faster-RCNN的一些事

rbg大神的深度神经网络检测算法系列RCNN、Fast-RCNN、Faster-RCNN可谓是理论与实践的经典范例,论文创新点足够,在github上开源的代码更是造福广大码农,本文以当前最新Faster-RCNN的python实现(https://github.com/rbgirshick/py-faster-rcnn)为准,尝试对rcnn系列算法中的几个关键核心点进行详细的分析:

  • RCNN -> Fast-RCNN -> Faster-RCNN
  • 图片区域分析核心:ROI Pooling层
  • 对象bbox预测:&nbs[......]

Read more

Caffe在Python中使用内存数据(MemoryData)进行训练

最近在一个新的数据集(CompCar)上需要做很多层次的分类任务,做baseline时不可避免的会用到caffe,最开始时是用官网教程的方式先生成带标签的list列表,然后转成lmdb,最后caffe train --solver=xxx --weights=xxx这样进行训练,然而。。。实验做着做着硬盘就满了。。。原因一是因为数据集很大,二是在不同分类任务里要把图片列表分配成不同的标签,三是训练集测试集的split也有很多种,四是我还要把原始图片生成LMDB,整个过程算起来原始数据集已经增大了好几倍,后来想到了每次训练时不使用lmdb形式的数据,而改用内存数据,即手动读入图片列表中所有[......]

Read more