ubuntu系統---ubuntu16.04 + virtualenv + py2.7 + tf1.5.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14

       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

  1. 新版本的產生是爲了順應當下的須要,經過版本更新,接納新技術和新方法,支持新興編程語言接口,使用新的指令集,優化性能,解決固有問題等
  2. 新技術新方法會優先加入到新的大版本中,即便新的技術方法能夠在舊版本中實現,但爲了推進用戶向新版本遷移,仍會優先加入到新版本中(這條看着與第1條差很少,實際意義是不一樣的)
  3. 新版本不可避免地會帶有舊版本的痕跡,畢竟新版本是從舊版本基礎上「生長」出來的,新老版本間能看到比較明顯的過渡痕跡,同時出於下降遷移成本的考慮,須要(部分)向前兼容

所以,若是新版本已經穩定,且須要從頭開始新項目,先考慮擁抱新版本。若碰到問題,可到舊版本的資料中找找答案。但這並不絕對,具體狀況還得具體分析。api

下面分析下各版本的差別以及演化路徑。網絡

OpenCV版本差別與演化,1.x To 4.0

OpenCV 1.x

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)也變得更快。

OpenCV 2.x

當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_imgprocopencv_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遷移。

OpenCV 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被持續改進和擴充。

OpenCV 4.0

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。

參考

相關文章
相關標籤/搜索