百盛娱乐
联系方式
联系电话:18231880660
联系传真:86 0318 18231880660
联系手机:18231880660
联系QQ:852254121
电子邮箱:fdsfde@hotmail.com
联系地址:中国 上海市嘉定区 工业开发区朱戴路588号
当前位置: > 百盛娱乐 > 百盛娱乐

OpenCV+深度进修预练习模子,简略搞定图像辨认 - 教程

作者: admin 来源: 未知 发布时间:2017-09-29
OpenCV+深度学习预训练模型,简略搞定图像识别 | 教程
作者 Adrian Rosebrock
量子位 报道 | 公家号 QbitAI

OpenCV是一个2000年发布的开源盘算机视觉库,有停止物体识别、图像宰割、人脸识别、举措识别等多种功效,可以在Linux、Windows、Android、Mac OS等操作体系上运转,以轻量级、高效着称,且提供多种言语接口。

而OpenCV最近一次版本更新,为我们带来了更好的深度学习支持,在OpenCV中使用预训练的深度学习模型变得无比轻易。

pyimagesearch网站明天发布了一份用OpenCV+深度学习预训练模型做图像辨认的教程,量子位编译收拾如下:

比来,OpenCV 3.3刚正式宣布,对深度学习(dnn模块)供给了更好的支撑,dnn模块今朝支持Caffe、TensorFlow、Torch、PyTorch等深度学习框架。

别的,新版本中使用预训练深度学习模型的API同时兼容C++和Python,让系列操作变得十分简洁:

  • 从硬盘加载模型;

  • 对输出图像停止预处置;

  • 将图像输出网络,获取输入的分类。

当然,我们不克不及、也不应用OpenCV训练深度学习模型,但这个新版本让我们能把用深度学习框架训练好了的模型拿来,高效地用在OpenCV之中。

这篇文章就展现了如何用ImageNet上预训练的深度学习模型来识别图像。

OpenCV 3.3中的深度进修

自OpenCV 3.1版以来,dnn模块始终是opencv_contrib库的一局部,在3.3版中,它被提到了主仓库中。

用OpenCV 3.3,可以很好天时用深度学习预训练模型,将它们作为分类器。

新版OpenCV兼容以下热点收集架构:

  • AlexNet

  • GoogLeNet v1(也叫Inception-5h)

  • ResNet-34/50/…

  • SqueezeNet v1.1

  • VGG-based FCN

  • ENet

  • VGG-based SSD

  • MobileNet-based SSD

该模块的重要奉献者Rynikov Alexander,对这个模块有弘远的打算,不外,他写的release notes是俄语的,感兴致的同窗请自行谷歌翻译着读:https://habrahabr.ru/company/intel/blog/333612/

我以为,dnn模块会对OpenCV社区发生很年夜的影响。

函数和框架

在OpenCV中使用深度学习预训练模型,首先要装置OpenCV 3.3,安装进程量子位就不再具体描写了……

上面是我们将用到的一些函数。

在dnn中从磁盘加载图片:

  • cv2.dnn.blobFromImage

  • cv2.dnn.blobFromImages

用“create”办法直接从各类框架中导出模型:

  • cv2.dnn.createCaffeImporter

  • cv2.dnn.createTensorFlowImporter

  • cv2.dnn.createTorchImporter

使用“读取”方法从磁盘直接加载序列化模型:

  • cv2.dnn.readNetFromCaffe

  • cv2.dnn.readNetFromTensorFlow

  • cv2.dnn.readNetFromTorch

  • cv2.dnn.readhTorchBlob

从磁盘加载完模子之后,能够用.forward方式来向前传布咱们的图像,获取分类成果。

用OpenCV和深度学习给图像分类

接上去,我们来学习若何用Python、OpenCV和一个预训练过的Caffe模型来停止图像识别。

下文用到的深度学习模型是在ImageNet上预训练过的GoogleLeNet,百盛娱乐。GoogleLeNet出自Szegedy等人2014年的论文Going Deeper with Convolutions,概况见:https://arxiv.org/abs/1409.4842

起首,翻开一个新文件,将其定名为deep_learning_with_opencv,百盛娱乐.py,拔出如下代码,来导入我们需要的包:

然后拆解号令行参数:

此中第8行ap = argparse.ArgumentParser()是用来创建参数解析器的,接上去的代码用来创建4个命令行参数:

  • -image:输出图像的门路;

  • -prototxt:Caffe安排prototxt的路径

  • -model:预练习的Caffe模型,例如网络权重等;

  • -labels:ImageNet标签的路径,例如syn-sets。

我们在创立参数之后,将它们解析并存在一个变量args中,供稍后使用。

接上去,加载输出图像和标签:

第20行从磁盘加载了图像,第23行和24行加载了这些标签:

搞定了标签之后,我们来看一下dnn模块:

注意下面代码中的解释,我们使用cv2.dnn.blobFromImage履行mean subtraction来对输出图像停止归一化,从而产生一个已知的blob外形。

然后从磁盘加载我们的模型:

我们用cv2.dnn.readNetFromCaffe来加载Caffe模型界说prototxt,以及预训练模型。

接上去,我们以blob为输出,在神经网络中实现一次正向传播:

请留神:我们不是在训练CNN,而是在应用预训练模型,因而只须要将blob从网络中传递从前,来获取结果,不需要反向流传。

最后,我们来为输出图像掏出5个排名最高的猜测结果:

我们可以用NumPy来拔取排名前5的结果,而后将他们显示出来:

分类结果

我们曾经在OpenCV顶用Python代码完成了深度学习图像识别,当初,可以拿一些图片来试一试。

打开你的终端,执行以下命令:

就会失掉如许的结果:

OpenCV跟GoogleLeNet准确地认出了比格小猎犬,排名第一的结果是正确的,之后的4项结果相干度也很高。

在CPU上运转这个算法,失掉结果也只要要不到一秒钟。

再来一张:

结果如下:

再来:

结果仍然不错:

最后一个例子:

也认得不错:

相关链接

教程原文:
http://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/

相关代码:
在原文下填邮箱获取,或在量子位大众号(QbitAI)对话界面答复“OpenCV”获取。

- 完 -

参加社群

量子位AI社群7群开端招募啦,欢送对AI感兴趣的同学,加小助手微信qbitbot2入群;

此外,量子位专业细分群(主动驾驶、CV、NLP、机械学习等)正在招募,面向正在从事相关范畴的工程师及研讨职员。

进群请加小助手微旌旗灯号qbitbot2,并务必备注响应群的要害词~经过审核后我们将约请进群,百盛娱乐。(专业群审核较严,敬请体谅)

上一篇:没有了
下一篇:没有了

百盛娱乐 百盛娱乐bsfa999 百盛国际娱乐城 百盛娱乐城789

{Copyright 2017 百盛娱乐 All Rights Reserved
联系电话: 联系传真: 电子邮箱: 联系地址: