基於Dlib、OpenCV開發人臉識別程序的開發建議


前言

在去年十月的時候參加了一個小比賽,做了一個人臉識別程序並很意外地獲得省里面的一等獎,視頻演示鏈接在這里有同學想要做這方面的畢業設計or課程設計,發一篇博客來分享一下當時的開發過程。

視頻演示鏈接

Github鏈接

項目簡介

可以看一下我的這個博客

開發流程

一:安裝Dlib的環境

這部分有點麻煩,不論是Windows還是linux,我都花了一段時間去配置,部分python依賴包需要連接外網才能順利下載下來,這部分就靠自己摸索吧,多試試就可以成功了!

Windows版參考鏈接1

Linux的我找不到當時配置時參考的博客了

二:閱讀Dlib庫的接口、使用方法

這里我沒有閱讀Dlib的官方文檔,我直接閱讀了ageitgey的Github的源碼部分、以及他的文檔,參考他的源碼去調用Dlib的人臉識別接口的,最終包裝成自己的庫。

自己封裝的庫文件地址,可以參考一下,里面有詳盡的注釋(寫的不好,輕噴)

三:開發

這部分就看自己的需求啦

這里可以提一點小見解:

  • 做簡單一點的人臉識別,直接用人臉檢測算子+人臉編碼然后對比人像編碼的距離就可以了。
  • 我開發的時候是為了盡量避免角度對人臉造成的影響,就在Dlib官方的基礎上加入了人臉矯正功能
    • 我做的是一個比較low、但確實有用的人臉矯正算法
    • 就是基於眼睛、鼻子上檢測到的關鍵點,對圖像進行簡單的水平旋轉
    • 矯正后理論上可以提升編碼的穩定性(因為盡可能排除角度因素了)
    • 這部分的代碼在Faces.py的330行左右
  • 對於一些人頭偏移角度過大可能造成人臉檢測算子檢測不到的問題,因為我的使用場景特殊,是100%有人臉,所以我會在檢測不到人像的時候對圖像旋轉幾個角度再檢測,我管它叫旋轉魯棒性(其實是當時看到一篇論文的題目有這個字眼,自己就搬過來用了)。至於是否采用這樣的操作,可以結合自己的使用場景來決定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM