gpt4 book ai didi

c++ - 使用 C++ 在 CAFFE 中设置输入层

转载 作者:太空狗 更新时间:2023-10-29 21:37:01 24 4
gpt4 key购买 nike

我正在使用 CAFFE 编写 C++ 代码来预测单个(目前)图像。图片已经过预处理,格式为.png。我创建了一个 Net 对象并读入了经过训练的模型。现在,我需要使用 .png 图像作为输入层并调用 net.Forward() - 但有人可以帮我弄清楚如何设置输入层吗?

我在网上找到了几个示例,但没有一个有效,而且几乎所有示例都使用了已弃用的功能。根据:Berkeley's Net API ,不推荐使用“ForwardPrefilled”,不推荐使用“Forward(vector, float*)”。 API 表明应该“设置输入 blob,然后改用 Forward()”。这是有道理的,但是“设置输入 blob”部分没有展开,而且我找不到一个很好的 C++ 示例来说明如何做到这一点。

我不确定使用 caffe::Datum 是否正确,但我一直在玩这个:

float lossVal = 0.0;
caffe::Datum datum;
caffe::ReadImageToDatum("myImg.png", 1, imgDims[0], imgDims[1], &datum);
caffe::Blob< float > *imgBlob = new caffe::Blob< float >(1, datum.channels(), datum.height(), datum.width());
//How to get the image data into the blob, and the blob into the net as input layer???
const vector< caffe::Blob< float >* > &result = caffeNet.Forward(&lossVal);

同样,我想按照 API 的指示设置输入 blob,然后使用(未弃用的)caffeNet.Forward(&lossVal) 获取结果,而不是使用已弃用的内容。

编辑:

根据下面的回答,我更新了这个:

caffe::MemoryDataLayer<unsigned char> *memory_data_layer = (caffe::MemoryDataLayer<unsigned char> *)caffeNet.layer_by_name("input").get();
vector< caffe::Datum > datumVec;
datumVec.push_back(datum);
memory_data_layer->AddDatumVector(datumVec);

但是现在对 AddDatumVector 的调用出现段错误。我想知道这是否与我的 prototxt 格式有关?这是我的 prototxt 的顶部:

name: "deploy"  

input: "data"
input_shape {
dim: 1
dim: 3
dim: 100
dim: 100
}

layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"

我将这部分问题基于 this discussion关于在 prototxt 中重要的“源”字段......

最佳答案

caffe::Datum datum;
caffe::ReadImageToDatum("myImg.png", 1, imgDims[0], imgDims[1], &datum);
MemoryDataLayer<float> *memory_data_layer = (MemoryDataLayer<float> *)caffeNet->layer_by_name("data").get();
memory_data_layer->AddDatumVector(datum);
const vector< caffe::Blob< float >* > &result = caffeNet.Forward(&lossVal);

像这样的东西可能会有用。在这里,您将不得不使用 MemoryData 层作为输入层。我希望图层名称被命名为 data

datum 变量的使用方式可能不正确。如果我没记错的话,我想,您必须使用基准数据 vector 。

我认为这应该可以帮助您入门。

快乐酿造。 :D

关于c++ - 使用 C++ 在 CAFFE 中设置输入层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637053/

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