ubuntu16.04 + virtualenv + py2.7 + tf1.5.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14
@https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480
@https://msd.misuland.com/pd/3070888491219946904
Ubuntu系統默認的Python是2.7,爲了使多個Python版本共存,咱們使用virtualenv/virtualenvwrapper來管理不一樣的Python版本和相應的軟件包。
virtualenvwrapper是virtualenv的擴展,使得管理虛擬環境更加方便。
sudo pip install virtualenv virtualenvwrapperhtml
Keras是一個基於theano和tensorflow的庫框架,它的安裝要不是Using Theano backend 要不就是Using tensorflow backend 。因此通常在安裝keras以前必定要裝好theano或者tensorflow,至於具體選那種根據本身的實際狀況在keras.json文件中配置便可。
(1)基本環境安裝
第一步:
mkdir Virtualenv
cd Virtualenv
sudo pip install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
>>>>>
Looking in indexes: http://pypi.douban.com/simple/
Collecting virtualenv
Downloading http://pypi.doubanio.com/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl (3.3MB)
|████████████████████████████████| 3.3MB 2.5MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.5
第二步:
u@u160406:~/Virtualenv$ source bin/activate
第三步:
建立python2虛擬環境(py2爲虛擬環境名)
virtualenv -p /usr/bin/python py2
第四步:keras先裝tf
pip install --upgrade tensorflow==1.5.0 //pip install tensorflow-gpu
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> session = tf.Session()
>>> print session.run(hello)
or
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
$ pip install TF_BINARY_URL
pip install keras==2.2.4
pip install python-opencv==2.4.9 //若是沒有安裝annaconda的話,貌似要把opencv-python換成python-opencv。
Collecting opencv-python==2.4.9
sudo apt-get install python-opencv
python -m pip install opencv-python==2.4.9
ERROR: Could not find a version that satisfies the requirement opencv-python==2.4.9 (from versions: 3.1.0.0, 3.1.0.1, 3.1.0.2, 3.1.0.3, 3.1.0.4, 3.1.0.5, 3.2.0.6, 3.2.0.7, 3.2.0.8, 3.3.0.9, 3.3.0.10, 3.3.1.11, 3.4.0.12, 3.4.0.14, 3.4.1.15, 3.4.2.16, 3.4.2.17, 3.4.3.18, 3.4.4.19, 3.4.5.20, 3.4.6.27, 3.4.7.28, 4.0.0.21, 4.0.1.23, 4.0.1.24, 4.1.0.25, 4.1.1.26)
ERROR: No matching distribution found for opencv-python==2.4.9
python -m pip install opencv-python
pip install opencv-contrib-python
pip uninstall opencv-contrib-python-4.1.1.26
Installing collected packages: opencv-python
Successfully installed opencv-python-4.1.1.26
Successfully installed opencv-contrib-python-4.1.1.26
python
>>>import cv2
>>>cv2.__version__
>>>import keraspython
>>>keras.__version__linux
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
pip install numpy==1.14
Found existing installation: numpy 1.16.5
Uninstalling numpy-1.16.5:
Successfully uninstalled numpy-1.16.5
Successfully installed numpy-1.14.0
>>> from numpy import *
>>> eye(4)
解決引入keras後出現的Using TensorFlow backend的錯誤,在引入頭文件以後,加入
import os
os.environ['KERAS_BACKEND']='tensorflow'
(2)使用虛擬機
啓動虛擬環境
cd [虛擬環境名稱]/
source bin/activate
...
退出虛擬環境: deactivate
(3)卸載opencv4.1.1.26重配置opencv2.4.9
pip uninstall opencv-python
Uninstalling opencv-python-4.1.1.26:
Would remove:
/home/u/Virtualenv/py2/lib/python2.7/site-packages/cv2/*
/home/u/Virtualenv/py2/lib/python2.7/site-packages/opencv_python-4.1.1.26.dist-info/*
Proceed (y/n)? y
Successfully uninstalled opencv-python-4.1.1.26git
-----------------------------------------------------------------------------------------------------------------------------------github
2.1 使用python 2.7安裝tensorflow-gpu 1.9.0 安裝指令以下: # 若是本機未安裝python和pip,則安裝之 sudo apt-get install python-pip python-dev # 更新pip sudo pip install -U pip # 安裝tensorflow-gpu 1.9.0 sudo pip install tensorflow-gpu==1.9.0 2.2 使用python 3.5安裝tensorflow-gpu 1.9.0 若是將默認的python腳本設置成了python3.5,則安裝指令與2.3節相同,若未設置,則安裝指令以下: # 若是本機未安裝python和pip,則安裝之 sudo apt-get install python3-pip python3-dev # 更新pip sudo pip3 install -U pip # 安裝tensorflow-gpu 1.9.0 sudo pip3 install tensorflow-gpu==1.9.0 2.3 驗證tensorflow-gpu 1.9.0是否安裝成功 執行以下命令: python -c "import tensorflow as tf; print(tf.__version__)" 若是輸出結果: 1.9.0 原文連接:https://blog.csdn.net/davidhopper/article/details/81206673
------------------------------------------------------------------------------------------------------------------------------------編程
@https://www.cnblogs.com/shine-lee/p/9884551.htmljson
最近因項目須要,得把OpenCV撿起來,登陸OpenCV官網,居然發現release了4.0.0-beata版本,因此藉此機會,查閱資料,瞭解下OpenCV各版本的差別及其演化過程,造成了如下幾點認識:ubuntu
所以,若是新版本已經穩定,且須要從頭開始新項目,先考慮擁抱新版本。若碰到問題,可到舊版本的資料中找找答案。但這並不絕對,具體狀況還得具體分析。api
下面分析下各版本的差別以及演化路徑。網絡
OpenCV 最初基於C語言開發,API也都是基於C的,面臨內存管理、指針等C語言固有的麻煩。
2006年10月1.0發佈時,部分使用了C++,同時支持Python,其中已經有了random trees、boosted trees、neural nets等機器學習方法,完善對圖形界面的支持。
2008年10月1.1pre1發佈,使用 VS2005構建,Python bindings支持Python 2.6,Linux下支持Octave bindings,在這一版本中加入了SURF、RANSAC、Fast approximate nearest neighbor search等,Face Detection (cvHaarDetectObjects)也變得更快。
當C++流行起來,OpenCV 2.x發佈,其儘可能使用C++而不是C,可是爲了向前兼容,仍保留了對C API的支持。從2010年開始,2.x決定再也不頻繁支持和更新C API,而是focus在C++ API,C API僅做備份。
2009年9月2.0 beta發佈,主要使用CMake構建,加入了不少新特徵、描述子等,如FAST、LBP等。
2010年4月2.1版本,加入了Grabcut等,可使用SSE/SSE2…指令集。
2010年10月2.2版本發佈,OpenCV的模塊變成了你們熟悉的模樣,像opencv_imgproc、opencv_features2d等,同時有了opencv_contrib用於放置還沒有成熟的代碼,opencv_gpu放置使用CUDA加速的OpenCV函數。
2011年6月起的2.3.x版本、2012年4月起的2.4.x版本,一面增長新方法,一面修復bug,同時增強對GPU、Java for Android、 OpenCL、並行化的支持等等,OpenCV越發穩定完善,值得注意的是 SIFT和SURF從2.4開始被放到了nonfree 模塊(由於專利)。
考慮到過渡,OpenCV 2.4.x仍在維護,不過之後可能僅作bug修復和效率提高,再也不增長新功能——鼓勵向3.x遷移。
隨着3.x的發佈,1.x的C API將被淘汰再也不被支持,之後C API可能經過C++源代碼自動生成。3.x與2.x不徹底兼容,與2.x相比,主要的不一樣之處在於OpenCV 3.x 的大部分方法都使用了OpenCL加速。
2014年8月3.0 alpha發佈,除大部分方法都使用OpenCL加速外,3.x默認包含以及使用IPP,同時,matlab bindings、Face Recognition、SIFT、SURF、 text detector、motion templates & simple flow 等都移到了opencv_contrib下(opencv_contrib不只存放了還沒有穩定的代碼,同時也存放了涉及專利保護的技術實現),大量涌現的新方法也包含在其中。
2017年8月3.3版本,2017年12月開始的3.4.x版本,opencv_dnn從opencv_contrib移至opencv,同時OpenCV開始支持C++ 11構建,以後明顯感到對神經網絡的支持在增強,opencv_dnn被持續改進和擴充。
2018年10月4.0.0發佈,OpenCV開始須要支持C++11的編譯器才能編譯,同時對幾百個基礎函數使用 "wide universal intrinsics"重寫,這些內聯函數能夠根據目標平臺和編譯選項映射爲SSE二、 SSE四、 AVX二、NEON 或者 VSX 內聯函數,得到性能提高。此外,還加入了QR code的檢測和識別,以及Kinect Fusion algorithm,DNN也在持續改善和擴充。
這些年來,計算機視覺領域的新技術新方法不斷涌現,指令集、編程語言和並行化技術愈加先進,OpenCV也在緊跟時代的腳步,不斷吸取完善自身。本文僅對OpenCV的演化過程僅總結了部分要點,詳細可參見 OpenCV 在 github上的ChangeLog。