關於python整合dlib
前言
這是一篇以“踩坑”為驅動的文章,如果直接使用pip install dlib安裝,那麼就會引用到對C++編譯的Cmake和boost,如果還使用了win系統,還會涉及到visual studio和winSdk等各個方面,以及各種庫的版本問題。顯然上述南轅北轍。如果在python環境下涉及到庫的安裝最好使用非編譯的包*.whl,這種方式是較為合理的,也很簡潔。
1.dlib簡介
Dlib是一個現代化的C ++工具箱,其中包含用於在C ++中建立複雜軟體以解決實際問題的機器學習演算法和工具。它廣泛應用於工業界和學術界,包括機器人,嵌入式裝置,行動電話和大型高效能運算環境。Dlib的開源許可證 允許您在任何應用程式中免費使用它。詳情見文末所附內容。
2.獲取渠道
這是官方的下載通道https://pypi.org/project/dlib/#files,值得注意的是需要下載對應自己python版本的包。
個人渠道dlib-19.21.99-cp38-cp38-win_amd64.whl適用於py3.8
個人渠道dlib-19.6.0-cp36-cp36m-win_amd64.whl適用於py3.6
3.python安裝whl
在與此資料夾同級下開啟cmd 執行pip install *.whl即可。
4.dlib的使用目標檢測
dlib
中的函式 find_candidate_object_locations()
能夠識別指定的圖片,並把可能存在目標的物件找出來。實現方法基於 Koen van de Sande 的論文 Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al.。這個方法可以快速找到候選目標的區域,我們可以使用這些區域進行後續操作。
示例程式碼 如下:
import dlib
image_file = 'test1.jpg'
img = dlib.load_rgb_image(image_file)
# Locations of candidate objects will be saved into rects
rects = []
dlib.find_candidate_object_locations(img, rects, min_size=500)
print("number of rectangles found {}".format(len(rects)))
for k, d in enumerate(rects):
print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
k, d.left(), d.top(), d.right(), d.bottom()))
程式碼中, 函式 load_rgb_image(...)
接受一個檔名稱,然後返回 numpy 陣列物件,這個作為 find_candidate_object_locations(...)
函式的輸入。函式 find_candidate_object_locations(...)
第二個引數 rects
為列表,儲存找到候選推向所在的區域,第三個引數 min_size
表示找到的區域大小不應該小於指定的畫素值。
附:詳細特點
文件豐富
- 與許多開源專案不同的是,Dlib為每個類和功能提供了完整和精確的文件。同時它還有除錯模式,可以幫助你檢查使用某個函式的先決條件。啟用此功能後,它將捕獲由於錯誤地呼叫函式或以不正確的方式使用物件而導致的絕大多數錯誤。
- 提供了許多示例程式(非常有用的示例!)
- 我認為文件是函式庫最重要的部分。因此,如果您發現任何未記錄的內容,不清楚或已過時的文件,請告訴原作者,作者會及時修復它。
高質量的廣泛相容的程式碼
- 好的單元測試覆蓋率。程式碼的單元測試行與庫程式碼行之比約為1到4。
- 該庫在MS Windows,Linux和Mac OS X系統上定期進行測試。事實上,它可以在任何POSIX系統上執行,並且已經在Solaris,HPUX和BSD上使用。
- 沒有其他軟體包依賴。只需要通過開箱即用的作業系統提供的底層API。
- 在使用庫之前,不需要安裝或配置步驟。有關詳細資訊,請參閱 如何編譯頁面。
- 所有作業系統特定的程式碼都被隔離在儘可能小的作業系統抽象層中。庫的其餘部分要麼在OS抽象層之上分層,要麼是純ISO標準C ++。
機器學習演算法
- 深度學習Deep Learning
- 傳統的基於SMO的支援向量機用於分類(classification) 和 迴歸(regression)
- 用於大規模分類 和迴歸的Reduced-rank methods
- 用於分類 和迴歸的推薦相關向量機(Relevance vector machine)
- 通用多類分類(multiclass classification)工具
- 一個多類SVM(Multiclass SVM)
- 解決與結構支援向量機(structural support vector machines)相關的優化問題的工具 。
- 用於序列標記(sequence labeling)的結構SVM工具
- 用於解決分配問題(assignment problems)的結構SVM工具
- 用於影像中物體檢測(object detection)的結構SVM工具以及用於物體檢測的更強大(但更慢)的深度學習工具(deep learning tools for object detection)。
- 用於標記圖中節點的結構SVM工具(labeling nodes)
- 一個大規模的SVM-Rank實現
- 線上核RLS迴歸(kernel RLS regression)演算法
- 線上SVM分類(SVM classification)演算法
- 半確定度量學習(Semidefinite Metric Learning)
- 線上核化的質心估計器(centroid estimator) /新穎檢測器和離線支援向量一類分類器(one-class classification)
- 聚類演算法:線性 或核k-means, Chinese Whispers聚類和 Newman聚類。
- 徑向基函式網路(Radial Basis Function Networks)
- 多層感知器(Multi layer perceptrons)
數值計算演算法
- 使用表示式模板技術實現的快速矩陣物件,並且在可用時能夠使用BLAS和LAPACK庫。
- 為矩陣物件定義了許多線性代數和數學運算,如 奇異值分解, 轉置, 三角函式等。
- 使用共軛梯度, BFGS和 L-BFGS 技術的通用非約束非線性優化演算法
- Levenberg-Marquardt用於求解非線性最小二乘問題
- 通過BOBYQA演算法進行箱約束無導數優化
- 的的實現割平面演算法優化(Optimized Cutting Plane Algorithm)
- Several quadratic program solvers
- 用於求解最優分配和 最小切割/最大流動問題的組合優化工具 以及用於查詢most probable parse tree的CKY演算法
- 一個大整數物件
- 一個隨機數物件
- 圖形模型推理演算法
- 加入樹演算法在貝葉斯網路中進行精確推理。
- 吉布斯取樣馬爾可夫鏈monte carlo演算法用於貝葉斯網路中的近似推斷。
- 在鏈式結構, Potts或 一般因子圖中執行MAP推斷的例程 。
影像處理
- 用於讀取和 儲存常見影像格式的例程。
- 各種畫素型別之間的自動顏色空間轉換
- 常見的影像操作,如邊緣檢測和形態學操作
- SURF, HOG和FHOG 特徵提取演算法。(可惜木有SIFT和ORB)
- 用於影像中的物件檢測的工具,包括 正面人臉檢測和 物件姿勢估計。
- 高質量的人臉識別
執行緒
網路通訊
- 該庫提供了一個可移植且簡單的TCP套接字API
- 幫助您製作基於TCP的伺服器的物件
- iostream和streambuf 物件,使TCP套接字能夠與C ++ iostreams庫互操作
- 一個簡單的HTTP伺服器物件,可用於將Web伺服器嵌入到應用程式中
- 用於執行緒間和程式間通訊的訊息傳遞管道
- 用於使用批量同步並行(BSP)計算模型實現演算法的工具
圖形使用者介面
資料壓縮和完整性檢查演算法
測試
其他通用功能
相關文章
- windows + python + dlib 安裝WindowsPython
- 關於python安裝dlib報錯“ ImportError: DLL load failed”的解決方法之一PythonImportErrorAI
- 關於IIS Express,整合管道Express
- Pycharm安裝dlib庫(Python3.8)PyCharmPython
- Windows下dlib庫python安裝(CUDA)WindowsPython
- 人臉識別之Python DLib庫進行人臉關鍵點識別Python
- 關於pythonPython
- Py之dlib:Python庫之dlib庫的簡介、安裝、使用方法詳細攻略Python
- python:關於pipPython
- python ubuntu dlib 5 -人臉識別並打分PythonUbuntu
- python匯入dlib時出錯解決方法Python
- 基於OpenCV和dlib的人臉交換實現探究OpenCV
- 關於DVCS、持續整合和特性分支
- 關於spring和ibatis的整合SpringBAT
- 安裝dlib
- python關於+=的陷阱Python
- 關於 Python 的 importPythonImport
- Python--關於dictPython
- Python--關於setPython
- 關於 SAP Spartacus 和 SmartEdit 整合的問題
- 關於liferay和struts應用整合請教?
- 關於Python小遊戲程式Python遊戲
- 關於Python的迭代操作Python
- 關於Python的集合setPython
- 關於Python Number 相關的知識!Python
- python ubuntu dlib 人臉識別11-物體追蹤PythonUbuntu
- python Ubuntu dlib 人臉識別9-輔助函式PythonUbuntu函式
- python ubuntu dlib人臉識別3-人臉對齊PythonUbuntu
- 基於OpenCV+dlib開發一個人臉識別應用OpenCV
- 關於shiro+springMVC整合使用的問題SpringMVC
- 關於整合抽取程式重啟後的現象分析
- 關於整合SSH,重新發布專案的問題
- 關於python爬取網頁Python網頁
- python關於函式形參Python函式
- 關於python學習路線Python
- 關於Python的super用法研究Python
- Python--關於 join 和 splitPython
- Python--關於連線符+Python