# -*- coding: utf-8 -*-
"""
Created on Fri Apr 6 09:33:13 2018
@author: Daniel
"""
import caffe
import numpy as np
import PIL
from PIL import Image
import matplotlib.pyplot as plt
import os
import sys
#定义相关文件路径
caffe_root = 'F:/GitHub/caffe_sub/caffe/'
deploy_file = caffe_root + 'models/bvlc_googlenet/deploy.prototxt'
model_file = caffe_root + 'models/bvlc_googlenet/bvlc_googlenet.caffemodel'
#设置训练模式
caffe.set_mode_cpu()
#定义网络模型
net = caffe.Classifier(deploy_file,
model_file,
mean=np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=255,#python中的像素取值范围是0-1,而caffe中图片是0-255,故需要一个转换
image_dims=(224,224))
#分类标签文件
imagenet_labels_filename = caffe_root + 'models/bvlc_googlenet/synset_words.txt'
labels = np.loadtxt(imagenet_labels_filename, str, delimiter = '\t')#载入标签,类型为string,分隔符为制表符
##对目标中的图像进行遍历并分类
for root, dir, files in os.walk(caffe_root + 'models/bvlc_googlenet/image/'):
for file in files:
#加载要分类的图片
image_file = os.path.join(root,file)#组合root和file,使之成为root/file
input_image = caffe.io.load_image(image_file)#加载图片
#打印图片路径及名称
image_path = os.path.join(root, file)
print(image_path)
#显示图片
img = Image.open(image_path)#将图片转换为PIL图像
plt.imshow(img)#将PIL图像传入,返回AxesImage(坐标图像)
plt.axis('off')#关闭坐标
plt.show()#显示图像
#预测分类
prediction = net.predict([input_image])
#输出概率前五的预测结果
top_five = prediction[0].argsort()[-5:][::-1]#[::-1]是对当前序列取到数操作
for i in top_five:
#获取分类名称
class_string = labels[i]
#获取置信度
score = prediction[0][i]
print('%s (score = %.5s)' % (class_string, score)) 英文官方文档:http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb 导入python caffe包 加载网络,创建输入处理 使用python caffe.io.loadImage接口读取图片,返回的是[0-1]返回的np.float32数组 pyt...
使用训练好的Caffe模型可以直接通过调用Caffe的Classifier文件,具体代码如下: 注意,如果训练网络时减去了均值文件,那么用图片进行demo也需要减均值文件,且必须是.npy文件,而不是训练时所用.binaryproto的二进制文件。 至于.binaryproto转.npy可以参考以下代码(convert_mean.py): 将该脚本放到和二进制均值文件相同路径下,通过cmd执行以下...
我们如何运用已经训练好的模型进行语音识别呢?这才是我们研究的目的啊,是不? 很好,细心的你一定会发现kaldi源码src目录中有online*相关的模块,这就是我们今天的主角啦!!! Kaldi中有两个版本的online、online2分别是第一代、第二代,现在已经不维护online,转到online2了,但作为我们入门的,我建议还是选择online,由简入深嘛!!! 默认kaldi是不会编译on...
大佬原文链接 大佬代码可以直接用,只需简单修改即可 依次为:要预测的遥感图像、训练好的模型、预测结果大图 预测后大图像可能全黑色,原因是像素灰度值为0或1,因此需要进行一下后处理。 下面实现代码比较老套,也可以对大图拼接代码进行修改。...
图像识别大致可以分为这么几步: 1.对训练图片进行预处理 2.对预处理的图片进行Hog特征提取 3.使用SVM分类器对特征进行分类形成模型 4.根据模型对测试图片进行预测 以下都是通过openCV实现(若直接使用openCV提取Hog特征可直接跳过预处理阶段直接看Hog特征提取阶段): 预处理阶段: 1.图像的灰度化处理 2.灰度化的图片进行gamma校正 3.计算图像梯度 Hog特...
如下代码调试验证OK 点击打开链接...
如下代码调试验证OK...
任务 数据集来自https://blog.csdn.net/hahajinbu/article/details/72877998 有68个人,每个人有若干张照片。编写CNN模型来分辨某张照片是哪一个人 模型 使用sqeeze net模型,来自论文官方github的keras实现 https://github.com/DT42/squeezenet_demo 生成数据 注意cnn要3维图像,nump...
如何搭建caffe环境已经在之前的文章中介绍了,有需要的可以自行回顾。 一、准备数据集 首先是准备好要用到的图片数据集,目前随机选用了五类水果:苹果、草莓、香蕉、火龙果、猕猴桃来作为图像识别的测试案例(事实证明,这个看似随机的选择在后续暴露出了caffe使用会遇到的问题,有点巧了)。图片是我从百度图片中随机挑选下载的,总共250张,其中每类50张,分割为10张测试集和40张训练集。 选择完图片集后...