本文弃置,坑填失败了,准备换个框架

记录一下FasterRCNN使用的填坑记录,用的是github上的项目,项目地址如下

安装环境

换了个工作区,环境从零开始配,先安装一个python

因为wget太慢了,所以选择先下下来再传到服务器上安装

下载地址

我下的是python-3.3.3.tar.xz

解压: tar xJf Python-3.6.6.tar.xz

然后进入到对应的文件夹里安装python

1
2
3
4
$ cd Python-3.6.6/
$ ./configure --with-ssl
$ make
$ sudo make install

安装完python之后装一下包管理工具pip

1
2
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
$ python get-pip.py # 运行安装脚本

然后安装pytorch 0.4.0版本,安装指令如下

1
sudo pip install torch==0.4.0 -f https://download.pytorch.org/whl/cu90/stable

下载速度巨慢无比,换了一下豆瓣源之后就快多了

1
sudo pip3 install -i http://pypi.douban.com/simple/ torch==1.0.0 -f https://download.pytorch.org/whl/cu90/stable --trusted-host pypi.douban.com

也可以用其它源:

项目依赖

然后我们按照git项目上的指示进行相应的操作

1
$ pip install -r requirements.txt
1
2
$ cd lib
$ sh make.sh

然后尝试跑一下

1
2
3
4
5
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda

把各种需要的包都装上之后碰到了一个奇怪的Error

ModuleNotFoundError: No module named ‘model.utils.cython_bbox’

最后的解决方案是

1
2
$ cd lib
$ python setup.py build_ext --inplace

但是git项目里也没写这个,就离谱

又装了一堆包之后喜提新错误

ImportError: cannot import name ‘imread’

这里问题就比较神奇了,查阅资料得到出现这个问题的原因可能有两种

  1. 两个第三方库的安装位置不一致,导致他们不能互相关联
  2. scipy库的版本过高

我对scipy库降版本之后解决了这个问题

1
pip install scipy==1.2.1

又是一通缺啥装啥之后,遇到了一个不一样的错误

ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.

没找到靠谱的解决方案,弃疗,换个1.0版本的代码从头再来

环境安装同0.4.0版本

在Git项目页面从master分支切换到1.0.0分支下载项目

然后安装依赖并下载cocoapi

1
2
3
4
sudo pip install -r requirements.txt
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make

尝试运行一下

1
2
3
4
5
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda

报错虽然会迟到,但是从不会缺席

ImportError: cannot import name ‘_mask’

解决方案参考

大概意思就是原项目中lib/pycocotools已经不行了,得换最新的

那我们下一个最新的

1
2
cd cocoapi/PythonAPI
make

然后把lib/pycocotools删掉,把PythonAPI里面生成的pycocotools装进去,就可以解决这个问题

ImportError: cannot import name ‘_C’

新的问题又出现了

是因为在lib中使用setup.py的时候用的是旧的pycocotools,所以得重新再build一遍

1
python setup.py build develop

然后,错误是越来越奇怪了

ImportError: /home/dl/forever97/fasterRCNN/lib/model/_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE