国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

這篇具有很好參考價(jià)值的文章主要介紹了人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

目錄

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

1. 前言

2. 項(xiàng)目安裝

3. 人臉識(shí)別系統(tǒng)

(1)人臉檢測(cè)和關(guān)鍵點(diǎn)檢測(cè)

(2)人臉校準(zhǔn)

(3)人臉特征提取

(4)人臉比對(duì)(1:1)

(5)人臉?biāo)阉?1:N)

(6)配置文件config

(7)人臉識(shí)別優(yōu)化建議

4. 人臉識(shí)別Demo效果

5. 人臉識(shí)別C/C++版本源碼下載

6. 人臉識(shí)別Android版本源碼下載

7. 人臉識(shí)別Python版本源碼下載


1. 前言

這是項(xiàng)目《人臉識(shí)別Face Recognition》系列之《InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition》Python版本;項(xiàng)目基于開(kāi)源ArcFace(也稱InsightFace)模型搭建一套完整的Python版本人臉識(shí)別系統(tǒng)(Face Recognition or Face Identification);

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

整套人臉識(shí)別系統(tǒng)核心算法包含人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè),人臉校準(zhǔn),人臉特征提取以及人臉比對(duì)(1:1)和人臉?biāo)阉?1:N)。本項(xiàng)目人臉識(shí)別系統(tǒng)可以達(dá)到目前商業(yè)級(jí)別的人臉識(shí)別準(zhǔn)確率,在誤識(shí)率(FAR)0.1%的情況下,可提供99.57%的通過(guò)率(TAR);可以滿足人臉比對(duì),人臉簽到、人臉門禁、人員信息查詢、安防監(jiān)控等人臉識(shí)別應(yīng)用場(chǎng)景。

Python版本人臉檢測(cè)和人臉識(shí)別效果:

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

【尊重原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處】https://blog.csdn.net/guyuealian/article/details/130600472?


更多項(xiàng)目《人臉識(shí)別Face Recognition》系列文章請(qǐng)參考:

  1. 人臉識(shí)別1:人臉識(shí)別數(shù)據(jù)集https://blog.csdn.net/guyuealian/article/details/130600545
  2. 人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)https://blog.csdn.net/guyuealian/article/details/130600472
  3. 人臉識(shí)別3:C/C++ InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼)https://blog.csdn.net/guyuealian/article/details/130600571
  4. 人臉識(shí)別4:Android InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼)https://blog.csdn.net/guyuealian/article/details/130600600

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)


2. 項(xiàng)目安裝

項(xiàng)目結(jié)構(gòu)說(shuō)明

.
├── configs                # 配置文件(設(shè)置檢測(cè)模型,特征提取模型)
├── core
│?? ├── alignment          # 人臉校準(zhǔn)算法
│?? ├── detection          # 人臉檢測(cè)模型
│?? ├── feature            # 人臉特征提取模型
│?? ├── face_detector.py   # 人臉檢測(cè)(支持MTCNN和RFB)
│?? ├── face_feature.py    # 人臉特征提取模型
│?? ├── face_matcher.py    # 人臉匹配算法
│?? ├── face_recognizer.py # 人臉識(shí)別 
│?? └── face_register.py   # 人臉注冊(cè)
├── data                   # 人臉識(shí)別相關(guān)數(shù)據(jù)
├── face_compare.py        # 1:1人臉比對(duì)Demo
├── face_search.py         # 1:N人臉?biāo)阉鱀emo
├── register.py            # 1:N人臉?biāo)阉魅四様?shù)據(jù)庫(kù)注冊(cè)Demo
├── README.md              # 說(shuō)明文檔
└── requirements.txt       # 項(xiàng)目依賴文件

Python依賴環(huán)境,使用pip安裝即可,項(xiàng)目代碼都在Ubuntu系統(tǒng)和Windows系統(tǒng)驗(yàn)證正常運(yùn)行,請(qǐng)放心使用;若出現(xiàn)異常,大概率是相關(guān)依賴包版本沒(méi)有完全對(duì)應(yīng)

numpy==1.16.3
matplotlib==3.1.0
Pillow==6.0.0
easydict==1.9
opencv-contrib-python==4.5.2.52
opencv-python==4.5.1.48
pandas==1.1.5
PyYAML==5.3.1
scikit-image==0.17.2
scikit-learn==0.24.0
scipy==1.5.4
seaborn==0.11.2
tensorboard==2.5.0
tensorboardX==2.1
torch==1.7.1+cu110
torchvision==0.8.2+cu110
tqdm==4.55.1
xmltodict==0.12.0
basetrainer
pybaseutils

