参考文章:https://www.cnblogs.com/zhencv/p/8384419.html
1, 首先安装好cuda和cudnn,我目前是使用cuda8.0,cudnn6.1(安装教程参考本博客其他文章,基本所有的框架都是需要这个步骤)
2, 按照官网教程按照caffe2:
https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=compile
注意:这里使用的是anaconda2,python2.7,目前caffe2对python2和python3都支持,但是后面的detectron对python3支持不好,所以这里推荐使用python2(还遇到了一个问题,就是使用python3编译完成后,并且make install ,之后,然后改为python2,make clean ,然后make会出错,重新下载了源码可以解决)
这里也简单梳理下流程。
首先确定系统和安装方式,这里采用直接编译源码的方式。
(1)安装需要的库
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
(2)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库也可以根据自己的需要进行安装
(3)完成准备工作后就可以下载源码进行编译。
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
make && cd build && sudo make install
(4)测试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
sudo gedit ~/.bashrc
添加以下内容:
export PYTHONPATH=/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/....../caffe2/build (后面路径为caffe2的编译路径,在caffe2/build中,命令行输入pwd可以得到这个路径)
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
3, 安装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
4, 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的效果。