Ошибка создания слоя в layer_factory.hpp

Я пытаюсь извлечь функции, используя caffenet.caffemodel, Я реализую extract_features.cpp в Visual Studio. Моя библиотека caffe также построена как статическая библиотека и содержит ссылку на extract_features.exe, Когда я запускаю код, у меня появляется ошибка как

E0906 02:10:00.842056  4356 extract_features.cpp:74] Using CPU
F0906 02:10:04.035171  4356 layer_factory.hpp:88] Check failed: registry.count(t
ype) == 1 (0 vs. 1) Unknown layer type: ImageData (known types: )
*** Check failure stack trace: ***

Ошибка происходит при layer_factory.hpp

static shared_ptr<Layer<Dtype> > CreateLayer(const LayerParameter& param)
{
if (Caffe::root_solver()) {
LOG(INFO) << "Creating layer " << param.name();
}
const string& type = param.type();
CreatorRegistry& registry = Registry();
CHECK_EQ(registry.count(type), 1) << "Unknown layer type: " << type
<< " (known types: " << LayerTypeListString() << ")";
return registry[type](param);
}

Изначально я думал, что ссылка ошибка. Теперь я посмотрел внимательнее и понял, что не линкерная проблема. В чем может быть ошибка?

3

Решение

Я столкнулся с недавно знакомой проблемой запуска приложения, связанной со статической библиотекой Caffe (скомпилированной в Visual Studio). Там я нашел 2 разных решения:

  1. Добавьте проект Caffe в ваше решение и установите следующий параметр в вашем основном проекте:

    Свойства проекта -> Общие свойства -> Framework и References -> Caffe -> Использовать входы зависимостей библиотеки -> True

Этот метод прост, но иногда мы хотим использовать только caffe.lib без проекта, и вот второй метод.

  1. Создайте заголовочные файлы в своем проекте и добавьте туда все объявления классов слоев внешне, чтобы связать компоновщик с их символами. Смотрите пример ниже:
#include "caffe/common.hpp"namespace caffe
{
extern INSTANTIATE_CLASS(ConvolutionLayer);
extern INSTANTIATE_CLASS(PoolingLayer);
extern INSTANTIATE_CLASS(ReLULayer);
extern INSTANTIATE_CLASS(TanHLayer);
}

Наконец, включите заголовочный файл в ваше приложение, где вы используете caffe.

Также проверьте слой, который вы встретили, упомянутый в вашей проблеме, например, в вашем случае это «ImageData» (или, чтобы быть более исправленным ImageDataLayer), откройте файл «image_data_layer.cpp» в VS и проверьте там, что «REGISTER_LAYER_CLASS (ImageData); » доступен там.

Надеюсь, это поможет решить проблему.

3

Другие решения

убедитесь, что ваше кафе скомпилировано с opencv

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector