使用colab運行深度學習gpu應用(Mask R-CNN)實踐

1,目的

Google Colaboratory(https://colab.research.google.com)是谷歌開放的一款研究工具,主要用於機器學習的開發和研究。這款工具如今能夠無償使用,可是不是永久免費暫時還不肯定。Google Colab最大的好處是給廣大的AI開發者提供了免費的GPU使用!GPU型號是Tesla K80!你能夠在上面輕鬆地跑例如:Keras、Tensorflow、Pytorch等框架。python

 

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就是典型的表明。本篇大做的一做是何凱明。linux

 

本文目的在於嘗試在colab上使用其GPU運行環境,運行Mask R-CNN的demo,看看實際運行的速度和效果究竟如何。git

2,運行環境準備

參考文件:Google Colab——用谷歌免費GPU跑你的深度學習代碼github

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

 

爲使mrcnn的demo代碼能在colab中跑起來,需先安裝運行環境。步驟以下:app

è       將github項目代碼複製到google雲端硬盤中。框架

è       在雲端notebook中啓動demo代碼。less

è       設置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 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /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 2>&1 | 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.6/dist-packages/mask_rcnn-2.1-py3.6.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               [4, 8, 16, 32, 64]

BATCH_SIZE                     1

BBOX_STD_DEV                   [0.1 0.1 0.2 0.2]

COMPUTE_BACKBONE_SHAPE         None

DETECTION_MAX_INSTANCES        100

DETECTION_MIN_CONFIDENCE       0.7

DETECTION_NMS_THRESHOLD        0.3

FPN_CLASSIF_FC_LAYERS_SIZE     1024

GPU_COUNT                      1

GRADIENT_CLIP_NORM             5.0

IMAGES_PER_GPU                 1

IMAGE_CHANNEL_COUNT            3

IMAGE_MAX_DIM                  1024

IMAGE_META_SIZE                93

IMAGE_MIN_DIM                  800

IMAGE_MIN_SCALE                0

IMAGE_RESIZE_MODE              square

IMAGE_SHAPE                    [1024 1024    3]

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                 14

MASK_SHAPE                     [28, 28]

MAX_GT_INSTANCES               100

MEAN_PIXEL                     [123.7 116.8 103.9]

MINI_MASK_SHAPE                (56, 56)

NAME                           coco

NUM_CLASSES                    81

POOL_SIZE                      7

POST_NMS_ROIS_INFERENCE        1000

POST_NMS_ROIS_TRAINING         2000

PRE_NMS_LIMIT                  6000

ROI_POSITIVE_RATIO             0.33

RPN_ANCHOR_RATIOS              [0.5, 1, 2]

RPN_ANCHOR_SCALES              (32, 64, 128, 256, 512)

RPN_ANCHOR_STRIDE              1

RPN_BBOX_STD_DEV               [0.1 0.1 0.2 0.2]

RPN_NMS_THRESHOLD              0.7

RPN_TRAIN_ANCHORS_PER_IMAGE    256

STEPS_PER_EPOCH                1000

TOP_DOWN_PYRAMID_SIZE          256

TRAIN_BN                       False

TRAIN_ROIS_PER_IMAGE           200

USE_MINI_MASK                  True

USE_RPN_ROIS                   True

VALIDATION_STEPS               50

WEIGHT_DECAY                   0.0001

 

 

3.3 創建模型並裝載權重文件

 

 

 

3.4 設置識別類型

此處設置的檢測類別(即關注類型)不算多,涵蓋了81種物體。

 

 

3.5 執行物體檢測

總算要執行物體檢測了,運行如下代碼:

 

 

 通過不到10秒的時間,檢測完畢,輸出以下:

Processing 1 images

image                    shape: (480, 640, 3)         min:    0.00000  max:  255.00000  uint8

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

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

anchors                  shape: (1, 261888, 4)        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開發者的福音。

相關文章
相關標籤/搜索