gpt4 book ai didi

opencv - 如何修改 C++ API 的 Caffe 网络输入?

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:53 25 4
gpt4 key购买 nike

我正在尝试通过 C++ API 使用 MINST Caffe 示例,但在弄清楚如何重构我将在训练后部署的网络 prototxt 文件时遇到了一些麻烦。我已经使用原始文件 ( lenet_train_test.prototxt ) 训练和测试了模型,但是当我想部署它并像 C++ and OpenCV example 中那样进行预测时, 我意识到我必须修改输入部分以使其类似于 deploy.prototxt他们有文件。

能否将lenet_train_test.prototxt中训练层和测试层的信息替换成deploy.prototxt文件的这一部分?

name: "CaffeNet"
input: "data"
input_shape {
dim: 10
dim: 3
dim: 227
dim: 227
}

我将传递给网络进行分类的图像将是灰度和 24*24 像素,我还想像对 MINST 数据集所做的那样对其进行缩放,那么我可以将部分修改为这个吗?

name: "CaffeNet"
input: "data"
input_shape {
dim: 10
dim: 1
dim: 24
dim: 24
}
transform_param {
scale: 0.00390625
}

虽然我不完全确定“dim: 10”是什么来的。

最佳答案

为了将您的train_val prototxt“转换”为deploy,您删除了输入数据层(读取您的train/val 数据)并将它们替换为声明

name: "CaffeNet"
input: "data"
input_shape {
dim: 10
dim: 1
dim: 24
dim: 24
}

请注意,deploy prototxt 没有两个阶段来训练和测试一个单一的风格。
用这个声明替换输入数据层基本上告诉 caffe 你负责提供数据,网络应该为这种大小的输入分配空间。

关于规模:一旦您部署您的网络,网络就无法控制输入 - 它不会为您读取数据作为 train_val 网。因此,您必须在将输入数据提供给网络之前自行缩放输入数据。您可以使用 DataTransformer类来帮助您以与训练期间相同的方式转换输入 blob。

关于第一个 dim: 10:caffe 中的每个 Blob(即数据/参数存储单元)都有 4 个维度:batch-size、channels、height 和 width。这个参数实际上意味着网络应该一次为 10 个输入的批处理分配空间。
“神奇”数字 10 来自 googlenet 和 ILSVRC 挑战赛中的其他参赛者用于对图像进行分类的方式:他们对每张图像进行 10 次裁剪,并对输出进行平均以产生更好的分类结果。

关于opencv - 如何修改 C++ API 的 Caffe 网络输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com