Caffe:如何使用已经训练好的模型一次检查多个数据集的准确性?

     2023-03-13     68

关键词:

【中文标题】Caffe:如何使用已经训练好的模型一次检查多个数据集的准确性?【英文标题】:Caffe: How to check accuracies of multiple Data sets with already trained model at a time? 【发布时间】:2016-11-04 13:41:12 【问题描述】:

在 Caffe 框架中使用 2 个类别的 10k 图像训练 LeNet 模型后,我得到了包含权重和偏差的模型 lenet_iter_4000.caffemodel。我想一次检查 5k 新测试图像(在训练时不属于测试图像的一部分)的准确性。我为所有这些 5k 图像创建了 lmdb 文件。我知道如何使用以下方法测试图像。

./build/tools/caffe test --model=examples/mnist/lenet_train_test.prototxt --weights=examples/mnist/lenet_iter_4000.caffemodel

但是我无法一次获得准确度,例如在训练时如果我们输入 test_interval 3000 将获得准确度,我们将在 3000 迭代后获得所有测试图像的准确度。如果我想在训练后的某个时间测试准确性,我必须在 prototxt 中进行更改。 我的问题是:如何在使用经过训练的模型进行训练后获得多个数据集的准确性?

【问题讨论】:

【参考方案1】:

一种快速的解决方案是在训练时获得多个数据集的准确度。您可以通过修改您的solver.prototxt和net.prototxt来实现这一点,如下所示,更具体地说是在solver.prototxt中使用多个“test_state”和多个具有不同“include:stage:”xxx“”的数据层net.prototxt 用于测试多个数据集:

solver.prototxt:

net: "lenet_train_test.prototxt"
#testing stage for your orininal test images
test_state:  stage: "original test" 
#testing stage for your new test images
test_state:  stage: "new 5k test" 
#iterations for original testing
test_iter: xxx
#iterations for your new 5k testing
test_iter: xxx
#Those 2 testings use the same test_interval
test_interval: 500

对应的net.prototxt:

name: "LeNet"
layer 
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include 
    phase: TRAIN
  
  transform_param 
    scale: 0.00390625
  
  data_param 
    source: "examples/mnist/mnist_train_lmdb"
    batch_size: 32
    backend: LMDB
    shuffle: true
  

layer 
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include 
    phase: TEST
    stage: "original test"
  
  transform_param 
    scale: 0.00390625
  
  data_param 
    source: "examples/mnist/mnist_test_lmdb"
    batch_size: 100
    backend: LMDB
  

layer 
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include 
    phase: TEST
    stage: "new 5k test"
  
  transform_param 
    scale: 0.00390625
  
  data_param 
    source: "path/to/your/5k_images_test_lmdb"
    batch_size: 100
    backend: LMDB
  

.
.
.
layer 
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include 
    phase: TEST
  

layer 
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"

并像微调一样使用它们:

./build/tools/caffe train --solver=examples/mnist/solver.prototxt --weights=examples/mnist/lenet_iter_4000.caffemodel

在第 0 次迭代时,求解器将测试多个数据集,您将获得它们的多个精度,然后可以停止求解器。

【讨论】:

我想在使用经过训练的模型进行训练后获得多个数据集的准确度。 您的问题的快速解决方案可以是这样的:/build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt --weights=examples/mnist/lenet_iter_4000.caffemodel。 lenet_solver.prototxt 和相应的 net.prototxt 应该像我的回答一样修改。 我明白,但我已经训练了几个小时的模型。我想使用该模型进行测试,以节省时间。我已经为 LeNet 提供了示例。但我已经为 1 训练了 AlexNet 模型day.我想使用经过训练的 Alexnet 模型进行测试。 在第 0 次迭代中,求解器将测试您的 2 个数据集,包括您的 5k 图像,您将获得它们的准确度。然后你可以阻止它。这是我能想到的最快的方法。否则,您应该修改 caffe.cpp 中的 test() 函数,就像 Solver::Init() 所做的那样,以维护多个网络进行测试,这有点微不足道。 @BHAV247 Alexnet模型用于测试的解决方案与lenet相同,只是修改sovler.prototxt添加“test_state”和alexnet.prototxt为你的5k测试图像添加一个数据层。测试时间一点也不长。 @BHAV247【参考方案2】:

只要用caffe的测试工具,检查the interface examples

我来晚了,但是想知道如何将训练模型仅用于测试目的的人可以使用 caffe 的测试工具。如果您训练了模型,并计划在之后使用它,那么您应该在每次迭代时保存权重。我们将最终保存的权重命名为 model_iter_xxxx.caffemodel。

    将模型复制到 model_test.prototxt(例如)

    添加要在测试阶段考虑的层,即用于测试数据的输入层和准确性层。

    运行:caffe test -model path/to/model_test.prototxt -weights path/to/model_iter_xxxx.caffemodel -iterations 100

【讨论】:

如何调用caffe已经训练好的net

...的办法是看examples/cpp_classification里面的cpp文件,那是教你如何调用caffe获取分类结果的...(你没接触过caffe的话,建议你直接按照这个文件来操作可能会比较简单,下面我的代码我也不知道没接触过caffe的人看起来难度会有多大)... 查看详情

caffec++中使用训练好的caffe模型,classification工程生成动态链接库——caffe学习六(代码片段)

除了在opencvdnn中使用训练好的model,还可以直接通过classification.exe去查看单张图的训练结果。但是我在使用opencvdnn的时候,发现里面输出的结果和classification.exe并不一样,一时找不到原因,于是还是考虑将classificat... 查看详情

如何用tensorflow训练模型成pb文件和和如何加载已经训练好的模型文件

