最近做項目需要用到Mask R-CNN,於是花了幾天時間配置、簡單跑通代碼,踩了很多坑,寫下來分享給大家。
首先貼上官方Mask R-CNN的Github地址:https://github.com/matterport/Mask_RCNN,源碼可以從這里下載,READ ME里也有一些介紹。
0、Mask R-CNN環境
Mask R-CNN是基於Python3,Keras,TensorFlow。
- Python 3.4+(自行安裝,本文為Python 3.6)
- Jupyter Notebook
- TensorFlow>=1.3.0
- Keras>=2.0.8
- numpy、scipy、Pillow、cython、matplotlib、scikit-image、opencv-python、h5py、imgaug、IPython[all]
1、clone代碼到當前目錄,代碼文件夾名為Mask_RCNN-master
1 git clone https://github.com/matterport/Mask_RCNN.git
2、按Mask_RCNN-master/requirements.txt安裝依賴環境
1 pip3 install -r requirements.txt
注:此步安裝了numpy、scipy、Pillow、cython、matplotlib、scikit-image、tensorflow>=1.3.0、keras>=2.0.8、opencv-python、h5py、imgaug、IPython[all]
我在此步遇到了問題,安裝shaply的時候報錯,OS Error:找不到指定模塊
用pip install單獨安裝shapely還是得到一樣的錯誤。我的解決方法是:到https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely(一個非官方的擴展包下載地址,推薦),下載和你的python版本對應的shapely.whl:
這里cp27指的是python2.7,win32是32位,win_amd64就是64位。我的電腦是64位,python3.6,所以我選擇了第六個:
接着運行如下命令:
1 python -m pip install Shapely-1.6.4.post1-cp36-cp36mwin_amd64.whl
安裝成功。
3、下載訓練好的COCO權重mask_rcnn_coco.h5
官網的下載地址為:https://github.com/matterport/Mask_RCNN/releases,下載下圖第二個即可,把它放在Mask_RCNN-master目錄下。
若網速太慢,可從網盤下載。網盤鏈接:https://pan.baidu.com/s/12A0E6h-mP4zl9oqoTvj6Ig,密碼:4eks[1]
(網盤來源:https://blog.csdn.net/tanmx219/article/details/82828727)
4、安裝pycocotools
pycocotools是coco訓練集的api,如果你想使用coco訓練、測試你的網絡,就必須安裝pycocotools。coco api提供了 Matlab, Python 和 Lua 的 API 接口,該 API 接口可以提供完整的圖像標簽數據的加載,parsing 和可視化。此外,網站還提供了數據相關的文章,教程等。[2]
MS COCO數據集主頁:http://cocodataset.org/
Github主頁:https://github.com/Xinering/cocoapi,僅Linux使用,Windows不適用
關於API更多細節:http://cocodataset.org/#download
首先說清楚,這是個巨坑。安裝了三天,期間遇到許多問題,一一解決之后才發現,pycocotools的作者根本沒考慮Windows。一番百度之后,網上有兩種解決方式:第一種是繼續使用Linux版,暴力刪除無效參數Wno-cpp
和 Wno-unused-function
,詳見:https://www.jianshu.com/p/de455d653301
但這種實在過於粗暴啊...好在大佬在Github上分享了windows可用版:https://github.com/philferriere/cocoapi
一句就能解決:
1 pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
注:必須安裝Visual Studio C++。
5、安裝jupyter notebooks
jupyter notebooks是一個web應用程序,你可以在上面編寫、運行代碼,可視化數據並查看結果,不僅如此,你的代碼是被寫入獨立的單元中並被單獨執行的,這允許用戶測試項目中的特定代碼塊,而無需從腳本的開始執行代碼。有關jupyter notebooks的基本介紹和用法:機器學習新手必看:jupyter notebooks入門指南
安裝:
1 pip install jupyter
安裝成功后,python36/scripts如下:
執行jupyter notebooks只需在命令行里輸入:
1 jupyter notebook
小提示:這款軟件叫jupyter notebooks,運行只需打jupyter notebook就好,不需要加s。
啟動成功,瀏覽器會自動打開notebooks窗口。有的計算機不會自動跳轉,比如我,命令行會提示如下:
復制最后一條網址:http://localhost:8888/?token=15771ade271dbc85b09003a6921e6029d9b3e6a153120465,瀏覽器打開即可。每次運行jupyter notebooks給的token都是不一樣的,需要每次都復制打開。
6、運行demo.ipynb
至此Mask R-CNN的環境就全部配置好啦,我們可以從Mask_RCNN-master/samples/demo.ipynb開始運行。demo.ipynb展示了一個使用MS COCO預先訓練的模型來分割自己圖像中的對象的例子, 它包括在任意圖像上運行對象檢測和實例分割的代碼,在代碼中,demo分割的圖像隨機來源於Mask_RCNN-master/images。
打開jupyter notebooks,按下圖右下角的upload,打開demo.ipynb
項目文件夾目錄改成你的Mask_RCNN-master目錄:
運行代碼,最下方會出現可視化結果:
不知為何,我的運行示例是錯誤的...正常的應該是這樣:
至此Mask R-CNN的簡單示例運行就完成了。有問題可在下方留言。