参考github上各位大神的代码

mobilenet和shufflenet,实现起来感觉还是各种问题。

mobilenet目前使用的代码来自这里:https://github.com/BVLC/caffe/pull/5665/files。 而shufflenet我用的是:https://github.com/farmingyard/ShuffleNet

之前用官方的caffe训练mobilenet,速度超级慢,而且官方的caffe不知道为什么,minibatch只能为1,显存没有优化好的问题caffe一直是诟病啊。后来用了我们自己的版本,显存可以上去了,但是速度依然很忙。而训练结束后,inference也超慢。而且根据caffe的forloop的实现方式,group conv的group越多,速度会越慢,而mobilenet是group最多的,因此速度很慢很慢。后来参考上面的代码,重新训练了一次,mobilenet速度一下子快多了。具体就是矩阵计算的优化其实,但是我其实就知道单纯的forloop肯定不行的,这年头不并行怎么可以啊。而且GPU有自己的forloop优化,还有就是其实GPU卡的矩阵计算,利用sharememory等,速度可以快不少的。

目前训练mobilenet40万次了,调学习率前,52%的top1,76的top5.不知道调完学习率能不能增加10个点,如果可以的话,那说明代码还靠谱的。而要说的是inference比起来官方的group conv快太多了,1s大概能测试100张吧。

shufflenet因为里面有group conv,其实用的也是caffe自己的,但是group取3时速度还可以接受,不像mobilenet,group和outputnum一样,速度奇慢。目前shufflenet的效果应该也还可以,但是能不能像文章中说的,还需要测试。

不怎么做优化工作,持续关注。打算去看看mobilenet的速度优化。

mobienet, shufflenet的更多相关文章

  1. ShuffleNet总结

    在2017年末,Face++发了一篇论文ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devic ...

  2. 机器视觉:MobileNet 和 ShuffleNet

    虽然很多CNN模型在图像识别领域取得了巨大的成功,但是一个越来越突出的问题就是模型的复杂度太高,无法在手机端使用,为了能在手机端将CNN模型跑起来,并且能取得不错的效果,有很多研究人员做了很多有意义的 ...

  3. 轻量架构ShuffleNet V2:从理论复杂度到实用设计准则

    转自:机器之心 近日,旷视科技提出针对移动端深度学习的第二代卷积神经网络 ShuffleNet V2.研究者指出过去在网络架构设计上仅注重间接指标 FLOPs 的不足,并提出两个基本原则和四项准则来指 ...

  4. 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

    ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices

  5. 面向移动端的轻量级神经网络模型mobilenet、ShuffleNet

    翻译: http://baijiahao.baidu.com/s?id=1565832713111936&wfr=spider&for=pc http://baijiahao.baid ...

  6. ShuffleNet

    ShuffleNet (An Extremely Efficient Convolutional Neural Network for Mobile Devices) —— Face++ shuffl ...

  7. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2

    from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...

  8. 图像分类丨浅析轻量级网络「SqueezeNet、MobileNet、ShuffleNet」

    前言 深度卷积网络除了准确度,计算复杂度也是考虑的重要指标.本文列出了近年主流的轻量级网络,简单地阐述了它们的思想.由于本人水平有限,对这部分的理解还不够深入,还需要继续学习和完善. 最后我参考部分列 ...

  9. ShuffleNet:

    ShuffleNet算法详解 论文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices ...

随机推荐

  1. 简单实现 ArrayList

    java中提供了多个集合框架 其中就有ArrayList  下面简单的实现一下 只写了添加,获取长度和根据下标获取元素的方法 public class MyArrayList { //定义一个obje ...

  2. 阅读redis源代码的一些体会

    最近在学习redis及阅读redis等程序的源码时,有一些收获,特记录到下面. 1.第一步,阅读源代码借助最好可以跟踪的工具去读,如sourceinsight. 我使用的是windows7环境,又因为 ...

  3. centos6.5下搭建oracle 11g

    1.安装依赖 sudo yum install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfuti ...

  4. 对C++ Local的经典分析(转)

    对C++ Local的经典分析 本贴转载自:再别流年的技术实验室 文章地址: http://kittsoft.xp3.biz/?p=86 “这个问题比你想象中复杂”(我也学下BS的风格,虽然这句话是我 ...

  5. js数组与字符串相互转换

    一.数组转字符串(将数组元素用某个字符连接成字符串) var a, b;a = new Array(0,1,2,3,4);b = a.join("-"); 二.字符串转数组(将字符 ...

  6. 【转载】BootStrap表格组件bootstrap table详解

    (转载,来源“脚本之家”,作者不详) 一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来.由于Bootstr ...

  7. springboot如何实现微信登录,前期准备

    现在网站用微信登录真的是很多,那么具体是怎么实现的呢? 首先介绍的是微信开放平台,我们如果需要微信登录或者支付都需要在上面注册一个账号,用这个账号去为我们的网站申请的话,需要用到企业资料(家里有营业执 ...

  8. python的返回值

    1.返回值的作用 函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值.函数返回的值被称为返回值.在函数中,可使用return语句将值返回到调用函数的代码行.返回值让你能够将程序的大 ...

  9. 从零开始的全栈工程师——html篇1.2

    起名方式与CSS 一.起名方式(起名方式也叫选择器) 起名的目的是为了给标签添加属性 常见的3种选择器有 标签选择器   id选择器(使用的时候加#)    class选择器(使用的时候加.) 样式的 ...

  10. js实现手风琴效果

    之前在慕课网上有练习手风琴效果,但是老师使用jquery简简单单的两三行实现了,今天自己用js练习一下效果 <div id="divbox"> <ul> & ...