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
參考文件:Google Colab——用谷歌免費GPU跑你的深度學習代碼github
https://www.jianshu.com/p/000d2a9d36a0網絡
爲使mrcnn的demo代碼能在colab中跑起來,需先安裝運行環境。步驟以下:app
è 將github項目代碼複製到google雲端硬盤中。框架
è 在雲端notebook中啓動demo代碼。less
è 設置notebook代碼運行環境機器學習
è 安裝軟件並掛載Google Drive工具
è 安裝requirements包
è 安裝mrcnn包
將Mask R-CNN代碼從github下載,而後上傳到google雲端硬盤中。具體步驟略過。
在google drive目錄中找到 samples目錄下的demo.ipynb文件,點擊鼠標右鍵,選擇「打開方式」,選擇「Colaboratory」
依次選擇菜單項:修改—筆記本設置,在設置界面選擇GPU加速器。
點擊「+代碼」按鈕,在其中輸入如下代碼,按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次驗證。
點擊「+代碼」按鈕,在其中輸入如下代碼,按ctrl+enter運行
!mkdir -p drive !google-drive-ocamlfuse drive
而後輸入「!ls drive」查看掛載的文件。
運行如下命令:
!pip3 install -r drive/mrcnn/Mask_RCNN-master/requirements.txt
首先發出如下命令,更改當前目錄爲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
先將當前目錄變動到samples下:
import os os.chdir("/content/drive/mrcnn/Mask_RCNN-master/samples")
運行結果以下,能夠看到使用了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
此處設置的檢測類別(即關注類型)不算多,涵蓋了81種物體。
總算要執行物體檢測了,運行如下代碼:
通過不到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秒內完成了檢測。能夠看到,檢測的效果很不錯,無錯檢和漏檢,物體輪廓標記準確。
如下總結來源於做者:Caria_W
連接:https://www.jianshu.com/p/000d2a9d36a0
來源:簡書
簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
整體來講,對於不少無力購置獨立gpu顯卡的深度學習開發者來講,在colab中使用google提供的配置好的運行環境以及免費的顯卡,是一個不錯的選擇。但比較遺憾的是上述第3條,本人實際驗證發現,一旦關閉自主安裝好的軟件環境(好比從新打開notebook,不管python文件新舊),之前配置的包都沒有了,連google drive的驅動也要重裝一遍,才能再次訪問雲盤文件。總之,繁瑣是有點,但提供了一個免費擼代碼的舞臺,確實是AI開發者的福音。