# 期末專題構想書:臉部情緒辨識 ## 隊伍資訊 隊名:歡樂無法擋 成員(學號、姓名): - 108830040 梁哲緯 - 107810040 梁文碩 - 108AC1008 劉子豪 ## 動機與目的 人們常因為無法辨識他人情緒造成衝突或意外,例如服務業因無法立即分辨出消費者對商品或是服務態度是否滿意導致自己的服務無法滿足顧客。在犯罪的方向來說,科學家認為可以利用情緒辨識技術可以了解罪犯現在的情緒,如果是負面時加以控制而減少犯案、避免暴力發生。另外,很多時候人們也無法察覺到自身的情緒而導致意外,例如駕駛因無法察覺自身的心情而帶著憤怒上路而造成行車意外發生。 本專題將發揮在課堂上的所學,藉由深度學習的技術,訓練一個影像辨識的模型,可以辨識出人的情緒。希望這次專題的成果,可以更有效的分辨人的情緒,使大家在日常生活中可以意識到對方或自身的情緒,減少因情緒誤判情緒所造成的意外。 ## 方法與步驟簡述 ### 資料來源 資料來自 Kaggle 上的 facial emotion recognition [^facial_emotion_recognition]。此資料集的每筆資料包含一張圖片以及相對應的臉部情緒分類類別,類別以及數量如下: 1. 生氣 angry (958) 2. 厭惡 disgust (111) 3. 害怕 feal (1024) 4. 開心 happy (1774) 5. 自然 neutral (1233) 6. 難過 sad (1247) 7. 驚訝 surprise (831) 以下為範例資料: ![](https://upload.cc/i1/2021/05/19/9hkjwO.jpg) angry ![](https://upload.cc/i1/2021/05/19/7eokwg.jpg) disgust ![](https://upload.cc/i1/2021/05/19/bHWYk6.jpg) sad ### 模型與方法 預期使用深度學習對於影像辨識做常使用的架構:Convolutional Neural Networks(卷積神經網路,簡稱 CNN )[^CNN]。CNN 的輸入為一張圖片,透過好幾層 Convolutional Layer 的運算之後,取出重要的特徵值,並且輸出該圖片所屬的類別。 CNN 有許多衍生架構,例如 AlexNet[^AlexNet]、VGG[^VGG]、GoogLeNet[^GoogLeNet]、ResNet[^ResNet] 等,我們將嘗試在不同架構下訓練,並且選出最適合的架構。 由於資料集的數量有限,我們會使用 ImageNet[^ImageNet] 的預訓練模型來做 Transfer Learning[^transfer_learning]。如果時間允許,也會嘗試使用 Data Augmentation[^data_augmentation] 的技巧來增加訓練資料。 實做方面,我們將以 PyTorch[^PyTorch] 與 torchvision[^torchvision] 這兩個深度學習與影像辨識的套件為主,來實做上述的模型與方法。 ## 預期成果 本專題預期可以完成一個能有效分辨人類情緒的模型,使準確率達到至少80%以上。這裡給大家比較具體的例子。 在行車安全方面,可以先設計一個硬體類似偵測器,載入這種情緒分辨的軟體,安裝在方向盤上,當一個駕駛員上車時,如果情緒是及格的就不會發生任何事,相反地,情緒是不合格的偵測器將會鳴叫,提醒駕駛無法開車,減少交通意外。 在犯罪方面,當在審問犯人時,加裝情緒辯識器,當犯人憤怒或是憂鬱時,所說的言詞不入證言。當犯人在說謊造成情緒的影響,可能造成慌張、心虛等等情緒時,也可以通通加以防範,就像有一部電影,描述使用人的微表情,可以看出很多犯罪的真實樣貌。 透過人工智慧可以使人們之間減少猜忌與懷疑,使大家相處都能更加融洽,情緒使人帶來突如其然的改變,唯有控制好情緒才能帶來安穩的生活狀況,希望本專題能成為其中一個重要的成果。 ## 參考資料 [^analysis]: [情緒辨識AI應用如火如荼 全盤考量才能避免誤判](https://www.netadmin.com.tw/netadmin/zh-tw/trend/4529C9A1EB0D414CBD723B2BC10C5C24) [^facial_emotion_recognition]: [facial emotion recognition](https://www.kaggle.com/chiragsoni/ferdata) [^CNN]: [Convolutional neural network](https://en.wikipedia.org/wiki/Convolutional_neural_network) [^AlexNet]: [ImageNet Classification with Deep Convolutional Neural Networks](https://en.wikipedia.org/wiki/AlexNet) [^VGG]: [Very Deep Convolutional Networks for Large-Scale Image Recognition](https://arxiv.org/pdf/1409.1556.pdf) [^GoogLeNet]: [Going Deeper with Convolutions](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43022.pdf) [^ResNet]: [Deep Residual Learning for Image Recognition](https://arxiv.org/pdf/1512.03385.pdf) [^ImageNet]: [ImageNet](http://www.image-net.org/) [^transfer_learning]: [Transfer learning from pre-trained models](https://towardsdatascience.com/transfer-learning-from-pre-trained-models-f2393f124751) [^data_augmentation]: [Data Augmentation | How to use Deep Learning when you have Limited Data — Part 2](https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-have-limited-data-part-2/) [^PyTorch]: [PyTorch](https://pytorch.org/) [^torchvision]: [torchvision](https://pytorch.org/vision/stable/index.html) [^recycle_accuracy]: [你回收丟對了嗎?「AI垃圾桶」做第一關守門員] (https://ubrand.udn.com/ubrand/story/12117/4488084)