使用colab运行深度学习gpu应用(Mask R-CNN)实践
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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
- 可以把Colab看成是一台带有GPU的Ubuntu虚拟机,只不过我们只能用命令行的方式操作它。你可以选择执行系统命令,亦或是直接编写运行python代码。
- 挂载完Google Drive,会在虚拟机里生成一个drive文件夹,直接将Google Drive当成是一块硬盘即可。访问drive文件夹里的文件,就是在访问你的Google Drive里的文件。
- Colab最多连续使用12小时,超过时间系统会强制掐断正在运行的程序并收回占用的虚拟机。(好像再次连接到虚拟机后,虚拟机是被清空的状态,需要重新配置和安装库等等)
- 请使用科学上网方式。
总体来说,对于很多无力购置独立gpu显卡的深度学习开发者来说,在colab中使用google提供的配置好的运行环境以及免费的显卡,是一个不错的选择。但比较遗憾的是上述第3条,本人实际验证发现,一旦关闭自主安装好的软件环境(比如重新打开notebook,无论python文件新旧),以前配置的包都没有了,连google drive的驱动也要重装一遍,才能再次访问云盘文件。总之,繁琐是有点,但提供了一个免费撸代码的舞台,确实是AI开发者的福音。
使用colab运行深度学习gpu应用(Mask R-CNN)实践的更多相关文章
- 如何挑选深度学习 GPU?
如何挑选深度学习 GPU? 深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验.因此,选择购买合适的GPU是一项非常重要的决策.那么2020年,如何选择 ...
- 深度学习 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 ...
- 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题
在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...
- 【深度学习系列3】 Mariana CNN并行框架与图像识别
[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...
- 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf
深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...
- 【神经网络与深度学习】卷积神经网络(CNN)
[神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...
- 使用GOOGLE COLAB训练深度学习模型
使用 谷歌提供了免费的K80的GPU用于训练深度学习的模型.而且最赞的是以notebook的形式提供,完全可以做到开箱即用.你可以从Google driver处打开.或者这里 默认创建的是没有GPU的 ...
- 深度学习GPU集群管理软件 OpenPAI 简介
OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...
- 教你如何挑选深度学习GPU【转】
本文转载自:https://blog.csdn.net/qq_38906523/article/details/78730158 即将进入 2018 年,随着硬件的更新换代,越来越多的机器学习从业者又 ...
随机推荐
- Web Assembly背景
Javascript ,也叫Ecma script, 是这家伙用了 10 天时间赶出来的.. 所以,各位程序猿们,如果你觉得老板 10 天要你们上线一个 App 是一个丧心病狂的事情,那么可以多想想 ...
- 内部类 final变量的生命周期
(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所以内部类有权限访问外部类的所有成员,包括private的. (2).内部类不能访问外部类方法中的局部变量,除非变量是final的(一般发生 ...
- codeforces 414B B. Mashmokh and ACM(dp)
题目链接: B. Mashmokh and ACM time limit per test 1 second memory limit per test 256 megabytes input sta ...
- SPOJ:Eagle and Dogs(求树上每个点最远可以走到哪里---树的直径||DP)
Eagle (AKA Mohamed Ahmed) lives in a city consists of n intersections connected by n-1 roads, in a w ...
- java web项目的目录结构
- 【前端】Nodejs给没有引号的json数据添加引号
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/node_json.html 我们经常会遇到一些json数据需要放到json文件中,然后动态加载的场景. 但是也经常 ...
- View Controller Programming Guide for iOS---(二)---View Controller Basics
View Controller Basics Apps running on iOS–based devices have a limited amount of screen space for d ...
- k8s-容器资源需求、资源限制及HeapSter-二十二
一.容器资源需求.资源限制 资源需求.资源限制:指的是cpu.内存等资源: 资源需求.资源限制的两个关键字: request:需求,最低保障,在调度时,这个节点必须要满足request需求的资源大小: ...
- 博客图片失效?使用npm工具一次下载/替换所有失效的外链图片
前言 大约一个月前,微博的图片外链失效了,以及掘金因为盗链问题也于2019/06/06决定开启防盗链,造成的影响是:个人博客网站的引用了这些图片外链都不能显示. 目前微博和掘金的屏蔽,在CSDN和se ...
- POJ2369【循环节】
题意: 给一个序列,他需要几步就能变成原来的序列. 思路: 那么就是找一下各个循环节(用dfs随便搞了-),求一下最小公倍数就好了. 贴一发挫code- //#include <bits/std ...