ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)
Detectron概述
Detectron是Facebook FAIR开源了的一个目标检测(Object Detection)平台。
用一幅图简单说明下Object Detection。如Mask R-CNN已经能够做到多目标的Instance Segmentation。
图片来源: Fei-Fei Li, Andrej Karpathy & Justin Johnson (2016) cs231n, Lecture 8 - Slide 8, Spatial Localization and Detection (01/02/2016). Available: http://cs231n.stanford.edu/slides/2016/winter1516_lecture8.pdf
Detectron项目项目自 2016 年 下半年启动,基于Caffe2 ,目前支持大量机器学习算法和已经训练好的模型。项目地址:https://github.com/facebookresearch/Detectron
其中目标检测算法的实现包括:
Mask R-CNN (https://arxiv.org/abs/1703.06870)—Marr Prize at ICCV 2017
RetinaNet (https://arxiv.org/abs/1708.02002)—Best Student Paper Award at ICCV 2017
Faster R-CNN (https://arxiv.org/abs/1506.01497)
RPN (https://arxiv.org/abs/1506.01497)
Fast R-CNN (https://arxiv.org/abs/1504.08083)
R-FCN (https://arxiv.org/abs/1605.06409)
这些目标检测算法主要使用以下卷积网络架构:
ResNeXt{50,101,152} (https://arxiv.org/abs/1611.05431)
ResNet{50,101,152} (https://arxiv.org/abs/1512.03385)
Feature Pyramid Networks (https://arxiv.org/abs/1612.03144) (with ResNet/ResNeXt)
VGG16 (https://arxiv.org/abs/1409.1556)
Detectron配置
想要使用和理解其中各个方法,最基础的一步就是能够先配置好环境,将示例跑通,接下去也接着配置Detectron的机会,把GPU相关的配置再梳理一下。
1、GPU驱动
以往在linux下安装显卡驱动是一段非常东痛苦的经历,搞得不好,一重启就黑屏。如果是多显卡的机器,也会遇到无法切换,或者各种版本不兼容的问题。
这两年在ubuntu社区和NVIDIA官方的努力下,社区的PPA专有驱动基本已经相对稳定。
a)在安装之前,首先确认你的电脑是否在BIOS上有secure boot,如果有进入BIOS,把secure boot 设置成disable。 (这设置十分重要,不然会出现无法安装CUDA的情况)
b)如果之前已经自带的NVIDIA驱动,需要删除老的驱动
sudo apt-get –purge remove nvidia-glx nvidia-glx-new
sudo apt-get –purge remove nvidia-settings nvidia-kernel-common
c)确保万无一失,在原有驱动删除之后,需要将Ubuntu集成的开源驱动加入黑名单,即修改/etc/modprobe.d/blacklist.conf文件:
sudo gedit /etc/modprobe.d/blacklist.conf
d)在该文件中增加如下两行:
blacklist nouveau
options nouveau modeset=0
e)然后需要确定你的显卡对应的驱动版本,知道自己的显卡型号后,可以利用官方提供的驱动下载查询界面:NVIDIA 驱动查询
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
f)接着在软件中心的 software & updates中的Additional Drivers的标签,找到和之前查到GPU驱动版本一致的条目,点击apply changes
重启之后应该就安装好了。
Tips:在16.04中有遇到过,在Additional Drivers那个界面选择了GPU驱动后,点击apply changes无法更改的尴尬情况。
解决方法是直接使用命令行
sudo apt-get install nvidia-××× nvidia-prime (XXX为对应的驱动型号)
测试驱动是否安装成功
nvidia-smi
如果出现了你的GPU列表,则说明驱动安装成功了。
2、Cuda
cuda的安装根据自己的系统选择合适的版本,为了避免一系列可能会出现的问题,在安装CUDA之前,可以进行一下安装前的自检,自检可以参照官方给的文档(CUDA安装前自检)
官网下载 cudnn 需要注册帐号并登录。官方下载网址
下载完成后,在文件所在的文件夹
sudo dpkg -i cuda-repo-ubuntu1604-×××××_amd64.deb (××××为官方版本号)
sudo apt-get update
sudo apt-get install cuda
如果是CUDA8.0可能会遇到gcc版本的不兼容问题,可以给GCC降级。
安装完之后,配置cuda的环境变量,在文件~/.bashrc之后加上
gedit ~/.bashrc
export PATH=/usr/local/cuda-××/bin:$PATH (××是版本号)
export LD_LIBRARY_PATH=/usr/local/cuda-××/lib64:$LD_LIBRARY_PATH (××是版本号)
然后设置环境变量和动态链接库,在命令行输入
sudo gedit /etc/profile
在打开的文件里面加上(注意等号两边不能有空格)
export PATH=/usr/local/cuda/bin:$PATH
保存之后,创建链接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下语句:
/usr/local/cuda/lib64
保存退出执行命令行:
sudo ldconfig
使链接立即生效。
Tips:之前在配置ZED双目相机的,如果是 下载Local版的CUDA,都会在安装ZED SKD时出现找不到CUDA8的提示。
在试了很多次之后,偶尔一次使用了CUDA下载页面中的 deb(network)版本,然后就成功了。 所以建议采用deb的方式安装。
测试Cuda是否安装成功:
cd /usr/local/cuda-××/samples/1_Utilities/deviceQuery (××为版本号)
sudo make
sudo ./deviceQuery
3、CuDNN
CuDNN是NVIDIA推出的针对深度学习的Cuda优化库,可以帮助提升算法效率
ubuntu下使用deb比较方便,不需要自己设置环境变量
先安装runtime库,这里以cuda9.0为例。
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
再安装dev库
sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
4、配置Caffee2
Caffe2的安装相比于caffe的安装要简单很多,不需要自己去配置Makefile.config,可以在make的时候,自动检测GPU以各种库,例如OpenCV。如果没有就自动选择不使用。
官方的安装说明永远是最好的说明
https://caffe2.ai/docs/getting-started.html?platform=linux&configuration=compile
这里也简单梳理下流程。
首先确定系统和安装方式,这里采用直接编译源码的方式。
安装需要的库
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
libgoogle-glog-dev \
libgtest-dev \
libiomp-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libopenmpi-dev \
libsnappy-dev \
libprotobuf-dev \
openmpi-bin \
openmpi-doc \
protobuf-compiler \
python-dev \
python-pip
sudo pip install \
future \
numpy \
protobuf
libgflags2根据系统选择
# 对于 Ubuntu 14.04
sudo apt-get install -y --no-install-recommends libgflags2
# 对于 Ubuntu 16.04
sudo apt-get install -y --no-install-recommends libgflags-dev
对于GPU的相关依赖我们已经在上面完成配置了,caffe2也给了官方GPU配置的说明,也可以作为一种参考。
另外如opencv库也可以根据自己的需要进行安装
完成准备工作后就可以下载源码进行编译。
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
make && cd build && sudo make install
测试caffe2是否安装成功
cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
如果是failure,试着cd到caffe2/build的文件夹里,然后执行
python -c 'from caffe2.python import core' 2>/dev/null
如果successful,说明是环境变量的设置问题,如果还是失败,则会有具体的提示。
配置环境变量,编辑~/.bashrc
export PYTHONPATH=/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/**/devapp/caffe2/build (**为计算机名)
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
5、Detectron配置
还是那句话,最好的教程是官方的文档。
https://github.com/facebookresearch/Detectron/blob/master/INSTALL.md
找个合适的文件位置进行clone
git clone https://github.com/facebookresearch/detectron
编译python库
cd DETECTRON/lib && make (DETECTRON表示你clone下来的文件夹)
测试是否编译成功
python2 $DETECTRON/tests/test_spatial_narrow_as_op.py (DETECTRON表示你clone下来的文件夹)
如果遇到缺少库的问题,可以根据报错的信息把库加上
另外的问题可以参见官方的Troubleshooting
6、Detectron简单使用
参考
https://github.com/facebookresearch/Detectron/blob/master/GETTING_STARTED.md
训练相关的我们放到之后去说,这里先说下利用已经训练好的模型和算法框架来进行目标的检测。
根据不同的需求,对象检测可以分为几种,1)Bounding box,2)Mask,3)KeyPoints
这里给出两个例子,用mask和
python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo
python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_keypoint_rcnn_R-101-FPN_s1x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/37698009/12_2017_baselines/e2e_keypoint_rcnn_R-101-FPN_s1x.yaml.08_45_57.YkrJgP6O/output/train/keypoints_coco_2014_train%3Akeypoints_coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo
下面第一和第二个图是Bounding box和Mask的效果,第三和第四个图是Bounding box和人体骨骼keypoints的效果。
ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)的更多相关文章
- Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置
目录 一.Ubuntu16.04 LTS系统的安装 二.设置软件源的国内镜像 1. 设置方法 2.关于ubuntu镜像的小知识 三.Nvidia显卡驱动的安装 1. 首先查看显卡型号和推荐的显卡驱动 ...
- Ubuntu16.04添加HP Laserjet Pro M128fn打印机和驱动
一.全部设置->打印机->添加新打印机 添加打印机 二.选择自动搜索到的网络打印机HP Laserjet Pro M128fn,点击添加. 三.添加打印机完成,打印测试页进行测试. 四. ...
- Ubuntu16.04 安装Tensorflow1.7过程记录二:安装CUDA及Tensorflow
参考 How to install Tensorflow 1.7.0 using official pip package 其中的CUDNN应该改为7.05for CUDA9.0 后面安装的spyde ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- Python实现YOLO目标检测
作者:R语言和Python学堂 链接:https://www.jianshu.com/p/35cfc959b37c 1. 什么是目标检测? YOLO目标检测的一个示例 啥是目标检测? 拿上图 (用YO ...
- SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- caffe安装:ubuntu16.04 + opencv2.4 + python 2.7+ CUDA 8.0 RC + CuDNN 5.0
官方教程:http://caffe.berkeleyvision.org/install_apt.html 主要参考教程: https://github.com/BVLC/caffe/wiki/Ubu ...
- 10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码
将YOLO应用于视频流对象检测 首先打开 yolo_video.py文件并插入以下代码: # import the necessary packages import numpy as np impo ...
- 联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装
https://blog.csdn.net/la9881275/article/details/86720752 Ubuntu16.04系统安装拿到Ubuntu镜像制作装机优盘,这里就不写了.我的优盘 ...
随机推荐
- C++类数组的实现
请看下面的代码: //xy_3_1 2013/10/26 #include<stdio.h> #include<iostream.h> #include<string.h ...
- Hadoop配置要点必看
hadoop 配置要点 软件 版本 java 1.8.0_151 hadoop 2.6.1 part1 $HADOOP_HOME/etc/hadoop 目录下配置参数. slaves 配置从节点 ya ...
- 面试遇到的mysql面试题
1.MySQL数据库有哪些内置函数?1.数学函数 2.字符串函数 3.日期和时间函数 4.条件判断函数5.系统信息函数 6.加密和压缩函数 7.聚合函数8.格式或类型转化函数. 2.如何返回一张表的数 ...
- CodeForces 606A(水)
这道题之前没注意到at least,审题不仔细啊,两个问题解法还是有些许区别的 有at least的 #include <iostream> #include <string> ...
- 【Chromium】sandboxed window问题记录
问题发现 在业务逻辑中发现有时使用chrome.app.window.create这个API创建出来的窗口无法使用其他的API,不仅其他chrome.app.window的API说window is ...
- 关于log4j知识
今天下午接触到log4j知识,花了几个小时,百度了一圈,总算是懂了一些. log4j的作用:log4j是一个日志输出的插件专门用来进行日志管理的,根据我的理解就是用来执行我们用来检测程序bug的Sys ...
- Django之Form字段插件
一.Django内置Form组件: 在使用Django内置的Form组件时,里面包含了许多[字段]和[插件],也就是验证用户输入的请求以及生成显示在前端的HTML.下面介绍一下用法: F ...
- laravel开发之-php artisan命令
php artisan :所有的命令列表 php artisan make:controller 文件夹名称/控制器名称 :创建控制器的命令以及控制器放置的文件夹 php artisan make:m ...
- 【MFC】CDialogBar中按钮不可用
现象展示: 具体原因: A button in a CDialogBar object is disabled automatically if the command routing does no ...
- Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
前段时间,Wasserstein GAN以其精巧的理论分析.简单至极的算法实现.出色的实验效果,在GAN研究圈内掀起了一阵热潮(对WGAN不熟悉的读者,可以参考我之前写的介绍文章:令人拍案叫绝的Was ...