在深度神经网络中你有多吸引人?
幾個月前,華南大學發表了一篇關于“面部美容預測”的論文和數據集。?你可以在這里找到它。?數據集包括5500人,他們的得分有1到5分的吸引力。?
這里有一些來自論文的例子:
還有一些著名的人在集合中。?這朱莉婭羅伯特的照片平均得分為3.78:
這張以色列著名模特Bar Refaeli的照片得分為3.7分:
這些可能看起來像是低分,但3.7分代表酒吧比數據集中約80%的人更有吸引力。
與數據集一起,作者通過訓練多個模型試圖根據人臉圖片預測人的吸引力。
在這篇文章中,我想重現他們的結果并檢查我的吸引力。
最初的論文實現了一系列不同的模型,包括具有手工特征的經典ML模型和3種深度學習模型:AlexNet,ResNet18和ResNext50。?
我希望盡可能簡化我的工作(我不想從頭開始實施和培訓整個resnet網絡),我想微調一下現有的模型,以完成這項工作。?在keras?,有一個稱為applications的模塊,它是一組不同的預先訓練過的模型。?其中之一是resnet50?。?不幸的是,在keras.applications中沒有ResNet18或ResNext50,所以我不能再現完全相同的工作,但我應該用resnet50足夠resnet50?。
from keras.applications import ResNet50
ResNet是一個深度卷積網絡,由微軟開發,贏得了2015 ImageNet競賽,這是一個圖像分類任務。?
當我們在keras啟動resnet50模型時,我們使用ResNet50體系結構創建了一個模型,并且我們還下載了經過訓練的訓練后的權重,如同在ImageNet數據集上進行訓練。
論文的作者沒有提到他們究竟是如何訓練模型的,所以我會盡力做到最好。?
我想刪除最后一層(“softmax”圖層)并添加一個沒有激活功能的密集圖層來執行回歸。
你可以看到我制作了第一層(resnet模型)不可訓練,所以我只有2049個可訓練的參數,而不是23589761。
我的計劃是訓練最終的密集層,然后以較小的學習率訓練整個網絡。
model.compile(loss ='mean_squared_error',optimizer = Adam()) model.fit(batch_size = 32,x = train_X,y = train_Y,epochs = 30)之后,我將第一層改為可訓練,編譯并將模型適應另外30個時期。
在這里,?train_X是照片,即形狀(350, 350, 3)?train_Y?(350, 350, 3)numpy數組,以及train_Y是被標記的圖像的分數。
結果
本文使用2種技術訓練模型:5倍交叉驗證和60%-40%列車測試分割。?他們使用Pearson Correlation(PC),平均絕對誤差(MAE)和均方根誤差(RMSE)來測量他們的結果。?這些是他們使用5倍交叉驗證得到的結果:
這些是他們使用60%-40%訓練測試分組獲得的結果:
我會做一個80%-20%的訓練測試分割,所以它類似于執行其交叉驗證部分的1倍。
我得到了以下結果:
RMSE:0.301799791952313 MAE:0.2333630505619627 PC:0.9012570266136678非常好。?另外,查看分數的散點圖和直方圖總是很好的:
原始分數分布(標準化):
預測分數分布(標準化):
結果看起來不錯。?現在讓我們來看看這個深度神經網絡對我所說的。?我首先使用這張照片:
我得到了2.85,這意味著我比這個數據集中52%的人更有吸引力。?我不得不說我有點失望,我希望我會比這更好。?所以我試圖改善我的情況。
我拍了很多照片,最終獲得了3.15分,這意味著我比數據集中64%的人更具吸引力。
這是好多了,我必須誠實地說,我希望更好:)
最后一點,我使用Google Colaboratory構建和調整了這個模型,簡而言之,它為您提供了一個免費使用GPU的python筆記本!
希望你喜歡這篇文章。
原文:https://towardsdatascience.com/how-attractive-are-you-in-the-eyes-of-deep-neural-network-3d71c0755ccc
總結
以上是生活随笔為你收集整理的在深度神经网络中你有多吸引人?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何扩展以太坊:分片
- 下一篇: An Introduction to H