999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應用于人臉識別的多任務卷積神經網絡性能優化

2024-05-09 11:16:54葉惠仙
中原工學院學報 2024年1期
關鍵詞:人臉識別特征檢測

葉惠仙

(福建農業職業技術學院 信息工程學院, 福建 福州 350007)

近年來,深度學習技術尤其是卷積神經網絡(Convolutional Neural Network, CNN),逐步成為了人臉識別的主流工具,各種CNN模型在人臉檢測、關鍵點定位和人臉識別等方面的應用已取得顯著成效。目前,相關研究者正致力于通過新的技術手段,如增強學習、遷移學習等提高人臉識別系統在復雜場景中的應用表現[1]。多任務卷積神經網絡(Multi-task Convolutional Neural Network, MTCNN)突破了CNN只能處理單一任務的局限性。它能針對人臉檢測、關鍵點定位和人臉識別3種任務,通過共享底層卷積層的特征表示,實現對多個任務的同時學習[2]。這不僅能提高模型的泛化能力,還能夠在處理光照變化、遮擋、姿態變化等問題時取得優異的效果。MTCNN的引入使得人臉識別系統能夠更全面地理解和處理人臉圖像數據,為提高準確性、魯棒性和穩定性奠定理論基礎[3]。通過訓練處理人臉多方面任務的模型,能夠讓系統適應多變環境,更全面、準確地識別人臉。這在安全監控、人機交互等領域有著重要的意義。多任務學習可以更好地應對真實場景中的各種挑戰,為人臉識別技術在工業、商業和人們生活中的廣泛應用提供更加可靠的解決方案,也有望推動人臉識別技術在實際應用中的普及和進一步發展[4]。本文將從MTCNN的設計和優化著手,研究不同任務之間的關聯性以及有效共享底層特征表示的方法,提高模型在人臉檢測、關鍵點定位和人臉識別中的性能;分析MTCNN在復雜場景中的性能表現,包括在光照變化、遮擋、姿態變化時的魯棒性;測試模型在真實場景中應用的性能。

1 多任務學習在人臉識別中的應用

傳統的人臉識別方法包括基于特征的方法和基于模型的方法。其中:基于特征的方法需先將人臉圖像表示為特征向量,再利用分類器對其進行分類;基于模型的方法需將人臉識別看作一個模型訓練問題,是通過訓練模型來實現人臉識別的。傳統的人臉識別方法主要基于的是圖像處理和模式識別技術,包括主成分分析法、線性判別分析法和模板匹配法等[5]。這些方法曾取得了一定的應用成果,但在處理復雜場景和變化多樣的人臉圖像時存在一些明顯的缺點。例如,它們對光照變化、表情變化、姿勢變化和遮擋等因素的魯棒性較差,且對提取特征的表示能力有限,很難準確區分不同的人臉。

多任務學習能夠通過模型訓練,對人臉屬性如性別、年齡、表情等進行識別,在面對不同光照條件、佩戴眼鏡或口罩等復雜場景時依然能準確判斷人臉屬性,從而提高系統的適應能力。多任務學習能針對人臉檢測和關鍵點定位任務,通過同一模型的學習提高人臉檢測的準確性,并改善關鍵點定位的精度,使得人臉識別模型具有更強的魯性棒,以便在各種情況下精確地定位人臉的位置和關鍵特征點。多任務學習更加敏感于人的情感狀態,在人臉表情識別方面更具優勢。它通過學習多個表情分類任務,能夠更好地理解和識別人臉表情。多任務學習可用于增強人臉活體檢測的能力,防止使用照片或視頻等虛假信息的欺騙行為。多任務學習通過同時學習真實人臉和虛假攻擊的任務,能夠顯著提高人臉識別系統的安全性和可靠性。這些應用不僅能使人臉識別系統更為全面,也能提高其實際應用的效果和可靠性。一些經典的神經網絡模型如AlexNet、VGGNet、GoogLeNet和ResNet等[6],已經在人臉識別任務中取得了令人矚目的成果。

2 MTCNN模型的確定

在多任務學習中,同一個模型可以同時學習多種任務,從而提高模型的泛化能力和學習效率。以人臉識別為例,多任務學習可以同時進行面部特征檢測、性別識別、年齡估計等任務的學習,從而提高模型對人臉圖像數據的理解和識別能力。MTCNN模型通過學習大規模數據集中的人臉圖像,可以自動提取更具表征能力的特征,且具備較強的泛化能力。

MTCNN是一種通過堆疊多個卷積層和池化層來提取圖像特征的神經網絡結構。相比于傳統的淺層網絡結構,它具有更強的非線性建模能力和復雜特征提取能力。MTCNN能通過不同尺寸和深度的卷積核來捕捉不同層次的圖像信息,并通過池化操作降低特征維度,減小空間尺寸,從而減少網絡的參數量和計算復雜度。這種網絡結構在人臉識別任務中具有廣泛的應用,并在一些公開數據集上表現出了優異的識別性能。根據文獻[7],MTCNN模型的卷積層結構如圖1 所示。

圖1 MTCNN模型的卷積層結構

卷積層是MTCNN模型的核心組件之一。通過卷積層輸入圖像數據,與可學習的卷積核進行卷積運算,可提取圖像中的局部特征(即卷積特征)。MTCNN模型的池化層在網絡中起降低特征維度和減小空間尺寸的作用。通過池化操作能夠提取圖像中的主要特征并減少特征的冗余性,同時讓指定特征具有一定的平移和尺度不變性。

MTCNN模型是通過堆疊多個卷積層和池化層來構建深層網絡結構的。這些網絡結構能夠增強網絡模型的深度和非線性表達能力,從而進一步優化網絡的特征提取和分類性能。網絡性能優化的關鍵在于有效地進行網絡參數訓練和優化方法的選擇。隨機梯度下降(Stochastic Gradient Descent,SGD)法是通過計算損失函數每個參數的梯度[8],并根據學習率進行參數更新實現性能優化的。但其存在過程震蕩和收斂緩慢的問題。動量優化方法則能克服SGD的缺陷。自適應學習率方法如Adam、RMSprop,可根據參數梯度實時調整學習率。批歸一化方法能夠對每個小批量數據進行歸一化處理,以提升訓練速度,增強網絡的穩定性。數據增強方法能夠對訓練數據進行隨機變換,以擴充訓練集,增強模型的泛化能力。對這些方法的綜合運用和適當調整,可取得較好的網絡性能優化效果。

用于人臉識別時,MTCNN需要3個不同的任務網絡,以分別用于人臉檢測、關鍵點定位和人臉識別。每個任務網絡都有自己的損失函數,用于評估其在相應任務上的表現。這些損失函數組合在一起,可構成總的損失函數。模型的訓練可采用反向傳播算法,同時應使用SGD優化器進行優化。根據文獻[9],可用人臉檢測器P-Net來檢測圖像中的人臉位置。該檢測器的輸出是一個邊界盒(它表示檢測到的人臉在圖像中的位置和大小)。此外,人臉識別時需要一個基于CNN的關鍵點定位器K-Net,以定位人臉的5個關鍵點,包括兩個眼睛、一個鼻子和兩個嘴巴角;還需用一個基于CNN的人臉識別器R-Net,從人臉圖像中提取特征,并將其映射到一個低維空間。該低維空間的向量可以用于識別人臉。為了使3個任務網絡共享底層卷積層的特征表示,應在P-Net和K-Net的卷積層之間添加一個共享的卷積層,在K-Net和R-Net的卷積層之間也添加一個共享的卷積層[10]。這種共享卷積層可使得不同的任務網絡共享相同的底層特征表示,從而提高模型的泛化能力和識別準確率。

MTCNN模型的訓練采用的是多任務學習方法,需要同時優化3個任務網絡的損失函數。具體來說,它需要定義3個不同的損失函數,分別用于評估人臉檢測、關鍵點定位和人臉識別的表現。將這3個損失函數組合在一起,就構成了總的損失函數[11]。

總的損失函數可表示為:

Ltotal=wdet×Ldet+wkp×Lkp+wid×Lid

(1)

其中:Ldet、Lkp和Lid分別表示人臉檢測、關鍵點定位和人臉識別任務的損失函數;wdet、wkp和wid分別表示它們的權重。

