网赢中国专注大数据营销 [会员登录][免费注册][网赢中国下载]我要投稿|加入合伙人|设为首页|收藏|RSS
网赢中国是大数据营销代名词。
大数据营销
当前位置:网赢中国 > 行业资讯 > 解决方案 > 大数据营销解决方案 > 深度学习之在iOS上运行CNN-技术博客
深度学习之在iOS上运行CNN-技术博客
编辑:songrotek 发布时间: 2015-7-15    文章来源:CSDN博客
大数据营销

  1 引言


  作为曾经的iOS开发者,在研究深度学习的时候,总有一个想法就是在iPhone上运行深度学习,不管是在手机上训练还是利用训练好的数据进行测试。


  因为iOS的开发环境支持C++,因此,只要你的代码是C/C++,本质上就可以在iOS上运行。


  怎么才能更快更好地在iOS上运行CNN呢?


  2 方法1:通过Matlab转码


  Matlab自带转成c的工具,如果你研究过UFLDL的深度学习教程,就知道如何在Matlab上使用CNN,那么,转换成c后,放到iOS的开发环境中,然后将参数存成txt格式再读取分割,也就是可以实现。


  如下图就是已经将matlab代码转换为c后导入的结果:


 


这里写图片描述

  打开predict.h文件,可以看到可以调用的接口:


  /* Function Declarations */


  extern real_T predict(const real_T Theta1[10025], const real_T Theta2[260], const real_T X[400]);


  123


  这是训练MNIST的一个神经网络,我这边用了测试手写数字的识别。


  因此,接下来需要对图片进行处理,从而转换为x[400]的向量格式。


  这个只要能读取图片的像素,进行转换就可以。可以考虑用opencv来实现。


  


这里写图片描述

  这里我的方法是在用手画出数字之后,将图片转换为20*20像素的图片,如右下角所示,再将右下角的图片转换为400的数组,输入predict得到的结果。


  3 方法2:使用DeepBeliefSDK


  https://github.com/jetpacapp/DeepBeliefSDK


  这个是别人专门写的一个用于iOS的深度学习的SDK。可以使用,但是存在的问题就是如果要自己训练的话很受限制。


  4 方法3:使用tinyCNN


  https://github.com/nyanp/tiny-cnn


  这个很不错,它对比Caffe,Theano等框架最大的特点就是不需要安装,只要能用C++ 11.然后里面的例子使用了boost库。因此,为了运行它,我们需要在xcode安装ios的boost库。


  网上找到了一个编译好的boost库:


  https://github.com/danoli3/ofxiOSBoost


  导入boost库的方法非常简单:


  In Xcode Build Settings for your project:


  Add to Library Search Paths ( LIBRARY_SEARCH_PATHS ) $(SRCROOT)/../../../addons/ofxiOSBoost/libs/boost/lib/ios


  Add to Header Search Paths ( HEADER_SEARCH_PATHS )


  $(SRCROOT)/../../../addons/ofxiOSBoost/libs/boost/include


  In the Target under Build Phases


  Add to 'Link Binary With Libraries' the boost.a found in the ofxiOSBoost/libs/boost/lib/ios directory.


  If not openFrameworks just add the libs/boost/include to Header Search Paths and the libs/boost/ios to Library Search Paths123456789


  那么具体在创建iOS应用的时候,这里使用作者提供的训练MNIST的例子,那么要注意在使用数据时,要更改路径:


  NSString *trainLabels = [[NSBundle mainBundle] pathForResource:@'train-labels' ofType:@'idx1-ubyte'];


  NSString *trainImages = [[NSBundle mainBundle] pathForResource:@'train-images' ofType:@'idx3-ubyte'];


  NSString *t10kLabels = [[NSBundle mainBundle] pathForResource:@'t10k-labels' ofType:@'idx1-ubyte'];


  NSString *t10kImages = [[NSBundle mainBundle] pathForResource:@'t10k-images' ofType:@'idx3-ubyte'];


  parse_mnist_labels([trainLabels cStringUsingEncoding:NSUTF8StringEncoding], &train_labels);


  parse_mnist_images([trainImages cStringUsingEncoding:NSUTF8StringEncoding], &train_images);


  parse_mnist_labels([t10kLabels cStringUsingEncoding:NSUTF8StringEncoding], &test_labels);


  parse_mnist_images([t10kImages cStringUsingEncoding:NSUTF8StringEncoding], &test_images);12345678910


  基本上这样就可以运行开始训练了。


  如果想在Mac上训练,同样需要安装boost库。这个只要在官网下载boost,我用的是1.58版本。然后在terminal中安装,cd到路径,然后./boostrap.sh 然后./b2 安装就可以。然后在xcode引入路径:


  The Boost C++ Libraries were successfully built!


  The following directory should be added to compiler include paths:


  /Users/.../.../.../boost


  The following directory should be added to linker library paths:


  /Users/.../.../.../boost/stage/lib123456789


  路径初始为自己boost的文件夹地址。


  4 小结


  上面说了一些很方便的方法来实现在iOS下运行CNN。当然,我们更多需要就是进行图像的识别。相信大家自己测试会觉得很有趣。


大数据营销
编辑推荐
图片行业资讯
  • 雷军隔空喊话董明珠:格力 小米欢迎你
  • 杨元庆:Moto在华上市一周预定量超100万
  • 小米洪锋谈O2O布局:做商城不做具体服务
  • 盖茨向不知名实体捐赠15亿美元微软股票 持股降至3%
  • 刘强东:允许我获取数据 冰箱免费送给你
营销资讯搜索
大数据营销
推荐工具
    热点关注
    大数据营销
    大数据营销
    大数据营销
    大数据营销
     

    大数据营销之企业名录

    网络营销之邮件营销

    大数据营销之搜索采集系列

    大数据营销之QQ号采集

    大数据营销之QQ精准营销

    大数据营销之QQ消息群发

    大数据营销之空间助手

    大数据营销之QQ联盟

    大数据营销之QQ群助手
     
    设为首页 | 营销资讯 | 营销学院 | 营销宝典 | 本站动态 | 关于网赢中国 | 网站地图 | 网站RSS | 友情链接
    本站网络实名:网赢中国  国际域名:www.softav.com  版权所有 2004-2015  深圳爱网赢科技有限公司
    邮箱:web@softav.com 电话:+86-755-26010839(十八线) 传真:+86-755-26010838
    在线咨询:点击这里给我发消息 点击这里给我发消息 点击这里给我发消息  点击这里给我发消息  点击这里给我发消息

    深圳网络警
    察报警平台
    公共信息安
    全网络监察
    经营性网站
    备案信息
    不良信息
    举报中心
    中国文明网
    传播文明
    分享