日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

[深度应用]·实战掌握Dlib人脸识别开发教程

發布時間:2025/3/21 pytorch 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [深度应用]·实战掌握Dlib人脸识别开发教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[深度應用]·實戰掌握Dlib人臉識別開發教程

個人網站-->?http://www.yansongsong.cn/

項目GitHub地址-->?https://github.com/xiaosongshine/dlib_face_recognition

1.背景介紹

Dlib是一個深度學習開源工具,基于C++開發,也支持Python開發接口,功能類似于TensorFlow與PyTorch。但是由于Dlib對于人臉特征提取支持很好,有很多訓練好的人臉特征提取模型供開發者使用,所以Dlib人臉識別開發很適合做人臉項目開發。

上面所說的人臉識別開發,主要是指人臉驗證,就是輸入兩張人臉照片,系統會對比輸出0或者1,代表判斷是否是同一個人。一般的人臉識別開發可以簡單分為1.人臉特征建模2.使用人臉特征模型進行驗證(其實還應包括人臉對齊等,這些也可以劃分到1中)。使用Dlib進行開發時,我們直接可以使用訓練好的人臉特征提取模型,主要的工作就變成了如何進行人臉的驗證。

人臉的驗證其實就是計算相似度,同一個人的相似度就會大,不同的人就會比較小??梢圆捎糜嘞蚁嗨贫然蛘邭W式距離來計算相似度。其中余弦相似度就是計算角度,歐式距離就是指平方差。都可以用來表示兩個特征的相似度(距離)。

2.環境搭建

安裝可以參考我的這篇博客:[深度學習工具]·極簡安裝Dlib人臉識別庫,下面說一下需要注意的點::

此博文針對Windows10安裝,其他平臺可以仿照這個步驟來安裝

  • 安裝Miniconda

使用conda指令來安裝Dlib庫,使用Miniconda與Anaconda都可以,我習慣用Miniconda,簡單占用內存小。
推薦使用清華源,下載安裝,選擇合適的平臺版本。python==3.6

  • 安裝dlib
    注意一定要以管理員身份進入CMD,執行(如果是Linux Mac 就使用 sudo)
conda install -c conda-forge dlib

?

  • 需要imageio 庫,可以使用下述命令安裝
conda install imageio

?

3.開發實戰

?

1.實現人臉檢測標記

face_test.py

import dlib from imageio import imread import globdetector = dlib.get_frontal_face_detector() win = dlib.image_window()path = "f1.jpg" img = imread(path) dets = detector(img) print('檢測到了 %d 個人臉' % len(dets)) for i, d in enumerate(dets):print('- %d:Left %d Top %d Right %d Bottom %d' % (i, d.left(), d.top(), d.right(), d.bottom()))win.clear_overlay() win.set_image(img) win.add_overlay(dets) dlib.hit_enter_to_continue()

?

代碼很簡單,通過imread讀取照片,然后進行檢測,輸出結果為dets的list,有幾張人臉就會有幾個item, 每個item都有.left(), .top(), .right(), .bottom()四個元素,代表人臉框的四個邊界位置。最后通過win.add_overlay(dets)可以將標記的框顯示在原圖上。

原始照片

?
輸出照片

?

其實我們就可以使用這個功能做一個簡單的應用,用來檢測圖片或者視頻中人臉的個數。

2.人臉特征點提取

在實戰1的基礎上添加人臉特征提取功能。

import dlib from imageio import imread import globdetector = dlib.get_frontal_face_detector() win = dlib.image_window()predictor_path = 'shape_predictor_68_face_landmarks.dat' predictor = dlib.shape_predictor(predictor_path)path = "f2.jpg" img = imread(path) dets = detector(img) print('檢測到了 %d 個人臉' % len(dets))for i, d in enumerate(dets):print('- %d: Left %d Top %d Right %d Bottom %d' % (i, d.left(), d.top(), d.right(), d.bottom()))shape = predictor(img, d)# 第 0 個點和第 1 個點的坐標print('Part 0: {}, Part 1: {}'.format(shape.part(0), shape.part(1))) win.clear_overlay() win.set_image(img) win.add_overlay(dets) win.add_overlay(shape) dlib.hit_enter_to_continue()

?

這段代碼就是在test.py基礎上加入了shape_predictor功能,使之可以在檢測出人臉基礎上,找到人臉的68個特征點。反映在圖中就是藍色的線。

?

原始圖片

?

?

輸出圖片

?

?

注意運行這段代碼需要這個文件predictor_path = 'shape_predictor_68_face_landmarks.dat',我會放在我的github中,方便大家下載使用。

3.人臉識別驗證

在第二步的基礎上,我們再進一步,實現將人臉提取為特征向量,從而我們就可以對特征向量進行比對來實現人臉的驗證,這里采用的是對比歐式距離的方法。

face_recognition.py

import dlib from imageio import imread import glob import numpy as npdetector = dlib.get_frontal_face_detector() predictor_path = 'shape_predictor_68_face_landmarks.dat' predictor = dlib.shape_predictor(predictor_path) face_rec_model_path = 'dlib_face_recognition_resnet_model_v1.dat' facerec = dlib.face_recognition_model_v1(face_rec_model_path)def get_feature(path):img = imread(path)dets = detector(img)print('檢測到了 %d 個人臉' % len(dets))# 這里假設每張圖只有一個人臉shape = predictor(img, dets[0])face_vector = facerec.compute_face_descriptor(img, shape)return(face_vector)def distance(a,b):a,b = np.array(a), np.array(b)sub = np.sum((a-b)**2)add = (np.sum(a**2)+np.sum(b**2))/2.return sub/addpath_lists1 = ["f1.jpg","f2.jpg"] path_lists2 = ["趙麗穎照片.jpg","趙麗穎測試.jpg"]feature_lists1 = [get_feature(path) for path in path_lists1] feature_lists2 = [get_feature(path) for path in path_lists2]print("feature 1 shape",feature_lists1[0].shape)out1 = distance(feature_lists1[0],feature_lists1[1]) out2 = distance(feature_lists2[0],feature_lists2[1])print("diff distance is",out1) print("same distance is",out2)out1 = distance(feature_lists1[0],feature_lists1[1]) out2 = distance(feature_lists2[0],feature_lists2[1])

