成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習用戶寶典:使用SVM解讀情感 原創(chuàng)

發(fā)布于 2025-1-6 08:32
瀏覽
0收藏

有沒有想過機器是如何識別人臉表情或分類物體的?答案在于支持向量機(SVM)。我們在這篇博文中將通過一個分步驟的項目來探究其工作原理。在介紹該項目之前,不妨簡要介紹一下SVM。

支持向量機

支持向量機(SVM)可能聽起來像一個復雜的術(shù)語,但它卻是機器學習領域一種簡單而強大的方法。你可以把它想象成一個智能邊界劃分者,幫助機器對數(shù)據(jù)進行分類。無論是分類垃圾郵件、識別人臉還是檢測情感,SVM都能找到分離不同類別數(shù)據(jù)的最佳線(或超平面)。SVM之所以如此有效,是由于它不僅能夠處理簡單的任務,還能夠輕松處理復雜的高維數(shù)據(jù)。我們在這篇博文中將深入探討SVM是如何工作的以及為什么它改變了機器學習領域的游戲規(guī)則。

為什么是SVM?

SVM之所以脫穎而出,是由于它善于找到分離圖像等復雜數(shù)據(jù)的最佳方法,只需要幾個關鍵點。CNN和KNN等其他方法需要大量數(shù)據(jù)和強大算力,而SVM可以很好地處理較小的數(shù)據(jù)集、多維圖像,仍然提供出色的結(jié)果。對于許多圖像識別任務來說,它可靠、高效和完美,沒有其他技術(shù)的繁重要求。此外,SVM避免了過擬合,使其適用于樣本有限的數(shù)據(jù)集。

注意:雖然SVM以用于分類任務最為出名,但也可以用于回歸,即用于預測連續(xù)值。

SVM是如何工作的?

SVM的工作原理是找到分離數(shù)據(jù)中不同類別的最佳邊界(超平面)。支持向量是最接近該邊界并幫助定義該邊界的數(shù)據(jù)點。

SVM試圖使邊界與這些支持向量之間的距離盡可能大,這有助于提高準確率。如果數(shù)據(jù)無法用直線(或超平面)分離,SVM使用核函數(shù)(后面有進一步介紹)將數(shù)據(jù)轉(zhuǎn)換到更高的空間,在那里它可以找到一個邊界。

機器學習用戶寶典:使用SVM解讀情感-AI.x社區(qū)

項目概述

目標

首先,該項目旨在演示如何使用支持向量機(SVM)利用標記數(shù)據(jù)集將人臉表情分類為不同的情感。除此之外,它還旨在訓練SVM模型,以便根據(jù)從人臉圖像中提取的特征對表情進行準確的分類。

數(shù)據(jù)集、工具和庫

這里演示的項目是使用人臉表情數(shù)據(jù)集創(chuàng)建而成的。該項目使用了一個含有大約28000個圖像的數(shù)據(jù)集,包括八種不同的表情(比如憤怒、悲傷、快樂等)。為了實現(xiàn)SVM,可以使用Pandas、Scikit-learn、OpenCV和NumPy等Python庫。

項目創(chuàng)建

有幾個步驟與之相關。不妨逐一介紹。

第1步:數(shù)據(jù)分離和預處理

首先,我們要加載數(shù)據(jù)集。該項目中使用的數(shù)據(jù)集由代表不同情感的文件夾組成。每個文件夾至少包含3000個圖像。為了確保數(shù)據(jù)集內(nèi)容平衡,我們從每個文件夾中隨機選擇2000個圖像,這樣就不會對特定的情感產(chǎn)生偏見。此外,2000是中等的批大小,因此過擬合和欠擬合的可能性似乎較小。下面是執(zhí)行相同功能的代碼。

# Load the dataset
csv_path = './Dataset/labels.csv'  # Path to the label CSV file
data = pd.read_csv(csv_path)

# Define parameters
image_folder = './Dataset/'  # Folder containing images
classes = ['neutral', 'happy', 'sad', 'surprise', 'fear',
 'disgust', 'anger', 'contempt']  # Emotion classes
samples_per_class = 2000  # Number of samples to take per class
image_size = (96, 96)  # Resize all images to 96x96

現(xiàn)在,我們確保每個情感類都有相同數(shù)量的樣本以獲得平衡的訓練過程。使用pandas.DataFrame.sample()對圖像進行隨機抽樣,以避免類不平衡。任何少于2000個圖像的類都會被跳過,以保持數(shù)據(jù)集的一致性。

一旦數(shù)據(jù)集準備好,我們將圖像轉(zhuǎn)換成灰度,這有助于簡化圖像數(shù)據(jù)。并提取方向梯度直方圖(HOG)特征,用于提取圖像的邊緣和紋理信息。

X = []
y = []
for _, row in balanced_data.iterrows():
    image_path = os.path.join(image_folder, row['pth'])  # Assuming 'pth' column contains image file paths
    if os.path.exists(image_path):
        # Read the image and convert to grayscale
        image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
        image = cv2.resize(image, image_size)

        # Extract HOG features
        features, _ = hog(image, orientations=9, pixels_per_cell=(8, 8),
                          cells_per_block=(2, 2), visualize=True, channel_axis=None)
        X.append(features)
        y.append(row['label'])
    else:
        print(f"Image not found: {image_path}")

