Mask_RCNN入門(一)—— 跑通代碼

寫在前面

本文主要參考教程:tensorflow版的Mask_RCNN,這個教程也是跑通github上Mask_RCNN項目的教程,爲了在避免不必要的廢話和原教程可能改變之間trade off,本教程將簡述主要步驟,詳情請參考原教程,但是同時記錄需要注意的點和一些坑。
同時考慮到各種兼容性問題,有必要說明一下我的軟硬件環境:
操作系統:Windows10 家庭中文版
CPU:i5 8700 8核 8G內存
GPU:GTX 1060 6G顯存
conda version:4.8.2
時間:2020-03-04 (考慮到未指定版本的包默認下載最新版本,故聲明時間點)

一步一步來

1.git clone項目

關於怎麼git項目,這裏不再贅述。
clone後第一步去看看項目READ.md(當然在github上也可以直接看),爲了節省時間,這裏列出幾個值得注意的地方:

  • python版本要求
    在這裏插入圖片描述
  • 使用requirements.txt安裝包和其他注意事項
    在這裏插入圖片描述
    這裏只是提醒一下,這幾點具體怎麼處理我在下面會仔細闡述,不用擔心。
2.conda創建好環境
  • conda下載使用
    conda可以快速簡單地創建python環境,推薦使用,但同時考慮到conda的庫不夠全,推薦使用pip下載包(下面介紹的requirements.txt安裝方式也是要使用pip),即“conda創建環境+pip安裝包”的方式。關於conda和pip的下載使用這裏不再贅述,感興趣的可以參考我寫的關於conda和pip使用的介紹:
    Anaconda初探
    conda的基本命令
    使用pip安裝包
    Python,pip,conda和Anaconda
    安裝好Anaconda和pip以後,做好進行永久性換上境內鏡像,不然之後的install總是會報timeout錯誤。

  • 創建python=3.5.2環境
    conda創建環境需要指定
    前面也看到過項目環境要求介紹:
    在這裏插入圖片描述
    即Python 3.4,但是因爲之前跑Keras-yolo3使用的是Python 3.5.2不想再下載其他包了,就直接使用的Python 3.5.2,(據說>=3.4都可以):

conda create -n mask_rcnn python=3.5.2
3.pip安裝包

之前就注意到:
在這裏插入圖片描述
所以接下來不用按教程一個一個包單獨下載,直接使用項目目錄下的requirements.txt安裝即可,但是經實測,有幾點需要注意:

  • 升級好pip:
python -m pip install --upgrade pip
  • 升級好setuptools
python -m pip install --upgrade setuptools
  • 使用requirements.txt安裝包
    看下項目目錄下的requirements.txt:
    在這裏插入圖片描述
    經實測,我的機器上直接安裝tensorflow>=1.3.0會報和tensorflow_board兼容性錯誤:
    在這裏插入圖片描述
    在requirements.txt中直接指定:
tensorflow==1.6.0

可以成功安裝(這也是我跑Keras-yolo3的環境),這個問題應該不是普遍的,不報錯就不用改。
回到之前,指定tensorflow版本之後,開始安裝:

cd 項目目錄
python -m pip install -r requirements.txt

這裏記錄一個“奇怪”的坑:
在windows server上使用Anaconda創建python環境安裝requirements.txt時,總是報:

ERROR: Could not find a version that satisfies the requirement tensorflow==1.6.0 (from versions: none)
ERROR: No matching distribution found for tensorflow==1.6.0

更奇怪的是

python -m pip search tensorflow

也沒有1.6.0的版本
pip換成Alibaba的源後,又報錯:

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output

無語,最後解決:
卸載掉Anaconda32位,安裝64位,pip仍使用Tsinghua的源,又ok了。完全可以找到安裝1.6.0。

4.下載官方模型

下載好mask_rcnn_coco.h5,下載路徑有很多,之前說的REAM.md注意點中就有:在這裏插入圖片描述
但國內的github下載速度很慢(這個挺大,251M),可以在網上找其他的資源,我就是使用tensorflow版的Mask_RCNN給的百度網盤的鏈接下載的。
下載好後,放入項目目錄。

5.運行demo

官方給的教程建議直接運行項目目錄下/samples/demo.ipynb:
在這裏插入圖片描述
但是由於我沒怎麼使用過Jupyter notebook(好吧,其實我試了一下,但是Jupyter切換自己使用的kernel總是有問題,索性放棄),也爲了更好的適用性,現將demo.ipynb轉爲demo.py:
在這裏插入圖片描述
注:ipynb轉py指令 —— jupyter noconvert --to script xxx.ipynb,會在當前目錄下生成xxx.py。

