神经网络瘦身:SqueezeNet

2016年2月份,UC Berkeley和Stanford一帮人在arXiv贴了一篇文章:

这篇文章做成了许多人梦寐以求的事——压缩神经网络参数。但和以往不同,原作不是在前人网络基础上修修补补(例如Deep Compression),而是自己设计了一个全新的网络,它用了比AlexNet少50倍的参数,达到了AlexNet相同的精度!

关于SqueezeNet的创新点、网络结构,国内已经有若干爱好者发布了相关的简介,如这篇这篇,国外的文献没有查,相信肯定也有很多。

本文关注的重点在SqueezeNet为什么能实现网络瘦身?难道网络参数的冗余性就那么强吗?或者说很多参数都是浪费的、无意义的?

继续阅读神经网络瘦身:SqueezeNet

Ubuntu 16.04系统Microsoft Common Objects in Context(COCO)数据集在Python环境中的使用

Microsoft Common Objects in Context(简写 COCO)数据集是微软团队提供的一个可以用来进行图像识别,分割,注解等开发工作的数据集。

其官方说明网址:http://mscoco.org/

继续阅读Ubuntu 16.04系统Microsoft Common Objects in Context(COCO)数据集在Python环境中的使用

Caffe训练过程中的train,val,test的区别

valvalidation的简称。
training datasetvalidation dataset都是在训练的时候起作用。
而因为 validation的数据集和 training没有交集,所以这部分数据对最终训练出的模型没有贡献。
validation的主要作用是来验证是否过拟合、以及用来调节训练参数等。

比如训练 0-10000次迭代过程中, trainvalidationloss都是不断降低,
但是从 10000-20000过程中 train loss不断降低, validationloss不降反升。
那么就证明继续训练下去,模型只是对 training dataset这部分拟合的特别好,但是泛化能力很差。
所以与其选取 20000次的结果,不如选择 10000次的结果。
这个过程的名字叫做 Early Stopvalidation数据在此过程中必不可少。

如果跑 caffe自带的训练 demo,你会用到 train_val.prototxt,这里面的 val其实就是 validation
而网络输入的 TEST层,其实就是 validation,而不是 test。你可以通过观察 validationlosstrainloss定下你需要的模型。

但是为什么现在很多人都不用 validation了呢?
我的理解是现在模型中防止过拟合的机制已经比较完善了, Dropout\BN等做的很好了。
而且很多时候大家都用原来的模型进行 fine tune,也比从头开始更难过拟合。
所以大家一般都定一个训练迭代次数,直接取最后的模型来测试。

引用链接


图像识别训练样本集

ImageNet

ImageNet是一个计算机视觉系统识别项目,是目前世界上图像识别最大的数据库。是美国斯坦福的计算机科学家李飞飞模拟人类的识别系统建立的。能够从图片识别物体。目前已经包含14197122张图像,是已知的最大的图像数据库。每年的ImageNet大赛更是魂萦梦牵着国内外各个名校和大型IT公司以及网络巨头的心。图像如下图所示,需要注册ImageNet帐号才可以下载,下载链接为http://www.image-net.org/

继续阅读图像识别训练样本集

语音识别商用开源代码与免费开放平台最全盘点分析

声学在线前几日盘点了语音识别业界相关的公司和技术,引起了众多朋友的关注。不少朋友都在咨询声学在线关于技术细节问题,因此,我们打算春节期间连续发布几篇深度文章,希望从语音识别领域的公司、技术、算法和专利的层面解读出语音识别的产生、发展、应用与瓶颈,以此提供给相关行业的朋友们作为参考。

目前朋友们最关心的就是当前有哪些语音识别开放平台,显然大家更担心被某个平台所绑架。为了促进语音识别的行业发展,我们更深入一步,不仅盘点当前的商业开放平台,也把这个领域的开源代码详细盘点一番,让更多的朋友了解这个行业。

语音识别领域的商用开源代码盘点

语音识别是一门交叉学科,其所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。但是随着深度学习技术的发展,云端的语音识别更多的偏向于计算机技术。显然,从事计算机技术研究的人员更加众多,这也是语音识别的快速发展的基础,因而也形成了语音识别的开源代码要比开放平台更多的现象。

提到语音识别的开源代码,首先就要提到三个非常著名的开源平台,即Kaldi、CMU Sphinx和Julius。笔者大概按其重要性做了以下排名,Sphinx、HTK之类曾经很红火,但是确实也有点太老了。而Kaldi是Apache licence,完全可以商用,美国和中国很多公司都是直接修改Kaldi生成的语音识别引擎。另外,很多巨头公司内部研究部门也是在用Kaldi做研发,关于这些欢迎留言讨论。

继续阅读语音识别商用开源代码与免费开放平台最全盘点分析

ROCm:AMD系开源HPC/超规模GPU计算/深度学习平台

ROCm的英文全称Radeon Open Compute platform,它是AMD在去年12月推出的一款开源GPU运算平台,目前已经发展到了1.3版本。MIOpen则是AMD为此开发的软件库,其作用是将程序设计语言和ROCm平台连接,以充分利用GCN架构。

本次发布的版本包括以下内容:

  • 深度卷积解算器针对前向和后向传播进行了优化
  • 包括Winograd和FFT转换在内的优化卷积
  • 优化GEMM深入学习
  • Pooling、Softmax、Activations、梯度算法的批量标准化和LR规范化
  • MIOpen将数据描述为4-D张量 - Tensors 4D NCHW格式
  • 支持OpenCL和HIP的框架API
  • MIOpen驱动程序可以测试MIOpen中任何特定图层的向前/向后网络
  • 二进制包增加了对Ubuntu 16.04和Fedora 24的支持
  • 源代码位于https://github.com/ROCmSoftwarePlatform/MIOpen
  • 参考文档

继续阅读ROCm:AMD系开源HPC/超规模GPU计算/深度学习平台

卷积神经网络CNN总结

卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

继续阅读卷积神经网络CNN总结

「一图看懂」计算机视觉识别简史:从AlexNet ResNet到Mask RCNN

最近,物体识别已经成为计算机视觉和AI最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级计算技术的支持,计算机现在可以在某些特定设置(例如人脸识别)的任务中超越人类的识别能力。

继续阅读「一图看懂」计算机视觉识别简史:从AlexNet ResNet到Mask RCNN

Ubuntu 16.04开启dlib对于AVX或者CUDA的支持

最近在使用 openface来测试人脸识别,实际过程中发现识别速度非常缓慢,平均每帧的识别速度达到了秒级水平,这个是不可接受的。跟踪代码性能,发现是 dlib部分非常缓慢。

根据 dlib的文档,默认使用

安装的 dlib库,由于对具体硬件的要求( CPU需要支持 AVX指令集),是没有开启 AVX指令加速的,另外由于显卡的要求,也是默认不开启 CUDA的支持。

如果想要开启这部分加速,需要手工编译安装才可以,具体操作如下:

上面的命令是使用 AVX指令加速功能的,如果机器上安装了 CUDA,则需要正确安装 cuDNN 5.0以上的版本,否在编译的时候会报告

对于使用

安装的 CUDA-7.5来说,可以从这里下载cuDNN v6.0 (April 27, 2017), for CUDA 7.5,下载完成后,整个目录中的 include目录中的文件解压缩到 /usr/local/include/目录下, lib64目录中的内容整个解压缩到 /usr/lib/目录下,并且在 /usr/local/lib/目录下建立 libcudnn.so的软链接

都配置正确后,使用如下编译命令安装:

相关链接


Easily Create High Quality Object Detectors with Deep Learning