當前位置:
首頁 > 最新 > ResNet告訴我,我是不是世界上最美的人?

ResNet告訴我,我是不是世界上最美的人?

大數據文摘作品

編譯:大茜、Molly 、錢天培

什麼?!顏值「客觀化」要進行實質性推進了?

幾個月前,華南理工大學發布了一篇關於「顏值評估」的論文及其數據集。

這個數據集包括5500人,每人的長相被從1-5分進行打分。

數據的下載地址如下:

https://github.com/HCIILAB/SCUT-FBP5500-Database-Release

在公眾號後台對話框內回復「顏值」即可下載對應論文。

讓文摘菌來舉個栗子,你就知道這個數據是咋回事啦。

數據集中還包括一些明星。這張Julia Roberts的照片平均得分為3.78:

這張以色列著名模特Bar Refaeli的照片獲得了3.7分。

這些分數可能看起來有點低,但3.7分已經代表你的顏值比數據集中約80%的人高了。

在這個數據集上,作者訓練了多個模型,試圖根據人臉圖片評估顏值。

在這篇文章中,我要復現他們的結果,並測一下自己的顏值。

原始論文構造了一系列不同的模型,包括使用人工構造特徵的經典ML模型和3種深度學習模型:AlexNet、ResNet18和ResNext50,我希望儘可能簡化我的工作(我不想從頭開始訓練Resnet神經網路模型),我想對現有的模型進行調優。在keras中,有一個稱為application的模塊,它包含各種不同的預訓練過的模型。resnet50就是其中之一。 不幸的是,在keras.applications中沒有ResNet18或ResNext50,所以我不能完全復現研究人員之前的研究過程,不過利用resnet50也能足夠接近之前的工作。

from keras.applicationsimportResNet50

ResNet是一個由微軟開發的深度卷積網路,它贏得了2015 年的ImageNet圖像分類任務競賽。

在keras中,當我們初始化resnet50模型時,我們創建了一個ResNet50結構的模型,並且下載了在ImageNet數據集上訓練的權重。

論文的作者沒並有提到他們究竟是如何訓練模型的,不過我會儘力做到最好。

我想刪除最後一層(「softmax」層)並添加一個沒有激活函數的全連接層來做回歸。

resnet = ResNet50(include_top=False, pooling=』avg』)

model = Sequential()

model.add(resnet)

model.add(Dense(1))

model.layers[].trainable = False

print model.summary()

# Output:

Layer (type) Output Shape Param # ================================================================= resnet50 (Model) (None,2048)23587712_________________________________________________________________ dense_1 (Dense) (None,1)2049================================================================= Total params:23,589,761

Trainable params:23,536,641

Non-trainable params:53,120

你可以看到我把第一層(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)的numpy矩陣,train_Y是圖像被標記的分數。

論文使用2種方法訓練模型:5折交叉驗證和以6:4的比例將數據集分割為訓練集和測試集。他們使用皮爾遜相關係數(PC),平均絕對誤差(MAE)和均方根誤差(RMSE)來測評估模型的結果。以下是他們使用5折交叉驗證得到的結果:

這些是他們使用6:4分割數據集獲得的結果:

我以8:2的比例分割數據集,所以它類似於執行1折交叉驗證。

我得到的結果如下:

非常好的結果。另外,也可以看看散點圖和直方圖:

原始分數分布(標準化後的):

預測分數分布(標準化後的):

結果看起來不錯。現在在我身上試試這個這個神經網路。我首先使用這張照片:

我的分數是2.85,這意味著我的顏值比數據集中52%的人高。不得不說我有點失望,我以為我的分數會高一些,所以我試圖提高我的分數。

我拍了很多照片,最終我得到了3.15分,這意味著我比數據集中64%的人更具吸引力。

這比之前好很多了,不過我必須誠實地說,我希望還能更高:)

最後一點,我使用Google Colaboratory構建和調整了這個模型,簡而言之,Google Colaboratory能為你提供一個免費使用GPU的python notebook!

文摘菌文末按:希望這個數據集也可以診治一下北美吐槽君亂打分的惡劣現象,感恩!

https://towardsdatascience.com/how-attractive-are-you-in-the-eyes-of-deep-neural-network-3d71c0755ccc

【今日機器學習概念】

Have a Great Definition

志願者介紹

回復「志願者」加入我們

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據文摘 的精彩文章:

李飛飛紐約時報最新博文:如何讓AI更好地關懷人類
量子計算101:淺談其需求、前景和現實

TAG:大數據文摘 |