美文网首页
能见度进行分类

能见度进行分类

作者: 活体检测业余爱好 | 来源:发表于2017-06-30 16:38 被阅读52次

使用caffeNet分类:

主文件夹:/home/echo/caffe-master/examples/visionClass
网址:blog.csdn.net/liumaolincycle/article/details/48475479
参考:《Caffe的Mnist分类简单流程.docx》

训练模型

examples/visionClass/train_caffenet.sh

copy caffeNet的deploy.prototxt,并且改一下:num_output: 5

运行bp2npy.py文件,将C++可识别的mean.binaryproto的均值文件变成python可识别的.npy文件,代码:

#coding:utf-8
import caffe
import numpy as np
MEAN_PROTO_PATH = 'examples/cifar10/mean.binaryproto' # 待转换的 pb格式图像均值文件路径
MEAN_NPY_PATH = 'examples/cifar10/mean.npy' # 转换后的 numpy格式图像均值文件路径
blob = caffe.proto.caffe_pb2.BlobProto()# 创建protobuf blob
data = open(MEAN_PROTO_PATH, 'rb' ).read()# 读入mean.binaryproto文件 内容
blob.ParseFromString(data)# 解析文件内容到blob
array = np.array(caffe.io.blobproto_to_array(blob))# 将blob中的均值转换成numpy 格式,array的shape (mean_number,channel, hight, width)
mean_npy = array[0] # 一个array中可以有多组均值存 在,故需要通过下标选择其中一组均值
np.save(MEAN_NPY_PATH ,mean_npy)



补充:

关于训练时候图像增强的几点:

mirror: true
crop_size: 227
对图像进行增强用的,应该是网络有固定的输入大小就是227,这样可以将图像增强很多倍

关于classify.py有几点疑问:

(1)均值文件:之前训练的时候的均值文件是训练样本的均值,测试的时候需要的均值文件就是原来训练集的均值文件;
(2)下面应该是输入图像进网络之前会下采样至256*256,甚至执行create_imagenet.sh制作lmdb图片格式的时候就应经是讲图片设置为256*256了。

"--images_dim",default='256,256',help="Canonical 'height,width' dimensions of input images."

(3)下面就是说有两种方式,一种是直接去只从中间crop一下,根据真个判定类别,另一种是四个角落,以及中间五个地方同时判定,取平均

"--center_only",action='store_true',help="Switch for prediction from center crop alone instead of " +"averaging predictions across crops (default)."


单张测试:

echo@echo-PC:~/caffe-master$ python python/classify.py --model_def examples/visionClass/deploy.prototxt --pretrained_model examples/visionClass/caffenet_train/iter_50000.caffemodel --mean_file examples/visionClass/mean.npy --center_only --gpu examples/visionClass/visibData/4/YzPic20160407095646.bmp classOut

出错:ValueError: Mean shape incompatible with input shape.估计还是得把图片变成一定大小的

blog.csdn.net/fangjin_kl/article/details/50936925

if ms != self.inputs[in_][1:]:
  print(self.inputs[in_])
  in_shape = self.inputs[in_][1:]
  m_min, m_max = mean.min(), mean.max()
  normal_mean = (mean - m_min) / (m_max - m_min)
  mean = resize_image(normal_mean.transpose((1,2,0)),
  in_shape[1:]).transpose((2,0,1)) * \
  (m_max - m_min) + m_min

(10,3,227,227)应该是print(self.inputs[in_]) 这句话输出的,我估计10指的是四边以及中间,然后再镜像

echo@echo-PC:~/caffe-master$ python python/classify.py --model_def examples/visionClass/deploy.prototxt --pretrained_model examples/visionClass/caffenet_train/iter_50000.caffemodel --mean_file examples/visionClass/mean.npy --center_only --gpu examples/visionClass/visibData/4/YzPic20160407095646.bmp classOut

之后结果生成:classOut.npy的文件,保存各类的置信度,可以这样去查看内容

>>> import numpy as np
>>> np.load("classOut.npy")
array([[  6.56269421e-08,  3.51868638e-11,  1.38281503e-05,
3.01185180e-03,  9.96974230e-01]], dtype=float32)
>>>

但是最好通过以下方式去直观看到, 用我改进版的classify Visionclass.py

echo@echo-PC:~/caffe-master$ python python/classifyVisionclass.py --print_results --model_def examples/visionClass/deploy.prototxt --pretrained_model examples/visionClass/caffenet_train/iter_50000.caffemodel --mean_file examples/visionClass/mean.npy --labels_file examples/visionClass/synset_words.txt  --center_only --gpu examples/visionClass/visibData/4/YzPic20160407095646.bmp classOut

批量测试准确率:

./build/tools/caffe test --model examples/visionClass/train_val.prototxt --weights examples/visionClass/caffenet_train/iter_50000.caffemodel --gpu 0

结果:

I0609 14:53:45.144374  4707 caffe.cpp:313] Loss: 0.494232
I0609 14:53:45.144385  4707 caffe.cpp:325] accuracy = 0.8104
I0609 14:53:45.144395  4707 caffe.cpp:325] loss = 0.494232 (* 1 = 0.494232 loss)
echo@echo-PC:~/caffe-master$

训练过程画出loss曲线,类似如下,最后对log文件进行解析就好,暂时不做,请参考《Python 训练caffe之loss曲线绘制》

/home/echo/caffe-master/build/tools/caffe train --solver=/home/echo/caffe-master/examples/mnist/lenet_solver.prototxt --gpu all 2>&1 |tee out.log

相关文章

  • 能见度进行分类

    使用caffeNet分类: 主文件夹:/home/echo/caffe-master/examples/visio...

  • 2018-02-23

    题库分类管理 1、题库分类主要是将题库中所有试题进行分类,而题库分类管理则可以对分类进行新增、编辑、删除。 2、题...

  • 毅滨04.04日精进第1261天

    体验入:今天做菜品分析,将所有菜品进行价格分类、菜系分类、口味分类、原料分类等进行分析并聚焦产品、客群. 找核心:...

  • 文本分类;数据增强;模型微调 2020-02-25

    文本分类 文本情感分类数据集 使用循环神经网络进行情感分类 使用卷积神经网络进行情感分类文本分类是自然语言处理的一...

  • 对问题进行分类

    有效的决策人首先需要辨明问题的性质:是一再发生的经常性问题呢,还是偶然的例外?换言之,某一问题是否为另一个一再发生...

  • 将思考进行分类

    1.我们平常思考的时候总是脑子里面会产生万千的思绪,什么类型的想法都有,导致我们脑子里的想法搅成一团,不能高效思考...

  • 利用TensorFlow进行分类

    使用tensorflow进行单词划分类别,依赖于sklearn自带的已经标注好的数据集(有监督学习) 参考http...

  • Rx 构造操作符分类

    前言 这里的分类指的是按照实现原理分类,而不是按照功能进行分类,针对每一个分类选择一个具体类型,进行分析 Over...

  • 323 袁春楠说:如何对工作进行分类1

    Hello,你好。当我们知道如何对身边物品进行分类后,同样也要学习对日常接手的工作进行分类。不同的分类标准,会推动...

  • 机器学习之分类器

    0、分类器热身,NextStep比较懒,直接看图 分类分类,先分解再分类,比如,疾病分类模型先将病情的表现信息进行...

网友评论

      本文标题:能见度进行分类

      本文链接:https://www.haomeiwen.com/subject/dekicxtx.html