0%

自从今年七月份工作后,就一直没有更新过博客,之前坚持了一年多的每个月写一篇博客的记录也被打断了,一方面是因为工作太忙了,另一方面是因为自己做的都是一些项目相关的东西,没什么可以写的,只有论文分享比较合适,不过我也没有看太多论文……这周末将之前的MarkDown文件整理了下,将七牛云上没法访问的图片迁移到了Hexo项目的img目录下(具体做法可以参考这里),因为GitHub的学生优惠也到期了,没法创建私有仓库,所以以后会将blog的源文件托管到GitLab.com上,一切准备妥当,Begin Again!

Git是用来管理源代码的一个工具,很多时候,我们不想让Git来跟踪较大的二进制文件。但是如果不小心将某个文件加入到Git的缓存区后,不管后面怎么删除这个大文件,Git始终都保存有这个文件的历史记录,因此项目会很大。拿下面例子来说,我们有个500M的文件cnn.model,通过下面的命令加入到git暂存区或提交到远端(提交时自动执行git gc命令,生成pack文件):

1
2
3
$ git add cnn.model
$ git commit -m "add file cnn.model"
$ git push

经过这步操作,用du -sh .命令查看项目大小的话,发现足足有1000多M,因为本地文件cnn.model以及.git目录中的object也有一份这个文件的记录。
即使使用git rm命令删除当前的cnn.model文件,.git目录中还是记录有这个大文件的记录,因此后面别人clone这个项目后,项目还是很大。因此这里需要使用git filter-branch命令来删除.git目录中的文件记录:

1
$ git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' -- --all

这是在你已知大文件的名字和目录情况下的删除过程。如果过了很久或者是有很多大文件,我们需要有一系列的命令来找出大文件,然后对其进行过滤。下面详细阐述整个过程。

阅读全文 »

由于许多包的存放服务器在国外,国内安装比较慢,因此本文总结了常见的包(例如Python包,Linux不同发行版的包)在国内的开源镜像,加速你的下载,提高安装体验。下面总结了PyPi,Anacoda,NPM, Docker,RubyGems和Linux的国内镜像,并且在GitHub上放置了本文提到的所有的包的配置文件,直接下载使用,具体使用说明访问这里

阅读全文 »

概述

论文链接:点击查看PDF
作者主页:De-An Huang

论文主要目的:显式地用量化的方法来分析motion对于视频理解的作用有多大,在整个视频分析过程中起到了多大的效果。这也是我了解的第一篇用量化的方法来探讨motion信息的贡献的论文,文中逐类的分析motion带来的性能增益(图4)也是第一次见到。

这篇论文的出发点是分析在某个网络结构(例如C3D)上训练好的模型在对测试视频进行分类的时候,是否真正地用到了运动信息(motion),或者说运动信息真正起到了作用。一个简单的验证实验是在在测试视频中选一帧,然后重复N次构成一个clip(如在C3D中,N=16)。作者实验发现这种情况性能下降了25%。但这25%的性能下降不光是motion丢失带来的,作者认为这里还引入了另外两个问题:(1)改变了视频帧的时间上分布(temporal distribution),因为训练时使用的是16帧的clip,而测试采用采样过的帧构成的clip,训练和测试数据的分布不一致。(2)可能将视频中最重要的帧,对视频分类最有用的帧给丢掉了。

为了解决上面提到的两个问题,这篇论文提出了两个针对性的框架:首先是在低帧率(例如相比C3D中采用的16帧的clip,这里采用1帧的clip)的情况下,基于cycleGAN的类别无关(class-agnostic)的时域生成器(temporal generator, 英文不好,暂时这样翻译了,如果有更准确的翻译请告知)来生成帧,构成视频输入到训练好的网络中。为了使得训练收敛,作者采用了perceptual loss。第二个框架是运动不变(motion-invariant)的关键帧选择器,通过选择一个关键帧进行视频分类的任务。

具体实验是采用C3D模型,在UCF101和Kinetics这两个数据集上进行。通过使用作者提出的两个框架,使得在UCF101上,单帧clip相比16帧的clip的性能下降从25%减小到6%,在Kinetics上性能下降从15%减小到5%。同时作者用实验表明,40%的UCF101测试视频(split1)和35%的Kinetics测试视频不需要motion信息就能达到平均的分类性能。此外,在使用了作者提出的两个框架后,采用4帧的clip就能达到原来16帧的clip下的性能。至于引入的额外的计算开销作者在论文中没有进行讨论。

阅读全文 »

概述

这篇论文是CVPR2018年的录取论文,主要讨论了时空卷积的几种网络结构,在Action Recognition 的几个标准数据集上也取得了媲美最好方法的效果。作者是FAIR的工作人员,其中包括Du Tran(C3D)作者,Heng Wang(iDT)作者和Yann LecCun等,可谓是大牛云集。论文可以在这里下载。这里大概介绍下论文中的内容,可以看作是原论文的一个翻译。

阅读全文 »

概述

Keras提供了一系列的回调函数,用来在训练网络的过程中,查看网络的内部信息,或者控制网络训练的过程。BaseLoggerProgbarLogger用来在命令行输出Log信息(默认会调用), EarlyStoppingReduceLROnPlateu分别用来提前终止训练和自动调整学习率,改变网络训练过程;而今天要介绍的RemoteMonitor则用来实时输出网络训练过程中的结果变化情况,包括训练集准确率(accu)、训练集损失值(loss)、验证集准确率(val_acc)、验证集损失值(val_loss),用户也可以自己修改需要显示的数据。一图胜千言,看看下面的结果图吧:

这个图是在浏览器中打开得到,Keras使用了Flask搭建了一个简单的服务器,然后采用D3.js来可视化数据。下面详细介绍可视化的过程吧

阅读全文 »

可能有些人不知道,Linux命令行也有一些方便文本操作的快捷键,如跳到行首的快捷键是Ctrl-a,,跳到行尾的快捷键是Ctrl-e,删除光标所在处的字符的快捷键是Ctrl-d。 虽然这些快捷键很多时候都可以被小键盘的左右移动键、Home和End键替代,但是对于比较长的命令的修改,快捷键的操作还是比较快的。因为我平时用Vim比较多,而Linux命令行绑定的是Emacs的快捷键方式,虽然可以通过在命令行执行set -o vi修改为Vim的快捷键方式,但是这样会影响常用的像Ctrl-pCtrl-n等操作,因此我还是打算将这些难记的文本操作快捷键总结下来,让自己多练习,以后能更熟练地使用。注意这里我只列了文本操作的快捷键,像别的历史命令查询Ctrl-r和清屏操作Ctrl-l等快捷操作,大家可以参考我写的这篇博客

阅读全文 »

这是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,依旧解决不了我们的问题。因此这里调查了下可能的原因,将其记录下来。

阅读全文 »