win10中Anaconda(Python3.6)配置OpenCV3.3+深度神經網路實現
阿新 • • 發佈:2019-02-05
OpenCV3.3的釋出帶來的深度學習dnn模組的支援,模組支援
- Caffe
- Tensorflow
- Torch
等多個深度學習框架,並且有多個網路API介面
- GoogleLeNet
- AlexNet
- SqueezeNet
- VGGNet
- ResNet
等等。貢獻者Rynikov Alexander對專案的詳細介紹可以點選:這裡檢視。但是是用俄語寫的,可以谷歌翻譯來看。以下是不同網路的效能對比(翻譯的不太好),另有官方連結,有很詳細的功能說明和程式碼解釋。
廢話不多說,以下是我Anaconda(Python3.6)中配置OpenCV3.3的過程,以及深度神經網路示例程式的實現。
一、Anaconda安裝
windows中安裝十分簡單,下載對應版本,根據官網指南安裝即可,不再贅述。
二、opencv3.3安裝
要在Anaconda中安裝opencv3.3需要先下載安裝包,然後啟動Anaconda虛擬環境,利用pip命令即可安裝。
- 選擇相應版本,我根據系統選擇64位python3.6的
- 剛才已經安裝好了Anaconda,現在在win程式啟動處開啟Anaconda Navigatro
- 建立一個執行環境,選擇python對應版本,起名opencv,我這裡選擇python3.6
- 在新建的opencv環境中開啟一個命令終端
- 在新開啟的終端中,進入下載的opencv安裝檔案,執行pip安裝,安裝成功,沒有什麼問題
- 接下來要安裝numpy和matplotlib,分別執行下列程式碼進行安裝
pip install numpy
pip install matplotlib
- 目前位置,已經完成了Anaconda的opencv3.3的安裝,在終端中執行測試,可以看出,連結庫成功,打印出了3.3版本
import cv2
注:這種安裝方式,只能在剛才建立的名為opencv的Anaconda環境中能使用,在普通cmd命令視窗不能使用opencv,原因是要另外配置環境變數,因為我的電腦裡已經有一個opencv2.4.13了,為了避免兩者混淆,我只在這個環境裡使用。
三、深度神經網路的實現
官網給出了示例程式碼,下載下來,跑一跑。
- 在頁面最下面填寫郵箱地址,根據提示步驟可以直接獲取示例程式原始碼
- 獲取原始碼以後,解壓,可以看到裡面有寫好的示例程式和測試圖片
- 開啟新建的名為opencv的環境裡的終端,進入剛才下載的資料夾內,執行以下命令:
python deep_learning_with_opencv.py --image images/vending_machine.png --prototxt bvlc_googlenet.prototxt --model bvlc_googlenet.caffemodel --labels synset_words.txt
可以看到,終端上輸出了對物體識別的得分情況,並且在圖片上打上了識別效果。
我在網上下載了一個圖片,放在資料夾裡面,再進行一波測試
python deep_learning_with_opencv.py --image images/dog.png --prototxt bvlc_googlenet.prototxt --model bvlc_googlenet.caffemodel --labels synset_words.txt
- 可見竟然將這隻狗識別成了狼,輸出的第二排名才是狗。
- 再試一波:
可見,有些識別的效果有點不忍直視,但是有些結果還是很不錯了。而且速度也很快,這次識別所用的是googlelenet的caffe模型,也只能用跑好的網路來forward,想用opencv來訓練估計還是不太行。總之,opencv提供的這個介面算是給全民ai做了不小貢獻呢!
四、函式框架簡介
- 在dnn中從磁碟載入圖片:
cv2.dnn.blobFromImage
cv2.dnn.blobFromImages - 用“create”方法直接從各種框架中匯出模型:
cv2.dnn.createCaffeImporter
cv2.dnn.createTensorFlowImporter
cv2.dnn.createTorchImporter - 使用“讀取”方法從磁碟直接載入序列化模型:
cv2.dnn.readNetFromCaffe
cv2.dnn.readNetFromTensorFlow
cv2.dnn.readNetFromTorch
cv2.dnn.readhTorchBlob
從磁碟載入完模型之後,可以用.forward方法來向前傳播我們的影象,獲取分類結果