用colab配置环境训练faster-rcnn
一、前言
最近在实验室旧服务器上配置训练faster-rcnn的环境,因为没有sudo权限无法升级cuda版本(8.0),导致怎么编译都不成功,因此钻进了牛角尖去找各种不升cuda版本也能成功编译的解决办法,但这早就注定了是一场徒劳,期间发现别能编译成功的cuda版本至少是9.0,花了两天时间毫无进展,后来想到了免费的colab,决定尝试一下,没想到一下子就能编译成功了,现在记录下配置过程供以后参考。我也是第一次使用colab,如有不对的地方欢迎大家多多拍砖多多指教。
这里配置的是python3.6+pytorch1.0
官方教程
新手指引:/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d
常见问题:/colaboratory/faq.html
官方给出的新手指引当中已经给出了前期配置、常见软件和库的安装等方法。大家凭借官方教程可以基本入门Colab,但如果想更加自如地在Colab上跑通自己的代码,可能还需要更多的学习。
二、前期准备
为了能顺利跑起来,请使用科学上网。
依赖平台:Google Drive
Colab需要从Google Drive(谷歌云盘)进入。为了方便整理,我先在Google Drive中创建了一个新文件夹*“Colab”*。
然后,我们在*“Colab”*文件夹中新建一个Colab项目,如图所示:
注意:首次创建Colab项目需要点击“关联更多应用”,添加“Colaboratory”应用。
创建完项目之后我们就可以进入Colab的主界面了。是不是发现和jupyter notebook很像?
现在,我们就可以在代码框中输入一些代码。这里注意,如果我们直接输入代码,系统会当作是Python代码执行。例如我们输入:
a=10086print(a)
运行之后输出框中会打印出‘10086’
如果要执行系统命令,需要在命令前加感叹号!
,例如我们输入!pwd
查看当前路径
!pwd
执行后输出框会显示当前目录的路径。这跟linux命令行操作完全一样了!
其实我们在Colab中连接的云端的那台虚拟机正是使用的Ubuntu操作系统,我们可以将自己在Colab中的一切操作看作是在用命令行控制云端的那台Ubuntu虚拟机。你可以用它来直接跑代码,也可以使用一些系统命令。
三、配置faster-rcnn训练环境
1.修改笔记本环境
我们每次新建一个Colab项目后,最好先对笔记本环境进行配置,即选择python的版本和是否使用GPU
这里选择python3,GPU,修改完后点击保存。
2.安装必要的包和软件
输入以下代码,按Ctrl+Enter执行
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null!apt-get update -qq 2>&1 > /dev/null!apt-get -y install -qq google-drive-ocamlfuse fusefrom google.colab import authauth.authenticate_user()from oauth2client.client import GoogleCredentialscreds = GoogleCredentials.get_application_default()import getpass!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URLvcode = getpass.getpass()!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
运行后,会出现以下提示
先点击相应的链接,选择自己的谷歌账号登陆(如果不科学上网可能登陆不了)并允许,最后会得到验证码,复制验证码粘贴到上面的框中回车键即可。
3.挂载云盘端
其实完成前面的操作我们就可以在Colab中敲写代码或者输入一些系统命令了,但是我们现在连接的虚拟机是和Google Drive脱离的,也就是说我们跑的程序无法使用谷歌云盘里的文件,这就非常受限制了。所以我们一般需要将谷歌云盘看作是虚拟机中的一个硬盘挂载,这样我们就可以使用虚拟机轻松访问谷歌云盘。
挂载Google Drive代码:
方法一.
# 指定Google Drive云端硬盘的根目录,名为drive!mkdir -p drive!google-drive-ocamlfuse drive
上面的方法实际是在虚拟机上安装谷歌云盘!如果不行可以尝试方法二
方法二.
# Load the Drive helper and mountfrom google.colab import drive# This will prompt for authorization.drive.mount('/content/drive')
输入授权码即可。挂载完成后在虚拟机中会多出一个文件夹"drive",用!ls
命令查看。
4.配置深度学习平台
其实在colab里面已经默认安装有最新版的pytorch了,如果不放心可以自己手动安装一下,安装方式为:
!pip3 install /whl/cu80/torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whl!pip3 install torchvision
除了pytorch外,colab还自带了tensorflow最新版和其他大量的第三方库,如果没有版本要求基本上不用自己手动去安装。下面直接进入主题,用colab训练faster-rcnn。
四、用colab训练faster-rcnn
项目地址:/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
注意:进入项目之后会发现有4个branchs,选择pytorch-1.0
这个branch,选错branch会导致编译错误。
然后git clone这个仓库到你的colab中,为了保险起见,clone的时候加上分支控制-b pytorch-1.0
即:
!git clone -b pytorch-1.0 /jwyang/faster-rcnn.pytorch.git
这里有一点要注意,不能直接使用cd
改变路径,需要使用python的方法,如下
import osos.chdir('faster-rcnn.pytorch')!ls
创建新文件夹data并下载预训练模型
!mkdir dataos.chdir('data')!mkdir pretrained_modelos.chdir('pretrained_model')# 下载预训练模型res101!wget https://filebox.ece.vt.edu/~jw2yang/faster-rcnn/pretrained-base-models/resnet101_caffe.pth# 下载预训练模型vgg16!wget https://filebox.ece.vt.edu/~jw2yang/faster-rcnn/pretrained-base-models/vgg16_caffe.pth
预训练模型下载好以后,返回上一级路径data,然后下载训练集voc
os.chdir('../') #返回上一级目录即data/下# 下载数据集!wget http://host.robots.ox.ac.uk/pascal/VOC/voc/VOCtrainval_06-Nov-.tar!wget http://host.robots.ox.ac.uk/pascal/VOC/voc/VOCtest_06-Nov-.tar!wget http://host.robots.ox.ac.uk/pascal/VOC/voc/VOCdevkit_08-Jun-.tar# 解压缩!tar xvf VOCtrainval_06-Nov-.tar!tar xvf VOCtest_06-Nov-.tar!tar xvf VOCdevkit_08-Jun-.tar# 建立软连接!ln -s $VOCdevkit VOCdevkit #注意!如果上面解压缩得到的文件夹名字为"VOCdevdit",要将其改为“VOCdevdit",否则后面会报错。
回到上一级路径,然后进入lib
中进行编译(在这一步经常会出错,博主本人在这里遇到各种错误并解决了,如果你也遇到错误了欢迎与我交流)
os.chdir('../lib')!python setup.py build develop
输出如下则表示编译成功
编译成功后,就可以开始训练了。
训练参数可以参考下表配置
我这里的训练参数使用了表格的倒数三行的参数。
训练代码(参考):
!CUDA_VISIBLE_DEVICES=0 python trainval_net.py \--dataset pascal_voc \--net res101 \--bs 4 \--nw 0 \--lr 0.004 \--lr_decay_step 8 \--epochs 10 \--cuda
然后就会进入训练阶段,输出框会输出如下内容(我这里是训练到epoch2才截的图):
Called with args:Namespace(batch_size=4, checkepoch=1, checkpoint=0, checkpoint_interval=10000, checksession=1, class_agnostic=False, cuda=True, dataset='pascal_voc', disp_interval=100, large_scale=False, lr=0.004, lr_decay_gamma=0.1, lr_decay_step=8, mGPUs=False, max_epochs=10, net='res101', num_workers=0, optimizer='sgd', resume=False, save_dir='models', session=1, start_epoch=1, use_tfboard=False)Using config:{'ANCHOR_RATIOS': [0.5, 1, 2],'ANCHOR_SCALES': [8, 16, 32],'CROP_RESIZE_WITH_MAX_POOL': False,'CUDA': False,'DATA_DIR': '/content/faster-rcnn_colab/faster-rcnn.pytorch/data','DEDUP_BOXES': 0.0625,'EPS': 1e-14,'EXP_DIR': 'res101','FEAT_STRIDE': [16],'GPU_ID': 0,'MATLAB': 'matlab','MAX_NUM_GT_BOXES': 20,'MOBILENET': {'DEPTH_MULTIPLIER': 1.0,'FIXED_LAYERS': 5,'REGU_DEPTH': False,'WEIGHT_DECAY': 4e-05},'PIXEL_MEANS': array([[[102.9801, 115.9465, 122.7717]]]),'POOLING_MODE': 'align','POOLING_SIZE': 7,'RESNET': {'FIXED_BLOCKS': 1, 'MAX_POOL': False},'RNG_SEED': 3,'ROOT_DIR': '/content/faster-rcnn_colab/faster-rcnn.pytorch','TEST': {'BBOX_REG': True,'HAS_RPN': True,'MAX_SIZE': 1000,'MODE': 'nms','NMS': 0.3,'PROPOSAL_METHOD': 'gt','RPN_MIN_SIZE': 16,'RPN_NMS_THRESH': 0.7,'RPN_POST_NMS_TOP_N': 300,'RPN_PRE_NMS_TOP_N': 6000,'RPN_TOP_N': 5000,'SCALES': [600],'SVM': False},'TRAIN': {'ASPECT_GROUPING': False,'BATCH_SIZE': 128,'BBOX_INSIDE_WEIGHTS': [1.0, 1.0, 1.0, 1.0],'BBOX_NORMALIZE_MEANS': [0.0, 0.0, 0.0, 0.0],'BBOX_NORMALIZE_STDS': [0.1, 0.1, 0.2, 0.2],'BBOX_NORMALIZE_TARGETS': True,'BBOX_NORMALIZE_TARGETS_PRECOMPUTED': True,'BBOX_REG': True,'BBOX_THRESH': 0.5,'BG_THRESH_HI': 0.5,'BG_THRESH_LO': 0.0,'BIAS_DECAY': False,'BN_TRAIN': False,'DISPLAY': 20,'DOUBLE_BIAS': False,'FG_FRACTION': 0.25,'FG_THRESH': 0.5,'GAMMA': 0.1,'HAS_RPN': True,'IMS_PER_BATCH': 1,'LEARNING_RATE': 0.001,'MAX_SIZE': 1000,'MOMENTUM': 0.9,'PROPOSAL_METHOD': 'gt','RPN_BATCHSIZE': 256,'RPN_BBOX_INSIDE_WEIGHTS': [1.0, 1.0, 1.0, 1.0],'RPN_CLOBBER_POSITIVES': False,'RPN_FG_FRACTION': 0.5,'RPN_MIN_SIZE': 8,'RPN_NEGATIVE_OVERLAP': 0.3,'RPN_NMS_THRESH': 0.7,'RPN_POSITIVE_OVERLAP': 0.7,'RPN_POSITIVE_WEIGHT': -1.0,'RPN_POST_NMS_TOP_N': 2000,'RPN_PRE_NMS_TOP_N': 12000,'SCALES': [600],'SNAPSHOT_ITERS': 5000,'SNAPSHOT_KEPT': 3,'SNAPSHOT_PREFIX': 'res101_faster_rcnn','STEPSIZE': [30000],'SUMMARY_INTERVAL': 180,'TRIM_HEIGHT': 600,'TRIM_WIDTH': 600,'TRUNCATED': False,'USE_ALL_GT': True,'USE_FLIPPED': True,'USE_GT': False,'WEIGHT_DECAY': 0.0001},'USE_GPU_NMS': True}Loaded dataset `voc__trainval` for trainingSet proposal method: gtAppending horizontally-flipped training examples...voc__trainval gt roidb loaded from /content/faster-rcnn_colab/faster-rcnn.pytorch/data/cache/voc__trainval_gt_roidb.pkldonePreparing training data...donebefore filtering, there are 10022 images...after filtering, there are 10022 images...10022 roidb entriesLoading pretrained weights from data/pretrained_model/resnet101_caffe.pth[session 1][epoch 1][iter 0/2505] loss: 4.4726, lr: 4.00e-03fg/bg=(95/417), time cost: 2.034769rpn_cls: 0.7698, rpn_box: 0.0947, rcnn_cls: 3.1212, rcnn_box 0.4869[session 1][epoch 1][iter 100/2505] loss: 1.6058, lr: 4.00e-03fg/bg=(92/420), time cost: 282.182974rpn_cls: 0.2926, rpn_box: 0.1055, rcnn_cls: 0.5404, rcnn_box 0.3736[session 1][epoch 1][iter 200/2505] loss: 1.3175, lr: 4.00e-03fg/bg=(83/429), time cost: 280.251949rpn_cls: 0.0973, rpn_box: 0.0432, rcnn_cls: 0.5531, rcnn_box 0.4124[session 1][epoch 1][iter 300/2505] loss: 1.2110, lr: 4.00e-03fg/bg=(70/442), time cost: 279.217330rpn_cls: 0.1986, rpn_box: 0.0919, rcnn_cls: 0.2961, rcnn_box 0.3653[session 1][epoch 1][iter 400/2505] loss: 1.1675, lr: 4.00e-03fg/bg=(111/401), time cost: 277.523335rpn_cls: 0.1142, rpn_box: 0.0291, rcnn_cls: 0.5117, rcnn_box 0.4730[session 1][epoch 1][iter 500/2505] loss: 1.1075, lr: 4.00e-03fg/bg=(70/442), time cost: 281.644064rpn_cls: 0.0929, rpn_box: 0.1257, rcnn_cls: 0.2761, rcnn_box 0.3332[session 1][epoch 1][iter 600/2505] loss: 1.1065, lr: 4.00e-03fg/bg=(59/453), time cost: 281.272812rpn_cls: 0.1279, rpn_box: 0.0456, rcnn_cls: 0.3245, rcnn_box 0.2569[session 1][epoch 1][iter 700/2505] loss: 1.0399, lr: 4.00e-03fg/bg=(99/413), time cost: 280.469540rpn_cls: 0.2323, rpn_box: 0.0932, rcnn_cls: 0.5178, rcnn_box 0.3769[session 1][epoch 1][iter 800/2505] loss: 1.0888, lr: 4.00e-03fg/bg=(101/411), time cost: 279.788152rpn_cls: 0.2390, rpn_box: 0.0681, rcnn_cls: 0.3894, rcnn_box 0.4226[session 1][epoch 1][iter 900/2505] loss: 1.0514, lr: 4.00e-03fg/bg=(128/384), time cost: 279.094743rpn_cls: 0.1421, rpn_box: 0.0878, rcnn_cls: 0.3806, rcnn_box 0.4146[session 1][epoch 1][iter 1000/2505] loss: 1.0105, lr: 4.00e-03fg/bg=(90/422), time cost: 277.871021rpn_cls: 0.1386, rpn_box: 0.0218, rcnn_cls: 0.4366, rcnn_box 0.3665[session 1][epoch 1][iter 1100/2505] loss: 0.9438, lr: 4.00e-03fg/bg=(123/389), time cost: 279.990570rpn_cls: 0.2340, rpn_box: 0.1765, rcnn_cls: 0.5839, rcnn_box 0.5354[session 1][epoch 1][iter 1200/2505] loss: 0.9365, lr: 4.00e-03fg/bg=(115/397), time cost: 283.719271rpn_cls: 0.1158, rpn_box: 0.0448, rcnn_cls: 0.2936, rcnn_box 0.3726[session 1][epoch 1][iter 1300/2505] loss: 0.9621, lr: 4.00e-03fg/bg=(128/384), time cost: 281.506948rpn_cls: 0.2068, rpn_box: 0.0387, rcnn_cls: 0.7982, rcnn_box 0.4249[session 1][epoch 1][iter 1400/2505] loss: 0.9196, lr: 4.00e-03fg/bg=(128/384), time cost: 278.097586rpn_cls: 0.1497, rpn_box: 0.0330, rcnn_cls: 0.3320, rcnn_box 0.3756[session 1][epoch 1][iter 1500/2505] loss: 0.9093, lr: 4.00e-03fg/bg=(101/411), time cost: 275.748964rpn_cls: 0.1374, rpn_box: 0.0361, rcnn_cls: 0.2822, rcnn_box 0.2870[session 1][epoch 1][iter 1600/2505] loss: 0.8810, lr: 4.00e-03fg/bg=(119/393), time cost: 276.830616rpn_cls: 0.1287, rpn_box: 0.0936, rcnn_cls: 0.4380, rcnn_box 0.3273[session 1][epoch 1][iter 1700/2505] loss: 0.8307, lr: 4.00e-03fg/bg=(113/399), time cost: 280.342751rpn_cls: 0.1655, rpn_box: 0.0910, rcnn_cls: 0.2600, rcnn_box 0.3362[session 1][epoch 1][iter 1800/2505] loss: 0.8967, lr: 4.00e-03fg/bg=(87/425), time cost: 281.167849rpn_cls: 0.1380, rpn_box: 0.1308, rcnn_cls: 0.3550, rcnn_box 0.2271[session 1][epoch 1][iter 1900/2505] loss: 0.9052, lr: 4.00e-03fg/bg=(104/408), time cost: 280.726496rpn_cls: 0.1270, rpn_box: 0.1022, rcnn_cls: 0.3841, rcnn_box 0.3624[session 1][epoch 1][iter 2000/2505] loss: 0.7873, lr: 4.00e-03fg/bg=(89/423), time cost: 277.209683rpn_cls: 0.1268, rpn_box: 0.0387, rcnn_cls: 0.2488, rcnn_box 0.3074[session 1][epoch 1][iter 2100/2505] loss: 0.8663, lr: 4.00e-03fg/bg=(97/415), time cost: 280.117668rpn_cls: 0.1354, rpn_box: 0.0371, rcnn_cls: 0.4960, rcnn_box 0.3263[session 1][epoch 1][iter 2200/2505] loss: 0.8516, lr: 4.00e-03fg/bg=(109/403), time cost: 280.427549rpn_cls: 0.1978, rpn_box: 0.0547, rcnn_cls: 0.3458, rcnn_box 0.3401[session 1][epoch 1][iter 2300/2505] loss: 0.7974, lr: 4.00e-03fg/bg=(116/396), time cost: 277.409676rpn_cls: 0.1059, rpn_box: 0.0384, rcnn_cls: 0.2876, rcnn_box 0.3050[session 1][epoch 1][iter 2400/2505] loss: 0.8045, lr: 4.00e-03fg/bg=(105/407), time cost: 279.156028rpn_cls: 0.1094, rpn_box: 0.0768, rcnn_cls: 0.2358, rcnn_box 0.2183[session 1][epoch 1][iter 2500/2505] loss: 0.7850, lr: 4.00e-03fg/bg=(120/392), time cost: 277.117274rpn_cls: 0.1742, rpn_box: 0.0531, rcnn_cls: 0.3195, rcnn_box 0.3734save model: models/res101/pascal_voc/faster_rcnn_1_1_2504.pth[session 1][epoch 2][iter 0/2505] loss: 0.7364, lr: 4.00e-03fg/bg=(108/404), time cost: 1.689750rpn_cls: 0.1285, rpn_box: 0.0372, rcnn_cls: 0.2504, rcnn_box 0.3203[session 1][epoch 2][iter 100/2505] loss: 0.7371, lr: 4.00e-03fg/bg=(92/420), time cost: 274.646219rpn_cls: 0.1005, rpn_box: 0.0450, rcnn_cls: 0.3673, rcnn_box 0.2630[session 1][epoch 2][iter 200/2505] loss: 0.7200, lr: 4.00e-03fg/bg=(112/400), time cost: 276.095904rpn_cls: 0.1248, rpn_box: 0.0647, rcnn_cls: 0.1967, rcnn_box 0.3372[session 1][epoch 2][iter 300/2505] loss: 0.7149, lr: 4.00e-03fg/bg=(102/410), time cost: 278.109113rpn_cls: 0.1085, rpn_box: 0.0473, rcnn_cls: 0.1914, rcnn_box 0.2414[session 1][epoch 2][iter 400/2505] loss: 0.6890, lr: 4.00e-03fg/bg=(128/384), time cost: 273.537342rpn_cls: 0.0903, rpn_box: 0.0408, rcnn_cls: 0.3973, rcnn_box 0.4046[session 1][epoch 2][iter 500/2505] loss: 0.6933, lr: 4.00e-03fg/bg=(126/386), time cost: 279.137722rpn_cls: 0.2608, rpn_box: 0.1434, rcnn_cls: 0.3289, rcnn_box 0.2678[session 1][epoch 2][iter 600/2505] loss: 0.7324, lr: 4.00e-03fg/bg=(111/401), time cost: 276.018796rpn_cls: 0.1929, rpn_box: 0.0788, rcnn_cls: 0.2978, rcnn_box 0.3067[session 1][epoch 2][iter 700/2505] loss: 0.6892, lr: 4.00e-03fg/bg=(87/425), time cost: 278.667384rpn_cls: 0.0499, rpn_box: 0.0211, rcnn_cls: 0.1220, rcnn_box 0.[session 1][epoch 2][iter 800/2505] loss: 0.7280, lr: 4.00e-03fg/bg=(102/410), time cost: 278.389553rpn_cls: 0.0571, rpn_box: 0.0559, rcnn_cls: 0.2081, rcnn_box 0.1411[session 1][epoch 2][iter 900/2505] loss: 0.6905, lr: 4.00e-03fg/bg=(114/398), time cost: 276.314513rpn_cls: 0.1066, rpn_box: 0.0391, rcnn_cls: 0.2746, rcnn_box 0.3154[session 1][epoch 2][iter 1000/2505] loss: 0.6533, lr: 4.00e-03fg/bg=(82/430), time cost: 275.988713rpn_cls: 0.0883, rpn_box: 0.0371, rcnn_cls: 0.4136, rcnn_box 0.2456[session 1][epoch 2][iter 1100/2505] loss: 0.6876, lr: 4.00e-03fg/bg=(128/384), time cost: 276.282769rpn_cls: 0.1137, rpn_box: 0.0518, rcnn_cls: 0.2628, rcnn_box 0.4541[session 1][epoch 2][iter 1200/2505] loss: 0.6285, lr: 4.00e-03fg/bg=(99/413), time cost: 276.043559rpn_cls: 0.0643, rpn_box: 0.0375, rcnn_cls: 0.3397, rcnn_box 0.3405[session 1][epoch 2][iter 1300/2505] loss: 0.7216, lr: 4.00e-03fg/bg=(82/430), time cost: 277.240751rpn_cls: 0.0897, rpn_box: 0.0131, rcnn_cls: 0.1557, rcnn_box 0.1644[session 1][epoch 2][iter 1400/2505] loss: 0.7041, lr: 4.00e-03fg/bg=(117/395), time cost: 277.448369rpn_cls: 0.0938, rpn_box: 0.0334, rcnn_cls: 0.2144, rcnn_box 0.2643[session 1][epoch 2][iter 1500/2505] loss: 0.6691, lr: 4.00e-03fg/bg=(114/398), time cost: 278.218134rpn_cls: 0.0648, rpn_box: 0.0403, rcnn_cls: 0.1703, rcnn_box 0.2494[session 1][epoch 2][iter 1600/2505] loss: 0.6776, lr: 4.00e-03fg/bg=(101/411), time cost: 276.265288rpn_cls: 0.2302, rpn_box: 0.0796, rcnn_cls: 0.3031, rcnn_box 0.2957[session 1][epoch 2][iter 1700/2505] loss: 0.6100, lr: 4.00e-03fg/bg=(111/401), time cost: 276.921033rpn_cls: 0.0445, rpn_box: 0.0589, rcnn_cls: 0.1895, rcnn_box 0.3049[session 1][epoch 2][iter 1800/2505] loss: 0.6402, lr: 4.00e-03fg/bg=(99/413), time cost: 279.126111rpn_cls: 0.0976, rpn_box: 0.0408, rcnn_cls: 0.1940, rcnn_box 0.2101[session 1][epoch 2][iter 1900/2505] loss: 0.6828, lr: 4.00e-03fg/bg=(115/397), time cost: 277.349934rpn_cls: 0.1912, rpn_box: 0.0540, rcnn_cls: 0.1890, rcnn_box 0.2691[session 1][epoch 2][iter 2000/2505] loss: 0.6197, lr: 4.00e-03fg/bg=(90/422), time cost: 276.248681rpn_cls: 0.0222, rpn_box: 0.0638, rcnn_cls: 0.1732, rcnn_box 0.2191[session 1][epoch 2][iter 2100/2505] loss: 0.6087, lr: 4.00e-03fg/bg=(113/399), time cost: 277.705678rpn_cls: 0.1838, rpn_box: 0.1351, rcnn_cls: 0.3173, rcnn_box 0.2759[session 1][epoch 2][iter 2200/2505] loss: 0.6375, lr: 4.00e-03fg/bg=(91/421), time cost: 277.965877rpn_cls: 0.0758, rpn_box: 0.0216, rcnn_cls: 0.2189, rcnn_box 0.1767[session 1][epoch 2][iter 2300/2505] loss: 0.6471, lr: 4.00e-03fg/bg=(107/405), time cost: 275.611051rpn_cls: 0.0862, rpn_box: 0.0442, rcnn_cls: 0.2505, rcnn_box 0.2988
注意:colab好像一次只能用12个小时,12个小时还没训练完的话会自动停止训练,并且资源会被谷歌回收,也就是说所有结果都会被清空,因此,请注意你的训练时长!
五、总结
1、可以把Colab看成是一台带有GPU的Ubuntu虚拟机,只不过我们只能用命令行的方式操作它。你可以选择执行系统命令,亦或是直接编写运行python代码。
2、挂载完Google Drive,会在虚拟机里生成一个drive文件夹,直接将Google Drive当成是一块硬盘即可。访问drive文件夹里的文件,就是在访问你的Google Drive里的文件。
3、Colab最多连续使用12小时,超过时间系统会强制掐断正在运行的程序并收回占用的虚拟机。(好像再次连接到虚拟机后,虚拟机是被清空的状态,需要重新配置和安装库等等)
4、请使用科学上网
参考资料
faster-rcnn pytorch项目地址
Google Colab——用谷歌免费GPU跑你的深度学习代码
官方教程