寫在前面
本文主要參考教程: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進行訓練和測試