模型優化過程,對于人臉檢測任務,采用的是交叉熵損失函數;對于關鍵點定位任務,采用的是均方誤差損失函數;對于人臉識別任務,采用的是三元組損失函數。具體來說,首先針對每個訓練樣本,隨機選擇兩個同類樣本和一個異類樣本,并計算它們在特征空間的距離;然后,使用三元組損失函數來約束同類樣本之間的距離,盡可能使其變小,而讓異類樣本之間的距離盡可能地大[12]。

三元組損失函數可表示為:

Ltriplet=max(0,m+||f(xa)-f(xp)||-

||f(xa)-f(xn)||)

(2)

其中:xa、xp和xn分別表示一個訓練三元組中的錨點樣本、正樣本和負樣本;f(·)表示針對具體樣本的人臉識別器的特征映射函數;m表示一個margin,用于控制同類樣本之間距離和異類樣本之間距離的差值。

3 數據集的選擇和預處理

在人臉識別實驗中,選擇合適的數據集對于評估和比較算法性能至關重要。數據集需要劃分為訓練集、驗證集和測試集。一般用70%的數據作為訓練集,10%的數據作為驗證集,剩余的20%作為測試集[13]。常用的人臉識別數據集有LFW(Labeled Faces in the Wild的縮寫)、Casia-WebFace、CelebA等。MTCNN 由于采用級聯方式進行檢測,每層網絡都在前一層的基礎上對人臉進行更加準確的檢測和定位,因此檢測精度比單一網絡要高。MTCNN 在檢測人臉的姿態和關鍵點方面具有更好的效果。人臉分類損失是用于評估人臉檢測模型中分類任務性能的損失函數。在MTCNN中,人臉分類損失函數通常采用的是交叉熵損失函數。MTCNN中的P-Net網絡能夠將輸入圖像劃分為多個不同大小的候選框,而這些候選框需要被分成人臉和非人臉兩類。人臉分類損失函數計算的是網絡輸出的分類概率與真實標簽之間的差異。在MTCNN訓練過程中,人臉分類損失函數通常要與人臉邊框回歸損失函數、人臉關鍵點回歸損失函數一起使用,計算總損失,以優化模型參數。

數據預處理是確保數據集一致性和可比性的重要步驟。通常用人臉檢測和對齊算法來確保圖像中的人臉區域能夠對齊且具有一致的尺寸。此外,數據預處理需要通過直方圖均衡化、對比度增強以及圖像旋轉,對圖像進行標準化處理和增強。

使用MTCNN進行人臉檢測和對齊的程序代碼如下:

import cv2

from mtcnn import MTCNN

def detect_and_align_faces(image):

detector = MTCNN()

faces = detector.detect_faces(image)

aligned_faces = []

for face in faces:

x, y, w, h = face[‘box’]

keypoints = face[‘keypoints’]

# 對齊人臉

aligned_face = align_face(image, keypoints)

aligned_faces.append(aligned_face)

return aligned_faces

def align_face(image, keypoints):

left_eye = keypoints[‘left_eye’]

right_eye = keypoints[‘right_eye’]

nose = keypoints[‘nose’]

# 根據關鍵點進行人臉對齊

return aligned_face

# 加載圖像

image=cv2.imread(‘face_image.jpg’)

# 進行人臉檢測和對齊

aligned_faces = detect_and_align_faces(image)

# 對齊后的人臉圖像可用于后續的特征提取和人臉識別實驗。

在目標訓練任務中,訓練模型通常輸出的是候選框的坐標和分類結果。然而,這些候選框通常不是精準的邊框,因此需要利用框回歸技術進行修正。框回歸修正的目的是針對每個候選框,確定一個更為準確的邊框。

4 MTCNN模型的訓練

構建MTCNN模型,并利用訓練集對MTCNN模型進行訓練時,需要使用配置良好的計算機和服務器,并配備高性能的GPU加速器,以加速模型的訓練和推理過程;同時,需安裝必要的軟件工具和框架,如TensorFlow、PyTorch等。通過評估訓練集和驗證集的性能表現,選擇合適的參數和網絡結構,才能完成網絡模型的訓練。

使用TensorFlow軟件進行MTCNN模型訓練的程序代碼如下:

import tensorflow as tf

