Tic商业评论

关注微信公众号【站长自定义模块】,定时推送前沿、专业、深度的商业资讯。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

  • QQ空间
  • 回复
  • 收藏

基于python3在ubuntu20.04上安装caffe和opencv4.4

lijingle 环境搭建 2022-1-26 11:51 2301人围观

本文主要是讲解基于python3在ubuntu上安装caffe和opencv4.4

对于原版caffe目前支持的是python2,很多基于python2的软件包在python3时就不在更新,但是安装caffe时就需要这些软件包,所以当在python3的环境下安装caffe时,就会出现不支持的情况,我就遇到pip进行安装时不支持的情况。
还有就是opencv,caffe原版使用的是opencv2.4版本,但是现在opencv都更新到opencv4.4版本了,其中很多定义都进行了改变,不仅仅是c++编译器,连安装路径都改变了。这时我们就需要安装基于python3的opencv4.4

首先要安装opencv的依赖
下面是opencv依赖的第三方库,可以依次进行安装:
# a fresh start in the morning

$ sudo apt-get update

$ sudo apt-get upgrade

# install the dependencies

$ sudo apt-get install build-essential cmake git unzip pkg-config

$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install libgtk2.0-dev libcanberra-gtk*

$ sudo apt-get install python3-dev python3-numpy python3-pip

$ sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev

$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev

$ sudo apt-get install libv4l-dev v4l-utils

$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

$ sudo apt-get install libavresample-dev libvorbis-dev libxine2-dev

$ sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev

$ sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev

$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev

$ sudo apt-get install liblapack-dev libeigen3-dev gfortran

$ sudo apt-get install libhdf5-dev protobuf-compiler

$ sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev

# a symlink to videodev.h

$ cd /usr/include/linux

$ sudo ln -s -f ../libv4l1-videodev.h videodev.h

$ cd ~
下载opencv以及第三方库:
$ cd ~

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.4.0.zip

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.4.0.zip



$ unzip opencv.zip

$ unzip opencv_contrib.zip

下载完成后,对文件进行解压,创建编译环境:
$ mv opencv-4.4.0 opencv

$ mv opencv_contrib-4.4.0 opencv_contrib



$ cd opencv

$ mkdir build

$ cd build

安装cuda
在编译之前首先要确认,你的机器上是否有cuda,以及相关驱动,如果没有安装可以使用下面命令进行查看你的显卡情况,并根据相应的信息,去英伟达官方网站下载相应的驱动以及cuda,这里具体安装不在详细介绍:
#命令

$ nvidia-smi
在安装caffe之前,cuda是必须要进行安装的。还有就是cuda版本和cudnn版本要相对应。

编译opencv
需要注意 -D后面有一个空格,这里OPENCV_GENERATE_PKGCONFIG 需要设置为on,后面安装caffe时需要用到。这里提供两种编译opencv的方法,一种是使用cuda的方式,一种是不使用cuda的方式,在使用cuda的方式时需要设置CUDA_ARCH_BIN=7.0这里我的是7,你的需要进行查看你的架构数,需要匹配才可以

下面是cuda方式:
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \

-D BUILD_TIFF=ON \

-D WITH_FFMPEG=ON \

-D WITH_GSTREAMER=ON \

-D WITH_TBB=ON \

-D BUILD_TBB=ON \

-D WITH_EIGEN=ON \

-D WITH_V4L=ON \

-D WITH_LIBV4L=ON \

-D WITH_VTK=OFF \

-D WITH_QT=OFF \

-D WITH_OPENGL=ON \

-D OPENCV_ENABLE_NONFREE=ON \

-D INSTALL_C_EXAMPLES=OFF \

-D INSTALL_PYTHON_EXAMPLES=OFF \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D OPENCV_GENERATE_PKGCONFIG=ON \

-D BUILD_TESTS=OFF \

-D OPENCV_DNN_CUDA=ON \

-D ENABLE_FAST_MATH=ON \

-D CUDA_FAST_MATH=ON \

-D CUDA_ARCH_BIN=7.0 \

-D WITH_CUBLAS=ON \

-D WITH_CUDNN=ON \

-D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.7.6.5 \

-D CUDNN_INCLUDE_DIR=/usr/local/cuda/include \

-D BUILD_EXAMPLES=OFF ..
没有cuda的方式如下:
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \

-D BUILD_TIFF=ON \

-D WITH_FFMPEG=ON \

