Action Classification In Still Image (CNN篇)-2

之前也写过几篇用CNN做静态图片的行为分类的论文笔记。最近又看了一些,继续写笔记。

Recognize Complex Events from Static Images by Fusing Deep Channels

paper链接

最近连续被Xiaoou刺激…Action的ideas都被做了,Video的idea被做,Still Image的也被做,大体的思路都一样,就是细节不一样,不过现在看来只能再想别的模型了。

这个paper说的是识别Event,这跟Action的分类是非常类似的,Action一般需要识别的是单个人,而Event关注的是一群人或者整张图片表示的事件,尽管如此,方法上还是非常像的。

文章核心想法是多信息融合。融合分两步,物体跟人的信息先进行一次融合(这能够对物体跟人的interaction进行建模),融合后的特征再跟全局(全图)的信息融合,这种做法是很有道理的,物体跟人的交互往往是非常重要的线索(这么讲吧,如果能够很精确的检测物体的存在,这个Event是什么基本能够知道了,不过对于一些跟fine-grained的Event讲,交互/位置信息就很重要了,抱狗跟亲狗这两个Event,单单把狗检测出来还不够,还需要知道人头跟狗头的位置关系才能进一步区分),然后全局的信息也是很重要的,我往往把这全局信息理解为场景信息,比如区分室内室外等等的。

用的依旧是CNN,既然是CNN的东西了,那么直接上网络结构就能懂了80%,网络结构如下:

接下来就根据不同的信息来讲吧,重点还是人跟物体这块,也就是网络结构图的下半部分。

全局信息

这里直接上了AlexNet,看样子是取fc6出来做特征(4096维),仍旧用ImageNet来pre-train,这没什么好讲了。

物体跟人

因为数据集并没有给出人跟物体的位置,需要先对物体跟人的进行检测,检测出来之后,作者并没有直接把他们的坐标并起来,而是定义了一些特征,然后再让网络去学。

Feature for Human

对于人的检测,作者并没有简单的用一个人的检测器,因为这很困难,同时如果人检测不到,那就谈不上interaction了,所以为了加强人的检测,作者还使用了人脸的检测,两者进行互补。(其实换成人头肩检测更好啊…)

那么如何构建人的特征?简单来讲,作者构建了binary maps,bboxes框住的地方的值为1,其他为0,下面是一个例子。

看了上面的图你也会发现,两个不同的Event,它们的特征几乎一样啊,这怎么区分?为了解决这个问题,作者就引入了多尺度的map,意思是,不同的大小的bboxes,会激活不同尺度的map,这个激活是指把bboxes框住的地方的值设为1。这里的不同大小的比较,是要在归一化的空间里面比较,归一化的方法是把原图resize成18x18,然后再算这时候bbox的面积。作者设置了两个阈值,这就划分出了3个空间,一个空间对应一个尺度,所以最终会得出3张map。人脸跟人都要做这样的操作,最终就会得出6张maps。例子例子:

Feature for Object

同样的方式构建特征。不过只有一个尺度。

作者进行了统计,得出了最常出现的30个物体,别问我为什么是30个….这时候就有30个maps了。

Fusion of Human and Object

把6张maps跟30张maps拼起来就完成fusion了!接着就是架个CNN学特征了,看网络结构图即可,最终得到4096维的特征。

Fusion of All

这里是对全局特征跟物体和人的特征进行融合,作者说是一种semantic fusion,将两者的4096维特征进行融合得到新的4096维特征,不过好像没说清楚怎么融合,加?乘?

Results

因为没有现有的数据集,作者自己搞了个数据集,所以他实现了几个方法跟自己对比:

效果还是一如既往的不高,这个领域可提升空间真的很大。能看出CNN的威力了,作者的方法在Top 1对比其他CNN的方法提升不少,不过在Top 5区别就不大了。

最后说一句,最近都流行搞数据集了….我们实验室也是各种搞,这样有两个好处是,你可以很容易把别人PK掉,而且由于有数据集发布,你的引用也会增加不少。

坚持原创技术分享,您的支持将鼓励我继续创作!