github地址:https://github.com/zhreshold/mxnet-ssd
参考教程:https://blog.csdn.net/u014380165/article/details/78219584
一、安装miniconda
发现miniconda的网站被墙了,没办法登陆,所以找了一个命令下载。速度较慢,等。。。
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装失败。。。。换anaconda试试
下载sh文件:
网址 https://repo.continuum.io/archive/index.html
还是失败,被墙了。科学一下发现速度很快。。。。。最终还是下载miniconda3.7
安装文件
sh Miniconda3-latest-Linux-x86_64.sh
统统yes,完成安装。然后
source ~/.bashrc
使miniconda生效
二、开始部署mxnet
下载压缩包https://github.com/d2l-ai/d2l-zh
解压后进入文件夹。运行以下命令。
mkdir d2l-zh && cd d2l-zh
curl https://zh.d2l.ai/d2l-zh-1.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip
具体操作参见:http://zh.gluon.ai/chapter_prerequisite/install.html
发现其实这一步不需要。。。这一步我本来想按照gluon官方安装,后来发现其实不用,按照SSD-MXNET操作就行。
官方地址在:https://github.com/zhreshold/mxnet-ssd
三、部署SSD
3.1先拉取mxnet-ssd项目
git clone --recursive https://github.com/zhreshold/mxnet-ssd.git
- 拉取下来的项目默认名称为
mxnet-ssd
3.2
下载训练好的ssd模型
下载地址,老样子,科学上网
下载成功后,把.params
文件和.json
文件放在项目的model文件夹下(发现这一步在后面训练VOC的数据集的时候有用,测试demo可能用不上,所以这一步可以放在后面做)
3.3 测试demo
新建一个conda环境
conda create -n SSD python=your_python_version,其中SSD为环境名,后面为环境内的python版本号
source activate SSD,启动SSD环境
(
删除虚拟环境。
使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。
)
conda install opencv matplotlib numpy scipy
复制配置文件,不过我还没弄明白这一步为什么,也可能不用复制,有待验证
cd mxnet-ssd/mxnet
cp make/config.mk ./config.mk
如何还缺什么模块就用conda安装就可以
使用CPU测试,运行时发现找不到“module” 。这个文件在symbol文件夹下。我猜测可能是因为路径问题,添加临时路径
export PYTHONPATH=/home/king/mxnet-ssd/symbol
再运行,一个‘xrange’函数有问题,搜索一番是因为升级了,根据提示去文件里改称“range”就行了
python demo.py --gpu 0
成功
四、按照官方例程训练VOC数据集
4.1 下载预训练模型
就是上面的3.2
4.2voc数据集
下载voc数据集
cd /path/to/where_you_store_datasets/
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
解压命令一起执行,会只解压出一个文件夹。
然后用一个链接将你存放数据的地方链接到ssd项目的data
文件夹下,命令行输入:
ln -s /path/to/VOCdevkit /path/to/this_example/data/VOCdevkit
我的是,(此时在根目录下运行以下命令)
ln -s /home/king/VOC/VOCdevkit /home/king/mxnet-ssd/data/VOCdevkit
出现一个这样的文件夹
然后,创建打包的二进制文件加速训练(我自己翻译的,也不知道对不对)
# cd /path/to/mxnet-ssd
bash tools/prepare_pascal.sh
运行时发现还是找不到对应的moudle,搜索了一番找到conda添加环境变量办法:
https://blog.csdn.net/javafalcon/article/details/82421579
python
import sys
sys.path
找到conda中现在环境的路径,进入该路径,对我而言(下图为修改后的路径),进入到了
/home/king/miniconda3/envs/SSD/lib/python3.7/site-packages
$ sudo echo mymodel.pth
$ sudo gedit mymodel.pth
在打开的文件中加入自己所需的路径,我这里加入了
/home/king/mxnet-ssd/symbol
/home/king/mxnet-ssd/tools
重启环境生效
卡住了,生成训练文件时有问题。想办法去
尝试自己生成.rec文件,两个参考教程:(这两个语法都已经不能了,但是可以帮助理解)
https://blog.csdn.net/eternity1118_/article/details/70853177
https://blog.csdn.net/u014380165/article/details/78279820?utm_source=blogxgwz3
参考下面这个写出来了
https://blog.csdn.net/weixin_34293059/article/details/85988396
我自己的命令句:(在工程文件mxnet-ssd下运行)
python /home/king/mxnet-ssd/mxnet/tools/im2rec.py /home/king/mxnet-ssd/data /home/king/mxnet-ssd/data/VOCdevkit --pack-label 1
第一个参数找到im2rec的位置 ,第二个找到lst文件所在位置(不写具体名称则所有lst文件都转换),第三个是数据集图像的存放路径(存疑)
报错提示:
pip install future
运行成功
运行测试,失败。发现问题是上面生成.rec文件有问题,命令已经更新,现在可以使用。
清明节回家一趟回来发现显卡驱动不知道怎么不行了,删除驱动又重装,折腾了一下午。
再进行测试,提示:
RuntimeError: failed to execute ['dot', '-Tpdf', '-O', 'test'], make sure the Graphviz executables are on your systems' path
搜索发现是Graphviz的问题,这是一个绘图工具,但是明明已经安装,一番搜索发现退出miniconda,在系统环境下也安装Graphviz就可以解决。
再运行,成功
python train.py --resume=继续训练的模型
暂停训练后使用上面的语句继续训练