博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
caffe/ windows 10 /Can't parse message of type "caffe.NetParameter" because it is missing required
阅读量:3738 次
发布时间:2019-05-22

本文共 1145 字,大约阅读时间需要 3 分钟。

背景

将linux下训练的caffemodel移植到windows上使用但是出现以下错误提示:Can't parse message of type "caffe.NetParameter" because it is missing required fields: layer[502].box_annotator_ohem_param.roi_per_img

原因

实际上,我也知道原因,是因为二者的caffe的版本不一致。这是个遗留问题,是由最初的开发人员遗留下来的。windows上的caffe(生产环境)和linux上的caffe(开发环境)上的版本不一致。具体细节我不是很清楚,大概意思是linux上的caffe是官方的caffe,但是windows上的caffe是个私人的caffe(好像是那个经典的faster-cnn的caffe)

解决方法

修改src/proto/caffe.proto, 将required变为optional,并重新编译。关于caffe的proto,可以看这篇。具体步骤如下:

  1. 根据提示信息可以看到,缺少proto中所必须的box_annotator_ohem_param.roi_per_img,因此把这个字段的required 改为 optional,下图显示的是更改过后的情况。
    . 在这里插入图片描述
  2. 下面重新编译caffe.proto:
    1. 下载protobuf 官方文档:https://developers.google.com/protocol-buffers/docs/cpptutorial 将protoc.exe放在C:\Windows\System32路径下。
    2. /caffe-master/src/caffe/protoc下执行自己新建的extract_proto.bat文件,文件内容如下面的代码所示:
    3. 双击extract_proto.bat文件,生成caffe.pb.hcaffe.pb.cc文件。caffe.pb.cc文件留在src/caffe/proto下,caffe.pb.h移动至include/caffe/proto下。
protoc caffe.proto --cpp_out=./pause
  1. 重新编译caffe项目
    我是重新编译了libcaffe -> caffe, 可能只编译caffe就行了?我也不太清楚。至此,caffe.proto的修改才正式生效(至少在我这是这样的)
    在这里插入图片描述

参考:

https://blog.csdn.net/sinat_26269257/article/details/84788469
https://blog.csdn.net/lily1234567/article/details/87971187

你可能感兴趣的文章
linux系统的定时、延迟任务管理
查看>>
linux系统的磁盘管理方式
查看>>
管理lvm(Logical Volume Manager)
查看>>
yum源的配置及第三方软件仓库的管理、yum命令、rpm命令的使用
查看>>
关于ftp服务
查看>>
日志的管理
查看>>
linux系统的selinux管理
查看>>
linux系统的网络桥接配置及链路聚合
查看>>
关于DNS部署
查看>>
关于数据库管理mariadb
查看>>
类的内存模型(二)
查看>>
生产者消费者模型
查看>>
#剑指Offer Day1 单向链表中倒数第k个节点
查看>>
#剑指offer Day2 一类可以用“框架”快速搞定的二叉树问题
查看>>
#剑指offer Day3 一类 “ 斐波那契 ”问题
查看>>
#剑指offer Day4 一类 “ 双指针 ”问题
查看>>
#剑指offer Day5 # 分享两个题的其他解法
查看>>
error while loading shared libraries libhiredis.so
查看>>
缓存淘汰算法的实现与应用介绍(LRU,LFU)
查看>>
JZ15. 反转链表
查看>>