?項(xiàng)目安裝教程請(qǐng)參考(初學(xué)者入門,麻煩先看完下面教程,配置好開(kāi)發(fā)環(huán)境):?

  • 項(xiàng)目開(kāi)發(fā)使用教程和常見(jiàn)問(wèn)題和解決方法
  • 視頻教程:1 手把手教你安裝CUDA和cuDNN(1)
  • 視頻教程:2 手把手教你安裝CUDA和cuDNN(2)
  • 視頻教程:3 如何用Anaconda創(chuàng)建pycharm環(huán)境
  • 視頻教程:4 如何在pycharm中使用Anaconda創(chuàng)建的python環(huán)境

3. 人臉識(shí)別系統(tǒng)

人臉識(shí)別主要包含人臉比對(duì)(1:1)人臉?biāo)阉?1:N)兩大功能,涉及的核心算法主要包含:人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè),人臉校準(zhǔn),人臉特征提取以及人臉比對(duì)(1:1)和人臉?biāo)阉?1:N);當(dāng)然,實(shí)際業(yè)務(wù)中,可能還會(huì)增加人臉質(zhì)量檢測(cè)以及活體識(shí)別等算法,礙于篇幅,后續(xù)再分享活體識(shí)別算法。

下圖給出本項(xiàng)目人臉識(shí)別系統(tǒng)算法實(shí)現(xiàn)架構(gòu)流程圖:

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

(1)人臉檢測(cè)和關(guān)鍵點(diǎn)檢測(cè)

人臉檢測(cè)的方法比較多,項(xiàng)目提供兩種人臉檢測(cè)方法:一種是基于MTCNN的通用人臉檢測(cè)模型,另一種是輕量化的、快速的RFB人臉檢測(cè)模型;這個(gè)兩個(gè)模型都能實(shí)現(xiàn)人臉檢測(cè),并同時(shí)預(yù)測(cè)人臉的五個(gè)關(guān)鍵點(diǎn)(Landmark)。

模型 Paper 源碼 說(shuō)明
MTCNN Paper Link
  • 支持人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè)(5個(gè)點(diǎn))
  • 通用場(chǎng)景人臉檢測(cè),計(jì)算量較大,適合PC服務(wù)器部署
RFB Paper Link
  • 支持人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè)(5個(gè)點(diǎn))
  • 輕量級(jí)人臉檢測(cè),適合簡(jiǎn)單場(chǎng)景人臉檢測(cè),計(jì)算量較小,適合嵌入式,開(kāi)發(fā)板,Android等終端部署
  • MTCNN人臉檢測(cè)參考項(xiàng)目:GitHub - Sierkinhane/mtcnn-pytorch: A face detection algorithm
  • RFB人臉檢測(cè)參考項(xiàng)目:GitHub - Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB: ??1MB lightweight face detection model (1MB輕量級(jí)人臉檢測(cè)模型)

下圖是MTCNN模型人臉檢測(cè)和人臉關(guān)鍵點(diǎn)(Landmark)檢測(cè)效果??

  • ?人臉關(guān)鍵點(diǎn)(Landmark):共預(yù)測(cè)五個(gè)人臉關(guān)鍵點(diǎn),分別為:左眼中心點(diǎn),右眼中心點(diǎn),鼻尖中心點(diǎn)以及左嘴角和右嘴角
  • 利用Landmark信息,后續(xù)可以通過(guò)仿射變換,對(duì)人臉進(jìn)行校準(zhǔn),獲得相對(duì)比較正的人臉。人臉校準(zhǔn)可以有效提升人臉識(shí)別的效果

?人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

(2)人臉校準(zhǔn)

利用Landmark信息,可以通過(guò)仿射變換,對(duì)人臉進(jìn)行校準(zhǔn),獲得相對(duì)比較正的人臉,項(xiàng)目core/alignment模塊提供人臉校準(zhǔn)算法。

其中實(shí)現(xiàn)思路是:

利用OpenCV的estimateAffine2D()函數(shù)估計(jì)人臉關(guān)鍵點(diǎn)(5個(gè)landmark)和參考人臉關(guān)鍵點(diǎn)(reference landmark)的仿射變換矩陣M,再根據(jù)仿射變換矩陣M矯正人臉圖像

下圖給出人臉校準(zhǔn)的效果圖,其中【image】是原始圖像,【ref-Landmark】圖像是112×112圖像的參考人臉關(guān)鍵點(diǎn)(reference landmark),而【face_alignment】是最終矯正的人臉效果圖。

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

(3)人臉特征提取

項(xiàng)目基于開(kāi)源的ArcFace(也稱InsightFace)訓(xùn)練框架,開(kāi)發(fā)并優(yōu)化了三個(gè)版本的人臉識(shí)別模型:mobilenet_v2,IR-18(resnet18優(yōu)化版)以及IR-50(resnet50優(yōu)化版),用于人臉特征提取

ArcFace:GitHub - TreB1eN/InsightFace_Pytorch: Pytorch0.4.1 codes for InsightFace

模型 LFW CFP_FF CFP_FP AgeDB CALFW CPLFW
resnet50 99.78 99.69 98.14 97.53 95.87 92.45
resnet18 99.55 99.61 97.74 96.52 94.66 90.01
mobilenet_v2 99.23 99.27 90.74 93.22 93.57 88.69

resnet50和resnet18參數(shù)量比較大,計(jì)算量較大,適合在PC服務(wù)器部署 ;而mobilenet_v2

模型計(jì)算量較小,適合嵌入式,開(kāi)發(fā)板,Android等終端部署。

(4)人臉比對(duì)(1:1)

1:1人臉比對(duì)(也稱人臉驗(yàn)證,身份驗(yàn)證),即將兩張人臉進(jìn)行1:1比對(duì),得到人臉相似度,來(lái)判斷是否是同一個(gè)人,一般用作人證比對(duì)等場(chǎng)景,比如銀行卡/QQ/微信/支付寶等賬號(hào)登錄時(shí)人臉身份驗(yàn)證。

項(xiàng)目實(shí)現(xiàn)了1:1人臉比對(duì)功能(face_compare.py)

# -*- coding: utf-8 -*-
import os
import cv2
import argparse
import traceback
from core import face_recognizer
from pybaseutils import image_utils, file_utils


class Example2(face_recognizer.FaceRecognizer):
    def __init__(self, database):
        """
        @param database: 人臉數(shù)據(jù)庫(kù)的路徑
        """
        super(Example2, self).__init__(database=database)

    def compare_face_task(self, image_file1, image_file2, score_thresh=0.75, vis=True):
        """
        1:1人臉比對(duì),比較兩張肖像圖是否是同一個(gè)人
        @param image_file1 肖像圖1
        @param image_file2 肖像圖2
        @param score_thresh 相似人臉?lè)謹(jǐn)?shù)人臉閾值
        """
        # 去讀取圖片
        image1 = cv2.imread(image_file1)
        image2 = cv2.imread(image_file2)
        face_info1, face_info2, score = self.compare_face(image1, image2)
        if len(face_info1['face']) > 0 and len(face_info2['face']) > 0:
            v1 = face_info1["feature"]
            v2 = face_info2["feature"]
            same_person = score > score_thresh
            print("feature1.shape:{}\nfeature1:{}".format(v1.shape, v1[0, 0:20]))
            print("feature2.shape:{}\nfeature2:{}".format(v2.shape, v2[0, 0:20]))
            print("similarity: {}, same person: {}".format(score, same_person))
            if vis: self.show_result(image1, face_info1, image2, face_info2)
        else:
            print("No face detected")
        return score

    def show_result(self, image1, face_info1, image2, face_info2):
        face1 = face_info1["face"]
        face2 = face_info2["face"]
        if len(face1) > 0: image_utils.cv_show_image("face1", face1[0], delay=1)
        if len(face2) > 0: image_utils.cv_show_image("face2", face2[0], delay=1)
        self.draw_result("image1", image=image1, face_info=face_info1, vis=True, delay=1)
        self.draw_result("image2", image=image2, face_info=face_info2, vis=True, delay=0)


def parse_opt():
    image_file1 = "data/test_image/test1.jpg"
    image_file2 = "data/test_image/test2.jpg"
    parser = argparse.ArgumentParser()
    parser.add_argument('--image_file1', type=str, default=image_file1, help='image_file1')
    parser.add_argument('--image_file2', type=str, default=image_file2, help='image_file1')
    opt = parser.parse_args()
    print(opt)
    return opt


if __name__ == "__main__":
    """1:1人臉比對(duì),可用于人證比對(duì)等場(chǎng)景"""
    opt = parse_opt()
    fr = Example2(database="")
    fr.compare_face_task(opt.image_file1, opt.image_file2, vis=True)

測(cè)試1:1人臉比對(duì),可在終端運(yùn)行:

python face_compare.py --image_file1 "data/test_image/test1.jpg" --image_file2 "data/test_image/test2.jpg"

運(yùn)行結(jié)果如下:

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

(5)人臉?biāo)阉?1:N)

1:N人臉?biāo)阉?,將一張人臉和N張人臉進(jìn)行比對(duì),找出最相似的一張或多張人臉,即1:N人臉?biāo)阉???捎米魅四樅灥?、人臉門禁、人員信息查詢、安防監(jiān)控等應(yīng)用場(chǎng)景。

項(xiàng)目實(shí)現(xiàn)了1:N人臉?biāo)阉鞴δ?,需要提前生成人臉?shù)據(jù)庫(kù)(Face database),先錄入注冊(cè)人臉數(shù)據(jù)

項(xiàng)目register.py 實(shí)現(xiàn)人臉數(shù)據(jù)庫(kù)(database)人臉注冊(cè),database人臉圖像要求滿足以下:

  • 圖片按照[ID-XXXX.jpg]命名,如:張三-image.jpg,作為人臉識(shí)別的底圖
  • 個(gè)人照片可以是個(gè)人證件照,生活照,肖像照片,要求五官清晰且正臉的照片,不能出現(xiàn)多個(gè)人臉的情況
  • 盡量不要出現(xiàn)過(guò)度美顏,頭發(fā)遮擋,低頭側(cè)臉等問(wèn)題

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

?實(shí)現(xiàn)人臉注冊(cè), 可在終端運(yùn)行(register.py):

# 默認(rèn)人臉數(shù)據(jù)庫(kù),圖像存放在portrait = "./data/database/portrait"
# 默認(rèn)人臉數(shù)據(jù)庫(kù),特征文件保存在database='./data/database/database-resnet50.json'

python register.py

運(yùn)行結(jié)果如下:

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

?如果需要注冊(cè)新人?,請(qǐng)參考如下步驟:

  1. 采集一張新人的個(gè)人照片,以張三的照片為例子
  2. 照片保存在人臉數(shù)據(jù)庫(kù)中(data/database/portrait)中,圖片按照[ID-XXXX.jpg]命名,如:張三-image.jpg,作為人臉識(shí)別的底圖
  3. 然后運(yùn)行register.py,完成人臉數(shù)據(jù)庫(kù)的人臉注冊(cè)

完成人臉注冊(cè)后,下一步可以進(jìn)行1:N人臉?biāo)阉?,?shí)現(xiàn)人臉識(shí)別的功能(face_search.py):

  • 測(cè)試圖片文件,可在終端運(yùn)行:
# 待識(shí)別人臉圖片存放在項(xiàng)目目錄data/test_image 
python face_search.py --image_dir "data/test_image"
  • 測(cè)試視頻文件,可在終端運(yùn)行:
# 測(cè)試視頻文件,--video_file填寫(xiě)視頻文件的路徑
python face_search.py --video_file "data/test-video.mp4"
  • 測(cè)試攝像頭,可在終端運(yùn)行:
# 測(cè)試攝像頭,--video_file填寫(xiě)攝像頭ID號(hào),一般默認(rèn)從0開(kāi)始
python face_search.py --video_file 0
# -*- coding: utf-8 -*-
import os
import cv2
import argparse
import traceback
from configs import configs
from core import face_recognizer
from pybaseutils import image_utils, file_utils


class Example1(face_recognizer.FaceRecognizer):
    def __init__(self, database):
        """
        @param database: 人臉數(shù)據(jù)庫(kù)的路徑
        """
        super(Example1, self).__init__(database=database)

    def start_capture(self, video_file, save_video=None, detect_freq=1, vis=True):
        """
        start capture video
        :param video_file: *.avi,*.mp4,...
        :param save_video: *.avi
        :param detect_freq:
        :return:
        """
        video_cap = image_utils.get_video_capture(video_file)
        width, height, numFrames, fps = image_utils.get_video_info(video_cap)
        if save_video:
            self.video_writer = image_utils.get_video_writer(save_video, width, height, fps)
        count = 0
        while True:
            if count % detect_freq == 0:
                # 設(shè)置抽幀的位置
                if isinstance(video_file, str): video_cap.set(cv2.CAP_PROP_POS_FRAMES, count)
                isSuccess, frame = video_cap.read()
                if not isSuccess:
                    break
                frame, face_info = self.search_face_task(frame, thickness=4, fontScale=2.0, delay=10, vis=True)
                if save_video:
                    self.video_writer.write(frame)
            count += 1
        video_cap.release()

    def detect_image_dir(self, image_dir, out_dir=None, vis=True):
        """
        @param image_dir:
        @param out_dir:
        @param vis:
        @return:
        """
        image_list = file_utils.get_files_lists(image_dir, postfix=file_utils.IMG_POSTFIX)
        for image_file in image_list:
            try:
                print("image_file:{}\t".format(image_file), end=',', flush=True)
                image = image_utils.read_image_ch(image_file)
                image = image_utils.resize_image(image, size=(None, 640))
                image, face_info = self.search_face_task(image, vis=vis)
                if out_dir:
                    out_file = file_utils.create_dir(out_dir, None, os.path.basename(image_file))
                    print("save result:{}".format(out_file))
                    cv2.imwrite(out_file, image)
            except:
                traceback.print_exc()
                print(image_file, flush=True)

    def search_face_task(self, bgr, thickness=2, fontScale=1.5, delay=0, vis=False):
        """
        1:N人臉?biāo)阉魅蝿?wù)
        :param bgr: BGR image
        :return:
        """
        face_info = self.detect_search(bgr, max_face=-1, vis=False)
        image = self.draw_result("Recognizer", image=bgr, face_info=face_info,
                                 thickness=thickness, fontScale=fontScale, delay=delay, vis=vis)
        return image, face_info


def parse_opt():
    database = configs.database  # 存儲(chǔ)人臉數(shù)據(jù)庫(kù)特征路徑database
    # image_dir = 'data/database-test'  # 測(cè)試圖片的目錄
    image_dir = 'data/test_image'  # 測(cè)試圖片的目錄
    out_dir = "output/"  # 保存檢測(cè)結(jié)果
    video_file = None  # video_file is None表示進(jìn)行圖片測(cè)試
    # video_file = "data/test-video.mp4"  # 視頻文件測(cè)試
    # video_file = "0"  # 攝像頭測(cè)試
    parser = argparse.ArgumentParser()
    parser.add_argument('--database', type=str, default=database, help='存儲(chǔ)人臉數(shù)據(jù)庫(kù)特征路徑database')
    parser.add_argument('--image_dir', type=str, default=image_dir, help='image_dir')
    parser.add_argument('--video_file', type=str, default=video_file, help='camera id or video file')
    parser.add_argument('--out_dir', type=str, default=out_dir, help='save result')
    opt = parser.parse_args()
    print(opt)
    return opt


if __name__ == "__main__":
    """1:N人臉?biāo)阉?可用于人臉簽到、人臉門禁、人員信息查詢、安防監(jiān)控等應(yīng)用場(chǎng)景"""
    opt = parse_opt()
    fr = Example1(database=opt.database)
    if isinstance(opt.video_file, str) or isinstance(opt.video_file, int):
        opt.video_file = str(opt.video_file)
        if len(opt.video_file) == 1: opt.video_file = int(opt.video_file)
        save_video = os.path.join(opt.out_dir, "result.avi") if opt.out_dir else None
        fr.start_capture(opt.video_file, save_video, detect_freq=1, vis=True)
    else:
        fr.detect_image_dir(opt.image_dir, opt.out_dir, vis=True)

(6)配置文件config

項(xiàng)目配置文件configs/configs.py,用于設(shè)置人臉檢測(cè)模型,特征提取模型,可以根據(jù)自己的需要選擇

  • 人臉檢測(cè)模型,目前支持RFB和MTCNN人臉檢測(cè)
  • 人臉識(shí)別(特征提取)模型,目前支持resnet50,resnet18和mobilenet_v2模型

人臉識(shí)別特征提取模型,提供resnet50,resnet18和mobilenet_v2 ,其測(cè)試準(zhǔn)確率,參考如下:

模型 LFW CFP_FF CFP_FP AgeDB CALFW CPLFW
resnet50 99.78 99.69 98.14 97.53 95.87 92.45
resnet18 99.55 99.61 97.74 96.52 94.66 90.01
mobilenet_v2 99.23 99.27 90.74 93.22 93.57 88.69

resnet50和resnet18參數(shù)量比較大,計(jì)算量較大,適合在PC服務(wù)器部署 ;而mobilenet_v2

模型計(jì)算量較小,適合嵌入式,開(kāi)發(fā)板,Android等終端部署。

# -*-coding: utf-8 -*-
import torch
import os

root = os.path.dirname(os.path.dirname(__file__))

det_thresh = 0.5  # 人臉檢測(cè)閾值,小于該閾值的檢測(cè)框會(huì)被剔除
rec_thresh = 0.5  # 人臉識(shí)別閾值,小于該閾值的人臉識(shí)別結(jié)果為unknown,表示未知
# 人臉檢測(cè)模型,目前支持RFB和MTCNN人臉檢測(cè)
DETECTOR = {
    # "net_name": "RFB",
    "net_name": "MTCNN",
}

