使用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 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開發者的福音。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM