亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

Eigenface人臉識(shí)別:用PCA降維實(shí)現(xiàn)輕量級(jí)Python人臉識(shí)別系統(tǒng)

Eigenface人臉識(shí)別:用PCA降維實(shí)現(xiàn)輕量級(jí)Python人臉識(shí)別系統(tǒng) 簡(jiǎn)介基于Python的Eigenface人臉識(shí)別課程設(shè)計(jì)包面向需要完成人臉識(shí)別方向課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的高校學(xué)生完整覆蓋從人臉檢測(cè)、特征提取、模型訓(xùn)練到識(shí)別驗(yàn)證的經(jīng)典實(shí)現(xiàn)流程。包內(nèi)共11個(gè)文件包含5個(gè)Python源碼腳本、模型配置json、OpenCV級(jí)聯(lián)分類(lèi)器xml、設(shè)計(jì)報(bào)告docx以及說(shuō)明文檔和license整體大小約7.14MB目錄結(jié)構(gòu)清晰便于按流程閱讀和實(shí)踐。代碼基于Python 3.7與OpenCV 4.5.0開(kāi)發(fā)在Visual Studio Code中運(yùn)行調(diào)用攝像頭配合haar_cascade_frontalface_default.xml完成人臉檢測(cè)將截取到的人臉尺寸歸一化并轉(zhuǎn)換為pgm格式生成個(gè)人樣本同時(shí)提供訓(xùn)練、測(cè)試、重構(gòu)、人臉采集等多個(gè)模塊腳本覆蓋從數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練到結(jié)果驗(yàn)證的完整鏈路可直接修改后復(fù)用于實(shí)驗(yàn)。隨包附帶的word設(shè)計(jì)報(bào)告可幫助理解Eigenface原理與實(shí)驗(yàn)設(shè)計(jì)。目前已有558人學(xué)習(xí)下載適合作為人臉識(shí)別入門(mén)項(xiàng)目、課程設(shè)計(jì)模板及算法實(shí)驗(yàn)改寫(xiě)的參考素材。1. Eigenface 人臉識(shí)別這個(gè) zip到底解決什么問(wèn)題Eigenface特征臉是很多人接觸人臉識(shí)別時(shí)繞不過(guò)去的第一個(gè)里程碑算法。它不依賴(lài)深度學(xué)習(xí)不燒 GPU純用 Python 和 NumPy 就能在幾十行代碼里跑通一套“訓(xùn)練—識(shí)別”流程把一張人臉圖像壓縮成幾十個(gè)系數(shù)再用最近鄰去匹配身份。這個(gè) zip 本質(zhì)上是一個(gè)完整的 Eigenface 實(shí)現(xiàn)包里面應(yīng)該包含數(shù)據(jù)預(yù)處理腳本、PCA 訓(xùn)練代碼、識(shí)別腳本和一個(gè)人臉數(shù)據(jù)集組織目錄。它適合三類(lèi)人正在做畢設(shè)或課設(shè)的學(xué)生剛接觸機(jī)器視覺(jué)想從原理層面理解 PCA 降維如何作用于圖像的工程師以及需要在嵌入式設(shè)備或低算力環(huán)境里做輕量級(jí)人臉驗(yàn)證的場(chǎng)景。先給出一個(gè)反直覺(jué)的結(jié)論Eigenface 在白底證件照上準(zhǔn)確率能到 95% 以上但一到真實(shí)光照、側(cè)臉、遮擋場(chǎng)景就會(huì)斷崖式下跌——這不是 bug而是線(xiàn)性子空間模型的天花板。理解了這個(gè)邊界你才能真正用好這個(gè) zip而不是拿到手跑通 demo 就以為可以上生產(chǎn)。2. 特征臉原理為什么 PCA 能把人臉變成一組數(shù)字2.1 從像素空間到特征空間的本質(zhì)跳躍一張 112×92 的灰度人臉圖展平后是一個(gè) 10304 維的向量。如果直接把所有訓(xùn)練樣本丟進(jìn)分類(lèi)器維度災(zāi)難會(huì)同時(shí)帶來(lái)計(jì)算開(kāi)銷(xiāo)和過(guò)擬合。Eigenface 的核心假設(shè)是人臉雖然分布在 10304 維空間里但真正的變化其實(shí)被少數(shù)幾個(gè)方向主導(dǎo)——比如光照方向、臉型寬窄、五官位置。PCA 要做的就是找到這些主方向把每張人臉從 10304 維投影到 1050 維而且保留絕大部分區(qū)分度。數(shù)學(xué)上假設(shè)訓(xùn)練集有 N 張人臉每張是 d 維向量。先算平均臉import numpy as np def compute_mean_face(face_matrix): # face_matrix: shape (N, d)每行是一張展平后的人臉 mean_face np.mean(face_matrix, axis0) return mean_face # 示例10 張 112x92 的圖展平后每張 10304 維 faces np.random.randn(10, 10304) mean compute_mean_face(faces) print(mean.shape) # (10304,)這段代碼做的事就是把所有訓(xùn)練樣本逐像素求平均得到一張“平均臉”。注意這里 axis0 表示沿著樣本維度求均值得到的 mean_face 是一維數(shù)組長(zhǎng)度等于單張圖片的像素?cái)?shù)。之后我們要把每張臉減去平均臉得到差值矩陣再做協(xié)方差矩陣的特征分解。協(xié)方差矩陣的維度是 d×d對(duì) 10304 維來(lái)說(shuō)直接算特征分解內(nèi)存爆炸所以要用一個(gè)小技巧——對(duì)差值矩陣的轉(zhuǎn)置做 SVD 或特征分解而不是直接對(duì)協(xié)方差矩陣操作。2.2 從協(xié)方差矩陣到特征臉降維的完整推導(dǎo)設(shè)差值矩陣 X 的 shape 為 (N, d)我們要找的其實(shí)是 X?X 的特征向量。但 X?X 是 d×d代價(jià)太高轉(zhuǎn)而做 XX?這是 N×N對(duì)幾十到幾百個(gè)訓(xùn)練樣本來(lái)說(shuō)非常小。XX? 的特征向量 v 對(duì)應(yīng)關(guān)系是X?X 的特征向量 u X?v 再歸一化。這就是經(jīng)典的“轉(zhuǎn)置技巧”也是 Eigenface 能跑在純 CPU 上的關(guān)鍵。def train_eigenfaces(face_matrix, n_components25): # face_matrix: shape (N, d)每行是一張人臉 N, d face_matrix.shape mean_face np.mean(face_matrix, axis0) centered face_matrix - mean_face # 去均值 # 小矩陣N x N cov_small np.dot(centered, centered.T) # (N, N) eigvals, eigvecs_small np.linalg.eigh(cov_small) # 特征值降序排列 idx np.argsort(eigvals)[::-1] eigvecs_small eigvecs_small[:, idx] # 還原到 d 維空間 eigvecs np.dot(centered.T, eigvecs_small) # (d, N) norm np.linalg.norm(eigvecs, axis0) eigvecs eigvecs / norm # 歸一化 # 取前 n_components 個(gè)主成分作為特征臉 eigenfaces eigvecs[:, :n_components] return mean_face, eigenfaces # 用法 X np.random.randn(40, 10304) mean, eigenfaces train_eigenfaces(X, n_components30) print(eigenfaces.shape) # (10304, 30)這里的核心參數(shù) n_components決定了最終特征空間的維度。選多少?zèng)]有絕對(duì)標(biāo)準(zhǔn)常見(jiàn)做法是先保留能解釋 90% 以上方差的前 k 個(gè)主成分。你可以加一行代碼算解釋方差比explained_variance_ratio eigvals[idx] / np.sum(eigvals) cumsum np.cumsum(explained_variance_ratio) k np.argmax(cumsum 0.95) 1 print(f保留 {k} 個(gè)特征臉即可解釋 95% 方差)注意 np.linalg.eigh 返回的特征值已經(jīng)是升序所以必須做一次逆序索引。用 eigh 而不是 eig是因?yàn)閰f(xié)方差矩陣是對(duì)稱(chēng)的eigh 數(shù)值穩(wěn)定性更好速度也更快。特征臉本質(zhì)上是 d 維向量可以 reshape 回 (112, 92) 可視化你會(huì)看到一張張“幽靈臉”前幾個(gè)特征臉對(duì)應(yīng)光照和整體明暗后面則越來(lái)越像具體的人臉結(jié)構(gòu)差異。3. 用 Python 搭建完整 Eigenface 項(xiàng)目從數(shù)據(jù)集到識(shí)別3.1 數(shù)據(jù)集組織與預(yù)處理流程圖這個(gè) zip 里大概率自帶一個(gè)數(shù)據(jù)集目錄結(jié)構(gòu)通常是按人分文件夾每個(gè)文件夾放同一人的多張不同表情/姿態(tài)的灰度圖。如果你手頭沒(méi)有用 ORL 人臉數(shù)據(jù)集400 張40 人每人 10 張或 Yale 數(shù)據(jù)集最合適。數(shù)據(jù)加載和預(yù)處理我一般這樣組織import os import cv2 import numpy as np IMG_SIZE (112, 92) def load_dataset(data_dir): 目錄結(jié)構(gòu): data_dir/ person_01/ 1.pgm 2.pgm person_02/ 1.pgm ... 返回: faces: (N, 10304) 的 float32 矩陣 labels: (N,) 的 int 標(biāo)簽 name_map: 標(biāo)簽 - 人名 的字典 faces, labels [], [] name_map {} label 0 for person_name in sorted(os.listdir(data_dir)): person_dir os.path.join(data_dir, person_name) if not os.path.isdir(person_dir): continue name_map[label] person_name for img_name in os.listdir(person_dir): img_path os.path.join(person_dir, img_name) if not img_path.lower().endswith((.pgm, .jpg, .png, .bmp)): continue img cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None: print(f警告: 無(wú)法讀取 {img_path}) continue img cv2.resize(img, IMG_SIZE) faces.append(img.flatten().astype(np.float32)) labels.append(label) label 1 return np.array(faces), np.array(labels), name_map # 用法示例 faces, labels, name_map load_dataset(./att_faces) print(faces.shape) # (400, 10304) print(labels[:10]) # [0 0 0 ...]這個(gè)地方有四個(gè)易錯(cuò)點(diǎn)。第一cv2.imread 讀入的灰度圖是 uint8范圍 0255必須轉(zhuǎn) float32否則后續(xù)算均值、協(xié)方差時(shí)精度不夠且可能溢出。第二resize 到固定尺寸很關(guān)鍵同一數(shù)據(jù)集里原始圖片可能尺寸不一致Eigenface 的向量維度必須統(tǒng)一。第三文件名過(guò)濾只認(rèn)圖片后綴防止把 Mac 的 .DS_Store 或 Windows 的隱藏文件讀進(jìn)來(lái)。第四label 從 0 開(kāi)始按字母序遞增name_map 負(fù)責(zé)把數(shù)字標(biāo)簽映射回人名識(shí)別結(jié)果輸出時(shí)用 name_map 轉(zhuǎn)回字符串。3.2 訓(xùn)練流程封裝一個(gè)類(lèi)搞定所有邏輯class EigenfaceRecognizer: def __init__(self, n_components25): self.n_components n_components self.mean_face None self.eigenfaces None self.labels None self.projections None self.name_map None def fit(self, faces, labels, name_mapNone): # faces: (N, d), labels: (N,) self.labels labels self.name_map name_map if name_map is not None else {i: str(i) for i in set(labels)} self.mean_face np.mean(faces, axis0) centered faces - self.mean_face # 計(jì)算小協(xié)方差矩陣的特征分解 cov_small np.dot(centered, centered.T) eigvals, eigvecs_small np.linalg.eigh(cov_small) # 按特征值降序 idx np.argsort(eigvals)[::-1] eigvecs_small eigvecs_small[:, idx] # 映射回原空間并歸一化 eigenfaces np.dot(centered.T, eigvecs_small) norms np.linalg.norm(eigenfaces, axis0) eigenfaces eigenfaces / norms # 取前 n_components 個(gè) self.eigenfaces eigenfaces[:, :self.n_components] # 把所有訓(xùn)練樣本投影到特征臉空間 self.projections np.dot(centered, self.eigenfaces) return self def predict(self, face): face: (d,) 或 (1, d) 的展平人臉向量 返回 (label, distance) face np.asarray(face).reshape(1, -1).astype(np.float32) centered face - self.mean_face # 投影到特征臉空間 projection np.dot(centered, self.eigenfaces) # (1, n_components) # 計(jì)算與所有訓(xùn)練樣本投影的歐氏距離 distances np.linalg.norm(self.projections - projection, axis1) best_idx np.argmin(distances) return self.labels[best_idx], distances[best_idx]這個(gè)類(lèi)封裝的思路是fit 里做完 PCA 并緩存所有訓(xùn)練樣本在特征臉空間的坐標(biāo)predict 階段只需要做兩次矩陣乘法和一次距離排序——推理速度極快單張 112×92 的圖在普通 CPU 上跑一次小于 1 毫秒。距離度量選歐氏距離這是最常見(jiàn)做法也可以用余弦相似度但歐氏距離在特征臉空間里物理意義更直覺(jué)。注意 predict 返回的是一個(gè)元組 (label, distance)distance 可以當(dāng)作置信度參考——距離閾值判斷在后面講。3.3 完整訓(xùn)練與識(shí)別主腳本from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 加載數(shù)據(jù) faces, labels, name_map load_dataset(./att_faces) # ORL 數(shù)據(jù)集 # 劃分訓(xùn)練集和測(cè)試集每個(gè)人取前 8 張訓(xùn)練后 2 張測(cè)試 # 注意不能隨機(jī)打亂后直接 split會(huì)造成同一個(gè)人同時(shí)出現(xiàn)在訓(xùn)練和測(cè)試?yán)?X_train, X_test, y_train, y_test [], [], [], [] for person_id in set(labels): idxs np.where(labels person_id)[0] # 按原始順序切分保證前 80% 訓(xùn)練 20% 測(cè)試 split int(len(idxs) * 0.8) X_train.extend(faces[idxs[:split]]) y_train.extend(labels[idxs[:split]]) X_test.extend(faces[idxs[split:]]) y_test.extend(labels[idxs[split:]]) X_train np.array(X_train) X_test np.array(X_test) y_train np.array(y_train) y_test np.array(y_test) # 訓(xùn)練 Eigenface 模型 model EigenfaceRecognizer(n_components30) model.fit(X_train, y_train, name_map) # 測(cè)試識(shí)別 correct 0 for i in range(len(X_test)): pred_label, dist model.predict(X_test[i]) if pred_label y_test[i]: correct 1 print(f識(shí)別準(zhǔn)確率: {correct / len(X_test) * 100:.2f}%) print(classification_report(y_test, [model.predict(x)[0] for x in X_test]))這里訓(xùn)練/測(cè)試劃分特意用了按人切分而不是全局隨機(jī)切分這是一個(gè)關(guān)鍵點(diǎn)如果你的測(cè)試集里混入了訓(xùn)練時(shí)見(jiàn)過(guò)的人準(zhǔn)確率會(huì)虛高。按人切分的邏輯是每個(gè)人至少保留 2 張作為測(cè)試訓(xùn)練和測(cè)試的身份完全隔離。ORL 數(shù)據(jù)集每人 10 張8 張訓(xùn)練 2 張測(cè)試n_components30 時(shí)準(zhǔn)確率通常在 95% 左右能跑到這個(gè)數(shù)字說(shuō)明管線(xiàn)沒(méi)毛病。4. 參數(shù)怎么調(diào)n_components、距離閾值和數(shù)據(jù)集規(guī)模的影響4.1 n_components 與準(zhǔn)確率的關(guān)系曲線(xiàn)n_components 是 Eigenface 最敏感的超參數(shù)。設(shè)太小特征空間不能充分表達(dá)人臉差異設(shè)太大會(huì)把噪聲和光照變化也當(dāng)作區(qū)分特征且尾部特征臉對(duì)應(yīng)的小特征值方向含有大量噪聲。最穩(wěn)妥的做法是做一個(gè) k 值掃描import matplotlib.pyplot as plt k_values [5, 10, 15, 20, 25, 30, 40, 50, 60, 80] accuracies [] for k in k_values: model EigenfaceRecognizer(n_componentsk) model.fit(X_train, y_train, name_map) acc np.mean([model.predict(x)[0] y_test[i] for i, x in enumerate(X_test)]) accuracies.append(acc) print(fk{k}, 準(zhǔn)確率{acc*100:.2f}%) # 畫(huà)曲線(xiàn)圖 plt.plot(k_values, accuracies, markero) plt.xlabel(n_components) plt.ylabel(Accuracy) plt.title(Accuracy vs Eigenface Components) plt.show()這段代碼跑出來(lái)通常是一條先快速上升、后平緩、最后輕微下降的曲線(xiàn)。ORL 數(shù)據(jù)集上 k25 到 k40 之間是平臺(tái)期超過(guò) 50 后準(zhǔn)確率不升反降。我在實(shí)際項(xiàng)目里一般這么定如果訓(xùn)練樣本總數(shù)是 Nn_components 取 N/3 到 N/2 之間然后在這個(gè)范圍內(nèi)做一次掃描取最優(yōu)。數(shù)據(jù)量小時(shí)比如每人只有 3 張k 取 10 就夠數(shù)據(jù)量大且光照復(fù)雜時(shí)k 取 60100 能捕捉更多變化但也更依賴(lài)訓(xùn)練數(shù)據(jù)的代表性。4.2 距離閾值識(shí)別和拒識(shí)之間的權(quán)衡識(shí)別不只是找到最近鄰還要決定“這個(gè)人到底在不在數(shù)據(jù)庫(kù)里”。如果任意測(cè)試臉都強(qiáng)行歸到某個(gè)訓(xùn)練樣本上陌生人也會(huì)被分配一個(gè)身份。解決辦法是設(shè)定距離上限THRESHOLD 2800 # 歐氏距離閾值需要根據(jù)訓(xùn)練集統(tǒng)計(jì)得出 def recognize_with_threshold(model, face, threshold2800): label, distance model.predict(face) if distance threshold: return label, distance, True # 識(shí)別成功 else: return None, distance, False # 拒絕識(shí)別 # 統(tǒng)計(jì)訓(xùn)練集自身的距離分布來(lái)確定閾值 train_distances [] for i in range(len(X_train)): _, d model.predict(X_train[i]) train_distances.append(d) train_distances np.array(train_distances) print(f訓(xùn)練集內(nèi)距離: 均值{train_distances.mean():.1f}, fstd{train_distances.std():.1f}, f99分位{np.percentile(train_distances, 99):.1f})閾值選多少屬于“血淚經(jīng)驗(yàn)”。我一般用訓(xùn)練集內(nèi)所有樣本到自身類(lèi)中心的距離統(tǒng)計(jì)取 p99 再乘 1.21.5 倍作為初始閾值然后在驗(yàn)證集上做一次 ROC 曲線(xiàn)微調(diào)。閾值太嚴(yán)格會(huì)把帶眼鏡、光線(xiàn)變化的真人也拒掉太寬泛會(huì)讓陌生人混進(jìn)來(lái)。注意 Eigenface 的距離分布受圖像尺寸影響極大112×92 下 p99 大概兩三千改到 64×64 距離直接縮水一半所以換圖像尺寸后必須重新統(tǒng)計(jì)閾值不要沿用舊經(jīng)驗(yàn)值。4.3 數(shù)據(jù)集規(guī)模與每人樣本數(shù)的下限Eigenface 本質(zhì)是一個(gè)線(xiàn)性模型隱含假設(shè)是“同一人的不同人臉圖像近似落在同一個(gè)低維子空間附近”。這個(gè)假設(shè)在每人樣本太少時(shí)根本不成立——如果每人只有 1 張訓(xùn)練圖PCA 學(xué)習(xí)不到類(lèi)內(nèi)變化光照一變就翻車(chē)。我的經(jīng)驗(yàn)是每人至少 35 張不同光照/表情的樣本總數(shù)最好在 100 張以上。當(dāng)你只能拿到每人一張圖時(shí)有兩個(gè)補(bǔ)救方向一是做數(shù)據(jù)增強(qiáng)水平翻轉(zhuǎn)、小幅旋轉(zhuǎn)、亮度抖動(dòng)擴(kuò)充樣本二是改用基于特征點(diǎn)對(duì)齊的方法預(yù)處理把眼睛、嘴巴對(duì)齊到固定位置減小類(lèi)內(nèi)差異。對(duì)齊這一步比換個(gè)降維算法更有效能直接影響識(shí)別率五到十個(gè)點(diǎn)。5. Eigenface 實(shí)戰(zhàn)避坑這五個(gè)問(wèn)題我全踩過(guò)5.1 現(xiàn)象預(yù)測(cè)準(zhǔn)確率極低甚至只有 20%原因八成是數(shù)據(jù)沒(méi)有對(duì)齊。人臉圖像中眼睛的位置如果每張都不同PCA 會(huì)把“眼睛偏移”當(dāng)作最主要的區(qū)分特征而真正的身份差異反而被當(dāng)作噪聲丟掉了。解決在加載數(shù)據(jù)后做一次簡(jiǎn)單的人眼對(duì)齊用 OpenCV 的級(jí)聯(lián)分類(lèi)器檢測(cè)雙眼坐標(biāo)仿射變換把雙眼放到固定位置后統(tǒng)一 resize。這個(gè)預(yù)處理步驟比調(diào) n_components 提升大得多。檢測(cè)雙眼和仿射變換的核心代碼如下def align_face(img, left_eye, right_eye, output_size(112, 92)): # 計(jì)算旋轉(zhuǎn)角度和縮放 dx right_eye[0] - left_eye[0] dy right_eye[1] - left_eye[1] angle np.degrees(np.arctan2(dy, dx)) # 兩眼連線(xiàn)中心 center ((left_eye[0] right_eye[0]) // 2, (left_eye[1] right_eye[1]) // 2) eyes_distance np.sqrt(dx**2 dy**2) # 設(shè)定目標(biāo)兩眼距離統(tǒng)一縮放到固定尺寸 output_eyes_distance output_size[0] * 0.5 scale output_eyes_distance / eyes_distance M cv2.getRotationMatrix2D(center, angle, scale) aligned cv2.warpAffine(img, M, output_size, flagscv2.INTER_CUBIC) return aligned這句 M cv2.getRotationMatrix2D(center, angle, scale) 把旋轉(zhuǎn)和縮放合成在一個(gè)矩陣?yán)锉确謩e執(zhí)行兩次變換少一次插值誤差。eyes_distance 對(duì)這些浮點(diǎn)值敏感注意 dx 和 dy 已經(jīng)從相同的坐標(biāo)系中取得。5.2 現(xiàn)象n_components 取大了訓(xùn)練樣本的投影矩陣是奇異矩陣LinAlgError原因當(dāng) n_components 大于訓(xùn)練樣本數(shù) N 時(shí)協(xié)方差矩陣 XX? 是 N×N 的最多只有 N-1 個(gè)非零特征值因?yàn)槿ゾ岛髽颖揪€(xiàn)性相關(guān)你不可能取到 N1 個(gè)獨(dú)立特征向量。解決n_components 必須小于或等于 N-1。我在 fit 函數(shù)里加了一個(gè)保護(hù)n_components min(self.n_components, centered.shape[0] - 1) self.n_components max(n_components, 1)加了這行就算有人在 n_components 傳了 500 也不會(huì)崩。另一個(gè)隱含風(fēng)險(xiǎn)是如果有些人臉過(guò)于相似同一人的多張正臉特征值可能接近 0歸一化時(shí)除以零。穩(wěn)妥做法是設(shè)置一個(gè)極小值 epsilon 替代碼5.3 現(xiàn)象測(cè)試集準(zhǔn)確率高但實(shí)際攝像頭輸入識(shí)別失敗原因測(cè)試集和數(shù)據(jù)集的拍攝條件一致但攝像頭實(shí)時(shí)畫(huà)面有背景噪聲、不同亮度、臉部位置偏移。Eigenface 對(duì)光照極敏感因?yàn)?PCA 的前幾個(gè)主方向往往就是光照變化方向。解決實(shí)時(shí)識(shí)別前做直方圖均衡化和光照歸一化把圖像變換成標(biāo)準(zhǔn)光照下的形式def normalize_illumination(img): # 方法1: CLAHE 限制對(duì)比度的自適應(yīng)直方圖均衡化 clahe cv2.createCLAHE(clipLimit2.0, tileGridSize(8, 8)) img_norm clahe.apply(img) # 方法2: 減去高斯模糊后的低頻分量提取高頻細(xì)節(jié) blurred cv2.GaussianBlur(img_norm, (31, 31), 0) img_highfreq cv2.subtract(img_norm, blurred) return img_highfreq我做了對(duì)比實(shí)驗(yàn)不做光照歸一化時(shí)攝像頭實(shí)測(cè)準(zhǔn)確率大概 70%做了 CLAHE 高頻增強(qiáng)同一模型跳到 85% 以上。但要注意訓(xùn)練時(shí)也應(yīng)用相同的預(yù)處理訓(xùn)練和推理必須走同一條預(yù)處理管線(xiàn)否則特征分布直接錯(cuò)位。5.4 現(xiàn)象程序跑起來(lái)內(nèi)存耗盡進(jìn)程被殺d 維特征矩陣太大在圖像一維展開(kāi)后d 可能有幾萬(wàn)甚至幾十萬(wàn)180×180 的灰度圖就是 32400 維。如果直接構(gòu)建 d×d 協(xié)方差矩陣就需要約 8GB 內(nèi)存。解決方式就是本章前面講的轉(zhuǎn)置技巧只構(gòu)建 N×N 矩陣。另一個(gè)變體是使用增量 PCAIncrementalPCA它允許把數(shù)據(jù)分塊送入適合內(nèi)存敏感的嵌入式環(huán)境from sklearn.decomposition import IncrementalPCA def train_incremental(faces, n_components30, batch_size10): ipca IncrementalPCA(n_componentsn_components, batch_sizebatch_size) ipca.partial_fit(faces) # 分塊擬合 return ipca # 用 sklearn 的 IncrementalPCA 配合 predict transformed_train ipca.transform(faces)但注意 IncrementalPCA 在每次 partial_fit 時(shí)內(nèi)部會(huì)維護(hù)一個(gè)協(xié)方差統(tǒng)計(jì)量批次太小時(shí)數(shù)值波動(dòng)大batch_size 建議取 max(10, n_components*2)。5.5 現(xiàn)象識(shí)別時(shí)陌生人總是被錯(cuò)誤分類(lèi)為庫(kù)中的某個(gè)人且距離很小原因訓(xùn)練集的類(lèi)內(nèi)距離比類(lèi)間距離還大數(shù)據(jù)庫(kù)人太少或同一個(gè)人樣本差異太大導(dǎo)致陌生人的投影距離根本得不到一個(gè)合理的分布。解決不只設(shè)一個(gè)全局距離閾值而是每個(gè)身份單獨(dú)統(tǒng)計(jì)距離分布。某個(gè)人的訓(xùn)練樣本自身差異很大比如有戴眼鏡/不戴眼鏡他的閾值就該比其他人高def per_person_thresholds(model, X_train, y_train, scale1.5): thresholds {} for person in set(y_train): idxs np.where(y_train person)[0] dists [] for i in idxs: _, d model.predict(X_train[i]) dists.append(d) # 每個(gè)身份單獨(dú)閾值: 均值 scale * 標(biāo)準(zhǔn)差 thresholds[person] np.mean(dists) scale * np.std(dists) return thresholds識(shí)別時(shí)先找最近鄰再用該身份的專(zhuān)屬閾值拒識(shí)。這樣至少能讓對(duì)光照敏感的特定個(gè)體不再被陌生人“充當(dāng)”。另外增加訓(xùn)練人數(shù)也能整體改善子空間的區(qū)分度理想情況下訓(xùn)練庫(kù)至少在 20 人以上。6. 進(jìn)階從靜態(tài)圖片到實(shí)時(shí)視頻流以及如何驗(yàn)證模型真的可靠6.1 用 OpenCV 跑實(shí)時(shí)攝像頭識(shí)別管線(xiàn)搭建與性能調(diào)優(yōu)從圖片識(shí)別升級(jí)到視頻流識(shí)別代碼只差一個(gè)視頻循環(huán)但有幾個(gè)細(xì)節(jié)直接影響體驗(yàn)。攝像頭畫(huà)面里不會(huì)只有一個(gè)端正的正面臉你需要先做人臉檢測(cè)框截取人臉區(qū)域再送入 Eigenface 模型。我常用 OpenCV 的 DNN 人臉檢測(cè)器比 Haar 級(jí)聯(lián)更穩(wěn)import cv2 import numpy as np # 加載 Eigenface 模型 model EigenfaceRecognizer(n_components30) model.fit(X_train, y_train, name_map) # 加載人臉檢測(cè)器OpenCV DNN 或 Haar face_cascade cv2.CascadeClassifier( cv2.data.haarcascades haarcascade_frontalface_default.xml) cap cv2.VideoCapture(0) if not cap.isOpened(): raise IOError(無(wú)法打開(kāi)攝像頭) frame_skip 0 while True: ret, frame cap.read() if not ret: break # 每隔兩幀做一次檢測(cè)降低 CPU 占用 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces face_cascade.detectMultiScale(gray, scaleFactor1.1, minNeighbors5, minSize(60, 60)) for (x, y, w, h) in faces: # 擴(kuò)展檢測(cè)框避免裁到額頭邊緣 margin int(0.1 * w) x0, y0 max(0, x - margin), max(0, y - margin) x1, y1 min(frame.shape[1], x w margin), \ min(frame.shape[0], y h margin) face_roi gray[y0:y1, x0:x1] face_roi cv2.resize(face_roi, IMG_SIZE).flatten().astype(np.float32) # 預(yù)處理與識(shí)別 face_roi normalize_illumination(face_roi.reshape(IMG_SIZE)) face_roi face_roi.flatten() label, distance model.predict(face_roi) name model.name_map.get(label, unknown) # 根據(jù)閾值判斷是否顯示名字 if distance THRESHOLD: display_name f{name} ({distance:.0f}) else: display_name unknown cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2) cv2.putText(frame, display_name, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) cv2.imshow(Eigenface Recognition, frame) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()這個(gè)循環(huán)里我加了 frame_skip 的影影代碼邏輯思路但實(shí)際在代碼里是直接在 detectMultiScale 上控制每幀都檢測(cè)——如果你 CPU 吃緊可以改成只在偶數(shù)幀做檢測(cè)并復(fù)用上一幀的 bbox。margin 擴(kuò)展是血淚經(jīng)驗(yàn)Haar 檢測(cè)框偏緊直接把框內(nèi)區(qū)域拿去 resize 會(huì)造成人臉被壓縮變形坐標(biāo)特征全被打亂。最后waitKey(1) 的 1ms 延遲控制視頻流幀率在識(shí)別循環(huán)里千萬(wàn)別加 sleep 或改為 waitKey(0)否則畫(huà)面會(huì)卡成幻燈片。6.2 驗(yàn)證可靠性ROC 曲線(xiàn)與誤識(shí)率測(cè)試在說(shuō)“我這個(gè)模型靠譜”之前要有一套量化的驗(yàn)證方法。最常用的是在一組已知身份 一組陌生人上做閾值掃描畫(huà)出 ROC 曲線(xiàn)找到等錯(cuò)誤率點(diǎn)EER這個(gè)點(diǎn)上的閾值就是最佳閾值。# 假設(shè) gallery 是已知身份測(cè)試集probe 是陌生人測(cè)試集 def compute_roc(model, known_faces, known_labels, unknown_faces, name_map): import numpy as np # 計(jì)算已知身份的距離分布 known_dists [] for f, l in zip(known_faces, known_labels): # 這里先用最近鄰距離 _, d model.predict(f) known_dists.append(d) # 計(jì)算陌生人的距離分布 unknown_dists [] for f in unknown_faces: _, d model.predict(f) unknown_dists.append(d) threshold_range np.linspace( min(known_dists unknown_dists), max(known_dists unknown_dists), 200) fpr_list, tpr_list [], [] for th in threshold_range: # 已知身份: 距離小于閾值則通過(guò) tpr np.mean([d th for d in known_dists]) # 陌生人: 距離小于閾值則被誤接受 fpr np.mean([d th for d in unknown_dists]) fpr_list.append(fpr) tpr_list.append(tpr) # EER: TPR 與 (1-FPR) 的交點(diǎn) return fpr_list, tpr_list這里關(guān)鍵要理解Eigenface 模型本身沒(méi)有“分類(lèi)器置信度”它只有距離。閾值的設(shè)定本質(zhì)是把距離映射成“接受/拒絕”。我在做門(mén)禁類(lèi)項(xiàng)目時(shí)會(huì)要求 FPR 小于 1% 時(shí)的 TPR 不低于 95%如果達(dá)不到要么增加訓(xùn)練樣本每人張數(shù)要么放棄 Eigenface 改用帶特征點(diǎn)對(duì)齊的 LBPH 或深度學(xué)習(xí)模型。很多人以為 Eigenface 能通吃所有場(chǎng)景實(shí)際上它的適用邊界很清晰同人樣本變化小、照度可控、角度正臉時(shí)它是性?xún)r(jià)比之王一旦場(chǎng)景不可控就別硬扛了。6.3 一些讓項(xiàng)目更好用的工程細(xì)節(jié)到最后給出三個(gè)能立刻落地的技巧。第一保存與加載模型用 NumPy 的 .npz 格式一次性壓縮存取比 pickle 更跨版本穩(wěn)定np.savez(eigenface_model.npz, mean_facemodel.mean_face, eigenfacesmodel.eigenfaces, labelsmodel.labels, projectionsmodel.projections, name_mapnp.array(list(model.name_map.items()), dtypeobject)) # 模型加載 data np.load(eigenface_model.npz, allow_pickleTrue) new_model EigenfaceRecognizer(n_componentsdata[eigenfaces].shape[1]) new_model.mean_face data[mean_face] new_model.eigenfaces data[eigenfaces] new_model.labels data[labels] new_model.projections data[projections]這樣重建的模型不再需要重新訓(xùn)練predict 完全可用部署時(shí)只需要一個(gè) npz 文件和 100 行 Python 代碼。第二做多輪隨機(jī)切分時(shí)固定隨機(jī)種子否則不同輪次的準(zhǔn)確率波動(dòng)會(huì)讓你誤以為模型有問(wèn)題。第三把訓(xùn)練輸出的特征臉可視化保存為圖片能一眼看出 PCA 學(xué)的是什么——如果前幾個(gè)特征臉是明顯的邊緣輪廓而不是光照梯度很可能預(yù)處理環(huán)節(jié)出了問(wèn)題。我一直要求自己在給 Eigenface 項(xiàng)目收尾時(shí)至少回答三個(gè)問(wèn)題數(shù)據(jù)庫(kù)里有沒(méi)有足夠大的身份差異測(cè)試場(chǎng)景的光照變化是否被預(yù)處理吸收了閾值是統(tǒng)計(jì)出來(lái)的還是拍腦袋定的這三個(gè)問(wèn)題想清楚了這個(gè) zip 里的代碼才能真正從“跑通 demo”變成“能交付的小系統(tǒng)”。這個(gè)方向值得投入的時(shí)間上限也就是一兩天——畢竟 Eigenface 作為經(jīng)典算法定位是理解原理、快速驗(yàn)證和低算力兜底而不是跟深度學(xué)習(xí)搶精度。希望這些把代碼一行行講透的筆記能幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
男女性扦B| 日韩精品国产精品五码一区二区| 99xav| 四虎影院成年人片| 欧美经典一区二区三区| 狠狠操使劲操| 亚洲九九视频| 98超碰日本| 荡小穴在线观看| 国产97视频免费观看| 欧美片第一页| 视频不卡中文字幕| 99热伊人| 秋霞 色色| 天堂av最新电影网| 久久99草| 精品久久艹| 欧美爆操91| 国产久久一区二区午夜| 丁香五月电影| 国外91| 久久综合18p| 国产亚洲色婷婷久久99精品91| 一区二区三区探花在线观看| 人人操人人爽人人操人人| 春色综合网| 国产精品另类一区大香蕉| 在线免费试看60秒| 男人网站婷婷| 爱妻综合网| 97久久免费| 男人天堂.AB| 无码又爽又硬又激情免费视频| 伊人久久大香线蕉无码| 亚洲欧美精品国产一区二区| 秋霞操逼片| 国色综合天| 抽插亚洲无码| 国产资源中文字幕在线| 神马久久久久久| 久久久无码视频| 97这里有精品| 精品人妻av区天天看片| 欧美精品二区视频在线| 成人无码在线视频网站| 成人 日本A片无码8888| 亚洲成人一区二区精品| 囯产操逼片| 伊人影院综合是一个与深夜成人在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久老女人| 久久久久九九九| 精品偷拍13p欧美dodk视频| 啊啊啊免费视频| 91性感在线| 国产传媒日韩| 高清成年美女黄网站免费大全 | 九九九午夜| 男人下部插入女人下部| 人人超碰在线观看黄| 欧美色图天堂网m| 密臀AV在线| 亚欧美综合网。| 国产精品丝袜久久亚洲不卡| 欧美色图片色哟哟| 亚洲影院无码在线| 国产剧情AV不卡在线观看| 国产亚洲禁久一区二区 | 亚洲欧美视| 亚洲中文sv| 国产老太乱伦一区| 婷婷在线播放| 97超碰色中文字幕| 亚洲情欲| 午夜精品视频777| 日韩美脚一区二区网站| 春色综合免费| 欧美精品23| 91中文在线| 精品久久久av无码免费| 日本护士高潮| 日韩资源网| 超碰人妻97| 无码137片内射在线影院| 黄色高清无码无码破解免费暗网| 欧美 综合| 高清不卡 中文 人妻| 欧亚日韩中文在线| 久久av成人无码免费| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 九九热AV| KK色在线影院| 婷婷五月天av| 国产乱码久久久久久| 亚洲激情视频| 草草影院在线视频| 久久风骚城市人| 久久综合国产精品国产| 91丝袜在线观看视频在线观看| 伊人96在线| 蜜乳AV免费观看| 精品人妻美妇91job| 国精品一区二区三| 超碰免费人妻人人| 97一区二区蜜臀| 国产精品久久久久9999小说| 97干在线| 精品人妻一区二区三区四区| 诱惑人妻欧美一区在线播放| 鸥美中出| 玖玖97综合 | 性爱免费视频成人| 97超碰逼| 欧美日韩日产免费网站看| 欧美亚洲综合色| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 久久大香蕉| 人伦四五区| 激情抓乳插进去啪啪啪日韩| 综合网亚| 欧美日韩性爱电影在线| 亚洲欧美天| 日韩在线观看字幕精品| 天天夜夜rb| 丁香五月天啪啪| 精品无人区麻豆乱码1区2区图片| 国产精品香蕉热久久新品| 国产熟女| 日本国产成人亚洲精品无码| 欧美成人精品一区二区男人蜜臀| 日韩欧美字幕亚洲一区二区| 欧洲大香蕉| 超碰人人超在线观看| 伊人玖玖网| 中文字幕乱碼在线| 成人线上超碰| 四虎影视永久在线观看精品免费网站 | 日韩无码黄色片| 天堂伊人久久| 久久久久9999| 一本色道无码DVD中文字幕| 日本一二区免费| 亚洲色欲天天天堂色欲网女| 少好三P| 天天日天天舔| 98人妻精品一区二区色欲| 台湾大香蕉99热| 成人性爱av.com| 人妻精品一区一区三区蜜桃91| 手机看片1025| 国产亚洲精品无码三区| 麻豆天天躁天天揉揉AV| 97免费免费视频网| 中文字幕在线24| 欧美A片中文字幕| 欧美91色| 乱理日韩中文| 在线无码操| 操熟女91| 蘋果手機免費看成人Av| 色综合天天| 中文字幕天堂在线| 国产夫妻性生活视频| 97天天爽| 日韩黄色成人性爱| 夜夜操美女| 精品熟妇视频一区二区| 中文字幕亚洲欧美在线不卡| 蜜乳av首页| 国产精品区在线12p| 亚州性色| 国产偷拍自拍在线视频| 国产在线激情| 激情视频图片| 欧洲大香蕉| 黄页18禁| 色色色综合| 亚洲色 国产 欧美 日韩| 五月婷亚洲精品天堂| 97人妻人人躁人人玩人人| 一区,二区,三区网站| 在线国产一区二区av| 日韩啊V| 日本视频在线观看污污污| 动漫av中文| 亚州色图欧美色图| 97中文字幕一区| www老逼91| 国产精品秘 福利姬在线观看| 欧美色图色综合| 啊啊啊轻点在线观看| 99re3这里只有精品| 99亚洲天堂| 欧美顶级黄色大片免费| 天天色天天干天天射| 色呦呦国产精品免费看| 精品熟女呻吟久久91| 久草老司机| 亚州色国| 天天综合网入口~91| 人人喜人人妻| 久久婷婷色综合一区二区三区| 男女激情黄色网址| 日韩亚洲中文字幕在线| 岛国1区2区3区在线观看| 国产CHASE男男GAYGA 毛多色婷婷| 日韩性爱小视频| 爱逼综合| 女人天堂av在线播放| 久久久久久久| 91亚洲色图| 蜜臀久久99精品久久久| 97超碰日韩| 中欧人妻丝袜中文字幕| 国产精品精品系列在线观看| 欧美精品69性爱| 一中国女人毛片水真多| 偷拍 欧美 日韩| 国产日韩精品suv| 国产乱子伦久久精品综合一区二区三| 午夜精品久久99蜜桃的功能章节| 女性91网站| 思思热在线视频免费| 欧美影院一区二区三区| 国内精品a| 男人天堂黄片| 婷婷五月天影院| 婷婷五月丁香五月| 97色在线观看| 日韩丝袜高跟制服在线观看| 加勒比性爱成人在线| 久久久青青草| 国产精品不卡一区二区三区av| 日韩精品字幕| 色色丁香| 亚洲 另类 丝袜 自拍 动漫| 清纯唯美综合亚洲| 性饥渴少妇av无码毛片| 99热国产| 蜜臀久久99精品久久久久久婷婷 | 久久系列| 手机在线A片| 亚洲少妇喷视频看| 欧洲亚洲人人爽爽视频| 亲子敌伦对白在线播放| 欧美精品日韩久久久九| 亚洲综合激情五月久久| 亚洲诱惑| 国产91 丝袜在线播放00-百度| 熟妇xxxxx性春色| 911粉嫩人妻| 伊人色综合超碰| chaopen97久久| 曰韩中文人妻视频| 久久99人妖视频国产| 久久人妻四季| 亚洲欧美国产精品久久久久久久| 久96热在线观看视频| 国产精品无码在线| 久久久18禁| 亚洲性高潮| 中文字幕精品日韩中文字幕| 精品久久在线区一区| 男人成人黄色视频在线观看免费下载| 超碰精品日韩欧美国产| 天天干,夜夜爽| 亚洲s色图| 天天影视色香欲综合网小说| 插入综合网| 男人的天堂日韩| 欧美 精品国产制服第一页| 91超级碰碰碰| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 综合网97| 2021久久国产综合精品青草| 日日黄色三级网站| 无码高清操逼网址| 伊人伊人LD| 精品欧美不卡在线播放| 精品少妇一区二区三区免费观看| 九t超碰| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日韩欧美女优电影| 欧美97av| 久久人人爽人人爽人人片Ⅴ| 后入福利| 久久思思热| 久久久成人免费av电影| 亚欧无码在线| 亚洲熟女一区二区| 超碰免费人人| 青青青青青手机视频| 在线观看中文av字幕| 亚洲第91页| 91性高朝久久久久久久久| 精品人人| 久久精品国产AV一区二区三区| 免費人妻夜夜爽天天爽爽一区| 日韩性爱一级片| 你草精品在线视频| 国产家庭乱伦网址| 男人天堂毛片| 67914亚洲精品| 欧美97超碰| 美女露胸露奶头| 高清国产无码av| 亚洲激情天堂网| 久久久久久久国产a∨| 久久久久久久久女黄| 亚洲操操| 欧美激情视频在线一区| 日日97| 69人妻精品一区二区绯色| 丝袜AV一区二区三区| 国色天香av| 国产午夜福利电影免费在线观看| 校园春色宗合网| 亚欧高清v| 亚洲综合97| 人人超碰在线观看黄| 亚洲精品xxx| 欧美日韩精品青青| 欧亚乱色熟一区二区三四区| 国产女乱淫真高清免费视频| 東南亚性呦成人伦理资源在线视频| 爱爱动态120秒| 日韩强奸av| 无码九九九九| 美女淫穴| 久热9| 无码高清少妇久久| 97se亚洲| 91处女视频在线观看| 精品人妻美妇91job| 神马麻豆福利院| 蜜奶av| 97最新在线播放视频| 人人搞人人插人人操| 天天射夜夜| 五月天婷婷基地| 欧美亚洲素人制服精品| 熟女人妻一区二区三区| 国产性爱欧美性爱在线| 九久久九精品视频| 99色在线视频| 久久婷婷综合国际产色怕| 国产精品com| 亚洲国产福利视频| 97超碰巨乳| 麻豆久久视频在线地址| 在线播放中文字幕| 日韩 欧美 另类 人妻| 97国产人人| 91女日逼| 亚洲双插| 国产97色在线 | 亚洲| 成人热久久精品| 婷婷色一区| 99色在线观看| 久操不卡视频| 国产成人网| 久久AV无码网址| 欧亚性爱在线视频| 日韩免费簧片| 国产精品内射婷婷一级二| 91亚洲网站| 天天爽入口| 精品无码产区一区二| 诱惑人妻欧美一区在线播放| 亚洲精品丝袜| 亚洲日韩av一区二区三区百合| 午夜一区| 综合婷婷| 亚洲色吧网| 久久综合五月天| 99热婷婷| 91丝袜美女国产| 久久激情视频| 男人亚洲91首页在线| 丁香五月激情综合| 久都青青视频| 中美日韩毛片| 色制服丝袜夫妻av一区| av东京热男人的天堂| 传媒免费一区二区三区| 色www精品视频在线观看| 亚洲精品国产av天美传媒| 好好的日:com久久九九| 91美女国产在线| 精品9999| 中文字幕第二页| 久草看看看| 丰满人妻一区二区三区免费 | 天天干天天操天天操夜夜操天天操| 欧美AB在线| 91精品国产91久久青草| 99re热有精品视频国产| 天天色,天天干,天天干| 26uuu欧美| 欧洲综合视频| 欧美在线色| 亚洲熟女一区二区| 成 人 A V免费视频在线观看| 亚洲**2021在线观看| 日本色色视频网站| 婷婷AV一区二区三区| 五月天精品| 这里是精品| 欧美亚洲一级在线观看| 中国女人内射6XXXXX| av天堂5| 大香蕉碰碰| 草伊人高潮喷水超碰| 欧美色自拍| 日韩图色| 国产精品久久99日日| 婷婷久久久| 女人一区| 99re视频这里只有精品| 日逼逼免费看| 男人兔费天堂| 夜夜嗨免费视频| 97欧美| 青青操综合网| 久草精品国产蜜臀| 蜜臀99久久国产| 26uuu欧美日韩| 五月天激情网站| 色眯眯av| 亚洲密乳AV| www.色婷婷.com| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 麻豆性爱视频在线播放| 亚洲精品国产拍免费91在线| 国产日韩区| 精品精品精品| 91N综合网在线| 翔田千里爆乳巨臀无码| 婷婷五月天成人网| 欧美日韩精品青青| 国产极品精品美女视频| 东北女人的毛片| 91老司机视频| 操一区| 狠狠爱AV| 精品人妻av在线播放| 九九视品黄色| 亚洲精品九九九| 国模久久在线| 婷婷av在线中文字幕| 日韩成人电影AV| 天欧美在线| 综合 欧美 亚洲 日本| 天天操女人| 久久女人| 欧美极品女人的天堂| 欧美丝袜亚洲| 亚洲色综合| 久草色在线观看| 一区二区三区四区免费视频| 9999亚洲精品| 手机在线视频国内精品| 久久人妇| 乱伦3P视频| 综合色久欲| A片 AV一级在线播放观看免费| 日本最新免费韩国1区2区视频播放| 欧美欧美啪啪视频| 天天综合有色网| 超碰免费人妻人人| 九九九九九九视频| 激情国产乱伦Av| 日韩中文字幕宗合在线| 日韩欧美俄罗斯A片| 精品中文一区二区| 激情五月天丁香社区| 色九色久| 五月婷婷综合网| 色约约一区=区三区| 激情五月婷| 97色碰| 久久免费看高潮毛片韩国| 一本色道综合久久欧美| 爱爱久久| 99自拍视频| 日韩福利电影网| 国产女同性恋视频| 一区二区三区激情在线观看| 亚洲动态色图| 天天摸天天碰天天添青青| 久久久久久电影| 另类成人首页一区| 国产精品69久久久久久久| 免费人成?大片在线播放| 久久九九97| 国内黄色精品| 日韩欧美亚洲一区二区三区影院| 国产成人精品网站| 久久久久久91香蕉国产| 亚洲欧美国产其他二区| 精品蜜乳AV免费观看| 色欲色香天天天综合网www-亚洲综合国| 大香蕉久| 五月亭亭六月丁香| 欧美成人国产精品| 美国美女AV在线| 手机在线中文字幕国产| 一区二区视频在看| 夜夜操中文字幕| 国产精品一二三区福利| 国产宅男宅女在线观看| 欧美日韩中文字幕人妻| 蜜桃久久精品一区二区三区| 日韩啪啪啪啪啪| 日韩激情毛片一级久久久| 色哟哟av| 秋霞鲁丝午夜无码一区二区三| 99热精品在线观看| 日韩精品 视频一区二区| 九九亚洲| 9精品久久久久| 美女毛片999| 欧美色图天堂在线| 8050无码八戒| 家庭乱伦性爱av| 懂色Av| 中文字幕视频在线观看| 日本性一区| 国模不卡一本二本三电影| 91碰碰| 婷婷影院入口| 尤物黄色在线观看网站| 搡老熟女免费视频| 亚洲 暴爽 AV人人爽日日碰| 97超碰超| 精品免费囯产一区二区三区 | 黄色大香焦1级‘′‘| 精品一级毛片在线观看| 一区二区影视| 欧美草草高清日韩视频| 中文字幕av片| 亚洲另类色综合网站| 伦理弟一页| 成人综合视频久久| 久久嫩草国产成人一区| 久久久久密| www.四虎在线| 射丝袜高跟鞋99| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 中国AV美女| 国产午夜在线观看| 亚洲欧美日韩制服另类| 天美91| 天天色图| 91被操| 久久午夜鲁丝片| 国产成久久综合片| 欧美日韩亚洲一区二区在线观看| 欧美1区二区三区公司| 以及麻豆国产入口在线观看免费| 色综合一本| 欧美人与动性人交a| 国内亚洲高清无码| 九九精品无码专区免费| 韩国一级AAA| 亚洲1区2区三区高清中文字幕| 久久黄色性爱视频| 国产高清无码一区二区三区四区皇冠| 99久久99九九99九九九| 久久婷婷五月天| 九九热九九热| 你草精品在线视频| 久久妇| 亚洲中文字幕av | 亚洲啪啪性视频| 91精品久久久久久77777| 120分钟婬片免费看| 国产精品一区人妻精品阁在线| 国产精品久久久视频| 操b网站亚洲无码| 91亚洲丝袜| 91亚洲人| www.亚洲成人一区| 日本网色| 一区二区首页| 久久久熟女一区| 日韩综合色图| 青青久久手机线视频| 丁香五月天堂| 97综合国产精品高潮久久| 中文字幕伊人| 天美传媒婬乱| 亚洲国产麻豆一区二区三区| 天美精品av| 性交一区二区在线播放| 91成人无码| 成人麻豆av电影网站| 97福利视频| 超碰天天操你比| 久久久久久久| 一牛影视成人片免费| 久久国产三区| 亚洲。天堂。日本在线观看| 亚洲男人天堂网| 69精品久久久久中文字幕| 十八禁网站在线| 亚洲第一页综合在线| 午夜福利一区二区影院| 超碰在线91| 天天草AV| 国产强奸乱伦xd| 裸体美女国产免费久久久网站| 粉嫩久久久久| 亚洲欧美一区二区网址| 99精品视频在线观看| 夜夜 中文视频rt| 91av熟女人妻| 久久av网| 开心五月深爱五月| 久操热线| 爱射综合| 青青草白白色| 国产综合日韩伦理| 超碰av人人人| 免费视频观看60秒| 色噜噜人妻丝袜a∨先锋影| 天堂日本亚洲欧美| 日本精品五区| 人妻少妇蜜桃视频欧美一区| 啊啊啊骚| 亚洲国产激情国产av| 青操影院| 曰韩成人免费视频| 九九九九九九免费视频| 亚洲欧美在线观看免费| 97 九色| 麻豆视频国产一区二区| 欧中日成人免费影视| 97在线视频免费观看| 五月丁香婷婷色| 97中文综合| 狠狠操综合| 超碰欧美COM| 97av在线视频| 91 丝袜在线播放| 中文一区二区婷婷视频| 免费精品无码一级毛片牛牛影视 | 色五月av| 超碰地址久久| 青青草密桃在线播放| 亚洲欧美首页| 亚洲免费精品一区| 自拍偷拍国产欧美日韩韩| 9超碰免费| 一级性爱啪啪视频| 北野未奈加勒比av| 91free福利| 色噜噜国产精品视频一区二区| 99热这里只有精| 日本精品一区二区三区四区的功能| 嗯嗯嗯啊啊啊在线免费观看| 韩日色费| 亚洲资源网| 久9视频| 精品91日日夜夜超清资源| 午夜精品99久久久久传媒| 亚州熟女乱伦| 大香蕉色欲AV| 色婷婷丁香五月| 欧美人黑A片无码免视费| 91中文精品日韩欧美在线 | 在线电影亚洲色图| 亚州色图第三区| 超碰精品日韩欧美国产| 久久久专区| 开心五月婷婷激情| 亚洲天堂在线怕怕视频 | 欧美性巨大╳╳╳╳╳高跟鞋| 青青操日韩| 67914在线精品观看| 黄片com.| 亚州综合色| 老女人碰碰在线碰碰视频| 亚洲欧美国产日本一区二区三区| 91美女在线观看| B049AV在线播放| 99在线免费视频| 成人免费看吃奶视频网站| KK色在线影院| 欧美久久久15P| www久| 欧 美 自 拍 偷 拍| 啊啊啊水好多| 色超碰综合| 日本高清电影欧美色图| 岛国片国产成人亚洲播放| 夜夜爽夜夜操| 亚洲色图第一页| 啊啊啊好湿久久| 9色在线| 欧美操逼熟女| 丝袜人妻av一区二区| 日韩青久久| 狠狠夜色午夜久久综合在线| 亚洲男人天堂Av| 在线中文字幕极品av| 精品免费视频国产一区| 九七超碰人人乐| 激情五月天校园春色网| n1038 一二三区| 丁香五月激情综合| 国产美女高潮叫床视频| 欧美一区二区三区四区综合| 青草综合| 久草免费在线视频| 超碰在线综合97| 久久伊人青青草| 91美女在线精品视频| 久99热| 在线观看黄色电话| 欧美另类综合久久| 国内毛片无遮挡国产| 97爱爱爱| 国产女人视频三四五区| 97伊人超碰| 毛片99-全集电影手机免费观看完整-B029AV | 免费男人的天堂| 久久久九精品| 久九9精品| 亚洲男人天堂2013| 高清肉丝中文无码| 天操老女人| 人妻酒店出差被中出免费在线播放| 青青操97| 91 丝袜在线| 欧美 传媒 麻豆 日韩 偷拍| 国产天天骚| 午夜成人福利影视| 78久久久| 超碰人妻中文在线| 欧美国产成人在线| 亚洲欧美日韩国产丝袜自拍中文| 后入式在线免费观看60秒| 黄呦呦在线| 男人精品天堂一区| 91精品久久久久久77777| 国产第11页| 国产少妇内射| 综合亚洲欧美| 5月婷婷6月六月丁香| www.av在线观看| 色婷婷电影| 青青国产精品在线| 欧美亚洲丝袜美女电影| 天天舔九色婷婷| 久久九操在线观看| 啊啊啊男女| 91 丝袜在线播放| 日韩 国产 欧美自拍| 视频黄色国产一级| 乱伦系列一区二区| 色综合91| 97天天弄| 久久精品操| 私人尤物在线精品不卡| 午夜视频好爽啊| 精品-91人妻子系列| 黄色AV影视| 亚洲自拍欧美国产首页网曝| 夜夜夜夜爽| 欧亚日韩中文在线| 亚洲第一免费视频| 欧美色色色| 粉嫩国产精品久久久| 99热日| 色汉综合| 亚洲日韩精品一区视频在线| www.夜夜| 色在线69堂| 91啪啪| 日本不卡高清视频| 九九久久九九久久| 嗯,啊。舔我逼| 射久久| 午夜偷拍久久熟女| 天天干天天操天天拍| 丝袜亚洲91| 精品九九九九九| 大色综合网| 无码一区二区三区四区五区六区七区八区九区十区视频 | 六月激情婷婷| 超碰精品| 欧美黄业| 青草青草久热| 婷婷色香| 超碰97 线线 在现| 国产三区免费在线观看| 欧美熟妇精品黑人巨大一二三区| 青青草一区二区三区四| 性饥渴少妇av无码毛片| 久热无码| 国产精品毛片| 啪啪啪东京| 亚洲无套久久嗯嗯| 日日97| 亚洲AV无码黄色强奸| 日韩天堂av电影在线观看| 91无码精品| 亚洲精品国产精品乱码不99| 精品亚洲俞拍视频一区| 超碰免费97| 久久人妻办公室视频| 综合天天。| 91精品久久久久五月天精品| 国产欧美一区二区| 天天综合欧美| 五月色丁香| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 一级黄色牲爱A级片| 白 大 人妻 区 在线| 十八禁啪啪视频| 精品妇女一区二区三区| henhen91| 国产成人网址| 国产精品丝袜在线| 一块操欧美性爱| 欧美黑人168页欧美黑人167| 国产AV毛片| 激情人妻另类| 五十路三级片| 亚洲偷91色| 中文字幕亚韩| 亚州精品人妻一二三区| 日韩成人性爱AV| 少妇人妻激情四射| 日韩A优精品在线观看| 久草精品视频| 日本高清一区二区在线| 久久网亚洲| 亚洲超碰在线| 精品国产乱子伦一区二区三区,精品一| 欧美疯狂做爰xxxx| 亚洲AV色图| 中文字幕五区| 日韩97| 久久欧洲| 韩国成人精品久久久免费看| 久久久精品一区二区| 日日日大屁股骚女人精品| 亚洲?V无码专区在线电影| 粉嫩AV一区夜夜嗨| 欧美亚洲日本视频久久久 | AV九九| 精品九九九| 诱惑人妻欧美一区在线播放| 26uuu国产日韩综合在线观看| 任你干在线视频| 婷婷丁香六月| yw尤物av无码点击进入麻豆| 四虎视频在线观看| 大香蕉一线视频| 少妇的嫩逼图片| 亚洲AV免费在线观看| 天天插夜夜操| 91黄射| 欧美中文字幕男人天堂久久精品| 亚洲男人久久综合天堂| 中文字幕欧美日本乱码一线二线| 婷婷丁香五月激情啪啪| 测评在线观看AV| 久久人妻少妇| 综合 青草 伊久久 影院 综合| 欧美色偷拍| 影音先锋视频在线| 麻豆天美在线| 亚洲综合888| 欧美日韩岛国大片在线观看| 欧美亚洲91| 欧美精品三区| 骚货| 亚洲成人美女无吗| 翔田千里AV无码秘 三区| 一二三四视频在线社区中文字幕| www.婷婷五月天| 国产性爱在线视频一区二区| 精品九区| 99re6国产精品99re| 国产精品一区二区在钱播放| 一区二区三区 日韩欧美| 中文字幕熟女人妻丝袜| 婷婷九月国产| 大香蕉 222| 激情四射五月天| se01国产在线视频| 日本综合色图| 久久女女| 热热热热日日漂亮永久永久国产日| 在线看免费无码AV天堂的| 欧美高清无码免费视频高清版| 97精品网站| 久偷拍| 国产最新AV| 爱做久久久久久| 久久综合国产精品国产| 极品白嫩美少妇在地板上位骑射淫水泛滥| 丰满丝袜少妇AV| 一区二区 日韩 欧美 国产 传媒| 91中文在线| 国产黄色 A 片免费看| 精品国产av一区二区三区四区入口| 欧美综合亚洲| 中文字幕文字幕无码一区二区三区电影99| 色综合91| 综合熟女| 日本午夜久久电影| 欧美日韩国产中文精品字幕自在自线 | 亚洲高清无码在线桃色| 51久久夜色精品国产麻豆| 欧美日韩97| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 男人兔费天堂| 韩国黄色片精品久久久| 性做久久久久久久| 人人插人人摸人人| 人人操人人插人人摸人人干| 四虎国产精品永久在线囯在线| 粉嫩av一区二区三区天美传媒 | 日逼国产| 在线欧美69V免费观看视频| 操屄日韩| 伊人网免费视频| 亚洲第一页第二页激情| 欧美性第一页| 1769成人国产精品视频| 中文字幕乱亚洲美女精品一区| 青女偷拍网| 殴美色网| 亚洲97精品| www.男人的天堂| av天堂电影网| 日本人妻最新在线中| 精品久久久av无码免费| 人人搞人人插人人操| 日产操逼| 四虎午夜影院| 亚川综合视频| 逼操网站| 操逼网免费无码视频| 韩国三级理论在线| 色区久久| 亚洲情色五月天| 精品乱子一区二区三区99| 国产女同性恋视频| 亚洲 综合 第一页| 黄页网站成人免费| 午夜精品久久久久久久第一页按摩| 日日骚网站| 女性喷水高潮在线观看| 欧美呦呦性爱| 强奸乱伦大香蕉网| 99欧美| 肥臀熟女福利视频一区二区| 一区二区不卡| 亚洲成人在线乱码色午夜| 97手机日韩| 韩国手机不卡无码三级视频| 欧亚性爱啪啪| 狠狠久久亚洲欧美专区| 91最新综合| 校园春色中文字幕AV| 91强在线播放| 91美女视频直播| 麻豆亚洲AV成人无码久久精品| 襙一襙| 国产男人又猛又粗又爽| 日本三级韩三级99久久| 日韩午夜国产| 蜜桃臀一区二区三区久久| 99热婷婷一区二区三| 1000部熟女视频在线观看| 日韩丰满熟妇| 97超碰色五月| 黑人综合色| 熟妇乱伦一区二区| 亚洲古典另类欧美在线| 中文字幕视频在线观看一区二区| 小骚逼被操的爽不爽| 色与欲影视| 91c色| 久草综合京东| 久久9免费视频| 精品国产乱码| 九九99久久| 伊人aaa| 日本不卡一区| 午夜天堂啪啪| 国产免费久久精品99re韩国| 亚洲小说视频| 国语精品内射在线观看| 宅男91视频在线播放| 9精品久久久久| 99精品视频在线观看免费| 欧美日日网| 91亚洲最新在线| blacked精品一区国产| 人妻日日夜夜精品| 欧美色蜜桃97| 欧美人妻精品一区二区| 亚洲码和欧洲精品激情系列| 男同专区一区二区三区在线| 国产精品一级片在线看| 欧美一二三区四五区| 蜜臀久久99精品久久久久久酒店 | 啊啊啊97视频| 亚洲精品久久久久毛片A片拉屎| 99热日本| 国产超碰97| 一级特级aaaa毛片免费观看 | 强奸乱伦中文字幕AV| 91高跟美女在线播放| 最新亚洲黄色免费电影| 六六久久日韩不卡| 亚洲人妻色图| 久久99视频| 欧美色亚洲色| 久久久久久AⅤ无码免费肉站| 久9久精品视频| 大香蕉www.超碰| 日韩精品99久久久久久中文字幕 | 秋霞午夜视频一区二区| 无码久久亚洲高清,| 欧美日韩国产中文精品字幕自在自线,| 亚洲少妇视频| 91综合在线| 午夜一区| 夜夜爽爽爽| 久久久久国产精品久久久| 天美精品av| 狠狠干91| 97这里都是精品| 中文字幕AV乱伦| 天天插夜夜爽| 国产精品一级毛片不卡视| 日日妻色网| 亚洲精品aa久久伊人| 蜜臀99久久精品| 黄色一级视| 91久久国产精品| 爽爽淫人网| 久久婷婷电影网| 伊人久久大香蕉线AV五月天| ji熟女.com| 日本加勒比无码专区一二三| WWW黄片COM| 78超碰| 不卡人妻少妇精品毛片一区23区视频| 中文字幕丰满子伦无码专区在线视频最新 | 久久亚洲人妻| 成人性爱美曰韩| 日本2020一区二区| 久久乐| 欧美视频一| 中文字幕久久亚州无码| 一区二区三区机械有限公司| 少妇蹲下露出大唇5| www.操| 久久东京伊人一本到鬼色| 偷拍亚洲情色| 一区二区三区 丝袜 高跟 美腿| 在线播放成人高清免费视频| 久草精品一区| 99综合视频一体| 岛国黄片网站| 欧美日韩国产色五月综合在线| 狠狠穞A片一區二區三區| 成人一二| 欧美女同在线| 搡老女人老妇女老妇老熟女怎么读| 最新国内自拍av免费| 亚洲天堂久久| 亚洲一二三精品久久网 | 玖玖爱视频网站| 日本丝袜美腿人妻九九| 精品中文字幕一区二区l - 百度| 欧美成人精品欧美一级乱黄一区二…| 4141514逼喷水三级片| 欧美日韩国产中文精品字幕自在自线 | 性开放中文AV高清无码免费看| 亚洲一区二区中文字幕| 欧美日韩人人精品| 99热只有这里有精品| 天天干人人看综合| 日韩欧美蜜桃精品久久中文字幕久久 | 青青草十区九区爱夜| 亚洲色诱惑| 人妻啪| 日韩欧美加勒比| 尤物视频偷拍免费| 殴美日韩m| 五月天婷婷久久| 色哟哟511老熟女| 亚洲AV成人精品网站在AV| 高潮9999外国| 91爱看| 夜夜高潮夜夜爽| 中文字幕一区av| 女同性恋久久| 国产多人在线观看视频| 不卡在线观看视频| 破处bbq| 麻豆国产成人精品| 超碰性爱97| 美女诱惑爱爱| 2024人人操人人摸| 综合久久六月久久婷婷| 白丝被操91| 日本成人在线不卡一区二区三区| 情色五月天就去干| 青青欧洲黑| 91中文精品日韩欧美在线| 乱精品一区字幕二区| 色婷婷香蕉| 岛园激情| 综合操逼| 999亚洲国产视频| 免费观看性欧美一级| 日本在线观看网址| 69一区二区| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 97久久国产亚洲精品超碰热| 18岁禁 茉莉成人久久| 日韩情色视频| 久久久艹艹艹| 9久综合网| 欧美毛片在线网| 天天爽天天操| 丁香婷婷色五月| 91久久婷婷| 五月婷婷综合在线| 色五月av| 午夜天堂精品久久久久91| www.狠狠操| 98色网| 女色视频社区| 久久最新免费视频23| 看看小穴| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 少妇毛片久久| 自拍盗摄一区| 亚洲中文电影| 很很很很操| 亚洲自拍青操视频| 91模特在线观看| 日韩精品午夜操呦呦不卡影院| 午夜一区| 大学生美女口爆| 国产隔壁老王影院在线| 成人a大片在线观看| 一级久久久久久久久久久| 亚洲激情综合|