到自托管識(shí)別服務(wù))
如何用 3 步上手 InsightFace從人臉檢測(cè)到自托管識(shí)別服務(wù)【免費(fèi)下載鏈接】insightfaceState-of-the-art 2D and 3D Face Analysis Project項(xiàng)目地址: https://gitcode.com/GitHub_Trending/in/insightfaceInsightFace 是開(kāi)源人臉?lè)治龉ぞ呦涓采w人臉檢測(cè)、人臉識(shí)別、人臉對(duì)齊與換臉的完整鏈路附帶預(yù)訓(xùn)練模型包、分布式訓(xùn)練腳本和自托管識(shí)別服務(wù)。本文先用最小命令跑通效果再給出三個(gè)可直接照做的實(shí)戰(zhàn)場(chǎng)景。一分鐘看懂項(xiàng)目定位 InsightFace 把人臉?lè)较虻娜位顑悍旁谕粋€(gè)倉(cāng)庫(kù)里推理側(cè)用 Python 包直接加載預(yù)訓(xùn)練 ONNX 模型訓(xùn)練側(cè)提供 ArcFace 官方 PyTorch 實(shí)現(xiàn)和 PartialFC 大模型并行方案部署側(cè)則內(nèi)置一個(gè)帶 Web 界面和 REST API 的 Docker 服務(wù)。它的差異化在于一條龍——?jiǎng)e人只給模型權(quán)重這里從模型獲取、訓(xùn)練代碼到容器化服務(wù)都能自給自足。核心能力入口位置輸入輸出檢測(cè)、對(duì)齊、屬性python-package/insightface/app/一張圖片人臉框、5 點(diǎn) landmarks、性別年齡1:1 與 1:N 識(shí)別examples/face_recognition/、server/兩張或多張照片特征向量、余弦相似度、搜索結(jié)果人臉換臉examples/in_swapper/源人臉 目標(biāo)圖換臉結(jié)果圖訓(xùn)練新模型recognition/arcface_torch/.rec 數(shù)據(jù)集r50/r100 等模型與 ONNX 導(dǎo)出快速上手3 步跑通第一個(gè)結(jié)果 ?準(zhǔn)備環(huán)境拿到倉(cāng)庫(kù)代碼先 clone 倉(cāng)庫(kù)后續(xù)所有示例都基于本地目錄運(yùn)行g(shù)it clone https://gitcode.com/GitHub_Trending/in/insightface安裝依賴(lài)一條命令裝推理庫(kù)官方示例要求先安裝 insightface 包它從 0.2 版本起以 onnxruntime 為后端GPU 推理需另裝 onnxruntime-gpupip install -U insightface運(yùn)行最小命令跑通內(nèi)置演示倉(cāng)庫(kù)自帶的 demo_analysis.py 使用內(nèi)置多人樣本圖一次完成檢測(cè)、對(duì)齊、特征提取和相似度計(jì)算python examples/demo_analysis.py運(yùn)行后當(dāng)前目錄會(huì)生成 t1_output.jpg圖上畫(huà)出 6 張人臉的檢測(cè)框終端同時(shí)打印 6 人臉的兩兩相似度矩陣。三個(gè)核心能力實(shí)戰(zhàn) ?場(chǎng)景一核對(duì)兩張照片是否同一人你想做身份核驗(yàn)類(lèi)判斷時(shí)功能是把兩張照片各自壓成 512 維特征再算余弦相似度輸入是兩張單人照輸出是相似度分?jǐn)?shù)和是否同一人的結(jié)論。示例腳本默認(rèn)閾值 0.65跑之前把圖片路徑換成你自己的python examples/face_recognition/insightface_app.py終端打印 Similarity Score 和 Same person? YES/NO 兩行直接得到結(jié)論。場(chǎng)景二把整張圖的人臉批量替換你想做換臉實(shí)驗(yàn)時(shí)功能是加載 inswapper 模型把目標(biāo)圖里每張臉都換成指定源人臉輸入是帶臉圖片輸出是 t1_swapped.jpg。注意該換臉模型需單獨(dú)下載許可條款以官方文檔為準(zhǔn)python examples/in_swapper/inswapper_main.py示例會(huì)把內(nèi)置圖中 6 張人臉全部替換為其中一人的臉另存一張拼接圖便于對(duì)比。場(chǎng)景三搭一個(gè) 1:N 人臉?biāo)阉鞣?wù)你想把人臉庫(kù)服務(wù)化時(shí)功能是自托管 Server 容器上傳照片即完成檢測(cè)、入庫(kù)和搜索輸入是照片和人物注冊(cè)信息輸出是 Web 頁(yè)面、snake_case REST 接口和 Python SDK。CPU 版三步啟動(dòng)docker compose -f server/deploy/compose.cpu.yml pull docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license docker compose -f server/deploy/compose.cpu.yml up -d打開(kāi) http://127.0.0.1:18097/ 即可進(jìn)入 Dashboard創(chuàng)建 Collection、注冊(cè) Person再用一張陌生照片做 1:N 搜索。參數(shù)與性能調(diào)優(yōu)要點(diǎn) 訓(xùn)練側(cè)的推薦設(shè)置按數(shù)據(jù)規(guī)模和機(jī)器數(shù)量分檔配置文件都在 recognition/arcface_torch/configs/ 下使用場(chǎng)景推薦配置啟動(dòng)方式關(guān)鍵點(diǎn)單卡小數(shù)據(jù)集驗(yàn)證configs/ms1mv3_r50_onegpupython train_v2.py 加該配置r50、batch 128、fp16 開(kāi)啟、lr 0.02單機(jī) 8 卡configs/ms1mv3_r50torchrun --nproc_per_node8MS1MV3 約 9.3 萬(wàn)身份雙機(jī) 16 卡大模型configs/wf42m_pfc02_16gpus_r100torchrun 加多機(jī)參數(shù)r100 PartialFC類(lèi)別中心顯存是大數(shù)據(jù)集訓(xùn)練的主要瓶頸官方在 Tesla V100 32GB x 8 上實(shí)測(cè)的吞吐樣本/秒如下摘自 recognition/arcface_torch/README.md身份數(shù)數(shù)據(jù)并行模型并行PartialFC 0.114 萬(wàn)167230434738550 萬(wàn)顯存不足138939752900 萬(wàn)顯存不足顯存不足1855一句話劃重點(diǎn)身份數(shù)在幾十萬(wàn)以?xún)?nèi)按普通數(shù)據(jù)并行練即可跨過(guò)百萬(wàn)級(jí)就打開(kāi) PartialFC 采樣否則類(lèi)別中心裝不進(jìn)顯存。避坑指南 ??GPU 裝了卻跑在 CPU 上原因默認(rèn)安裝的是 CPU 版 onnxruntime不會(huì)自動(dòng)啟用 CUDA。解法改裝 onnxruntime-gpu并在 FaceAnalysis 里傳 providers[CUDAExecutionProvider]。模型下載失敗或版本過(guò)舊原因0.3.3 之后 FaceAnalysis 初始化時(shí)才自動(dòng)下載模型包網(wǎng)絡(luò)不穩(wěn)就卡在啟動(dòng)。解法手動(dòng)下載 buffalo_l 包解壓到 ~/.insightface/models/ 再運(yùn)行。大身份數(shù)訓(xùn)練直接 OOM原因全量 softmax 要把所有身份的類(lèi)別中心放進(jìn)顯存。解法配置文件里開(kāi)啟 fp16 并把 sample_rate 調(diào)成 PartialFC 模式。誤把公開(kāi)模型用于商用原因公開(kāi)預(yù)訓(xùn)練模型僅限非商業(yè)研究用途商用需單獨(dú)授權(quán)。解法商用前查看倉(cāng)庫(kù) README 的許可說(shuō)明并聯(lián)系官方。訓(xùn)練數(shù)據(jù)格式不對(duì)原因訓(xùn)練腳本讀 MXNet .rec 格式直接喂圖片目錄會(huì)報(bào)錯(cuò)。解法先用 recognition 目錄下的 rec_builder 工具把數(shù)據(jù)打包成 .rec。學(xué)習(xí)路徑與資源 想最快出結(jié)果讀 python-package/README.md模型包對(duì)照表buffalo_l、antelopev2 等和自動(dòng)下載說(shuō)明都在這里。想訓(xùn)練自己的模型看 recognition/arcface_torch/README.md訓(xùn)練命令、數(shù)據(jù)集準(zhǔn)備和 ONNX 轉(zhuǎn)換入口都有。想部署服務(wù)按 server/docs/user-guide.md 走首跑流程接口細(xì)節(jié)查 server/docs/api.md。想做檢測(cè)方向從 detection/scrfd/README.md 入手含 NAS 搜索和 WIDER FACE 評(píng)測(cè)腳本。InsightFace 把拿模型、跑推理、訓(xùn)新模型、上服務(wù)整條鏈路壓進(jìn)一個(gè)倉(cāng)庫(kù)省去了在多個(gè)項(xiàng)目間拼湊的功夫。下一步建議先跑通 examples 里的三條命令再照著場(chǎng)景三把 1:N 搜索服務(wù)在自己機(jī)器上搭起來(lái)?!久赓M(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),僅供參考