主頁 >  其他 > 基于MobileNet的人臉表情識別系統(MATLAB GUI版+原理詳解)

基于MobileNet的人臉表情識別系統(MATLAB GUI版+原理詳解)

2023-05-05 09:06:47 其他

摘要:本篇博客介紹了基于MobileNet的人臉表情識別系統,支持圖片識別、視頻識別、攝像頭識別等多種形式,通過GUI界面實作表情識別可視化展示,首先介紹了表情識別任務的背景與意義,總結近年來利用深度學習進行表情識別的相關技術和作業,在資料集選擇上,本文選擇了Fer2013和CK+兩個資料集,并使用MATLAB對這些資料進行預處理和訓練,最后通過呼叫已經訓練好的MobileNet模型對影像中存在的人臉目標進行表情識別分類,詳細介紹了實作程序中使用的代碼和設計框架,本文旨在為相關領域的研究人員和新入門的朋友提供參考,完整代碼資源檔案請轉至文末的下載鏈接,

目錄
  • 引言
  • 1. 相關作業
  • 2. 系統界面演示效果
  • 3. 表情識別資料集
  • 4. 網路訓練與評估
  • 5. 系統實作
  • 下載鏈接
  • 6. 總結與展望
  • 參考文獻

?點擊跳轉至文末所有涉及的完整代碼檔案下載頁?

完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYlpdu

參考視頻演示:https://www.bilibili.com/video/BV1ts4y1X71R/


引言

        我此前在博客中設計了一款基于 Python 的人臉表情識別系統介紹,這是一個有趣好玩的Python專案,該博客受到了廣泛的關注和反響,經過四年的持續更新和完善,現在向大家介紹人臉表情識別系統在 MATLAB 中的實作,本文旨在幫助更多人了解和學習表情識別技術,同時展現我對于技術創新的熱忱和樂于分享的態度,很高興我的博客能夠給予入門的讀者一點啟發,現成的代碼可以省去重復造輪子的時間,但也希望讀者能真正讀懂代碼和實作思路,避免“拿來主義”,在此之上能夠有自己的見地和思考,感謝各位讀者的支持和關注,期待與大家共同探索這一有趣的領域,

        隨著人工智能技術的飛速發展,計算機視覺領域也得到了長足的進步,人臉表情識別作為計算機視覺的一個重要應用,具有廣泛的應用前景,如人機互動、心理健康分析、虛擬現實等,本博客將介紹一種基于MobileNet的人臉表情識別系統,并使用MATLAB進行實作,本博客內容為博主原創,相關參考和參考文獻我已在文中標注,考慮到可能會有相關研究人員蒞臨指導,博主的博客這里盡可能以學術期刊的格式撰寫,如需參考可參考本博客格式如下:

[1] 思緒無限. 基于MobileNet的人臉表情識別系統(MATLAB GUI版+原理詳解)[J/OL]. CSDN, 2023.05. http://wuxian.blog.csdn.net/article/details/130460275.
[2] Wu, S. (2023, May 2). MobileNet-based facial expression recognition system (MATLAB GUI version + detailed principles) [Blog post]. CSDN Blog. http://wuxian.blog.csdn.net/article/details/130460275

        人臉表情識別研究的現狀已經取得了一定的成果,但仍然面臨諸多挑戰,如不同光照條件、姿態變化、表情類別定義等,近年來,深度學習在計算機視覺任務中取得了巨大成功,尤其是卷積神經網路(CNN)在影像識別領域的表現尤為突出,本博客將采用MobileNet作為基礎架構,以其輕量級、高效的特點,實作一個實時的人臉表情識別系統,本博客的貢獻點主要包括以下幾個方面:

  1. 詳細介紹了基于MobileNet的人臉表情識別系統的實作程序;
  2. 使用MATLAB實作了系統,使得開發者能夠更方便地進行除錯和優化;
  3. 提供了多種表情識別場景,如圖片識別、視頻識別和攝像頭識別;
  4. 結合了兩個公開的表情識別資料集,Fer2013和CK+,進行模型訓練和評估;
  5. 設計了一個簡潔的GUI界面,方便用戶進行實時表情識別,

1. 相關作業

        隨著深度學習在計算機視覺領域的廣泛應用,許多研究者開始嘗試利用深度學習技術對人臉表情進行識別,在本節中,我們將回顧近年來深度學習在表情識別領域的發展,涉及不同的網路結構、優化技術以及資料增強方法等,(本部分參考文獻見文末)

        首先,我們來回顧一下基于深度學習的表情識別的一些基礎作業,Goodfellow et al. [1] 提出了一種名為深度信念網路(DBN)的表情識別方法,并在Fer2013資料集上進行了測驗,Lopes et al. [2] 利用卷積神經網路(CNN)進行表情識別,實作了較高的識別準確率,這些作業為后續基于深度學習的表情識別研究奠定了基礎,隨后,研究者們開始嘗試使用不同的網路結構和優化方法來提高表情識別的性能,例如,Kahou et al. [3] 提出了一種融合卷積神經網路和回圈神經網路(RNN)的多模態表情識別方法,Mollahosseini et al. [4] 使用Inception模塊構建了一個名為FECNet的深度表情識別網路,取得了顯著的性能提升,此外,還有研究者嘗試利用遷移學習技術,如Zhang et al. [5] 利用VGG-Face預訓練模型進行表情識別任務,有效地提高了識別性能,

        資料增強方法在深度學習中具有重要的作用,尤其是對于資料不足的情況,Khorrami et al. [6] 提出了一種基于生成對抗網路(GAN)的資料增強方法,以提高表情識別性能,Kaya et al. [7] 將分數融合和資料增強方法應用于表情識別任務,實作了較大的性能提升,此外,還有研究者通過多任務學習來進行表情識別,如Liu et al. [8] 提出了一種多任務學習的表情識別方法,同時學習面部屬性和表情識別任務,

        近年來,輕量級神經網路在表情識別任務中也得到了廣泛關注,這些輕量級網路具有較低的計算復雜性和記憶體需求,使得它們更適用于移動設備和實時應用,Howard et al. [9] 提出了MobileNet網路,通過引入深度可分離卷積(depthwise separable convolution)減少引數數量和計算量,Sandler et al. [10] 提出了MobileNetV2,引入了線性瓶頸和逆殘差結構,進一步提高了計算效率,基于MobileNet的表情識別方法也取得了顯著的成果,例如,Hu et al. [11] 提出了一種基于MobileNetV2的輕量級表情識別網路,實作了較高的識別準確率和實時性能,

        通過以上文獻綜述,我們可以看到深度學習在人臉表情識別領域的廣泛應用和發展,在本博客中,我們將基于MobileNet架構,結合Fer2013和CK+48資料集,實作一個基于MATLAB的實時人臉表情識別系統,同時提供多種表情識別場景,如圖片識別、視頻識別和攝像頭識別,以及設計一個簡潔的GUI界面,方便用戶進行實時表情識別,


2. 系統界面演示效果

        在本節中,我們將展示基于MobileNet的人臉表情識別系統的界面效果,系統提供了三種識別場景:圖片識別、視頻識別和攝像頭識別,為了使用戶更好地體驗系統,我們設計了一個簡潔易用的GUI界面,

(1)圖片識別:用戶可以選擇一張包含人臉表情的圖片,系統將識別并顯示圖片中的表情,在GUI界面上,用戶可以點擊“選擇圖片”按鈕,選擇本地的一張圖片,然后系統將自動識別圖片中的表情,并在圖片旁邊顯示識別結果,

(2)批量圖片識別:用戶可以選擇圖片檔案夾實作批量圖片識別,系統將識別并顯示圖片中的表情,

(3)視頻識別:用戶可以選擇一個包含人臉表情的視頻檔案,系統將實時識別并顯示視頻中的表情,在GUI界面上,用戶可以點擊“選擇視頻”按鈕,選擇本地的一個視頻檔案,然后系統將自動播放視頻并實時識別視頻中的表情,同時在視頻畫面上顯示識別結果,

(4)攝像頭識別:用戶可以通過電腦攝像頭進行實時表情識別,在GUI界面上,用戶可以點擊“攝像頭識別”按鈕,系統將打開攝像頭并實時識別用戶的表情,同時在攝像頭畫面上顯示識別結果,

