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

機器學習用戶寶典:使用SVM解讀情感 原創

發布于 2025-1-6 08:32
瀏覽
0收藏

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

支持向量機

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

為什么是SVM?

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

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

SVM是如何工作的?

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

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

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

項目概述

目標

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

數據集、工具和庫

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

項目創建

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

第1步:數據分離和預處理

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

# 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

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

一旦數據集準備好,我們將圖像轉換成灰度,這有助于簡化圖像數據。并提取方向梯度直方圖(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步:降維和訓練

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

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

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'參數確保模型有效地處理類不平衡,使其面對不同的情感類別時有穩定可靠的表現。使用訓練數據擬合模型后,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社區

圖1. 線性核的圖像表示

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

第4步:結論:結果和分析

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(快樂)類表現最好,精準率和召回率為0.88,面對中性、憤怒、厭惡和蔑視類表現良好(約0.70-0.74)。然而,它在面對悲傷和驚喜類時表現欠佳(精準率和召回率為0.68-0.69),可能是由于特征重疊。均衡的宏和加權平均值為0.74,表明面對各情感類,總體上性能一致。

模型的部署

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

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

結論

我們已經發掘了SVM的力量來解讀從快樂到驚喜的各種情感。結合使用關鍵概念、編碼和一些模型調優,我們看到了SVM如何幫助機器更好地理解我們人類的情感。完善模型可能需要一番調整,但SVM是一種強大的情感檢測工具。

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

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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 国产精品久久久久久久久动漫 | 欧美专区在线观看 | 一区二区福利视频 | av中文在线| 亚洲午夜av | 亚洲午夜精品一区二区三区他趣 | 亚洲欧洲一区 | 午夜小影院 | 色www精品视频在线观看 | 亚洲成人久久久 | 99精品视频在线观看免费播放 | 在线观看日韩 | 91精品国产91久久久久久吃药 | 成人一区在线观看 | 亚洲天堂一区 | 黄在线免费观看 | 色婷婷精品国产一区二区三区 | 久久久久久国产精品 | 一区二区在线视频 | 毛片一级黄色 | 亚洲+变态+欧美+另类+精品 | 久久99蜜桃综合影院免费观看 | 在线国产欧美 | 成人在线观看中文字幕 | 欧美日韩在线精品 | 日韩精品一区二区三区高清免费 | 青青草网 | 午夜在线小视频 | 欧美日韩综合 | 久久久久国产精品 | 精品96久久久久久中文字幕无 | 日本中文在线视频 | 午夜影院免费体验区 | 妞干网av | 欧美日韩在线免费 | 亚洲美女视频 | 粉嫩高清一区二区三区 | 国产精品久久久久久久午夜片 | 国产精品永久在线观看 | 国产乱码精品一区二区三区忘忧草 | 国产精品人人做人人爽 |