from tensorflow

.keras import layers

# 構建多卷積神經網絡模型

model = tf.keras.Sequential() //創建一個tf.keras.Sequential模型

model.add(layers.Conv2D(32, (3, 3), activation=‘relu’, input_shape=(64, 64, 3)))

model.add(layers.MaxPooling2D((2, 2))) //添加第一個卷積層和最大池化層

model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2))) //添加第二個卷積層和最大池化層

model.add(layers.Conv2D(128, (3, 3), activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2))) //添加第三個卷積層和最大池化層

model.add(layers.Flatten())

model.add(layers.Dense(256, activation=‘relu’))

model.add(layers.Dense(num_classes, activation=‘softmax’)) //添加輸出層。

用上述代碼對一個具有3個卷積層和1個最大池化層的MTCNN模型進行訓練時,輸入模型的是64像素×64像素的RGB圖像,且是分為3個通道輸入的。模型的每個卷積層后都有一個relu激活函數,用于引入非線性模型,并在每個卷積層操作后用最大池化層來減小特征圖的尺寸。經過卷積和池化的特征圖被展平成一維向量,可連接到全連接層和輸出層。模型訓練過程使模型能夠從輸入圖像中提取關鍵特征,并在輸出層進行相應的預測。

定義訓練參數和優化器的程序代碼如下:

model.compile(optimizer=‘adam’,loss=‘sparse_categorical_crossentropy’,metrics=[‘accuracy’])

# 數據增強

train_images= ImageDataGenerator(

rescale=1/255,

rotation_range=20,

width_shift_range=0.2,

height_shift_range=0.2,

shear_range=0.2,

zoom_range=0.2,

horizontal_flip=True,

fill_mode=‘nearest’

)

validation_images = ImageDataGenerator(rescale=1/255)

# 加載和預處理數據集

train_images,train_labels,fs_images,fs_labels = load_and_preprocess_dataset()

# 進行模型訓練

model.fit(train_images,train_labels,epochs=10,batch_size=32,validation_data=(fs_images, fs_labels))

# 在數據測試集上評估模型性能

fs_loss, fs_acc = model.evaluate(fs_images, fs_labels)

print(‘Fs accuracy:’, fs_acc)。

通過模型訓練,可獲得圖2所示的數據集。

圖2 模型訓練所得數據集

在模型訓練中,使用了ImageDataGenerator函數,通過對應訓練數據的圖像旋轉、平移、剪切、縮放、水平翻轉等進行數據擴增,生成更加多樣和豐富的訓練樣本,從而增強了模型的泛化能力和魯棒性。這種方法使得MTCNN模型能夠更靈活地適應各種變化的復雜場景。它提高了模型在實際應用中的適應性。

5 MTCNN在人臉識別中的性能測試

測試集不僅能用于評估模型性能,還可通過比較測試集的預測結果與實際標簽,計算各種評估指標如準確率、召回率、精確度和F值(F-Measure)等,了解MTCNN在不同數據集和實驗設置下相對于傳統方法(如支持向量機)的優點。

用MTCNN進行人臉識別的程序代碼如下:

import numpy as np

from sklearn import svm

import tensorflow as tf

from tensorflow import keras

# 加載和預處理數據集

train_images,train_labels,fs_images,est_labels= load_and_preprocess_dataset()

# 構建多卷積神經網絡模型

model = tf.keras.Sequential()

# 添加網絡層

# 訓練多卷積神經網絡模型

model.fit(train_images,train_labels,epochs=10,batch_size=32, validation_data=(fs_images, fs_labels))

# 在測試集上評估多卷積神經網絡模型

fs_loss, fs_acc = model.evaluate(fs_images, fs_labels)

print(‘多卷積神經網絡的測試準確率:’, fs_acc)

# 使用傳統方法(支持向量機)進行人臉識別

# 將圖像數據轉換為特征向量

train_features = extract_features(train_images)

fs_features = extract_features(fs_images)

# 使用支持向量機進行訓練和預測

svm_classifier=svm.svc()

svm_classifier.fit(train_features, train_labels)

svm_accuracy = svm_classifier.score(fs_features, fs_labels)

print(‘支持向量機的測試準確率:’,svm_accuracy)。