(5)更換模型和修改文字圖示:用戶可以點擊右側的模型選擇按鈕更換不同的模型,對于界面中的文字和圖示的修改請在APP設計工具中修改,


3. 表情識別資料集

        為了訓練和評估所設計的人臉表情識別系統,我們需要使用表情識別相關的資料集,在本節中,我們介紹幾個公開的表情識別資料集,并給出我們最終選擇的資料集Fer2013和CK+48,

        JAFFE (Japanese Female Facial Expression) 資料集:JAFFE資料集是日本女性面部表情資料集,包含了213張由10名日本女性演員表演的7種基本面部表情(憤怒、厭惡、恐懼、快樂、悲傷、驚訝和中性)的灰度影像,每種表情都有3個不同的程度,此資料集較小,但具有較高的標注準確率,官網鏈接:http://www.kasrl.org/jaffe.html

        KDEF (Karolinska Directed Emotional Faces) 資料集:KDEF資料集包含了4900張由70名瑞典模特表演的7種基本面部表情(憤怒、厭惡、恐懼、快樂、悲傷、驚訝和中性)的彩色影像,每張影像均以五個不同的角度拍攝,這個資料集具有較大的樣本量和多角度表情圖片,官網鏈接:https://kdef.se/

        AffectNet 資料集:AffectNet是一個大規模的面部表情資料集,包含約42萬張面部表情影像,每張影像都標注了表情類別和面部活動單元(AU)資訊,AffectNet適合訓練和評估深度學習模型,尤其是用于自然環境中的面部表情識別,官網鏈接:http://mohammadmahoor.com/affectnet/

        FERG (Facial Expression Research Group) 資料集:FERG資料集是一個包含人工生成面部表情的資料集,包括6個虛擬角色的6種表情(憤怒、厭惡、恐懼、快樂、悲傷和驚訝)的影像,此資料集的優點是可以通過渲染技術生成大量樣本,但它的局限性在于不包含真實人臉影像,官網鏈接:https://grail.cs.washington.edu/projects/deepexpr/ferg-db.html

        Fer2013:這是一個廣泛使用的表情識別資料集,由Goodfellow等人于2013年發布[1],Fer2013包含約35,000張灰度影像,涵蓋了7種不同的表情類別,包括憤怒、厭惡、恐懼、快樂、悲傷、驚訝和中性,Fer2013資料集具有多樣性和較大規模的優點,適合訓練深度學習模型,官網鏈接:https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data

        CK+:CK+(Cohn-Kanade+)資料集是由Lucey等人于2010年發布的一個面部表情資料集,CK+資料集包含了593個視頻序列,涵蓋了8種不同的表情類別,包括憤怒、厭惡、恐懼、快樂、悲傷、驚訝、中性和輕蔑,CK+資料集具有較高的標注準確率,提供了動態表情資訊,鏈接:https://paperswithcode.com/dataset/ck

        我們選擇Fer2013和CK+作為我們的資料集,原因如下:首先,Fer2013具有較大規模和多樣性,有利于訓練出泛化能力較強的模型;其次,CK+資料集雖然樣本量相對較小,但提供了動態表情資訊和較高的標注準確率,可以作為補充資料集,提高模型的表現,我們將結合這兩個資料集進行神經網路的訓練和評估,


4. 網路訓練與評估

        在本節中,我們將通過訓練一個神經網路來實作表情識別任務,實際上,表情識別可以被視為一個分類任務,我們需要在給定的人臉影像中識別出一種表情,為了簡化資料處理程序,我們將Fer2013資料集原本的csv檔案轉換成圖片格式,并將它們存放在train、test、val檔案夾下,

        首先,我們需要清除當前環境并設定亂數種子以保證結果的一致性:

clear
clc
rng default  % 保證結果運行一致

        接著,我們讀取訓練、驗證和測驗影像檔案夾,創建ImageDatastore物件:

