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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。
- 可以把Colab看成是一台帶有GPU的Ubuntu虛擬機,只不過我們只能用命令行的方式操作它。你可以選擇執行系統命令,亦或是直接編寫運行python代碼。
- 掛載完Google Drive,會在虛擬機里生成一個drive文件夾,直接將Google Drive當成是一塊硬盤即可。訪問drive文件夾里的文件,就是在訪問你的Google Drive里的文件。
- Colab最多連續使用12小時,超過時間系統會強制掐斷正在運行的程序並收回占用的虛擬機。(好像再次連接到虛擬機后,虛擬機是被清空的狀態,需要重新配置和安裝庫等等)
- 請使用科學上網方式。
總體來說,對於很多無力購置獨立gpu顯卡的深度學習開發者來說,在colab中使用google提供的配置好的運行環境以及免費的顯卡,是一個不錯的選擇。但比較遺憾的是上述第3條,本人實際驗證發現,一旦關閉自主安裝好的軟件環境(比如重新打開notebook,無論python文件新舊),以前配置的包都沒有了,連google drive的驅動也要重裝一遍,才能再次訪問雲盤文件。總之,繁瑣是有點,但提供了一個免費擼代碼的舞台,確實是AI開發者的福音。
