1,目的

Google Colaboratory(https://colab.research.google.com)是谷歌开放的一款研究工具,主要用于机器学习的开发和研究。这款工具现在可以免费使用,但是不是永久免费暂时还不确定。Google Colab最大的好处是给广大的AI开发者提供了免费的GPU使用!GPU型号是Tesla K80!你可以在上面轻松地跑例如:Keras、Tensorflow、Pytorch等框架。

Mask R-CNN(https://github.com/matterport/Mask_RCNN),Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow,是一款物体检测与分割的开源软件。Mask R-CNN是ICCV 2017的best paper,彰显了机器学习计算机视觉领域在2017年的最新成果。在机器学习2017年的最新发展中,单任务的网络结构已经逐渐不再引人瞩目,取而代之的是集成,复杂,一石多鸟的多任务网络模型。Mask R-CNN就是典型的代表。本篇大作的一作是何凯明。

本文目的在于尝试在colab上使用其GPU运行环境,运行Mask R-CNN的demo,看看实际运行的速度和效果究竟如何。

2,运行环境准备

参考文件:Google Colab——用谷歌免费GPU跑你的深度学习代码

https://www.jianshu.com/p/000d2a9d36a0

为使mrcnn的demo代码能在colab中跑起来,需先安装运行环境。步骤如下:

è       将github项目代码复制到google云端硬盘中。

è       在云端notebook中启动demo代码。

è       设置notebook代码运行环境

è       安装软件并挂载Google Drive

è       安装requirements包

è       安装mrcnn包

2.1复制代码

将Mask R-CNN代码从github下载,然后上传到google云端硬盘中。具体步骤略过。

2.2,打开代码

在google drive目录中找到 samples目录下的demo.ipynb文件,点击鼠标右键,选择“打开方式”,选择“Colaboratory”

2.3,设置代码环境

依次选择菜单项:修改—笔记本设置,在设置界面选择GPU加速器。

2.4,安装必要的包和软件

点击“+代码”按钮,在其中输入以下代码,按ctrl+enter运行

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa >& > /dev/null
!apt-get update -qq >& > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null >& | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

运行代码,运行中会提示输入验证码,点击程序给出的网址进行验证即可。

注意:本人使用时进行了2次验证。

2.5,挂载Google Drive

点击“+代码”按钮,在其中输入以下代码,按ctrl+enter运行

!mkdir -p drive
!google-drive-ocamlfuse drive

然后输入“!ls drive”查看挂载的文件。

2.6,安装依赖包

运行以下命令:

!pip3 install -r drive/mrcnn/Mask_RCNN-master/requirements.txt

2.7,安装mrcnn包

首先发出以下命令,更改当前目录为mrcnn主目录:

import os

os.chdir("drive/mrcnn/Mask_RCNN-master")

然后运行安装程序:

!python3 setup.py install

过程如下(有节选):

WARNING:root:Fail load requirements file, so using default ones.

running install

running bdist_egg

running egg_info

creating mask_rcnn.egg-info

writing mask_rcnn.egg-info/PKG-INFO

…

installing library code to build/bdist.linux-x86_64/egg

running install_lib

running build_py

creating build

creating build/lib

creating build/lib/mrcnn

copying mrcnn/parallel_model.py -> build/lib/mrcnn

…

Adding mask-rcnn 2.1 to easy-install.pth file

Installed /usr/local/lib/python3./dist-packages/mask_rcnn-2.1-py3..egg

Processing dependencies for mask-rcnn==2.1

Finished processing dependencies for mask-rcnn==2.1

3,运行demo

先将当前目录变更到samples下:

import os

os.chdir("/content/drive/mrcnn/Mask_RCNN-master/samples")

3.1 下载预训练模型

3.2 模型配置

运行结果如下,可以看到使用了1块gpu加速:

Configurations:

BACKBONE                       resnet101

BACKBONE_STRIDES               [, , , , ]

BATCH_SIZE                     

BBOX_STD_DEV                   [0.1 0.1 0.2 0.2]

COMPUTE_BACKBONE_SHAPE         None

DETECTION_MAX_INSTANCES        

DETECTION_MIN_CONFIDENCE       0.7

DETECTION_NMS_THRESHOLD        0.3

FPN_CLASSIF_FC_LAYERS_SIZE     

GPU_COUNT                      

GRADIENT_CLIP_NORM             5.0

IMAGES_PER_GPU                 

IMAGE_CHANNEL_COUNT            

IMAGE_MAX_DIM                  

IMAGE_META_SIZE                

IMAGE_MIN_DIM                  

IMAGE_MIN_SCALE                

IMAGE_RESIZE_MODE              square

IMAGE_SHAPE                    [     ]

LEARNING_MOMENTUM              0.9

LEARNING_RATE                  0.001

LOSS_WEIGHTS                   {'rpn_class_loss': 1.0, 'rpn_bbox_loss': 1.0, 'mrcnn_class_loss': 1.0, 'mrcnn_bbox_loss': 1.0, 'mrcnn_mask_loss': 1.0}

MASK_POOL_SIZE                 

MASK_SHAPE                     [, ]

MAX_GT_INSTANCES               

MEAN_PIXEL                     [123.7 116.8 103.9]

MINI_MASK_SHAPE                (, )

NAME                           coco

NUM_CLASSES                    

POOL_SIZE                      

POST_NMS_ROIS_INFERENCE        

POST_NMS_ROIS_TRAINING         

PRE_NMS_LIMIT                  

ROI_POSITIVE_RATIO             0.33

RPN_ANCHOR_RATIOS              [0.5, , ]

RPN_ANCHOR_SCALES              (, , , , )

RPN_ANCHOR_STRIDE              

RPN_BBOX_STD_DEV               [0.1 0.1 0.2 0.2]

RPN_NMS_THRESHOLD              0.7

RPN_TRAIN_ANCHORS_PER_IMAGE    

STEPS_PER_EPOCH                

TOP_DOWN_PYRAMID_SIZE          

TRAIN_BN                       False

TRAIN_ROIS_PER_IMAGE           

USE_MINI_MASK                  True

USE_RPN_ROIS                   True

VALIDATION_STEPS               

WEIGHT_DECAY                   0.0001

3.3 建立模型并装载权重文件

3.4 设置识别类型

此处设置的检测类别(即关注类型)不算多,涵盖了81种物体。

3.5 执行物体检测

总算要执行物体检测了,运行以下代码:

经过不到10秒的时间,检测完毕,输出如下:

Processing  images

image                    shape: (, , )         min:    0.00000  max:  255.00000  uint8

molded_images            shape: (, , , )    min: -123.70000  max:  151.10000  float64

image_metas              shape: (, )               min:    0.00000  max: 1024.00000  float64

anchors                  shape: (, , )        min:   -0.35390  max:    1.29134  float32

再多运行几次上述代码,不同的图片也都在10秒内完成了检测。可以看到,检测的效果很不错,无错检和漏检,物体轮廓标记准确。

4,总结

以下总结来源于作者:Caria_W
链接:https://www.jianshu.com/p/000d2a9d36a0
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  1. 可以把Colab看成是一台带有GPU的Ubuntu虚拟机,只不过我们只能用命令行的方式操作它。你可以选择执行系统命令,亦或是直接编写运行python代码。
  2. 挂载完Google Drive,会在虚拟机里生成一个drive文件夹,直接将Google Drive当成是一块硬盘即可。访问drive文件夹里的文件,就是在访问你的Google Drive里的文件。
  3. Colab最多连续使用12小时,超过时间系统会强制掐断正在运行的程序并收回占用的虚拟机。(好像再次连接到虚拟机后,虚拟机是被清空的状态,需要重新配置和安装库等等)
  4. 请使用科学上网方式。

总体来说,对于很多无力购置独立gpu显卡的深度学习开发者来说,在colab中使用google提供的配置好的运行环境以及免费的显卡,是一个不错的选择。但比较遗憾的是上述第3条,本人实际验证发现,一旦关闭自主安装好的软件环境(比如重新打开notebook,无论python文件新旧),以前配置的包都没有了,连google drive的驱动也要重装一遍,才能再次访问云盘文件。总之,繁琐是有点,但提供了一个免费撸代码的舞台,确实是AI开发者的福音。

使用colab运行深度学习gpu应用(Mask R-CNN)实践的更多相关文章

  1. 如何挑选深度学习 GPU?

    如何挑选深度学习 GPU? 深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验.因此,选择购买合适的GPU是一项非常重要的决策.那么2020年,如何选择 ...

  2. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 环境配置

    本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 ...

  3. 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题

    在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...

  4. 【深度学习系列3】 Mariana CNN并行框架与图像识别

    [深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...

  5. 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf

    深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...

  6. 【神经网络与深度学习】卷积神经网络(CNN)

    [神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...

  7. 使用GOOGLE COLAB训练深度学习模型

    使用 谷歌提供了免费的K80的GPU用于训练深度学习的模型.而且最赞的是以notebook的形式提供,完全可以做到开箱即用.你可以从Google driver处打开.或者这里 默认创建的是没有GPU的 ...

  8. 深度学习GPU集群管理软件 OpenPAI 简介

    OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...

  9. 教你如何挑选深度学习GPU【转】

    本文转载自:https://blog.csdn.net/qq_38906523/article/details/78730158 即将进入 2018 年,随着硬件的更新换代,越来越多的机器学习从业者又 ...

随机推荐

  1. UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)

    d.给定一个图,判断是不是二分图. s.可以交叉染色,就是二分图:否则,不是. 另外,此题中的图是强连通图,即任意两点可达,从而dfs方法从一个点出发就能遍历整个图了. 如果不能保证从一个点出发可以遍 ...

  2. Python里的一些注释规范

    写代码注释是一件很重要的事情,如果你写的一段函数给别人调用那么往往都需要配上一些基本的注释.写好代码可以让别人容易阅读你的代码.试想一 下:如果你在github上面找到一段你想要的代码,这段代码有20 ...

  3. Android Studio手动下载配置Gradle的方法

    1 问题 (1) android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home, ...

  4. 字体的设置 REM EM PX

    px 1 一般设置页面的字体使用px 2 优点:字体设置比较稳定和精确 3 缺点:他会修改用户浏览器中的字体大小 EM 相对于父元素的字体大小,字体大小不确定,容易混乱,“em”是相对于其父元素来设置 ...

  5. C:static 关键字、静态变量、跨类访问数据

    static 在OC中的使用 参考1   参考2   参考3   参保4    参考5 跨类访问成员 参考 +号方法就是类方法(静态方法),说明不用创建对象,可以直接通过类型去直接调用这个方法,在OC ...

  6. 附加类型“UniversalReviewSystem.Models.ApplicationUser”的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值

    在使用asp.net Identity2 的 UserManager RoleManager 时,同时还有其他仓储类型接口,能实现用户扩展信息的修改,用户注册没有问题.当修改用户信息时,出现了如下异常 ...

  7. (水题)Codeforces - 327C - Magic Five

    https://codeforces.com/problemset/problem/327/C 因为答案可以有前导零,所以0和5一视同仁.每个小节内,以排在第 $i$ 个的5为结尾的序列即为在前面 $ ...

  8. C++经典面试题全集 50~100道 都附带有参考答案

    51.  引用与指针有什么区别? 答 .1) 引用必须被初始化,指针不必. 2) 引用初始化以后不能被改变,指针可以改变所指的对象. 3) 不存在指向空值的引用,但是存在指向空值的指针. 52.  描 ...

  9. HDU 1230饭前开胃菜

    题意不讲了.. 没思路,上去就是干.... 两个所谓要加的数直接存到数组,开一个标记的数组,然后直接加,乱搞一波,就好了. 细心一点. #include<iostream> #includ ...

  10. PTA PAT Judge 【模拟题,未完待续】

    The ranklist of PAT is generated from the status list, which shows the scores of the submittions. Th ...