谷歌图片识别在线_图像识别库

谷歌图片识别在线_图像识别库 一、准备模型在这里,我们利用已经训练好的Googlenet进行物体图像的识别,进入Googlenet的GitHub地址,进入models文件夹,选择Googlenet点击Googlenet的模型下载地址下载该模型到电脑中。模型结构在这里,我们利用之前讲到的网络模型绘制网站画出Googlenet…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、准备模型

在这里,我们利用已经训练好的Googlenet进行物体图像的识别,进入Googlenet的GitHub地址,进入models文件夹,选择Googlenet
在这里插入图片描述
点击Googlenet的模型下载地址下载该模型到电脑中。

模型结构

在这里,我们利用之前讲到的网络模型绘制网站画出Googlenet的结构图如下:
在这里插入图片描述

  • 在这里,pad就是给图像补零,pad:2就是补两圈零的意思;

  • LRN就是局部相应归一化,利用LRN可以提高模型识别的准确率;

  • Inception结构中,不同大小的卷积核意味着不同大小的感受野,最后的合并意味着不同尺度特征的融合。采用1,3,5为卷积核的大小,是因为使用步长为1,pad=0,1,2的方式采样之后得到的特征平面大小相同;

  • concat层用来合并数据,在这里合并的条件是数据的后三个参数要相同,所以在前面的inception结构中,我们使用了不同的卷积核大小和pad。

准备图片

在这里,我们找几张任意图片,然后放入Googlenet的文件夹下,,作为待识别的图片。
在这里插入图片描述

准备synset_words.txt文件

synset_words.txt是用来将物体的类别序号进行对应的文件,在识别过程中,我们先是得到序号,然后根据这个序号找到对应的物体种类。

使用python接口调用GoogleNet实现图像识别

在这里,我们用jupyter打开Googlenet.图像识别.ipynb文件,这里部分代码如下:

import caffe
import numpy as np
import matplotlib.pyplot as plt
import os
import PIL
from PIL import Image
import sys

#定义Caffe根目录
caffe_root = ‘E:/caffe-windows/’
#网络结构描述文件
deploy_file = caffe_root+‘models/bvlc_googlenet/deploy.prototxt’
#训练好的模型
model_file = caffe_root+‘models/bvlc_googlenet/bvlc_googlenet.caffemodel’

#cpu模式
caffe.set_mode_cpu()

#定义网络模型
net = caffe.Classifier(deploy_file, #调用deploy文件
model_file, #调用模型文件
mean=np.load(caffe_root +‘python/caffe/imagenet/ilsvrc_2012_mean.npy’).mean(1).mean(1), #调用均值文件
channel_swap=(2,1,0), #caffe中图片是BGR格式,而原始格式是RGB,所以要转化
raw_scale=255, #python中将图片存储为[0, 1],而caffe中将图片存储为[0, 255],所以需要一个转换
image_dims=(224, 224)) #输入模型的图片要是224*224的图片

#分类标签文件
imagenet_labels_filename = caffe_root +‘models/bvlc_googlenet/synset_words.txt’
#载入分类标签文件
labels = np.loadtxt(imagenet_labels_filename, str, delimiter=’\t’)

#对目标路径中的图像,遍历并分类
for root,dirs,files in os.walk(caffe_root+‘models/bvlc_googlenet/image/’):
for file in files:
#加载要分类的图片
image_file = os.path.join(root,file)
input_image = caffe.io.load_image(image_file)

    <span class="token comment">#打印图片路径及名称</span>
    image_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>root<span class="token punctuation">,</span><span class="token builtin">file</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span><span class="token punctuation">(</span>image_path<span class="token punctuation">)</span>
    
    <span class="token comment">#显示图片</span>
    img<span class="token operator">=</span>Image<span class="token punctuation">.</span><span class="token builtin">open</span><span class="token punctuation">(</span>image_path<span class="token punctuation">)</span>
    plt<span class="token punctuation">.</span>imshow<span class="token punctuation">(</span>img<span class="token punctuation">)</span>
    plt<span class="token punctuation">.</span>axis<span class="token punctuation">(</span><span class="token string">'off'</span><span class="token punctuation">)</span>
    plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span>
    
    <span class="token comment">#预测图片类别</span>
    prediction <span class="token operator">=</span> net<span class="token punctuation">.</span>predict<span class="token punctuation">(</span><span class="token punctuation">[</span>input_image<span class="token punctuation">]</span><span class="token punctuation">)</span>
    <span class="token keyword">print</span> <span class="token string">'predicted class:'</span><span class="token punctuation">,</span>prediction<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>argmax<span class="token punctuation">(</span><span class="token punctuation">)</span>

    <span class="token comment"># 输出概率最大的前5个预测结果</span>
    top_k <span class="token operator">=</span> prediction<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>argsort<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span>
    <span class="token keyword">for</span> node_id <span class="token keyword">in</span> top_k<span class="token punctuation">:</span>     
        <span class="token comment">#获取分类名称</span>
        human_string <span class="token operator">=</span> labels<span class="token punctuation">[</span>node_id<span class="token punctuation">]</span>
        <span class="token comment">#获取该分类的置信度</span>
        score <span class="token operator">=</span> prediction<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span>node_id<span class="token punctuation">]</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'%s (score = %.5f)'</span> <span class="token operator">%</span> <span class="token punctuation">(</span>human_string<span class="token punctuation">,</span> score<span class="token punctuation">)</span><span class="token punctuation">)</span>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

