Google大大免费开放了GPU给全世界使用相信很多人已经知道了,那么我们把Goolge云和慈善GPU结合起来使用简直不要太方便!再也不用排队等待老板的GPU了!
有效利用慈善GPU跑模型需要两个条件:1、Goolge账号,2、科学上网
只要注册一个Google账号,就会免费送15G的空间,良心谷歌啊。当然如果嫌小可以花钱扩容,价格也没有很贵。这个注册过程和科学上网过程我就不说了。
我们登录上谷歌云,把项目上传到谷歌云里,然后打开Caloboratory,加载完谷歌硬盘就可以进行操作啦。下面就来说一说详细步骤。
我们先将faster-rcnn的仓库克隆到本地,我这里使用的是jwyang
的faster-rcnn.pytorch
。当然如果想要使用其他大佬的其他框架的faster-rcnn也可以。注意,克隆到本地需要先安装Git,这个可以参考廖雪峰的Git教程。在你想要克隆的文件夹下打开 Git bash,输入以下命令:
git clone -b pytorch-1.0 --single-branch --depth=1 --recursive https://github.com/jwyang/faster-rcnn.pytorch.git
git -b 分支名 --single-branch
是克隆指定分支的命令,因为我需要克隆的模型是pytorch1.0的faster-rcnn,而master下的faster-rcnn是0.4版本的,所以我需要到pytorch-1.0下去克隆。
--depth==1
是指克隆最近一次更改,因为将整个仓库克隆下来可能会因为仓库太大而报错无法克隆。
--recursive
用于循环递归克隆子项目
cd faster-rcnn.pyroch
mkdir data
这个没啥好说的
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
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
注意:wget是一个下载工具,linux系统中会自带wget,Windows环境下需要下载,教程地址:windows安装wget教程
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
cd faster-rcnn.pytorch/data
ln -s VOCdevkit的绝对路径 VOCdevkit2007
Tips:其实这步可以不执行,直接将VOCdevkit改成VOCdevkit2007
PASCAL VOC 2010 and 2012、COCO等数据集也是如此操作。
VGG16: Dropbox, VT Server
ResNet101: Dropbox, VT Server
基于caffe训练的模型要比基于pytorch训练的模型表现好些,推荐下载Dropbox。下载完以后,把这两个模型都放进/data/pretrained_model/里。
其实从一到五可以直接在谷歌云上完成,但是我没试,各位大佬如果有感兴趣的可以试一下。
接着打开Colaboratory,确认你的账号已经登录,然后挂载你的谷歌硬盘
注意:下面的工作目录若非特意cd,都是/content/drive/My Drive/faster-rcnn.pytorch
使用pip命令安装所有的python依赖包
pip install -r requirements.txt
使用下面的命令编译CUDA依赖环境
cd lib
!python setup.py build develop
cd ..
Tips:要注意如果出现can’t import ‘imread’,请检查scipy的版本是否超过了1.0,因为1.0以上的版本里,scipy不再使用imread。并且推荐更改pillow版本为5.2.0。而且scipy和pillow要在同一路径下
pip uninstall scipy
pip install scipy==1.0
pip uninstall pillow
pip install pillow==5.2.0
在训练之前,设置 正确的保存和加载模型的目录,改变trainval_net
和test_net.py
中的参数save_dir
和loader_dir
以适应你的环境。
使用vgg16在pascal_voc上训练你的faster-rcnn模型,运行下面代码:
!CUDA_VISIBLE_DEVICES=0 python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--epochs 1 --bs 1 --nw 4 \
--lr 1e-3 --lr_decay_step 5 \
--cuda
bs
是batch size,默认为1
dataset
是要在什么数据集上训练
net
是你要使用的预训练模型,可以换为resnet101
epoch
是要训练的轮数
nw
是number work
lr
是学习率
由上, BATCH_SIZE 和 WORKER_NUMBER 可以根据你的GPU情况来设置.。比如在 12G的Titan Xp上,可以达到4。如果你有多个GPU,可以使用下面代码使用全部的GPU来训练
!python trainval_net.py --dataset pascal_voc --net vgg16 \
--bs 24 --nw 8 \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda --mGPUs
如果你想要估计vgg16的预训练模型在pascal_voc测试集上的表现,运行以下代码即可
!python test_net.py --dataset pascal_voc --net vgg16 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda
要指定具体的checksession、checkepoch、checkpoint数值。如果你不知该如何设置,可以根据你训练出来的模型名字来设置。
例如:
!python test_net.py --dataset pascal_voc --net vgg16 \
--checksession 1 --checkepoch 1 --checkpoint 10021 \
--cuda
如果你想要运行预训练模型去检测你自己的图片,要先下载预训练模型或者训练你自己模型,然后把图片放到工作目录下的images文件夹里,再运行
!python demo.py --net vgg16 \
--checksession $SESSION --checkepoch $EPOCH \
--checkpoint $CHECKPOINT \
--cuda --load_dir path/to/model/directoy
除了指定那三个数值外,还要写清楚存放vgg16/pascal_voc/模型.pth的文件夹。例如我的是
那么,命令就是
!python demo.py --net vgg16 \
--checksession 1 --checkepoch 1 \
--checkpoint 10021 \
--cuda --load_dir models
torch版本:1.0.1
Python版本:3.6
torchvision版本:0.2.1
需要OpenCV3、matplotlib、numpy等
Ubuntu16.04(这是我自己的系统版本)
CUDA版本:9.0
GPU型号:GTX1080
查看上述信息的命令参见https://blog.csdn.net/ThunderF/article/details/100727446
克隆仓库、创建数据文件夹、下载数据、下载预训练模型这几步可以参考上面的部分,编译步骤也与上面相似。
使用pip命令安装所有的python依赖包
pip install -r requirements.txt
使用下面的命令编译CUDA依赖环境
cd lib
!python setup.py build develop
cd ..
Tips:
1、要注意如果出现can't import 'imread'
,这个问题的处理与上面相同。
2、报can not import _mask
等类似的错误,大概是coco编译环境错误,网上的方法我也试了,并没有起作用。后来我编译了两次setup,问题解决了。
如果你已经执行了上面 python setup.py build develop,那么将lib下生成build文件夹和faster-rcnn.egg-info删掉,再执行下面的操作
一、将本文上传的setup.py文件放入pycocotools文件夹下
再执行下面命令
# 进入pycocotools文件下
python setup.py build develop
二、再退回到lib文件夹下再执行一次上面的命令即可
训练、测试的命令操作和上面的基本一致。若运行时出现faster rcnn:assert (boxes[:, 2] >= boxes[:, 0]).all()
的错误,可以参考https://blog.csdn.net/10km/article/details/64641322。
我们仍然采用VOC2007外表,把我们自己的数据集“塞进去”
---VOC2007
------Annotations
------ImagesSet
---------Main
------JPEGImages
真正“起作用”的训练集其实是这四个文件夹,位置是
faster-rcnn.pytorch/data/VOCdevkit2007/VOC2007/
首先把我们的训练图片放进进JPEGImage文件夹里。该文件夹下原来的图片我们需要备份,并从JPEGImage里移除。然后将Annotations下的xml文件替换为自己的,原来的xml文件备份后从该文件夹下移除。
接着我们自己制作trainval.txt文件,即将trainval.txt文件里的图片名称替换为自己的图片名称,具体请看图:
制作完成后用其替换掉ImagesSet\Main\
下的trainval.txt。然后修改lib\datasets\pascal_voc.py
中的类别信息,即把原来的类别换成你要训练的类别。如:
训练命令与前面一致。
不对的地方还请各位大佬指正!留言和点赞Thanks♪(・ω・)ノ