卷积神经网络虽然已经在很多任务上取得了很棒的效果,但是模型大小和运算量限制了它们在移动设备和嵌入式设备上的使用。模型量化压缩等问题自然引起了大家的关注。Incremental Network Quantization这篇文章关注的是如何使用更少的比特数进行模型参数量化以达到压缩模型,减少模型大小同时使得模型精度无损。如下图所示,使用5bit位数,INQ在多个模型上都取得了不逊于原始FP32模型的精度。实验结果还是很有说服力的。作者将其开源在了GitHub上,见Incremental-Network-Quantization。
Caffe 中的 SyncedMem介绍
Blob
是Caffe中的基本数据结构,类似于TensorFlow和PyTorch中的Tensor。图像读入后作为Blob
,开始在各个Layer
之间传递,最终得到输出。下面这张图展示了Blob
和Layer
之间的关系:
Caffe中的Blob
在实现的时候,使用了SyncedMem
管理内存,并在内存(Host)和显存(device)之间同步。这篇博客对Caffe中SyncedMem
的实现做一总结。
Caffe中的BatchNorm实现
这篇博客总结了Caffe中BN的实现。
shell编程
介绍基本的shell编程方法,参考的教程是Linux Shell Scripting Tutorial, A Beginner’s handbook。
过秦论
秦以耕战立国,起于西北,从边陲弱小诸侯,借以天时地利,用商鞅、李斯,举法家大旗。而后逐鹿中原,坑赵括,灌大梁,掳六国贵族,结束战乱,建立大一统帝国。然而,强秦却二世而亡。“始皇之心,自以为关中之固,金城千里,子孙帝王万世之业也。”封建王朝的皇帝总觉得自己的国祚能够绵延不绝,历史却一次次地打他们的脸。
Ubuntu/Mac 工具软件列表
工作环境大部分在Ubuntu和MacOS上进行,这里是一个我觉得在这两个平台上很有用的工具的整理列表,大部分都可以在两个系统上找到。这里并不会给出具体安装方式,因为最好的文档总是软件的官方Document或者GitHub的README。
学一点PyQT
Qt是一个流行的GUI框架,支持C++/Python。这篇文章是我在这两天通过PyQT制作一个串口通信并画图的小程序的时候,阅读PyQT5的一篇教程时候的记录。
doc2dash——制作自己的dash文档
Dash是Mac上一款超棒的应用,提供了诸如C/C++/Python甚至是OpenCV/Vim等软件包或工具软件的参考文档。只要使用App的“Download Docsets”功能,就能轻松下载相应文档。使用的时候只需在Dash的搜索框内输入相应关键词,Dash会在所有文档中进行搜索,给出相关内容的列表。点击我们要寻找的条款,就能够直接在本地阅读文档。在Ubuntu/Windows平台上,Dash也有对应的替代品,例如zeal就是一款Windows/Linux平台通用的Dash替代软件。
这样强大的软件,如果只能使用官方提供的文档岂不是有些大材小用?doc2dash就是一款能够自动生成Dash兼容docset文件的工具。例如,可以使用它为PyTorch生成本地化的docset文件,并导入Dash/zeal中,在本地进行搜索阅读。这不是美滋滋?
本文章是基于doc2dash的官方介绍,对其使用进行的总结。
使用IPDB调试Python代码
IPDB是什么?IPDB(Ipython Debugger),和GDB类似,是一款集成了Ipython的Python代码命令行调试工具,可以看做PDB的升级版。这篇文章总结IPDB的使用方法,主要是若干命令的使用。更多详细的教程或文档还请参考Google。
Focal Loss论文阅读 - Focal Loss for Dense Object Detection
Focal Loss这篇文章是He Kaiming和RBG发表在ICCV2017上的文章。关于这篇文章在知乎上有相关的讨论。最近一直在做强化学习相关的东西,目标检测方面很长时间不看新的东西了,把自己阅读论文的要点记录如下,也是一次对这方面进展的回顾。
下图来自于论文,是各种主流模型的比较。其中横轴是前向推断的时间,纵轴是检测器的精度。作者提出的RetinaNet在单独某个维度上都可以吊打其他模型。不过图上没有加入YOLO的对比。YOLO的速度仍然是其一大优势,但是精度和其他方法相比,仍然不高。
Update@2018.03.26 YOLO更新了v3版本,见项目主页,并“点名”与有Focal Loss加持的Retina Net相比较,见下图。