# 人臉識(shí)別(特征提取)模型配置文件,目前支持resnet50,resnet18和mobilenet_v2模型
FEATURE = {
    "net_name": "resnet50",
    # "net_name": "resnet18",
    # "net_name": "mobilenet_v2",
    "input_size": (112, 112),
    "embedding_size": 512
}

# 人臉數(shù)據(jù)庫(kù)圖像路徑,用于注冊(cè)人臉
portrait = "./data/database/portrait"
# 人臉數(shù)據(jù)庫(kù)特征路徑database(注冊(cè)人臉后生成的特征文件)
database = os.path.join(os.path.dirname(portrait), "database-{}.json".format(FEATURE['net_name']))

# 運(yùn)行設(shè)備
# device = "cpu"
device = "cuda:0" if torch.cuda.is_available() else "cpu"

(7)人臉識(shí)別優(yōu)化建議

  1. 人臉識(shí)別依賴人臉檢測(cè),一個(gè)高精度的人臉檢測(cè)模型算法,可以有效提高人臉識(shí)別的準(zhǔn)確率
  2. 人臉校準(zhǔn)算法可以矯正人臉傾斜等問(wèn)題,可以極大提高人臉識(shí)別效果;需要依賴人臉關(guān)鍵點(diǎn)檢測(cè)(Landmark),本項(xiàng)目使用的RFB和MTCNN模型都可預(yù)測(cè)人臉關(guān)鍵點(diǎn)
  3. 人臉識(shí)別中,待識(shí)別人臉圖片,如果存在低頭側(cè)臉,或者人臉存在遮擋等情況,人臉識(shí)別準(zhǔn)確率較低(可能被識(shí)別為unknown),實(shí)際使用過(guò)程中,需要用戶配合,正對(duì)著攝像頭,以提高人臉識(shí)別準(zhǔn)確率的效果。
  4. 1:N人臉?biāo)阉髦?/strong>,要求注冊(cè)底庫(kù)的人臉數(shù)據(jù)庫(kù)是高質(zhì)量的個(gè)人照片;建議每人需要提供一張高清的、不模糊的、少美顏的,五官清晰可見(jiàn)的,正臉的,不低頭不側(cè)臉的個(gè)人自拍照(生活照、證件照),以便可以生成高質(zhì)量的人臉特征
  5. 1:N人臉?biāo)阉髦?/strong>,當(dāng)N屬于百萬(wàn)級(jí)別以上海量人臉數(shù)據(jù)時(shí),人臉識(shí)別會(huì)比較慢,畢竟需要遍歷人臉進(jìn)行特征匹配,性能較差;解決方法是可以采用人臉特征聚類,分而治之的思路;目前已有很多開(kāi)源框架,感興趣的可以參考Faiss 、milvus等庫(kù)。
  6. 目前,項(xiàng)目暫不支持人臉真?zhèn)舞b別(活體識(shí)別),后續(xù)計(jì)劃開(kāi)發(fā)基于RGB的活體識(shí)別功能,敬請(qǐng)期待哈

4. 人臉識(shí)別Demo效果

下圖是Python版本的人臉識(shí)別Demo效果,圖中繪制了綠色框,框上面文本是人臉識(shí)別結(jié)果和匹配相似度(置信度);當(dāng)置信度小于rec_thresh=0.5時(shí),人臉識(shí)別結(jié)果為unknown,表示未知。

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)?

人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)


5. 人臉識(shí)別C/C++版本源碼下載

參考文章?《人臉檢測(cè)和人臉識(shí)別3:C/C++實(shí)現(xiàn)人臉檢測(cè)和人臉識(shí)別》https://blog.csdn.net/guyuealian/article/details/130600571

C/C++版本人臉識(shí)別效果 Python版本人臉識(shí)別效果
人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載) 人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)

6. 人臉識(shí)別Android版本源碼下載

參考文章?《人臉檢測(cè)和人臉識(shí)別4:Android實(shí)現(xiàn)人臉檢測(cè)和人臉識(shí)別》https://blog.csdn.net/guyuealian/article/details/130600600

??人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)


7. 人臉識(shí)別Python版本源碼下載

InsightFace人臉識(shí)別Python版本源碼下載:人臉識(shí)別2:Python實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼)