-D WITH_GSTREAMER=ON \

-D WITH_TBB=ON \

-D BUILD_TBB=ON \

-D WITH_EIGEN=ON \

-D WITH_V4L=ON \

-D WITH_LIBV4L=ON \

-D WITH_VTK=OFF \

-D WITH_QT=OFF \

-D WITH_OPENGL=ON \

-D OPENCV_ENABLE_NONFREE=ON \

-D INSTALL_C_EXAMPLES=OFF \

-D INSTALL_PYTHON_EXAMPLES=OFF \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D OPENCV_GENERATE_PKGCONFIG=ON \

-D BUILD_TESTS=OFF \

-D BUILD_EXAMPLES=OFF ..
如果所有的配置正确,会出现如下的信息:


后面就是make opencv了
#编译

$ make -j8 #8是线程数
编译成功后运行:
$ sudo make install

$ sudo ldconfig

$ sudo apt-get update
安装完成进行测试如下:


到此opencv基本安装完成,

安装caffe
安装caffe前需要安装caffe所需的依赖如下:
$ sudo apt-get install cmake git unzip 

$ sudo apt-get install libprotobuf-dev libleveldb-dev liblmdb-dev

$ sudo apt-get install libsnappy-dev libhdf5-serial-dev protobuf-compiler

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

$ sudo apt-get install libatlas-base-dev libopenblas-dev

$ sudo apt-get install the python3-dev python3-skimage

$ sudo pip3 install pydot

$ sudo apt-get install graphviz


下载caffe:
这里我们下载的不是原版的caffe,原版的caffe不存在ssd,所以我们下载的caffe是经过修改的,支持opencv4.4和cudnn8.0以及python的caffe,里面还添加了支持树莓派和jetson nano的脚本。
链接:https://pan.baidu.com/s/1bJgbIWfCdB9ZOGyuXItuWA 

提取码:mcel

这里下载下来然后进行解压
$ unzip caffe.zip

$ mv caffe-ssd caffe

cuDNN
cudnn版本8已经丢弃了caffe所依赖的一些接口,编译的过程中会出现"CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT was not declared in this scope". 其中两个接口cudnnGetConvolutionForwardAlgorithm, cudnnGetConvolutionBackwardDataAlgorithm被其他的接口替代,并且cudnnGetConvolutionBackwardFilterAlgorithm接口没有找到合适的替代。
这里安装cudnn你有三个选择:
1.将版本降到7.6,这个是不建议的,会导致其他依赖出现问题
2.使用没有cudnn进行编译caffe,保留cuda进行编译caffe,这样也是可以使用的
3.使用上面修改过的caffe,这里我们将cudnnGetConvolutionBackwardFilterAlgorithm算法设置为一个常量, CUDNN_CONVOLUTION_BWD_FILTER_ALGO_0 这个可能不是最优的选择,但是是可以使用的,当然这个修改只适用于cudnn8,对于其他的版本是不适用的。



编译caffe
这里我们配置caffe Makefile的环境,具体配置可以参考我的另外的博客。这里是使用配置好的文件。
$ cd ~/caffe

# If you use CUDA, copy the cp38_x86_64-linux-gnu_CUDA_example

$ cp Makefile.config.cp38_x86_64-linux-gnu_CUDA_example Makefile.config

# Or without CUDA, copy the cp38_x86_64-linux-gnu_example

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



# After you select one of the above configurations, the build can start

$ make clean

$ make all -j$(nproc)

$ make test -j$(nproc)

$ make runtest -j$(nproc)


编译成功后可以看到如下的信息:


最常见的错误是如果你将20.04的caffe版本安装到18.04系统上会出现如下问题。


如果在ubuntu18.04上安装caffe,请参考我的另外的博客。


python build
上面只是编译了c++的部分,如果想要python支持,还需要编译python部分。
# Assuming you're still in ~/caffe

$ make pycaffe

$ make pytest


最后就是添加环境变量了,可以在 ~/.bashrc 或者 ~/.profile中添加环境变量,编辑器可以用vim或者nano以及gedit都可以
$ cd ~

$ sudo nano ~/.bashrc

# at the end of the file add the next line

export PYTHONPATH="${PYTHONPATH}:$HOME/caffe/python"

# save and close with

Ctrl+X, Y, Enter




路过

雷人

握手

鲜花

鸡蛋
原作者: lijingle
我有话说......

TA还没有介绍自己。

电话咨询: 135xxxxxxx
关注微信