嵌入式Ubuntu 搭建caffee环境

嵌入式Ubuntu 搭建caffee环境1 首先登录 caffee 官网 转到 github 点击 Installation 选择 ubuntu 环境 2 小机使用的是 ubuntu16 04 所以按照指令搭建 3 首先安装如下安装包 sudoapt getinstall nbsp libprotobuf dev nbsp libleveldb dev nbsp libsnappy dev nbsp libopencv dev

1.首先登录caffee官网, 转到github,点击Installation instructions, 选择ubuntu环境

2.小机使用的是ubuntu16.04, 所以按照指令搭建

3.首先安装如下安装包:

sudo apt-get install 

libprotobuf-dev 

libleveldb-dev 

libsnappy-dev 

libopencv-dev 

libhdf5-serial-dev 

protobuf-compiler

libgflags-dev

libgoogle-glog-dev

liblmdb-dev

sudo apt-get install –no-install-recommends libboost-all-dev

blas库要使用开源openblas在小机中自己编译, 库地址https://github.com/xianyi/OpenBLAS/tree/v0.2.18.

安装到/usr目录下 sudo make install PREFIX=/usr

4.下载 caffe git仓库到小机

5.在caffe目录下, 修改CMakeLists文件中cude 为关闭, 增加C++编译选项CMAKE-CXX-FLAGS中增加-std=gnu++11

5.1 这里修改caffe/cmake/Dependencies.cmake文件, 将其中默认的Atlas库改为openblas库

6.在caffe目录下简历build文件夹, 进入build文件夹, 执行:cmake .. 然后执行make

———————————————————-分割线—————————————————————————————

以上是caffe的原生编译, 下面添加dlib中编译的人脸识别数据库来编译人脸识别文件.

在caffe/examples中, 修改Cmakelists文件.

添加人脸识别和dlib库路径:

link_directories(“dlib中人脸识别库路径”) //LINK_DIRECTORIES(“/home/czy/dlib-19.4/examples/build”)

link_directories(“dlib中dlib路径”) //LINK_DIRECTORIES(“/home/orbita/dlib-19.4/examples/build/dlib_build”)

target_link_libraries(“人脸识别库名 dlib库名”)// target_link_libraries(${name} ${Caffe_LINK} libmyfacedetect.a libdlib.a)

然后, 添加人脸识别文件到cpp_classification中,(这里借用一个现有文件夹做工程目录)

1修改人脸识别源文件中对人脸识别模型的引用绝对路径

}

2.

删除windows和x86的头文件

添加arm体系结构相关头文件

3.删除x86相关头文件

4.修改simd函数指令

这里讲simd_dot指令贴出

float simd_dot(const float* x, const float* y, const long& len) { float inner_prod=0.0f; float32x4_t X,Y,Z;// 128-bit values float32x4_t acc=vdupq_n_f32(0.0f);//set to (0, 0, 0, 0) long i; for (i = 0; i + 4 < len; i += 4) { X = vld1q_f32(x + i);// load chunk of 4 floats Y = vld1q_f32(y + i); Z = vmulq_f32(X, Y); acc = vaddq_f32(acc, Z); } inner_prod=vgetq_lane_f32(acc, 0)+vgetq_lane_f32(acc, 1)+vgetq_lane_f32(acc, 2) +vgetq_lane_f32(acc, 3); for (; i < len; ++i) { inner_prod += x[i] * y[i]; } return inner_prod; } 

这段代码也是我在网上找到的, 帮助我很大忙, 十分感谢原作者

ps:人脸识别算法需要包含dlib中人脸识别库的源文件的头文件, 这个头文件中有一个人脸对其函数和seetaface重名,所以在移植dlib时需要重新命名, 这里头文件也要做相应修改.

重新编译, 人脸识别demo可以在小机上运行

这里附一段基于opencv 摄像头采集图像, 比对结果的代码:

-------------------------------------------------------------------------------------------------分割线----------------------------------------------------------------------------------------------------

将seetaface与现有算法融合做人脸识别.

seetaface作为opencv输入图像人脸图片截取,和opencv视频显示中人脸框取.将截取人脸后的图片, 输入自有算法, 做人脸识别.

1.将seetaface faceidentification/include中头文件复制到caffe/include/seeta中, 修改人脸识别融合文件中头文件相对路径

2.在人脸识别融合文件开始处添加如下宏定义: #define GLOG_NO_ABBREVIATED_SEVERITIES

3.修改融合文件中simd_dot函数, 添加

头文件

4.修改模型库所在位置绝对路径

5.修改人脸fea所在路径

6.修改seetaface .bin文件加载路径

修改caffe/example下Cmakelists文件, 添加seetaface三个库文件路径

到此, 融合完毕


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222263.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:11
下一篇 2026年3月17日 下午4:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号