項(xiàng)目源碼包含內(nèi)容:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-446615.html

  1. 提供兩種人臉檢測(cè)方法:一種是基于MTCNN的通用人臉檢測(cè)模型,另一種是輕量化的、快速的RFB人臉檢測(cè)模型;這個(gè)兩個(gè)模型都能實(shí)現(xiàn)人臉檢測(cè),并同時(shí)預(yù)測(cè)人臉的五個(gè)關(guān)鍵點(diǎn)(Landmark)。
  2. 提供三個(gè)人臉識(shí)別特征提取模型:mobilenet_v2,IR-18(resnet18優(yōu)化版)以及IR-50(resnet50優(yōu)化版),用于人臉特征提取
  3. 提供1:1人臉比對(duì):face_compare.py,可用于人證比對(duì)等場(chǎng)景
  4. 提供人臉注冊(cè)功能:register.py,項(xiàng)目自帶人臉識(shí)別測(cè)試數(shù)據(jù),可用于驗(yàn)證人臉識(shí)別效果
  5. 提供1:N人臉?biāo)阉鳎?/strong>face_search.py,可用于人臉簽到、人臉門禁、人員信息查詢、安防監(jiān)控等應(yīng)用場(chǎng)景
  6. 項(xiàng)目1:N人臉?biāo)阉鳎?/strong>face_search.py,支持圖片,視頻和攝像頭測(cè)試