第2步:降維和訓練

在對數(shù)據(jù)集進行歸一化之后,PCA和LDA等降維方法就可以派上用場了,以便通過只保留重要的模式、去除噪聲以及分別分離類,以減少特征的數(shù)量。

現(xiàn)在,訓練前的最后一步是將數(shù)據(jù)集分成訓練集和測試集,以評估模型針對未見過的數(shù)據(jù)時的性能。

pca = PCA(n_components=0.95) 
X_pca = pca.fit_transform(X)

lda = LDA(n_components=7)  
X_lda = lda.fit_transform(X_pca, y)

#Spliting into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X_lda, y, test_size=0.2, random_state=42, stratify=y)

第3步:訓練和評估模型

接下來是最重要的部分:訓練。SVM模型使用線性核來訓練,線性核有助于繪制一個直超平面來分離特征空間中的情感類。100的C值控制了最大化邊際和最小化分類錯誤之間的平衡,兼顧了復雜性和準確性。此外,class_weight='balanced'參數(shù)確保模型有效地處理類不平衡,使其面對不同的情感類別時有穩(wěn)定可靠的表現(xiàn)。使用訓練數(shù)據(jù)擬合模型后,SVM就可以準備使用測試集進行性能評估了。

#Train the SVM model with fixed C value
svm = SVC(C=100, kernel='linear', gamma='scale', class_weight='balanced')
svm.fit(X_train, y_train)

#Evaluating the model
y_pred = svm.predict(X_test)

機器學習用戶寶典:使用SVM解讀情感-AI.x社區(qū)

圖1. 線性核的圖像表示

注意:這里之所以使用線性核,是由于數(shù)據(jù)是線性可分的,它很適用于高維數(shù)據(jù)。

第4步:結(jié)論:結(jié)果和分析

Accuracy: 73.94%
Classification Report:
              precision    recall     f1-score    support

     neutral       0.71      0.73      0.72      1600
      happy       0.88      0.88      0.88      1600
        sad       0.68      0.68      0.68      1600
    surprise       0.69      0.68      0.69      1600
      anger       0.74      0.73      0.73      1600
    contempt      0.71      0.71      0.72      1600
       fear       0.74      0.72      0.73      1600
     disgust       0.71      0.71      0.73      1600

    accuracy                          0.74      8000
   macro avg       0.74      0.74      0.74      8000
weighted avg       0.74      0.74      0.74      8000

分析

我們的模型達到了73.94%的準確率,面對Happy(快樂)類表現(xiàn)最好,精準率和召回率為0.88,面對中性、憤怒、厭惡和蔑視類表現(xiàn)良好(約0.70-0.74)。然而,它在面對悲傷和驚喜類時表現(xiàn)欠佳(精準率和召回率為0.68-0.69),可能是由于特征重疊。均衡的宏和加權(quán)平均值為0.74,表明面對各情感類,總體上性能一致。

模型的部署

在訓練模型之后,我們還創(chuàng)建了一個網(wǎng)頁,讓用戶以互動的方式檢測自己的情感。該網(wǎng)頁還沒有部署,但是你仍然可以在這里查看如何描述輸出的結(jié)果。

機器學習用戶寶典:使用SVM解讀情感-AI.x社區(qū)

結(jié)論

我們已經(jīng)發(fā)掘了SVM的力量來解讀從快樂到驚喜的各種情感。結(jié)合使用關鍵概念、編碼和一些模型調(diào)優(yōu),我們看到了SVM如何幫助機器更好地理解我們?nèi)祟惖那楦小M晟颇P涂赡苄枰环{(diào)整,但SVM是一種強大的情感檢測工具。

當我們繼續(xù)探索令人著迷的AI世界時,想想機器如何慢慢地在識別和理解人類情感方面變得更好確實令人嘆為驚訝。不斷學習,不斷嘗試!

原文標題:??Expressions Unveiled: Using SVM to Decode Emotions with Machine Learning?,作者:Jay Mangukiya

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: av在线免费观看不卡 | 九色av| 亚洲午夜精品视频 | 毛片免费视频 | 日韩欧美一区二区三区四区 | 韩日一区二区三区 | 日日草天天干 | 欧美视频精品 | 丝袜天堂 | 九色在线视频 | 久久久精品视频一区二区三区 | 欧美国产一区二区 | 亚洲一区精品在线 | 久久亚洲国产精品 | 成人天堂噜噜噜 | 欧美一级毛片在线播放 | 久久久久国产一区二区三区 | 久久蜜桃资源一区二区老牛 | 中文字幕在线精品 | 国产一级片网站 | 国产在线精品一区二区 | 精品视频在线免费观看 | 国产日韩欧美在线 | 欧美黑人狂野猛交老妇 | 日本偷偷操 | 干干干操操操 | 精品久久久久久久久久久久久久 | 日韩中文字幕一区 | 日韩中文字幕在线观看 | 亚洲综合第一页 | 国产在线一区二区三区 | 亚洲日韩视频 | 久久精品国产一区二区 | 国产精品久久久久久久久久免费 | 一级做受毛片免费大片 | 成人在线小视频 | 亚洲一区二区不卡在线观看 | 精品国产一区二区三区久久狼黑人 | 欧美一级二级视频 | 一区二区三区在线免费观看 | 一级特黄色毛片 |