2022-06-12 21:46:07 索煒達(dá)電子 879
項(xiàng)目描述:情感識(shí)別模型在FER 2013數(shù)據(jù)集上進(jìn)行訓(xùn)練。它可以檢測(cè)到7種情緒。該項(xiàng)目的工作原理是從網(wǎng)絡(luò)攝像頭獲取實(shí)時(shí)視頻,將其傳遞到模型中,以獲得情緒預(yù)測(cè)。然后根據(jù)預(yù)測(cè)的情緒,應(yīng)用程序?qū)⑼ㄟ^spotipy從Spotify獲取歌曲的播放列表,并通過在屏幕上顯示來推薦歌曲。
特征:
-實(shí)時(shí)表情檢測(cè)和歌曲推薦。
-使用API從Spotify獲取的播放列表。
-網(wǎng)站形式展現(xiàn)
運(yùn)行應(yīng)用程序:
Run python app.py
技術(shù)應(yīng)用:
-Keras
-Tensorflow
-Spotipy
-Tkinter (For testing)
-Flask
數(shù)據(jù)集:
本項(xiàng)目使用的數(shù)據(jù)集是著名的FER2013數(shù)據(jù)集。在此數(shù)據(jù)集上訓(xùn)練的模型可以對(duì)7種情緒進(jìn)行分類??梢栽诖颂幷业綌?shù)據(jù)集。
https://www.kaggle.com/datasets/msambare/fer2013
請(qǐng)注意,數(shù)據(jù)集高度不平衡,happy類具有最大表示。這可能是導(dǎo)致訓(xùn)練后okaysish準(zhǔn)確性的一個(gè)因素。
模型架構(gòu):
模型架構(gòu)是由Conv2d、Maxpool2d、Dropout和Dense層組成的順序模型:
整個(gè)模型中的Conv2D層具有不同的過濾器大小,從32到128,都具有激活“relu”
池層具有池大?。?,2)
輟學(xué)設(shè)置為0.25,因?yàn)橐陨先魏蝺?nèi)容都會(huì)導(dǎo)致性能不佳
最后的致密層有“softmax”激活,用于分類7種情緒
使用“categorical\u crossentropy”和“Adam”優(yōu)化器以及“準(zhǔn)確性”指標(biāo)計(jì)算損失
注意:-嘗試實(shí)現(xiàn)各種其他模型,如VGG16,但精度太低。該模型架構(gòu)提供了足夠的準(zhǔn)確性。稍微修改一下超參數(shù)可能會(huì)提高精度
模型架構(gòu)是由Conv2d、Maxpool2d、Dropout和Dense層組成的順序模型:
1.Conv2D layers throughout the model have different filter size from 32 to 128, all with activation 'relu'
2.Pooling layers have pool size (2,2)
3.Dropout is set to 0.25 as anything above results in poor performance
4.Final Dense layer has 'softmax' activation for classifying 7 emotions
注意:-嘗試實(shí)現(xiàn)各種其他模型,如VGG16,但精度太低。該模型架構(gòu)提供了足夠的準(zhǔn)確性。稍微修改一下超參數(shù)可能會(huì)提高精度
圖像處理和訓(xùn)練:
1.在Keras API中的“ImageDataGenerator”的幫助下,這些圖像被標(biāo)準(zhǔn)化,大小調(diào)整為(48,48),并分64批轉(zhuǎn)換為灰度。
2.訓(xùn)練在當(dāng)?shù)剡M(jìn)行了大約13個(gè)小時(shí),共75個(gè)階段,準(zhǔn)確率約為66%
當(dāng)前狀況:
整個(gè)項(xiàng)目運(yùn)作得非常好。由于多線程,實(shí)時(shí)檢測(cè)提供了良好的幀速率。
項(xiàng)目組成部分:
1.Spotipy is a module for establishing connection to and getting tracks from Spotify using Spotipy wrapper.
2.haarcascade is for face detection.
3.camera.py is the module for video streaming, frame capturing, prediction and recommendation which are passed to main.py.
4.main.py is the main flask application file.
5.index.html in 'templates' directory is the web page for the application. Basic HTML and CSS.
6.utils.py is an utility module for video streaming of web camera with threads to enable real time detection.
7.train.py is the script for image processing and training the model.
遇到問題:
當(dāng)前狀態(tài)下的應(yīng)用程序無法部署在web上,因?yàn)椋?/p>
Opencv嘗試在應(yīng)用程序運(yùn)行的任何設(shè)備上打開攝像頭。當(dāng)前狀態(tài)的代碼使用網(wǎng)絡(luò)攝像頭(如果服務(wù)器端而非客戶端可用)。所以,當(dāng)應(yīng)用程序在筆記本電腦上本地運(yùn)行時(shí),可以通過網(wǎng)絡(luò)攝像頭進(jìn)行視頻流傳輸。但如果將其部署到云上,該應(yīng)用程序?qū)⒋鎯?chǔ)在數(shù)據(jù)中心的某個(gè)地方,而該數(shù)據(jù)中心顯然沒有連接網(wǎng)絡(luò)攝像頭,因此無法工作。
進(jìn)一步工作:
創(chuàng)建數(shù)據(jù)庫并將其連接到應(yīng)用程序,而不是CSV。DB將獲取歌曲以供推薦,新歌曲可以直接更新到數(shù)據(jù)庫中
添加一項(xiàng)功能,該功能將更新指定的播放列表以獲得更好的和更新的推薦,在固定的時(shí)間內(nèi)的特定日期(例如每個(gè)星期日)將其附加到數(shù)據(jù)庫中
直接播放歌曲或在用戶單擊Spotify時(shí)重定向到歌曲。
重寫代碼,使視頻流在客戶端而不是服務(wù)器端完成,從而使應(yīng)用程序可部署
注:模型精度不是很高。大約66%。需要進(jìn)一步培訓(xùn)和微調(diào)??梢試L試視覺轉(zhuǎn)換器模型。