?

輸出結果

檢測到了 1 個人臉 檢測到了 1 個人臉 檢測到了 1 個人臉 檢測到了 1 個人臉feature 1 shape (128, 1)diff distance is 0.254767715912 same distance is 0.0620976363391

?

我們可以看出,每張人臉都被提取為了128維的向量,我們可以理解為128維的坐標(xyz是三維,128維就是有128個軸組成),我們下面需要做的就是計算兩個特征的距離,設定好合適的閾值,小于這個閾值則識別為同一個人。代碼正確運行需要這個文件face_rec_model_path = 'dlib_face_recognition_resnet_model_v1.dat',我已經放在自己的github中,方便大家使用。

我們從上面測試的結果可以看出,不同的距離為0.25,同一個人為0.06,閾值就可以先設置為其間的一個值。我這里先設置為0.09,這個閾值也是需要大量數據來計算的,選擇的準則為使錯誤識別為最低。

下面我們把閾值設置為0.09,來測試系統能否區分出不同的人:在face_recognition.py加入下面代碼

def classifier(a,b,t = 0.09):if(distance(a,b)<=t):ret = Trueelse :ret = Falsereturn(ret)print("f1 is 趙麗穎",classifier(feature_lists1[0],feature_lists2[1])) print("f2 is 趙麗穎",classifier(feature_lists1[1],feature_lists2[1])) print("趙麗穎照片.jpg is 趙麗穎測試.jpg",classifier(feature_lists2[0],feature_lists2[1]))

?

輸出結果

f1 is 趙麗穎 False f2 is 趙麗穎 False 趙麗穎照片.jpg is 趙麗穎測試.jpg True

?

從上面可以看出,已基本滿足對人臉區分的功能,如果如要實用化則需要繼續調優閾值與代碼,調優的準則就是選擇合適的閾值使錯誤識別為最低。

Hope this helps

個人網站-->?http://www.yansongsong.cn/

總結

以上是生活随笔為你收集整理的[深度应用]·实战掌握Dlib人脸识别开发教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91丨九色丨蝌蚪丨丝袜 | 久久久www成人免费无遮挡大片 | 亚洲 自拍 另类 欧美 丝袜 | 国产经典久久 | 久久精品视频在线播放 | 国产一区二区久久 | 日韩九九九 | 1024亚洲 | 国产99在线 | 亚洲 | 偷拍亚洲欧美 | 亚洲一区影院 | 中文字幕欧美另类精品亚洲 | 中文字幕久久久久 | 亚洲人网| 久草加勒比 | 网址你懂的在线 | 日韩av一二区 | 欧美在线a | 亚洲精品久久久中文字幕痴女 | 尤物网址在线观看 | 激情综合亚洲 | 国产精品入口夜色视频大尺度 | 成人av免费网站 | 国产熟妇一区二区三区aⅴ网站 | 国产伦一区二区三区 | 亚洲福利二区 | 黄色小网站在线观看 | 国产乱码精品一区二区三 | 欧美乱做爰xxxⅹ久久久 | 国产91熟女高潮一区二区 | 午夜一区 | 欧美性一区二区三区 | 亚洲第一页在线 | www.狠狠爱| 日本性猛交 | 成人福利午夜 | 91入囗| 成人动漫在线观看免费 | 美女洗澡隐私免费网站 | 日韩有码一区二区三区 | 91香蕉视频黄 | 国产激情精品一区二区三区 | 男生草女生视频 | 人妻射精一区二区 | 久久精品天天中文字幕人妻 | 国产亚洲精品aaaaaaa片 | 美女网站av | 日韩1区2区3区 | 精品视频在线观看 | 国产一区二区欧美 | 百合sm惩罚室羞辱调教 | 我们俩电影网mp4动漫官网 | 538在线精品视频 | 久久欧美视频 | 久久av秘一区二区三区 | 一区二区三区毛片 | 啪视频在线 | 激情福利社 | 不卡在线播放 | 黄色大全在线观看 | 俄罗斯videodesxo极品 | 豆豆色成人网 | 香蕉视频在线免费看 | 少妇一级淫片免费放 | 欧美成人精品在线 | 韩产日产国产欧产 | 国产精品27p| 毛片久久久 | 日韩电影福利 | 国产午夜一区二区三区 | 99久久精品免费看国产免费软件 | 欧美在线免费看 | 成人你懂的 | 亚洲视频精品 | 欧美日韩三 | 毛片基地免费观看 | 色网站免费观看 | 成人性生交大片免费看中文 | 欧美成人秋霞久久aa片 | 在线观看不卡av | 美女av影院 | 天天干,夜夜操 | 看黄色一级大片 | 98堂 最新网名 | 91插插插插插插插 | 久久综合综合久久 | 国产真人做爰视频免费 | www.四虎在线观看 | 国产一区二区三区免费在线观看 | 999在线视频 | 欧美大尺度做爰啪啪床戏明星 | 久久精品视频9 | 成人日韩在线 | 欧美成人不卡视频 | 体内精69xxxxx | 99这里都是精品 | 不卡av网站 | av 日韩 人妻 黑人 综合 无码 | 18性xxxxx性猛交|