治觯喝脚芡ū镜厝四槞z測(cè)與 1:1 比對(duì)完整指南)
InsightFace 人臉?lè)治鋈脚芡ū镜厝四槞z測(cè)與 1:1 比對(duì)完整指南【免費(fèi)下載鏈接】insightfaceState-of-the-art 2D and 3D Face Analysis Project項(xiàng)目地址: https://gitcode.com/GitHub_Trending/in/insightfaceInsightFace 是一個(gè)開(kāi)源的 2D/3D 人臉?lè)治龉ぞ呦淙四槞z測(cè)、人臉識(shí)別、關(guān)鍵點(diǎn)對(duì)齊、屬性估計(jì)全部可在本地完成數(shù)據(jù)不離開(kāi)你的機(jī)器。裝上 Python 包和預(yù)訓(xùn)練模型包后幾分鐘內(nèi)就能跑通一個(gè)離線的人臉比對(duì) Demo——這篇指南帶你完成環(huán)境安裝、最小示例、模型包選型和常見(jiàn)坑的排查。一張圖看懂 InsightFace 的能力邊界InsightFace 把檢測(cè) → 對(duì)齊 → 識(shí)別 → 屬性整條鏈路打包成了可直接安裝的 Python 包一次調(diào)用即可跑完全部環(huán)節(jié)。下圖展示了它覆蓋的典型能力人臉框與關(guān)鍵點(diǎn)標(biāo)注、性別年齡屬性、閉眼/活體狀態(tài)判斷、多人合影識(shí)別與口罩場(chǎng)景檢測(cè)。默認(rèn)能力包是buffalo_l約 326MB內(nèi)含 SCRFD-10GF 檢測(cè)模型、ResNet50WebFace600K 識(shí)別模型、2D 106 點(diǎn) 3D 68 點(diǎn)關(guān)鍵點(diǎn)模型和性別年齡屬性模型首次運(yùn)行會(huì)自動(dòng)下載到~/.insightface/models/。如果你不需要對(duì)齊和屬性最小的buffalo_sc只有 16MB。環(huán)境要求與安裝兩條命令裝好依賴推理只需 onnxruntime不需要裝 PyTorch 或 MXNet那是倉(cāng)庫(kù)內(nèi)訓(xùn)練模塊的需求master 分支基于 PyTorch 1.6 或 MXNet 1.6~1.8。CPU 推理裝onnxruntime即可想用 GPU 需自行安裝onnxruntime-gpu。pip install -U insightface pip install onnxruntime裝好后用下面這段最小腳本就能完成第一次人臉?lè)治觥獔D片用的是倉(cāng)庫(kù)自帶的示例圖t1.jpg里面有 6 個(gè)人import cv2 from insightface.app import FaceAnalysis app FaceAnalysis(namebuffalo_l) app.prepare(ctx_id-1) # -1 表示 CPU img cv2.imread(python-package/insightface/data/images/t1.jpg) faces app.get(img)跑通后faces是一個(gè) Face 對(duì)象列表圖里有幾張臉就有幾個(gè)對(duì)象。每個(gè)對(duì)象里裝著四樣?xùn)|西bbox人臉框左上角 x/y 右下角 x/y、kps雙眼、鼻尖、雙嘴角共 5 個(gè)關(guān)鍵點(diǎn)坐標(biāo)、det_score檢測(cè)置信度、embedding512 維識(shí)別向量可以理解為這張臉的數(shù)字指紋此外還有g(shù)ender/age屬性字段。模型包下載位置在~/.insightface/models/第二次運(yùn)行就不再重復(fù)下載。核心功能拆解人臉檢測(cè)框出每一張臉和它的 5 個(gè)關(guān)鍵點(diǎn)檢測(cè)就是app.get(img)這一步內(nèi)部由 SCRFD 模型完成v1.0 起prepare()默認(rèn)用 128×128 和 640×640 兩檔尺寸做檢測(cè)、再統(tǒng)一 NMS 合并小臉不容易漏。上面示例圖t1.jpg會(huì)被檢出 6 個(gè)人倉(cāng)庫(kù)的人臉交換示例 examples/in_swapper/ 正是用它并斷言len(faces)6。如果不想手動(dòng)處理坐標(biāo)直接調(diào)app.draw_on(img, faces)就能在原圖上畫出紅色人臉框、關(guān)鍵點(diǎn)圓點(diǎn)并在框旁標(biāo)注性別年齡文字如M,23配合cv2.imwrite即可存盤。1:1 比對(duì)用 embedding 余弦相似度判斷是否同一人判斷兩張照片是不是同一個(gè)人只需用各自face.embedding算余弦相似度再和閾值比較。官方示例 examples/face_recognition/insightface_app.py 默認(rèn)閾值取 0.65并明確提醒要按你的業(yè)務(wù)場(chǎng)景調(diào)整import numpy as np emb1, emb2 faces1[0].embedding, faces2[0].embedding sim float(emb1 emb2 / (np.linalg.norm(emb1) * np.linalg.norm(emb2))) print(同一人 if sim 0.65 else 不是同一人)輸出的sim取值在 -1 到 1 之間越接近 1 越像同一人。一圖多人時(shí)注意自己選定要比的那張臉官方示例取檢出的第一張否則會(huì)拿錯(cuò)人。性能數(shù)據(jù)與模型包怎么選下表是倉(cāng)庫(kù)公布的 SCRFD 檢測(cè)模型在 WIDERFace 上的 mAPVGA 分辨率、單尺度測(cè)試出處為 detection/scrfd/README.md模型Easy (mAP)Medium (mAP)Hard (mAP)參數(shù)量 (M)推理耗時(shí) (ms)SCRFD-0.5GF90.5788.1268.510.573.6SCRFD-2.5GF93.7892.1677.870.674.2SCRFD-10GF95.1693.8783.053.864.9SCRFD-34GF96.0694.9285.299.8011.7識(shí)別側(cè)各模型包的精度出處為 python-package/README.md模型包體積MR-ALLLFWCFP-FPAgeDB-30IJB-C(E4)buffalo_l默認(rèn)326MB91.2599.8399.3398.2397.25buffalo_s159MB71.8799.7098.0096.5895.02選型一句話追求精度用默認(rèn)的buffalo_l端側(cè)或低配設(shè)備選buffalo_s只想要檢測(cè)和識(shí)別、不要對(duì)齊和屬性就選最小的buffalo_sc16MB精度與buffalo_s相同antelopev2407MB用 ResNet100Glint360K是倉(cāng)庫(kù)中識(shí)別配置最重的一檔。5 條避坑指南 首次運(yùn)行報(bào)模型缺失或卡在下載→ 原因是 pip 安裝的包里不含預(yù)訓(xùn)練模型自動(dòng)下載需要網(wǎng)絡(luò)且首次較慢 → 保持網(wǎng)絡(luò)通暢等它下載完緩存在~/.insightface/models/離線環(huán)境則手動(dòng)下載 zip 解壓到該目錄后再運(yùn)行。遠(yuǎn)處小臉漏檢→ 原因是把prepare()改成了固定的小det_size小臉在縮圖上被壓沒(méi)了 → 保持默認(rèn)的 Auto 檢測(cè)128×128 640×640 雙尺度 統(tǒng)一 NMS只在追求極致速度時(shí)才改固定尺寸。GPU 沒(méi)生效、CPU 占用 100%→ 原因有兩個(gè)只裝了 CPU 版onnxruntime或沒(méi)指定 CUDA 執(zhí)行器 → 安裝onnxruntime-gpu并在FaceAnalysis(providers[CUDAExecutionProvider, CPUExecutionProvider])中聲明后端、ctx_id0指定顯卡。比對(duì)結(jié)果時(shí)準(zhǔn)時(shí)不準(zhǔn)→ 原因是拿 0.65 這個(gè)示例默認(rèn)值當(dāng)萬(wàn)能閾值 → 調(diào)低會(huì)增加誤認(rèn)、調(diào)高會(huì)增加漏認(rèn)建議收集你業(yè)務(wù)里的真實(shí)壞例該同判不同、該不同判同來(lái)回調(diào)閾值。?? 商用時(shí)發(fā)現(xiàn)授權(quán)邊界問(wèn)題→ 原因是代碼是 MIT 協(xié)議、學(xué)術(shù)和商用都不受限但附帶的預(yù)訓(xùn)練模型buffalo 系列等僅限非商業(yè)研究使用 → 商用含inswapper換臉系列、buffalo_l等識(shí)別模型包需按 README.md 中的說(shuō)明聯(lián)系官方獲取授權(quán)不要直接搬進(jìn)商業(yè)產(chǎn)品。延伸閱讀 Python 庫(kù)安裝、模型包列表、調(diào)用自定義 ONNX 模型python-package/README.md人臉檢測(cè)訓(xùn)練與 WIDERFace 評(píng)測(cè)SCRFDdetection/scrfd/人臉識(shí)別訓(xùn)練ArcFace 的 PyTorch/MXNet/Paddle 多實(shí)現(xiàn)、Partial FCrecognition/模型倉(cāng)庫(kù)與精度榜單model_zoo/README.md1:1 比對(duì)示例腳本examples/face_recognition/人臉交換示例inswapper需 v0.7examples/in_swapper/自建人臉?biāo)阉鞣?wù)容器化 Web UI REST APIserver/README.md桌面 GUIInsightFace Evaluation Studiopip install insightface[gui]python-package/docs/gui.md3D 人臉重建、視線估計(jì)等進(jìn)階方向reconstruction/寫在最后整個(gè)最小閉環(huán)其實(shí)只有三步pip install裝好庫(kù)和 onnxruntimeFaceAnalysis().prepare()拉起模型app.get(img)讀回每張臉的 bbox、關(guān)鍵點(diǎn)和 embedding——本地離線的人臉檢測(cè)與比對(duì)就通了。之后可以順著兩個(gè)方向繼續(xù)深挖想訓(xùn)練自己的檢測(cè)器看 detection/scrfd/ 的訓(xùn)練與 NAS 搜索流程想做大規(guī)模人臉?biāo)阉骰?3D 重建則看 server/ 和 reconstruction/ 兩個(gè)模塊 ?【免費(fèi)下載鏈接】insightfaceState-of-the-art 2D and 3D Face Analysis Project項(xiàng)目地址: https://gitcode.com/GitHub_Trending/in/insightface創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考