参考技术A基本使用使用TensorFlow,你必须明白TensorFlow:使用图(graph)来表示计算任务.在被称之为会话(Session)的上下文(context)中执行图.使用tensor表示数据.通过变量(Variable)维护状态.使用feed和fetch可以为任意的操作(arb... 查看详情

如何利用bing算法训练自己的模型

参考技术A  在MNIST调用已经训练好的模型,测试。  这个测试,假定可能是新加入的测试集,还是按照原来的需求转换,存放数据到指定的位置。  ./build/tools/caffe.bintest-model=examples/mnist/lenet_train_test.prototxt-weights=examples/mnis... 查看详情

如何使用opencvdnn模块调用caffe预训练模型?(代码片段)

QStringmodelPrototxt="D:\\Qt\\qmake\\CaffeModelTest\\caffe\\lenet.prototxt";QStringmodelBin="D:\\Qt\\qmake\\CaffeModelTest\\caffe\\snapshot_iter_10000.caffemodel";QStringimageFile= 查看详情

如何使用已经训练好的模型和 Gensim (GoogleNews-vectors-negative300.bin) 嵌入数据框

】如何使用已经训练好的模型和Gensim(GoogleNews-vectors-negative300.bin)嵌入数据框【英文标题】:HowtoEmbedyourDataframeusingalreadytrainedmodelwithGensim(GoogleNews-vectors-negative300.bin)【发布时间】:2020-06-0413:27:22【问题描述】:我正在关注这个tutori... 查看详情

怎样用自己的数据集对caffe训练好的model进行fineture

参考技术A建议使用已有model进行finetune,新手从头开始做经常会不收敛。进一步的话可以在现有的比较好的网络结构上进行修改,使之符合自己的需求。最难的就是从零开始设计训练网络模型。题主可以体验一下从零开始设计训... 查看详情

如何将经过训练的 caffe 模型以 h5 格式加载到 c++ caffe 网络?

】如何将经过训练的caffe模型以h5格式加载到c++caffe网络?【英文标题】:Howtoloadtrainedcaffemodelinh5formattoc++caffenet?【发布时间】:2017-07-0907:38:28【问题描述】:正常训练的caffe模型是.caffemodel扩展名,实际上它们是binaryprotobuf格式。... 查看详情

如何使用 tensorflow 微调训练好的模型和保存的模型?

】如何使用tensorflow微调训练好的模型和保存的模型?【英文标题】:Howtofinetuneatrainedmodelandsavedmodelwithtensorflow?【发布时间】:2021-10-0614:20:08【问题描述】:我有一个大数据集,我想通过这个数据集训练efficientnetb0,但是googlecolab... 查看详情

如何检查 CalibratedClassifierCV BaseEstimator 参数

】如何检查CalibratedClassifierCVBaseEstimator参数【英文标题】:HowtoinspectCalibratedClassifierCVBaseEstimatorparameters【发布时间】:2021-03-0522:56:30【问题描述】:我的任务是检查和比较由其他人开发的两个已经训练好的机器学习模型。模型的... 查看详情

如何针对训练好的模型使用测试数据?

】如何针对训练好的模型使用测试数据?【英文标题】:Howtousethetestdataagainstthetrainedmodel?【发布时间】:2018-12-2907:49:26【问题描述】:我是机器学习的初学者,我正在参加泰坦尼克号比赛。起初,我的模型给了我1.0的准确度,这... 查看详情

caffe2----下载现成的模型并使用

...型可在ModelZoo下载,下载的命令很简单,接下来以下载和使用squeezenet为例,进行简单说明。 1.浏览可下载的模型已有模型都放在github上,地址:https://github.com/caffe2/caffe2/wiki/Model-Zoo,当前有caffe和caffe2两种版本的选择。 2.... 查看详情

caffe的学习和使用·一」--使用caffe训练自己的数据

...做?用caffe训练自己的数据,必须解决的问题有两个:1.如何输入数据,2.如何定义输出首先我们解决第一个问题:训练数据的输 查看详情

如何将更多图像输入到 caffe 模型中?

】如何将更多图像输入到caffe模型中?【英文标题】:Howcanifeedmoreimagesintoacaffemodel?【发布时间】:2019-12-1523:32:26【问题描述】:我有一个训练有素的caffe模型,其中包含下一个文件:deploy.prototxtmean_value.txtmodel.caffemodel如何向其中... 查看详情

如何训练 ML 模型? [复制]

】如何训练ML模型?[复制]【英文标题】:HowtotrainanMLmodel?[duplicate]【发布时间】:2017-12-3100:08:54【问题描述】:正如您现在所看到的,Apple在今年的WWDC中为iOS11引入了CoreML。该框架以特定格式使用已训练的ML模型,如果您的源模型... 查看详情

5:使用caffe对自己的图像数据进行训练并测试

使用caffe对自己的图像数据进行训练并测试之前实践的一些步骤诸如数据集的准备、数据集的转换等过程都是为了训练我们所需要的模型进行铺垫,我们学习caffe的核心目的是使用caffe对我们自己的数据集进行训练,得到... 查看详情

如何使用tf训练好的模型

参考技术A  1、将mnist.tflite模型放在assets文件夹下。  2、更新build.gradle以包含tflite依赖项。  3、为用户创建自定义视图。  4、创建一个进行数字分类的分类器。  5、从自定义视图输入图像。  6、图像预处理。 ... 查看详情

caffe训练好的网络对图像分类

...:彩色or灰度图片 做minist下手写识别分类,不能直接使用,需去除均值图像,同时将输入图像像素归一化到0-1直接即可。              #include<caffe/caffe 查看详情