圖3所示為MTCNN的人臉識別測試結果。

圖3 MTCNN的人臉識別測試結果

6 結語

本文通過人臉圖像的數據集對MTCNN模型進行訓練和預測,并對它在人臉識別任務中的性能表現進行了評估。MTCNN模型訓練的總損失是通過3個損失函數的加權計算得出的??倱p失越小則代表模型性能越優。在其訓練過程中,通過總損失的最小化可實現模型的優化,使之能夠在人臉識別任務中更好地進行特征學習和預測。

盡管MTCNN在人臉識別中展示出了巨大的潛力,并在實驗中獲得了令人滿意的結果,但仍然存在一些挑戰和改進的空間,包括模型的進一步優化、使用更大規模的人臉數據,以及在隱私保護和安全領域的拓展性研究。隨著深度學習和人臉識別技術的不斷發展,相信MTCNN在未來的人臉識別應用中將發揮更為重要的作用。

猜你喜歡
人臉識別特征檢測
人臉識別 等
作文中學版(2022年1期)2022-04-14 08:00:34
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
揭開人臉識別的神秘面紗
學生天地(2020年31期)2020-06-01 02:32:06
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
小波變換在PCB缺陷檢測中的應用
基于類獨立核稀疏表示的魯棒人臉識別
計算機工程(2015年8期)2015-07-03 12:19:07
主站蜘蛛池模板: 欧美国产另类| 国产成a人片在线播放| 欧美日韩午夜| 国产农村妇女精品一二区| 特级aaaaaaaaa毛片免费视频| 国产真实自在自线免费精品| 欧美日韩一区二区在线免费观看 | 99人妻碰碰碰久久久久禁片| 国产欧美日韩一区二区视频在线| 99久久国产精品无码| 日本国产精品一区久久久| 久久久久青草大香线综合精品| 精品国产成人a在线观看| 中文字幕在线看| 粗大猛烈进出高潮视频无码| 婷婷色丁香综合激情| 亚洲色大成网站www国产| 国产Av无码精品色午夜| 国产色图在线观看| 亚洲swag精品自拍一区| 亚洲码在线中文在线观看| 久久综合亚洲色一区二区三区| 成人在线天堂| 无码电影在线观看| 国产精品一老牛影视频| 色欲综合久久中文字幕网| 无码啪啪精品天堂浪潮av| 亚洲无线一二三四区男男| 国产白浆视频| 国产香蕉在线视频| 亚洲欧美一级一级a| 国产成人亚洲欧美激情| 国产精品黄色片| 成人国产三级在线播放| 久久亚洲精少妇毛片午夜无码 | 久久伊人操| 国产美女视频黄a视频全免费网站| 日韩天堂网| 国产综合无码一区二区色蜜蜜| 国产成人a毛片在线| 四虎永久免费地址在线网站 | 免费jizz在线播放| 国产一区二区三区免费| 国产亚洲成AⅤ人片在线观看| 国产资源免费观看| 日本爱爱精品一区二区| 色综合a怡红院怡红院首页| 久久国产香蕉| 亚洲热线99精品视频| h视频在线播放| 久久久亚洲色| 日本午夜影院| 精品久久国产综合精麻豆| 成人福利在线视频| 亚洲娇小与黑人巨大交| 国产一区二区三区免费观看| 国产一级毛片在线| 在线日韩一区二区| 国产精品伦视频观看免费| 一级毛片免费观看不卡视频| 91破解版在线亚洲| 欧美黄网在线| 国产不卡一级毛片视频| 99热这里只有精品在线观看| 一区二区三区在线不卡免费| 日韩av资源在线| 91在线无码精品秘九色APP| 少妇人妻无码首页| 欧美久久网| 久久频这里精品99香蕉久网址| 国产成人精品亚洲日本对白优播| 欧美啪啪网| 欧美人在线一区二区三区| 国产aⅴ无码专区亚洲av综合网| 97超级碰碰碰碰精品| 99这里精品| 伊人激情久久综合中文字幕| 国产欧美在线观看精品一区污| 亚洲天堂色色人体| 欧美一区福利| 国产粉嫩粉嫩的18在线播放91| 国产精品视频猛进猛出|