trainDir = fullfile("./train/");
valDir = fullfile("./val/");
testDir = fullfile("./test/");
imdsTrain = imageDatastore(trainDir, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
imdsValid = imageDatastore(valDir, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
imdsTest = imageDatastore(testDir, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');

        確定分類類別數量:

numClasses = numel(categories(imdsTrain.Labels))
% > numClasses = 7

        在這里,我們選擇使用MobileNetV2作為我們的基本神經網路模型,首先,我們創建一個MobileNetV2實體,并獲取其層和輸入尺寸:

net = mobilenetv2;
layers = net.Layers
inputSize = net.Layers(1).InputSize  % 網路輸入尺寸

        此時列印網路的結構如下所示:

layers = 
  具有以下層的 154×1 Layer 陣列:

     1   'input_1'                        影像輸入         224×224×3 影像: 'zscore' 歸一化
     2   'Conv1'                          卷積             32 3×3×3 卷積: 步幅 [2  2],填充 'same'
     3   'bn_Conv1'                       批量歸一化        批量歸一化: 32 個通道
     4   'Conv1_relu'                     Clipped ReLU    Clipped ReLU: 上限 6
     5   'expanded_conv_depthwise'        分組卷積         32 groups of 1 3×3×1 卷積: 步幅 [1  1],填充 'same'
     6   'expanded_conv_depthwise_BN'     批量歸一化        批量歸一化: 32 個通道
     7   'expanded_conv_depthwise_relu'   Clipped ReLU    Clipped ReLU: 上限 6
     8   'expanded_conv_project'          卷積             16 1×1×32 卷積: 步幅 [1  1],填充 'same'
     9   'expanded_conv_project_BN'       批量歸一化        批量歸一化: 16 個通道
    10   'block_1_expand'                 卷積             96 1×1×16 卷積: 步幅 [1  1],填充 'same'
   ...

        接下來,我們需要對網路進行微調,以便將其應用于我們的表情識別任務,我們首先使用全連接層替換原始網路中的Logits層,并為其設定權重和偏置的學習率因子:

newLearnableLayer = fullyConnectedLayer(numClasses, ...
    'Name','new_fc', ...
    'WeightLearnRateFactor',10, ...
    'BiasLearnRateFactor',10);
    
lgraph = replaceLayer(lgraph,'Logits',newLearnableLayer);

        然后,我們將分類層替換為一個新的分類層:

newClassLayer = classificationLayer('Name','new_classoutput');
lgraph = replaceLayer(lgraph,'ClassificationLayer_Logits',newClassLayer);

        接下來,我們設定資料增強選項,并創建增強后的ImageDatastore物件:

pixelRange = [-30 30];
imageAugmenter = imageDataAugmenter( ...
    'RandXReflection',true, ...
    'RandXTranslation',pixelRange, ...
    'RandYTranslation',pixelRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
    'DataAugmentation',imageAugmenter, 'ColorPreprocessing','gray2rgb');
augimdsValidation = augmentedImageDatastore(inputSize(1:2), imdsValid, 'ColorPreprocessing','gray2rgb');
augimdsTest = augmentedImageDatastore(inputSize(1:2), imdsTest, 'ColorPreprocessing','gray2rgb');

        我們選擇使用隨機梯度下降優化器(SGDM)作為我們的訓練優化器,并設定訓練選項,包括MiniBatchSize、MaxEpochs、InitialLearnRate等,我們還設定驗證資料和驗證頻率,以便在訓練程序中評估網路性能:

options = trainingOptions('sgdm', ...
    'MiniBatchSize',64, ...
    'MaxEpochs',300, ...
    'InitialLearnRate',1e-4, ...
    'Shuffle','every-epoch', ...
    'ValidationData',augimdsValidation, ...
    'ValidationFrequency',60, ...
    'Verbose', true, ...
    'Plots','training-progress', ...
    'OutputNetwork', 'best-validation-loss');

        現在我們已經準備好訓練我們的神經網路了,使用以下代碼進行訓練:

model = trainNetwork(augimdsTrain,lgraph,options);

        訓練程序中的輸出如下:

在單 GPU 上訓練,
正在初始化輸入資料歸一化,
|=============================================================================|
|  輪  |  迭代  |    經過的時間     |  小批量準確度  |  驗證準確度  |  小批量損失  |  驗證損失  |  基礎學習率  |
|     |      |  (hh:mm:ss)  |          |         |         |        |         |
|=============================================================================|
|   1 |    1 |     00:00:15 |    9.38% |  13.74% |  2.1997 | 2.1275 | 1.0000e-04 |
|   1 |   50 |     00:00:57 |   18.75% |         |  1.8871 |        | 1.0000e-04 |
|   1 |   60 |     00:01:16 |   25.00% |  22.12% |  1.9477 | 1.8843 | 1.0000e-04 |
|   1 |  100 |     00:01:50 |   23.44% |         |  1.8143 |        | 1.0000e-04 |
|   1 |  120 |     00:02:12 |   31.25% |  24.85% |  1.6894 | 1.8497 | 1.0000e-04 |
...

        訓練完成后,我們將訓練好的模型保存到一個名為MobileNet_emotion.mat的檔案中:

save('MobileNet_emotion.mat', 'model');

        接下來,我們使用測驗資料集評估模型的性能:

[YPred,scores] = classify(model, augimdsTest);

        隨機選擇4個測驗影像并顯示它們的預測結果:

idx = randperm(numel(imdsTest.Files),4);
figure
for i = 1:4
    subplot(2,2,i)
    I = readimage(imdsTest,idx(i));
    imshow(I)
    label = YPred(idx(i));
    title(string(label));
end

        計算模型在測驗集上的準確率:

YTest = imdsTest.Labels;
accuracy = mean(YPred == YTest)
% > accuracy = 0.6450

        最后,繪制混淆矩陣以直觀地展示模型的分類性能:

figure
plotconfusion(imdsTest.Labels, YPred);  % 繪制混淆矩陣圖

        至此,我們已經成功地訓練了一個基于MobileNetV2的表情識別神經網路,并對其進行了性能評估,在下一節中,我們將介紹如何將這個模型整合到一個完整的系統中,


5. 系統實作

        在本節中,我們將介紹如何將已訓練好的模型整合到一個完整的表情識別系統中,首先,我們將展示如何使用訓練好的模型對攝像頭畫面進行實時檢測并標注表情,然后結合GUI界面設計框架和實作,

        值得注意的是,表情識別模型只對人臉部分進行表情分類,因此,在處理攝像頭捕獲的實時畫面之前,我們需要先檢測畫面中的人臉,為此,我們使用了vision.CascadeObjectDetector()函式來實作人臉檢測,該函式創建了一個級聯物件檢測器,用于檢測影像中的人臉,

% 由于表情識別模型只對人臉部分進行表情分類,我們需要先檢測畫面中的人臉,
% 使用vision.CascadeObjectDetector()函式創建一個級聯物件檢測器,用于檢測影像中的人臉,
faceDetector = vision.CascadeObjectDetector();

        首先,我們加載所需的依賴項和模型,并獲取模型的輸入尺寸和定義類別名稱:

load('MobileNet_emotion.mat', 'model');
inputSize = model.Layers(1).InputSize;
class_name = {'anger', 'disgust', 'fear', 'happy','normal', 'sad', 'surprised';...
    '憤怒',    '厭惡',   '害怕',  '高興',  '自然',  '悲傷',   '驚訝'};

        然后,我們創建一個攝像頭物件、一個用于顯示實時視頻的視窗以及一個用于保存帶標簽的視頻的VideoWriter物件:

cap = webcam();
player = vision.DeployableVideoPlayer();
image = cap.snapshot();
step(player, image);

writer = VideoWriter('labeled_camera.avi');  % 要輸出的視頻
open(writer);
figure

        在回圈中,我們不斷從攝像頭捕獲影像,然后使用emoRec函式對影像中的人臉進行表情識別,接著,我們將識別到的表情標簽添加到影像上,并將結果顯示在視窗中:

while player.isOpen()
    Img = cap.snapshot();
    Img = imresize(Img, [500, 700]);
    [bboxes, scores, labels] = emoRec(faceDetector, model, Img);
    num = size(bboxes, 1);
    if num >= 1
        label_text = cell(num, 1);
        labels = cellstr(labels);
        for i = 1: num
            for cls_n=1:size(class_name, 2)
                if strcmp(class_name{1, cls_n}, labels(i))
                    score = round(max(scores(i, :) * 100), 2);
                    label_text{i, 1} = [class_name{2, cls_n}, ' - ' , num2str(score), '%'];
                    break;
                end
            end
        end
        Img = insertObjectAnnotation(Img,'rectangle',bboxes, cellstr(label_text), ...
            'LineWidth',2, 'Font','華文楷體','FontSize',16);
    end
    imshow(Img)
    writeVideo(writer, Img);  % 寫入檔案
end

        最后,在用戶關閉視頻視窗時,我們關閉視頻寫入、釋放視頻視窗并洗掉攝像頭物件:

close(writer);  % 關閉檔案寫入
release(player);  % 釋放畫面視窗
delete(cap);  % 關閉相機

        這樣,我們就成功地將訓練好的表情識別模型整合到一個實時的人臉表情識別系統中,系統將不斷捕獲攝像頭畫面,對畫面中的人臉進行表情識別,并實時顯示識別結果,演示的效果如下:

        接下來,我們將設計一個基于MATLAB App Designer的GUI界面,以便用戶可以更方便地使用我們的表情識別系統,以下是一個簡單的設計框架:創建一個新的MATLAB App Designer專案,在設計界面中,添加以下組件:

  • 選擇圖片按鈕:用戶可以通過單擊此按鈕來選擇要進行表情識別的圖片檔案,
  • 播放視頻按鈕:用戶可以通過單擊此按鈕來播放要進行表情識別的視頻檔案,
  • 攝像頭開啟按鈕:用戶可以通過單擊此按鈕來開啟計算機上的攝像頭,并開始進行實時的表情識別,
  • 選擇識別模型:用戶可以通過此選項選擇要使用的表情識別模型(例如,我們可以提供MobileNet和EfficientNet等不同的模型),
  • 顯示結果:此處顯示表情識別的結果,例如識別出的表情類別、置信度等資訊,

        分別為打開圖片、視頻、攝像頭、模型的按鈕添加一個回呼函式,以便在用戶單擊該按鈕時執行相應的操作,在此回呼函式中,可以使用上面提供的代碼片段進行圖片讀取、預處理、表情識別和結果顯示,至此,我們已經成功地將訓練好的表情識別模型整合到一個完整的系統中,用戶可以通過GUI界面選擇圖片,然后系統將對圖片中的人臉進行表情識別,并顯示識別結果,


下載鏈接

    若您想獲得博文中涉及的實作完整全部程式檔案(包括測驗圖片、視頻,mlx, mlapp檔案等,如下圖),這里已打包上傳至博主的面包多平臺,見可參考博客與視頻,已將所有涉及的檔案同時打包到里面,點擊即可運行,完整檔案截圖如下:

    在檔案夾下的資源顯示如下圖所示:

注意:該代碼采用MATLAB R2022a開發,經過測驗能成功運行,運行界面的主程式為Emotion_UI.mlapp,測驗視頻腳本可運行test_emotion_video.py,測驗攝像頭腳本可運行test_emotion_camera.mlx,為確保程式順利運行,請使用MATLAB2022a運行并在“附加功能管理器”(MATLAB的上方選單欄->主頁->附加功能->管理附加功能)中添加有以下工具,

完整資源中包含資料集及訓練代碼,環境配置與界面中文字、圖片、logo等的修改方法請見視頻,專案完整檔案下載請見參考博客文章里面,或參考視頻的簡介處給出:???

完整代碼下載:https://mbd.pub/o/bread/mbd-ZJiYlpdu

參考視頻演示:https://www.bilibili.com/video/BV1ts4y1X71R/


6. 總結與展望

        本文詳細介紹了基于MobileNet的人臉表情識別系統的設計與實作,包括資料集的選擇、模型訓練、GUI界面的設計等方面,通過本文的介紹,我們可以了解到如何使用深度學習技術實作人臉表情識別,以及如何構建一個GUI界面來實作人臉表情的實時檢測,同時,本文也提供了詳細的代碼實作和資源檔案,為相關領域的研究人員和新入門者提供了一個參考,未來的研究可以進一步改進模型的準確性和魯棒性,并應用于更廣泛的領域和應用場景中,

        由于博主能力有限,博文中提及的方法即使經過試驗,也難免會有疏漏之處,希望您能熱心指出其中的錯誤,以便下次修改時能以一個更完美更嚴謹的樣子,呈現在大家面前,同時如果有更好的實作方法也請您不吝賜教,


參考文獻

[1] Goodfellow, I., et al. "Challenges in Representation Learning: A report on three machine learning contests." Neural Networks 64 (2015): 59-63.
[2] Lopes, A. T., et al. "Facial expression recognition with convolutional neural networks: coping with few data and the training sample order." Pattern Recognition 61 (2017): 610-628.
[3] Kahou, S. E., et al. "EmoNets: Multimodal deep learning approaches for emotion recognition in video." Journal on Multimodal User Interfaces 10.2 (2016): 99-111.
[4] Mollahosseini, A., et al. "AffectNet: A database for facial expression, valence, and arousal computing in the wild." IEEE Transactions on Affective Computing 10.1 (2019): 18-31.
[5] Zhang, K., et al. "Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks." IEEE Signal Processing Letters 23.10 (2016): 1499-1503.
[6] Khorrami, P., et al. "Do deep neural networks learn facial action units when doing expression recognition?" Proceedings of the IEEE International Conference on Computer Vision Workshops (2015): 19-27.
[7] Kaya H, Gürp?nar F, Salah A A. Video-based emotion recognition in the wild using deep transfer learning and score fusion[J]. Image and Vision Computing, 2017, 65: 66-75.
[8] Liu, Z., et al. "Joint face detection and alignment using multitask cascaded convolutional networks." IEEE Signal Processing Letters 23.10 (2016): 1499-1503.
[9] Howard, A. G., et al. "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications." arXiv preprint arXiv:1704.04861 (2017).
[10] Sandler, M., et al. "MobileNetV2: Inverted Residuals and Linear Bottlenecks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (2018): 4510-4520.
[11] Hu L, Ge Q. Automatic facial expression recognition based on MobileNetV2 in Real-time[C]//Journal of Physics: Conference Series. IOP Publishing, 2020, 1549(2): 022136.

人工智能博主,機器學習及機器視覺愛好者,公眾號主及B站UP主,專注專業知識整理與專案總結約稿、軟體專案開發、原理指導請聯系微信:sixuwuxian(備注來意),郵箱:[email protected],微信公眾號:“AI技術研究與分享”,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551647.html

標籤:其他

上一篇:從功能測驗轉型測驗開發,薪資漲了20K,1000字講述轉型必經之路...

下一篇:返回列表

標籤雲
其他(158440) Python(38117) JavaScript(25399) Java(18012) C(15221) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7157) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1931) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 基于MobileNet的人臉表情識別系統(MATLAB GUI版+原理詳解)

    本篇博客介紹了基于MobileNet的人臉表情識別系統,支持圖片識別、視頻識別、攝像頭識別等多種形式,通過GUI界面實作表情識別可視化展示。首先介紹了表情識別任務的背景與意義,總結近年來利用深度學習進行表情識別的相關技術和作業。在資料集選擇上,本文選擇了Fer2013和CK+兩個資料集,并使用MAT... ......

    uj5u.com 2023-05-05 09:06:47 more
  • 從功能測驗轉型測驗開發,薪資漲了20K,1000字講述轉型必經之路...

    身處職場之中,猶如逆水行舟不進則退,想要不被后浪拍死在沙灘上,就要不斷學習新知識,接受新事物。 要得到更好的發展,就要緊跟發展趨勢,不斷轉型才能保持競爭力,在職場中占有一席之地。 轉型不是一件容易的事,涉及到轉型、革新,就要突破現有的框架,必然會經歷陣痛。 我剛作業時就是一名月薪4000軟體測驗工程 ......

    uj5u.com 2023-05-05 09:06:23 more
  • 基于YOLOv5的目標檢測系統詳解(附MATLAB GUI版代碼)

    本文重點介紹了基于YOLOv5目標檢測系統的MATLAB實作,用于智能檢測物體種類并記錄和保存結果,對各種物體檢測結果可視化,提高目標識別的便捷性和準確性。本文詳細闡述了目標檢測系統的原理,并給出MATLAB的實作代碼、預訓練模型,以及GUI界面設計。基于YOLOv5目標檢測演算法,在界面中可以選擇各... ......

    uj5u.com 2023-05-05 09:05:47 more
  • 為什么說測驗崗位是巨坑?10年測驗人告訴你千萬別上當

    每次都有人問我軟體測驗的前景是什么樣的,每年也會有人很多人紛紛涌入測驗的崗位上,希望自己能夠進入阿里、華為等大廠
    但是測驗崗位真的那么吃香嗎?今天我結合從零基礎小白到測驗開發的成長經歷,來說下這個行業的發展前景,以及要入行的同學應該從哪個地方入手學習 ......

    uj5u.com 2023-05-05 09:05:13 more
  • 基于YOLOv4的目標檢測系統(附MATLAB代碼+GUI實作)

    本文介紹了一種MATLAB實作的目標檢測系統代碼,采用 YOLOv4 檢測網路作為核心模型,用于訓練和檢測各種任務下的目標,并在GUI界面中對各種目標檢測結果可視化。文章詳細介紹了YOLOv4的實作程序,包括演算法原理、MATLAB 實作代碼、訓練資料集、訓練程序和圖形用戶界面。在GUI界面中,用戶可... ......

    uj5u.com 2023-05-05 09:04:34 more
  • cPanel XSS漏洞分析研究(CVE-2023-29489)

    cPanel 是一套在網頁寄存業中最享負盛名的商業軟體,是基于于 Linux 和 BSD 系統及以 PHP 開發且性質為閉源軟體;提供了足夠強大和相當完整的主機管理功能,諸如:Webmail 及多種電郵協議、網頁化 FTP 管理、SSH 連線、資料庫管理系統、DNS 管理等遠端網頁式主機管理軟體功能... ......

    uj5u.com 2023-05-05 09:04:11 more
  • 博客開通

    之前因為查資料注冊的博客園,今天第一次開通屬于自己的博客,小小的記錄一下未來。 #include<iostream> using namespace std; int main(){ print("Hello world!"); return 0; } 我現在大四馬上畢業,考研失敗,對春招的認識不夠 ......

    uj5u.com 2023-05-05 09:03:59 more
  • 京東物流常態化壓測實踐

    大促備戰壓測備戰時間緊、任務多,壓測備戰壓力較大,在大促備戰多專項并行資源緊張情況下,頻繁的系統調優給整個大促帶來不可控的風險因素。引入常態化壓測的手段,通過每周或每月的定期壓測行為,持續把控系統性能表現,保證服務穩定性;同時將需求上線引起的性能問題前置暴露,及時定位優化問題;減輕備戰壓力,提升壓測... ......

    uj5u.com 2023-05-05 09:03:54 more
  • 【OpenAI】私有框架代碼生成實踐

    OpenAI提供的ChatGPT/GPT-4模型和CodeX模型能夠很好的理解和生成業界大多數編程語言的邏輯和代碼,然而在實際應用中,我們經常會在編碼時使用到一些私有框架、包、協議和DSL等。由于相關模型沒有學習最新網路資料,且這些私有資料通常也沒有發布在公開網路上,OpenAI無法根據這些私有資訊... ......

    uj5u.com 2023-05-05 09:03:46 more
  • 【手記】翻新顯卡安裝驅動程式

    只嘗試過N卡,A卡不知道適不適用。 解包驅動程式到目錄。正常運行驅動程式,它會先解壓到c:\nvidia\xxx,然后報錯,此時不要把報錯叉掉,因為叉掉后剛剛解壓得到的c:\nvidia會被刪掉,而我們要的就是這個目錄,所以要趁這個時候,把c:\nvidia復制一份,然后再叉報錯,這樣就得到了一個解 ......

    uj5u.com 2023-05-05 09:03:36 more