执行上述代码即可输出对物体种类的预测概率
在这里插入图片描述
最终得到的预测结果是根据可能性大小列出五个种类

        </div>
					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-2b43bc2447.css" rel="stylesheet">
            </div>
								<div class="hide-article-box text-center">
					<a class="btn" id="btn-readmore" data-track-view="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/dagongsmallguy/article/details/83351025,&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/dagongsmallguy/article/details/83351025,&quot;}">阅读更多</a>
				</div>
				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
										if(!window.csdn.anonymousUserLimit.judgment()){
											window.csdn.anonymousUserLimit.Jumplogin();
											return false;
										}else if(!currentUserName){
											window.csdn.anonymousUserLimit.updata();
										}
									}
									
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170449.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • RAID0、RAID1及RAID5的区别详解

    RAID0、RAID1及RAID5的区别详解目前已有的RAID(RedundantArrayofIndependentDisks,独立冗余磁盘阵列)技术有很多种,但是RAID0、RAID1、RAID5是最常见的几种方案。1、RAID0RAID0技术把多块(至少两块)物理硬盘设备通过软件或硬件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样,在最理想的情况下,硬盘设备的读写性能会提升数倍,但是若任意一…

  • linux命令行怎么结束进程,linux结束进程命令「建议收藏」

    linux命令行怎么结束进程,linux结束进程命令「建议收藏」linux下进程的开启与结束都可以通过命令来控制,下面由学习啦小编为大家整理了linux下结束进程命令的相关知识,希望对大家有所帮助。linux结束进程命令1.killkill[信号代码]根据PID向进程发送信号,常用来结束进程,默认信号为-9信号代码,可取值如下:-l[信号数字]显示、翻译信号代码-9,-KILL发送kill信号退出-6,-ABRT发送abort信号…

    2022年10月30日
  • 2021年电子设计大赛预测–球形机器人设计方案

    随着2021年电赛的临近和清单的出炉,各参赛队伍都在紧张的备赛当中。然而在电赛清单中,我们能看到一个比较特别的器件–空心透明球。这个器件的特别之处在于它的吃尺寸过大,以至于让人摸不着头脑。在网上看过很多预测,关于这个球的预测大家也是众说纷纭。那么现在就根据预测的最多的一种情况–球形机器人,来进行简单的设计方案分析。准备材料三个直流电机,一个舵机,飞轮一片,空心透明亚克力球(直径在20~30cm),TB6612电机驱动模块两片,STM32F1最小系统板一块,杜邦线若…

  • WebLogic的下载与安装

    WebLogic的下载与安装一、WebLogic的介绍WebLogic是美国bea公司出品的一个applicationserver,确切的说是一个基于Javaee架构的中间件,纯java开发的,最新版本WebLogicSe

  • SpringBoot集成Spring Security(1)——入门程序

    SpringBoot集成Spring Security(1)——入门程序因为项目需要,第一次接触SpringSecurity,早就听闻SpringSecurity强大但上手困难,今天学习了一天,翻遍了全网资料,才仅仅出入门道,特整理这篇文章来让后来者少踩一点坑(本文附带实例程序,请放心食用)预警:如果你仅仅是学习一个安全框架,不推荐使用SpringSecurity!!!!推荐学习ApacheShiro,配置简单易上手,该有功能它都有,可以…

  • python ip池(python 连接池)

    ,都说标题是文章的灵魂,想了半天没想到什么比较有创意的标题,只好拿一个去年的爆款标题套一下。啊哈哈哈哈哈哈,朕真是太机智了这是一篇介绍如何使用python搭建IP池的文章,如果爱卿对此不感兴趣,那很抱歉,标题耽误了你宝贵的时间。事情的起因是这样,前段时间我写了一篇介绍如何爬取小说的blog【python那些事.No2】,在爬取的过程中,发现同一个IP连续只能获取前几页小说内容,原本是想搭建…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号