не могу загрузить обученную модель caffe с помощью opencv readnetfromcaffe - PullRequest
0 голосов
/ 26 апреля 2018

Недавно я построил цифры из этого урока , все в порядке, и я наконец-то обучил свою модель AlexNet (также обучил SqueezNet, чтобы я мог загрузить модель здесь)! проблема в том, что когда я загружаю свою модель из Digits, я не могу загрузить ее в свою программу для тестирования! Я проверил свою программу с помощью GoogleNet, скачав по этой ссылке , и она работает нормально! Я использую OpenCV readNetFromCaffe в этой функции для загрузки модели Caffe

void deepNetwork::loadModel( cv::String  model ,cv::String  weight ,string lablesPath,int ps){
patchSize=ps;
labeslPath=lablesPath;
 try
{
    net = dnn::readNetFromCaffe(weight,model);
    cerr<<"loaded succ"<<endl;
}
catch (cv::Exception& e)
{
    std::cerr << "Exception: " << e.what() << std::endl;

}}

Я получаю следующую ошибку при загрузке моей модели

Ошибка OpenCV: утверждение не выполнено (pbBlob.raw_data_type () == caffe :: FLOAT16) в цвету
bFromProto, файл / Главная / NVIDIA / строить-OpenCV / OpenCV / модули / DNN / SRC / кофейная / caffe_im
porter.cpp, строка 242 Исключение: / Главная / NVIDIA / строить-OpenCV / OpenCV / модули / DNN / SRC / кофейная / caffe_importer .cpp: 242: ошибка: (-215) pbBlob.raw_data_type () == caffe :: FLOAT16 in функция Blo
bFromProto

Ошибка OpenCV: запрошенный объект не найден (запрошенный BLOB-объект «data») не найден) я
n setInput, file /home/nvidia/build-opencv/opencv/modules/dnn/src/dnn.cpp, строка
1606 прекращение вызова после выброса экземпляра 'cv :: Exception'
какие(): /home/nvidia/build-opencv/opencv/modules/dnn/src/dnn.cpp:1606: ошибка: (-204) Запрошенный блоб «data» не найден в функции setInput

Прервано (ядро сброшено)

любая помощь будет оценена <3 </p>

opencv версии 3.3.1 также тестировался на (3.3.0, 3.4.1) ту же ошибку! тестирование в системе без Cuda, Cudnn или Caffe, просто чистый C ++ и OpenCv ... но я натренировал свою модель на экземпляре aws ec2 (p3.2xlarge) с Cuda, Cudnn и caffe!

Вы можете скачать обученную модель squeezNet (.prototxt и .caffemodel) здесь

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Модель OpenCV DNN предполагает использование модели в формате BVLC. Но NVCaffe хранит модель caffe в более эффективном формате, который отличается от BVLC Caffe. Если вам нужна модель, совместимая как с BVLC / Caffe, так и с NVcaffe.

Добавить этот флаг в solver.prototxt store_blobs_in_old_format = true

Пожалуйста, прочитайте документацию DIGITS NVCaffe. Документация NVCaffe - store_blobs_in_old_format

0 голосов
/ 30 апреля 2018

наконец я нашел проблему! это проблема версии, у меня есть цифры 6.1.1, работающие с nvcaffe 0.17.0 для обучения, которое не совместимо с предыдущими библиотеками Caffe и OpenCv! вам нужно понизить NvCaffe до версии 0.15.14, и он легко откроется с OpenCv!

...