mac下编译cpu only caffe并用xCode建caffe工程
好像又变容易了,直接git clone下载blvc源码,make.config里去掉了CPU_ONLY前面的注释,并没有安装任何依赖,也可能是自己mac上本来有,
会报两次错误:
1. include <cblas.h>找不到:
locate cblas.h
自己mac上是在这里: /usr/local/Cellar/openblas/0.2.20_1/include/cblas.h
所以在Header Search Paths里增加/usr/local/Cellar/openblas/0.2.20_1/include
在Library Search Paths 里增加/usr/local/Cellar/openblas/0.2.20_1/lib
2. cv::imread 链接不到:
修改Other Link Flags:
-lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_video -lopencv_videoio -lopencv_videostab -lglog -lhdf5 -lgflags -lprotobuf -lboost_system -lopenblas -lhdf5_hl -lleveldb -llmdb -lboost_filesystem -lm -lsnappy -lboost_thread-mt
即可。输出:
caffeTest: command line brew
usage: caffe <command> <args> commands:
train train or finetune a model
test score a model
device_query show GPU diagnostic information
time benchmark model execution time No modules matched: use -help
Program ended with exit code:
-------------------2018.05.15---------------------------------------
以上,是基本的caffe,编译py-faster-rcnn时又出现几个坑:
lib目录下make找不到cython,pip install Cython安装,还有其他几个依赖项,编译能通过运行时需要用到;
make caffe时clang找不到链接文件,具体是cv::imread()找不到,打开Make.config去掉OPENCV_VERSION := 3前面的注释就行了;
make pycaffe时找不到<numpy/arrayobject.h>,解决方案:手动复制numpy的include目录到系统目录
最后一个坑:
ImportError: dlopen(/Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/tools/../caffe-fast-rcnn/python/caffe/_caffe.so, ): Library not loaded: ../../build/lib/libcaffe.so.1.0.-rc3
Referenced from: /Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/caffe-fast-rcnn/python/caffe/_caffe.so
Reason: unsafe use of relative rpath ../../build/lib/libcaffe.so.1.0.-rc3 in /Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/tools/../caffe-fast-rcnn/python/caffe/_caffe.so with restricted binary
各种折腾PYTHONPATH和DYLD_PATH未果
看到make caffe时直接在caffe_ 目录下make -j8编译出来的是一个.a 一个.so 还一个.so软连接,在mac上。于是尝试用cmakeLists.txt编译, mkdir build + cd build + cmake _DCPU_ONLY=ON .. + make all -j8
然后又报了两个错:
ld: framework not found vecLib
blas版本和路径设置 这个要在CMakeLists.txt里添加include_directories("blas路径")
然后遇到hdf5:
Undefined symbols for architecture x86_64:
"_H5LTfind_dataset", referenced from:
caffe::SGDSolver<float>::RestoreSolverStateFromHDF5(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >
const&) in sgd_solver.cpp.o
待解决,怎么也搞不定,还把之前装好的caffe玩坏了...
------------------2018.05.21-----------------------------------------
ssd caffe搞定以后发现也是调用.so库,名字都一样,但是ssd就没问题
otool -L _caffe.so:


ssd python目录下的.so多了一个@rpath,不是特别懂,但是找到了手动改链接路径的方法:
install_name_tool -change libcaffe.so.1.0.0-rc3 /Users/xxx/wkspace/caffe_space/detecton/py-faster-rcnn/caffe_fast_rcnn/build/lib/libcaffe.so.1.0.0-rc3 _caffe.so
再次otool -L查看,链接到了绝对路径:
_caffe.so:
python/caffe/_caffe.so (compatibility version 0.0., current version 0.0.)
/Users/xxx/wkspace/caffe_space/detection/py-faster-rcnn/caffe-fast-rcnn/build/lib/libcaffe.so.1.0.-rc3 (compatibility version 0.0., current version 0.0.)
就可以用了。运行tools/demo.py时遇到新错误:
1. Unknown layer type: Python
Makefile.config里打开WITH_PYTHON_LAYER = 1,重新make就行了。
2. 'NoneType' object has no attribute '__getitem__' , 具体打印信息如下:
use cpu
Traceback (most recent call last):
File "tools/demo.py", line , in <module>
_, _= im_detect(net, im)
File "/Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/tools/../lib/fast_rcnn/test.py", line , in im_detect
blobs_out = net.forward(**forward_kwargs)
File "/Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/tools/../caffe-fast-rcnn/python/caffe/pycaffe.py", line , in _Net_forward
self._forward(start_ind, end_ind)
File "/Users/momo/wkspace/caffe_space/detection/py-faster-rcnn/tools/../lib/rpn/proposal_layer.py", line , in forward
keep = keep[:post_nms_topN]
TypeError: 'NoneType' object has no attribute '__getitem__'
看到是nms的问题,找到lib/nms_wrapper.py,定位到config的问题,修改lib/fast_rcnn/config.py:
# Use GPU implementation of non-maximum suppression
__C.USE_GPU_NMS = False
注释掉lib/setup.py第58行:
CUDA = locate_cuda()
在lib目录下重新make一下就可以了。
测试时用到了lib/fast_rcnn/test.py
会调用lib/nms_wrapper.py,注释掉其中与gpu_nms相关的东西即可:
from fast_rcnn.config import cfg
# from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms def nms(dets, thresh, force_cpu=False):
"""Dispatch to either CPU or GPU NMS implementations.""" if dets.shape[0] == 0:
return []
return cpu_nms(dets, thresh)
-------------------2018.05.17---------------------------------------
玩坏的原因是caffe依赖的openblas依赖的库文件找不到,可能是在家里brew update openblas时突然断网之类的吧,反正重新update一下又ok了。
BLVC版和liu Wei的ssd都可以,faster rcnn还是不行
ssd xCode工程遇两个坑:
1. 编译报错: data_transformer.hpp AnnotatedDatum未定义: 需要重新编译ssd版的proto.cc proto.h并复制到工程目录下, blvc版本caffe里编译出来的没有
2. boost找不到链接文件,大神的git issue#839
-------------------2018.09.17---------------------------------------
上述装好的caffe在被同事忽悠用homebrew更新opencv以后坏掉了,症状是sh调用ok,python无法调用,报错:segment fault
参考这里解决
要修改的PYTHON_LIB路径查找方法:
进入python,
import sys
print(sys.path)
从打印出来的一大堆信息种拎出如下字样即可:
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/
-------------------2018.11.27----------------------------------------
服务器上拉回来的工程首先照上面改gpu_nms问题,然后参考这里解决'ProposalLayer' object has no attribute 'param_str'的问题,yaml.load(self.param_str) 加上下划线param_str_
其实不是很懂为什么,服务器上没有下划线,test.prototxt里面也没有下划线
mac下编译cpu only caffe并用xCode建caffe工程的更多相关文章
- MAC 下编译 ANDROID P 源码 提示 internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13"]
MAC 下编译 ANDROID P 源码出现下面的问题: ninja: no work to do. [21/21] out/soong/.bootstrap/bin/soong_build out/ ...
- mac下编译FFmpeg-Android
参考: [史上最傻瓜的]mac下编译FFmpeg-Android http://blog.csdn.net/ashqal/article/details/9381037
- Mac 下编译 Hadoop
Mac 下编译 Hadoop-2.9.2 系统环境 系统: Mac OS_10.14.4 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 ProtocolBu ...
- Mac下编译libpomelo静态库,并在cocos2dx项目中引用
最近在学习cocos2dx的过程中需要和服务器进行交互,所以这几天在学习libpomelo静态库的编译和使用.之前在windows系统下编译libpomelo,并在VS中引入比较顺利:但是,目前对Ma ...
- mac下编译安装grafana 4.2.0
go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...
- mac下编译openjdk8?so easy!
写在最前面的话:建议第一次编译jdk的朋友,查阅任何博客都不如认真读一遍源码中的README-builds.html 环境:macOS High Sierra(10.13.5) 编译jdk:openj ...
- FFmpeg编译:mac下编译iOS平台的FFmpeg库(支持armv7, arm64, i386, x86_64)
环境:FFmpeg 3.4.6Xcode 10.3macOS 10.14.6iOS SDK 12.4 一.准备工作 1. 下载FFmpeg我这里使用的是3.4.6版本的FFmpeg,可以从FFmpeg ...
- mac下编译node源码
看过一篇win7 64x下面编译node的文章,链接地址:编译nodejs及其源码研究 下面学习一下在mac下面如何编译node源码. 过程也挺简单. 1.下载源码. > mkdir nodes ...
- 【VLC-Android】Mac下编译vlc-android
前言 突然想整整VLC-Android,然后就下一个玩玩看,这里记录点遇到的问题. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: htt ...
随机推荐
- 20165336 2017-2018-2《Java程序设计》课程总结
每周作业链接汇总 我期望的师生关系:对师生关系的看法 学习基础和C语言基础调查:关于学JAVA与C的调查 Linux安装及学习:Linux的安装 第一周学习总结:认识学习JAVA 第二周学习总结:JA ...
- JavaScript学习(六)
这里要注意: 1.num为NaN(因为str的开头不是数字) 2.NaN和NaN是不等的 3.NaN也是number.
- MySQL忘记root密码--不重启mysqd重置root密码
先提个问题:如何不重启mysqld,且没有权限修改用户账号和权限的情况下,如何重新设置root密码?不知道没关系,在此之前我也是不知道如何操作的,先看看下面的几种重置root密码的方法. 1.skip ...
- zabbix 3.2源码安装
环境: centos7.2 nginx 1.10.3 mysql 5.5.38 php 5.5.38 一.zabbix介绍 1.Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企 ...
- composer安装其实可以很简单 两行命令就解决了
最近接了一个cakephp项目,就想着用composer安装实施,因为Composer 可以方便地帮你安装项目中声明所依赖的外部工具库(libraries).之前没有接触过,相对比较陌生,但是相信ph ...
- Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量
1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: d ...
- 009-ThreadPoolExecutor运转机制详解,线程池使用1-newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor、newScheduledThreadPool
一.ThreadPoolExecutor理解 为什么要用线程池: 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务. 2.可以根据系统的承受能力,调整线程池中工作线线程的数 ...
- 基于Apache Spark机器学习的客户流失预测
流失预测是个重要的业务,通过预测哪些客户可能取消对服务的订阅来最大限度地减少客户流失.虽然最初在电信行业使用,但它已经成为银行,互联网服务提供商,保险公司和其他垂直行业的通用业务. 预测过程是大规模数 ...
- 第一弹:超全Python学习资源整理(入门系列)
随着人工智能.大数据的时代到来,学习Python的必要性已经显得不言而喻.我经常逛youtube,发现不仅仅是以编程为职业的程序员,证券交易人员,生物老师,高级秘书......甚至许多自由撰稿人,设计 ...
- js模拟链表
链表: 每个元素,都有一个指针,指向下一个元素 //链表 function LinkedList(){ var head = null; length = 0; this.append = funct ...