生成後:
在這裏插入圖片描述
直接運行:demo.py:
在這裏插入圖片描述
報錯:
在這裏插入圖片描述
那就安裝:

python -m pip install pycocotools

又報錯:
在這裏插入圖片描述
好吧,其實這是個大問題,潛藏在之前提到的注意點中:
在這裏插入圖片描述
事情是這樣的:在demo.ipynb(當然現在是demo.py了,是一回事)中有這麼一句:
在這裏插入圖片描述
即demo.py是調用我們之前下載官方模型——COCO weights即mask_rcnn_coco.h5文件來進行測試,而使用上面也說了:

to train or test on MS COCO install pycocotools

如果要用MS COCO進行訓練或測試就必須安裝pycocotools這個包,這也是爲什麼requirements.txt安裝沒有報錯,運行demo.py才報錯的原因 —— 你可以不使用mask_rcnn_coco.h5進行訓練測試,使用自己的數據訓練模型或者其他的模型,這樣就不用裝pycocotools包。

好了,現在知道爲什麼要裝pycocotools了,那麼安裝過程中爲什麼又會報Microsoft Visual C++ 14.0 is required的這個錯誤呢?
原因其實在上面的注意點的最後一行已經說了:
在這裏插入圖片描述
安裝pycocotools必須要有Microsoft Visual C++ 2015 build tools(其實就是14.0,2015對應14.0)
所以先去安裝Microsoft Visual C++ 2015 build tools,這個東西網上可靠的資源還蠻少(某N上很多人利用這個公開資源賺幣,嗯), 這裏放上兩個可靠的資源:
visualcppbuildtools_full.exe
visualcppbuildtools_full.exe

安裝好後,繼續:

python -m pip install pycocotools

原錯誤消失,繼續報錯:
在這裏插入圖片描述
錯誤:
Command line error D8021 : invalid numeric argument ‘/Wno-cpp’
解決方案:
不再使用pip在線安裝,採用本地編譯安裝:

  • 下載:cocoapi(內含pycocotools):
    https://github.com/cocodataset/cocoapi
  • 進入PythonAPI文件夾:
    在這裏插入圖片描述
    修改setup.py文件:
    在這裏插入圖片描述
    爲:
    在這裏插入圖片描述
    到setup.py目錄下,執行:
python setup.py build_ext --inplace

把生成的pycocotools放入conda相應環境下的python的庫目錄下——%python安裝路徑%\Lib\site-packages,對於當前的conda環境:
先看環境位置:
在這裏插入圖片描述
庫位置:C:\Users\apple.conda\envs\mask_rcnn\Lib\site-packages,放入:
在這裏插入圖片描述

解決方案參考:https://blog.csdn.net/qq_29592829/article/details/82877494
其實上面的pycocotools安裝方式也是Mask_RCNN的READ.md中建議的:
在這裏插入圖片描述

6.註釋掉get_ipython().run_line_magic()

安裝好pycocotools後,回去運行demo.py:

python demo.py

報錯:
在這裏插入圖片描述
報錯:get_ipython().run_line_magic(‘matplotlib’, ‘inline’)
查資料知,這是Jupyter notebook執行的語句,將ipynb文件轉爲py文件執行後就會報此錯,粗暴的解決方式是,直接註釋掉:
在這裏插入圖片描述
再次運行,成功!




在這裏插入圖片描述



Q&A

Q1:既然直接pip install pycocotools會報錯,最終還是通過本地安裝 —— git cocoapi中本地生成pycocotools包,導入python庫,那麼我們中間的解決的報錯 —— Microsoft Visual C++ 14.0是不是多餘的呢? 直接本地安裝不就好了?
A1:經實測,不行,如果不安裝Microsoft Visual C++ 14.0,那麼本地通過cocoapi安裝時還是會報錯。這也印證了README.md

Q2:安裝Microsoft Visual C++ 14.0後,除了還有其他方式安裝嗎?
A2:有的

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

看命令大致也知道,就是將git cocoapi和pip install命令合在一起,但經實測不起作用(命令行半天沒反應,不知道是在下載cocoapi還是哪裏出錯了),所以只放在這裏作爲參考

Q3:如果通過Jupyter notebook運行demo.ipynb自然下面這行不會報錯:

get_ipython().run_line_magic('matplotlib', 'inline')

A3:但是要先熟悉Jupyter notebook的用法,特別是如何在Jupyter notebook中使用conda環境。

Q4:requirements.txt中tensorflow不是cpu版本的,如果想使用gpu版本的呢?
A4:見我另外一門教程Mask_RCNN入門(三)—— 使用gpu進行訓練和測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章