Caffe重装

近日, 由于需要, 又重新安装了CAFFE一遍(并非想折腾, 但事后证明痛苦带来了长进), 这一次重装的原因是: 在启动caffe程序进行训练初始化网络层时, 报错, “Unknown layer type: ImageData”. 当然, 这个错误提示并没有说让你直接重装, 但实在找不到出错的原因(同是Layer, “Input”类型就没有报错), 怀疑ImageData有问题, 只好寄希望于重装能把”ImageData”这个问题解决掉. (之前第一遍安装已经是披荆斩棘, 这一次安装前已经做好了壮志未酬的心理准备了)

一开始并不解是什么原因导致的, 但后来才知道是引用的OpenCV的版本不对: 在Caffe发布的时候, OpenCV应该还是版本3, 但现在OpenCV有了最新的版本4, 导致用brew命令在安装的时候, 直接安装了最新的版本, 除非: “brew install opencv@3”, 而我将”Makefile.config”文本文件的”OPENCV_VERSION”项改成了”:= 4”(原先是3).

这么改回来之后, 是比较保险的方式了, 因为抱牢CAFFE官方的大腿了, 而安装版本4的OpenCV一定不行吗? 倒也不是一定不行, 只不过在Makefile文件中, CAFFE官方没有关于版本4的编译规则. 所以, 如果在Makefile.config中将”OPENCV_VERSION”设置成4之后, 在官方原始的Makefile中是不会有OPENCV的编译规则的, 而这会导致"LIBRARIES"变量不添加"opencv_imgcodecs"库依赖.

ifeq ($(USE_OPENCV), 1)				# Caffe源码中的Makefile原文件第200行;
	LIBRARIES += opencv_core opencv_highgui opencv_imgproc

	ifeq ($(OPENCV_VERSION), 3)
		LIBRARIES += opencv_imgcodecs
	endif

endif

此外, 编译过程中的"USE_OPENCV"变量也要赋予值"1", 而不是仅取消注释("# USE_OPENCV := 0"), 看上述编译规则的代码, 就可以知道为什么了: USE_OPENCV的值不为1的话都无法添加各种Opencv的库依赖(最外围的"ifeq ... endif"之间的代码, 包括OPENCV_VERSION=3时进入执行的语句块).

总结一下, 不能使用"ImageData"的原因是第一次编译时确实没有编译进OPENCV相关的依赖库(当时的设置: USE_OPENCV:=0, OPENCV_VERSION:=4), 而这个设置错误(算是逻辑错误), 在语法上并没有错误, 导致顺利编译了CAFFE(没有报错), 但却在使用时报错了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值