SSD环境搭建

环境

Ubuntu 22.04 LTS + GCC 11/12

官网使用的是Ubuntu 16.04-12.04,所以操作会有所不同。

源码

此源码已经3年没有更新了,还是自己编译吧

首先下载源码

1
2
3
git clone https://github.com/weiliu89/caffe
cd caffe
git checkout ssd

此源码是官方源码,但是已经3年没有更新了,无法适应当前的系统和环境。所以使用别人适配CUDNN8的版本,此版本fork的就是ssd分支。

1
https://github.com/Qengineering/caffe

编译操作在此版本源码中进行

依赖

安装编译依赖

1
2
3
sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev #通用依赖
sudo apt install libatlas-base-dev #blas
sudo apt install python3-dev #python

需要将opencv/hdf5路径添加到环境变量

CUDA/CUDNN

目标检测需要应用硬件加速,硬件需要GPU支持,GPU需要CUDA/CUDNN。

Ubuntu 22.04 LTS在线软件源中的CUDA/CUDNN为11.5/8.2.4,无法运行,因为编译错误。报错parameter packs not expanded with '...'

官方最新版是12.5/9.1.1无法运行,因为编译错误。新版本报错blockIdx/__syncthreads()/__syncthreads_and() was not declared in this scope

11.7/8.9.7.29无法运行因为编译错误,11.8/8.9.7.292无法运行,因为编译错误。11.x版本的CUDA因为上游部分头文件已经不在,导致DKMS模块无法正常编译安装。

最终排查出12.3/8.9.7.29,可以正常支持编译。

按照正常流程安装CUDA 12.3 CUDNN 8.9.7.29。

编译

配置

先复制配置文件

1
cp Makefile.config.cp38_x86_64-linux-gnu_example Makefile.config

设置CUDA路径,根据硬件修改CUDA_ARCH值,修改Python相关版本号为系统默认的3.10

编译

执行命令编译

1
2
3
make all #编译
make test #编译测试用例
make runtest #执行测试用例

测试用例结果为

C++测试用例

编译Python库

执行命令编译

1
2
make py #编译库
make pytest #编译执行测试用例

测试用例结果为

Python测试用例

Python库没有问题需要把库添加到系统路径,以便使用。

添加环境变量

1
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

最好把库放在不常用的地方,防止误删。

测试

进入python导入库,注意这里导入的不是ssd或者caffe-ssd而是caffe。

1
2
python3
>>> import caffe

库导入


SSD环境搭建
https://blog.jackeylea.com/ssd/how-to-setup-ssd-env/
作者
JackeyLea
发布于
2024年6月9日
许可协议