到了這里,關(guān)于人臉識(shí)別2:InsightFace實(shí)現(xiàn)人臉識(shí)別Face Recognition(含源碼下載)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • face_recognition人臉識(shí)別與人臉檢測(cè)

    1、安裝face_recognition庫(kù) face_recognition庫(kù)的人臉識(shí)別是基于業(yè)內(nèi)領(lǐng)先的C++開(kāi)源庫(kù)dlib中的深度學(xué)習(xí)模型,安裝face_recognition庫(kù)的同時(shí)會(huì)一并安裝dlib深度學(xué)習(xí)框架。 2、face_recognition庫(kù)的使用 1)load_image_file加載要識(shí)別的人臉圖像 這個(gè)方法主要是用于加載要識(shí)別的人臉圖像,返回的數(shù)據(jù)

    2024年02月13日
    瀏覽(19)
  • 人臉識(shí)別(Java+ Face++實(shí)現(xiàn))

    人臉識(shí)別(Java+ Face++實(shí)現(xiàn))

    Face++的核心技術(shù)是基于深度學(xué)習(xí)的人臉識(shí)別技術(shù),其算法在準(zhǔn)確率和速度方面都處于領(lǐng)先地位。該公司的產(chǎn)品和服務(wù)包括人臉識(shí)別SDK、人臉識(shí)別API、人臉比對(duì)服務(wù)、人臉檢測(cè)服務(wù)、活體檢測(cè)服務(wù)等。這些產(chǎn)品和服務(wù)廣泛應(yīng)用于金融、公安、零售、物流等領(lǐng)域。并且,F(xiàn)ace++提供

    2024年02月07日
    瀏覽(23)
  • face-api實(shí)現(xiàn)人臉識(shí)別。

    face-api實(shí)現(xiàn)人臉識(shí)別。

    訪問(wèn)地址 JavaScript API for face detection and face recognition in the browser implemented on top of the tensorflow.js core API 官方說(shuō)明 翻譯:在tensorflow.js核心API之上實(shí)現(xiàn)的用于瀏覽器中人臉檢測(cè)和人臉識(shí)別的JavaScript API 訪問(wèn)tensorflow.js 部分代碼 藍(lán)奏云:https://wwud.lanzouw.com/iLnE516oj2eh 百度云:https://

    2024年02月10日
    瀏覽(17)
  • 一鍵AI高清換臉——基于InsightFace、CodeFormer實(shí)現(xiàn)高清換臉與驗(yàn)證換臉后效果能否通過(guò)人臉比對(duì)、人臉識(shí)別算法

    一鍵AI高清換臉——基于InsightFace、CodeFormer實(shí)現(xiàn)高清換臉與驗(yàn)證換臉后效果能否通過(guò)人臉比對(duì)、人臉識(shí)別算法

    1、項(xiàng)目簡(jiǎn)介 AI換臉是指利用基于深度學(xué)習(xí)和計(jì)算機(jī)視覺(jué)來(lái)替換或合成圖像或視頻中的人臉??梢詫⒁粋€(gè)人的臉替換為另一個(gè)人的臉,或者將一個(gè)人的表情合成到另一個(gè)人的照片或視頻中。算法常常被用在娛樂(lè)目上,例如在社交媒體上創(chuàng)建有趣的照片或視頻,也有用于電影制作

    2024年02月08日
    瀏覽(28)
  • insightface 人臉檢測(cè)與識(shí)別

    insightface 人臉檢測(cè)與識(shí)別

    參考:https://huaweicloud.csdn.net/638088d7dacf622b8df89c0c.html insightface模型下載可能需要連接外網(wǎng),模型自動(dòng)下載保存再modelsbuffalo_l下,人臉注冊(cè)自動(dòng)保存再face_db目錄下 python face_label.py --picture 劉亦菲.jpg --register Ture python face_label.py --picture 楊冪.jpg --register Ture (運(yùn)行后會(huì)把照片保存一

    2024年02月08日
    瀏覽(27)
  • 【face-api.js】前端實(shí)現(xiàn),人臉捕獲、表情識(shí)別、年齡性別識(shí)別、人臉比對(duì)、視頻人臉追蹤、攝像頭人物識(shí)別

    【face-api.js】前端實(shí)現(xiàn),人臉捕獲、表情識(shí)別、年齡性別識(shí)別、人臉比對(duì)、視頻人臉追蹤、攝像頭人物識(shí)別

    官網(wǎng)看下簡(jiǎn)介,在線預(yù)覽看下效果 官方的github文件拷下來(lái) npm i face-api.js 把模型文件拷進(jìn)你的項(xiàng)目 主要是在圖片或視頻元素上,蓋一個(gè)相同大小的canvas 先是錄入一些圖片的描述信息,然后比較描述信息,判斷人臉的相似度 人臉檢測(cè)器有兩種, SSD 和 Tiny 兩種,SSD較大,Tiny用

    2024年02月11日
    瀏覽(95)
  • vue+face-api.js實(shí)現(xiàn)前端人臉識(shí)別功能

    vue+face-api.js實(shí)現(xiàn)前端人臉識(shí)別功能

    近期做了一個(gè)前端vue實(shí)現(xiàn)人臉識(shí)別的功能,主要功能邏輯包含:人臉識(shí)別,人臉驗(yàn)證,喚起攝像頭視頻流之后從三個(gè)事件(用戶點(diǎn)頭、搖頭、眨眼睛)中隨機(jī)選中兩個(gè)事件,待兩個(gè)事件通過(guò)判斷后人臉靜止不動(dòng)3秒鐘后截取視頻流生成圖片,上傳到阿里或者騰訊oss,通過(guò)oss返回

    2024年02月05日
    瀏覽(25)
  • 基于Face++,使用Spring Boot+Elemnet-UI實(shí)現(xiàn)人臉識(shí)別登錄。

    基于Face++,使用Spring Boot+Elemnet-UI實(shí)現(xiàn)人臉識(shí)別登錄。

    上一篇文章只是封裝了人臉檢測(cè)的一些工具類,要實(shí)現(xiàn)刷臉登錄,我們首先得思考一個(gè)問(wèn)題,就是如何將我們的人臉和登錄賬戶信息進(jìn)行綁定,讓它通過(guò)人臉就能識(shí)別到當(dāng)前登錄的賬戶是誰(shuí)的賬戶。 這個(gè)問(wèn)題我們可以這樣解決,我瀏覽Face++的官網(wǎng)發(fā)現(xiàn)它還有人臉比對(duì)的一個(gè)

    2024年02月04日
    瀏覽(18)
  • OpenCV人臉識(shí)別,訓(xùn)練模型為cv2.face.LBPHFaceRecognizer_create()

    OpenCV人臉識(shí)別,訓(xùn)練模型為cv2.face.LBPHFaceRecognizer_create()

    OpenCV內(nèi)部自帶有三種人臉檢測(cè)方式:LBPH人臉識(shí)和其他兩種方法(Eigen人臉識(shí)別,F(xiàn)isherFace人臉識(shí)別)本次主要說(shuō)明第一種方式LBPH檢測(cè)。 1.創(chuàng)建需要訓(xùn)練的圖片的集文件夾,和識(shí)別功能測(cè)試圖片集的文件夾。 圖(1)訓(xùn)練圖集文件夾? ?圖(1.1)taylorswift照片(盡量選用背景沒(méi)其

    2024年02月07日
    瀏覽(22)
  • opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create()

    opencv 進(jìn)階13-Fisherfaces 人臉識(shí)別-函數(shù)cv2.face.FisherFaceRecognizer_create()

    PCA 方法是 EigenFaces 方法的核心,它找到了最大化數(shù)據(jù)總方差特征的線性組合。不可否認(rèn),EigenFaces 是一種非常有效的方法,但是它的缺點(diǎn)在于在操作過(guò)程中會(huì)損失許多特征信息。 因此,在一些情況下,如果損失的信息正好是用于分類的關(guān)鍵信息,必然會(huì)導(dǎo)致無(wú)法完成分類。

    2024年02月11日
    瀏覽(91)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包