这篇博文将会展示如何采用一个预训练的深度学习网络(模型)在ImageNet的数据集并把它当作输入图像。
  首先说明,运行环境为Ubuntu16.04(或者MacOS),windows暂不支持,已经编译好的OpenCV3.3.0,如何查看以及是否编译OpenCV3.3.0成功,请看博文:http://www.cnblogs.com/wmr95/p/7638985.html
  OpenCV并不是(也不打算)作为一个工具来训练网络,这里已经有更伟大的框架来完成这件事情。新版OpenCV兼容以下热门网络架构: 
     GoogleLeNet (used in this blog post)
     AlexNet
     SqueezeNet
     VGGNet (and associated flavors)
     ResNet
  用OpenCV和深度学习给图像分类
  接下来,我们将创建一个Python脚本,该脚本可用于使用Caffe框架使用OpenCV和GoogLeNet(在ImageNet上进行预培训)对输入图像进行分类。
  同时,让我们学习如何加载预先训练好的Caffe模型,并使用它来使用OpenCV对图像进行分类。
  首先,打开一个新文件,将其命名为deep_learning_with_opencv.py ,插入如下代码,来导入我们需要的包:
  
  然后我们解析命令行参数:
  
           --image : The path to the input image.
      --prototxt : The path to the Caffe “deploy” prototxt file.
      --model : The pre-trained Caffe model (i.e,. the network weights themselves).
      --labels : The path to ImageNet labels (i.e., “syn-sets”).

然后加载输入图像和标签:
  

  
  接下来,让我们看下OpenCV3.3的dnn模块:
  
  然后,我们从磁盘加载预训练好的模型:
  

  我们用cv2.dnn.readNetFromCaffe来加载Caffe模型定义prototxt,以及预训练模型。
  接下来,我们以blob为输入,在神经网络中完成一次正向传播:
  

  最后,我们来为输入图像取出5个排名最高的预测结果:
  
  我们来选取排名前5的结果,然后将他们显示出来:
  
  以上是关于OpenCV3.3的dnn模型的介绍,下面在本地上完成模型的输出:
  1.首先下载源代码以及预训练的GoogleNet架构以及示例图片,链接我在下面的原文链接中给出,直接找到”Downloads“输入邮箱获取;
  2.打开ternimal,cd到你下载的路径下,输入下面的命令:
  $ python deep_learning_with_opencv.py --image images/jemma.png
    --prototxt bvlc_googlenet.prototxt \
    --model bvlc_googlenet.caffemodel --labels synset_words.txt
  运行成功的话会在ternimal下显示:  
  [INFO] loading model...
  [INFO] classification took 0.075035 seconds
  [INFO] 1. label: beagle, probability: 0.81137
  [INFO] 2. label: Labrador retriever, probability: 0.031416
  [INFO] 3. label: bluetick, probability: 0.023929
  [INFO] 4. label: EntleBucher, probability: 0.017507
  [INFO] 5. label: Greater Swiss Mountain dog, probability: 0.01444
  

  当然你还可以尝试其他图片,现在你已经成功运用预训练的模型实现图像分类啦。
  
  附上原文链接:https://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/
  项目地址:https://github.com/wanglaotou/deeplearning-opencv
 
  
  

版权声明:

作者:王老头
出处:http://www.cnblogs.com/wmr95/p/7640017.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,并在文章页面明显位置给出原文链接,否则,作者将保留追究法律责任的权利。

  

【PyImageSearch】Ubuntu16.04使用OpenCV3.3.0实现图像分类的更多相关文章

  1. ubuntu16.04 安装opencv3.2.0以及opencv_contrib-3.2.0

    1.需要的包:sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config l ...

  2. ubuntu16.04安装opencv3.4.0

    老实说这篇记录可能拖了有8个月了,早在去年6月份我应该是第一遍安装opencv.当时懒得记录,以为自己什么都能记得住.后来由于电脑各种原因,需要重装opencv,装的时候发现啥都记不住了.然后又得去找 ...

  3. Ubuntu16.04 anaconda3 opencv3.1.0 安装CPU版本caffe

    安装anaconda3 安装opencv3.1.0 安装依赖库 修改Makefile.config 修改Makefile 编译报错,卸载anaconda中的protobuffer: conda uni ...

  4. ubuntu16.04 安装opencv3.4.0

    参考 https://www.cnblogs.com/arkenstone/p/6490017.html https://blog.csdn.net/u013180339/article/detail ...

  5. 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0

    目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...

  6. 配有Tesla K40c的服务器新装Ubuntu16.04并安装CUDA8.0、Anaconda3、Matlab2016a、OPENCV3.1、CuDNN5.1、MXNet

    注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 决定加入深度学习的大军,感谢导师给配了台新设备!第一次接触服务器并配置开发环境,整个过程中 ...

  7. ubuntu16.04 安装opencv3.3

    from: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ Step #1: Install O ...

  8. 深度学习环境配置:Ubuntu16.04安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)

    本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ...

  9. Ubuntu16.04 - 安装gtk+-3.0和appindicator3-0.1

    今天在Ubuntu16.04里面遇到这样的问题: # pkg-config --cflags gtk+-3.0 appindicator3-0.1Package gtk+-3.0 was not fo ...

随机推荐

  1. English trip V1 - 21. I dreamed dream Teacher:Corrine Key: past tense(过去式)

    In this lesson you will learn to describe an experience.  本课将会学习描述一次经历 课上内容(Lesson) 词汇(Key Word ) # ...

  2. php单例模式的使用场景,使用方法

    一个类只有一个对象实例 1.含义 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2 ...

  3. Django中模型层中ORM的单表操作

    ORM概念: MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  4. python-day73--django-分页

    ''' 批量导入数据:bulk_create Booklist=[] for i in range(100): Booklist.append(Book(title="book"+ ...

  5. MongoDB的管理

    1. 启动和停止MongoDB: 2. 访问控制: 3. 命令行操作: 4. 进程控制: 5. MongoDB的监控: 6. MongoDB数据的导入.导出: 7. MongoDB备份.还原. Mon ...

  6. 基本数据类型list,tuple

    一. 列表 1. 列表是一个可变的数据类型 列表由[]来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象. 列表可以装大量的数据 列表是有序的 2. 列表的索引和切片 列表和字符串一 ...

  7. [NOIP 2015TG D1T3] 斗地主

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  8. stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)

    以后可以考虑的方向,在stealwatch里包含: ad Injector click fraud cryptocurrency miner exploit kit malicious adverti ...

  9. shiro jwt 构建无状态分布式鉴权体系

    一:JWT 1.令牌构造 JWT(json web token)是可在网络上传输的用于声明某种主张的令牌(token),以JSON 对象为载体的轻量级开放标准(RFC 7519). 一个JWT令牌的定 ...

  10. SpringBoot的Profile文件

    1.多Profile文件我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml默认使用application.properties的配置 2. ...