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

2021-12-29 大數據文摘

大數據文摘作品

編譯:大茜、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.applications import ResNet50

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[0].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

相關焦點

  • 鐵傀儡哭訴:「我的顏值不如一頭豬」?我的世界中最美的是誰?
    關於我的世界顏值榜的排行榜,其實大家不用太看重。但是在我的世界中的生物卻不太高興,因為是拿他們的顏值作為比較的。如果真的想要讓自己獲得高顏值的話,應該和那些美工姐姐說好話。他們才可以把你設計得既好看又美麗。這張圖片當中的四個生物,我覺得最好看的是最左邊這個。
  • 5篇霸道總裁文:那天,你答應我,會給我世界上最美的玫瑰
    是不是有很多人都幻想過自己能夠嫁給霸道總裁呢?小說總是能給自己圓一些不能實現的夢,所以小編今天給大家推薦的是5篇霸道總裁文:那天,你答應我,會給我世界上最美的玫瑰。希望大家能夠喜歡。但是不讓人討厭,女主很可愛,也很純善。男主是個從小高人一等且佔有欲特別強的人,而女主又是被爸爸賣給他的,女主對男主來說只是個玩物。所以開始男主對待女主的方式有很大的問題,導致傷害了女主。可是在男主愛上女主之後,對女主特別好,以前犯下的錯誤也慢慢的在彌補。有虐有甜,男主女主天生一對,雖然中間有點虐心,但是結局是喜劇,值得一看。
  • 五月,世界上最美的農田來了
    計劃中的庫肯霍夫鬱金香花田,由於荷蘭 春天的氣溫偏高而我到得晚有所缺憾。花農們的收割機在「突突」地響,將成片成片燦爛的花朵攔腰折斷,像扯裂我的心房。俯瞰花田的飛機也停止了飛翔,望著泛 青的花莖我一陣莫名的憂傷。荷蘭花農創造了世界上最美的花田,卻又為何親手將她毀滅?
  • 言情文:我曾認為世界都黯淡無光,是你給我了最美的光彩
    雖說現在大家都有電視看了,但是小編還是喜歡看小說,大家好,今天小編給大家帶來言情文:我曾認為世界都黯淡無光,是你給我了最美的光彩,看完之後你就知道現實生活中這樣的情況偶爾也會出現,精彩部分小編認為就是不吃飯也要一口氣看完,曾經我想像像主人公一樣美麗
  • 一位母親說,「寶貝,即使我一無所有,我也要給你世界上最美的」
    文章類型|育兒心經文章字數|687字,閱讀時間約2分鐘"寶貝,如果你還活著,一定要記得媽媽愛你",汶川地震已經過去了十年,但提起那條未發出的簡訊,依然會讓很多人紅了眼眶。如果有一句話可以詮釋母愛,我想"即使我一無所有,也要把世界上最美的給你"這句話是恰如其分的。喬治·艾略特說:"我的生命是從睜開眼睛,愛上母親的臉開始的。"。
  • 我愛你,是世界上最俗的一句話,也是最美的一句話!
    一、一個人,如果可以對生活抱有希望和熱情,朝氣蓬勃地活著,不氣餒、不頹廢,那麼這一生必然不會白費,這是「上」。在時機的變化中,能夠知進退,能捨得,謙遜低調,不會遭受禍患,這是「止」。無論何種境遇,都不曾動搖底線,活得問心無愧、坦坦蕩蕩,這是「正」。二、 我一個人排練著我們久別重逢的場景,我一個人將這獨角戲演的熱淚盈眶。
  • 你是我今生最美的邂逅,在我的世界裡留下了難忘的回憶
    和你一起聽過的情歌,是這世界上最好的情歌,我曾在最美的年紀裡,想要把我的心交給你,卻從來沒有問過你的心意,和你一起度過的時光,是我今生最難忘的時光,而我卻再也沒有遇見過愛情,屬於我的回憶,一直讓我記憶猶新,只是你,再也沒有出現在我的世界。
  • 沒有人告訴我,鐵路是這樣的!
    沒有人告訴我,鐵路是這樣的!這三個月,激發我的無限潛能!現在,工作中和生活裡是兩個完全不一樣的「小謝」。穿上作業服,我上得了平臺、扛得起地線、爬得了支柱,不恐高、不畏懼。下班,我又會瞬間變身為擰不開瓶蓋的小女生。
  • 白瑪多吉:我的家鄉,是世界上最美的地方
    「我走過世界很多的地方,這兩年14次穿行滇藏線,沒有見過比我的家鄉更美的。」在1月底北京的一場民宿峰會上,白瑪多吉再一次表達了對家鄉的情感,他已記不清,多少次在演講中進行類似的表述。白瑪拆掉了自家宅基地上的兩個院子,一手包辦了所有的建築和裝修設計。「農村長大的男人大概都有蓋房子的天賦。小時候每年村裡都有一兩戶人家蓋新房,我們就在工地上玩,整個過程慢慢都熟悉了。此外,電影人,特別是做紀錄片的,結構能力很強,抽象思維轉化形象思維的能力很強。有這兩點基礎,也就有了設計的底氣。」沒有施工圖,只有建築圖,這個業餘「建築師」「自編自導」,花了六萬塊錢做出了20多間房的松贊綠谷。
  • 世界上最美的五個字
    他的老師告訴他,「為人民服務」是世界上最美的五個字。他對這五個字的認知,從不解其意,到深悟理解,最後思想發生轉變,成為一名優秀的共產黨員。「為人民服務」是世界上最美的5個字,我對這句話也產生了濃厚的興趣。於是查閱了我黨的發展歷史,了解到它的起源。
  • 誰才是星座女中最美的人,我告訴你天秤女弱到家了!
    誰才是星座女中最美的人,我告訴你天秤女弱到家了!十二星座中的這幾大星座女她們最是喜歡漂亮,不但自己長得美麗動人,而且對於對象也是有著極高的要求,是以,她們往往總是招到人們的排名,究竟都有那些人呢?獅子女 獅子女,非常的愛美,不要小看獅子她們,她們雖然向來都是個大大咧咧的人,但是總是能夠有著很好的人際關係,而且獅子女向來都是能說會道、伶牙俐齒。
  • 魔鏡魔鏡告訴我,誰是世界上最漂亮的小貓咪?
    自從有了鏡子這種好東西,人終於就能看清自己長啥樣了。 如果把鏡子對著貓,讓它們看看自己的樣子。 有些貓淡定接受,有些貓就表現得很奇怪。
  • 海外華文教師:中文是世界上最美的語言
    海外華文教師:中文是世界上最美的語言 2015-09-10 11:12:25來自世界各地的海外華文教師紛紛向中國僑網發來感言,暢談對華文教育這項「留根工程」的理解。  緬甸華文教師王文波告訴記者,每年的今天,很多緬甸學校都會專門慶祝教師節。「而且很隆重,會舉辦教師節聯歡晚會,學校也會給教師發紅包,對前一學年表現優秀的教師及學校管理人員予以表彰。」
  • 我與熟悉的人相處會不自在,我是不是內向?
    別人外向,會在各種環境中很能放得開,聊對方,聊自己,聊事情,給建議;即使是自己不好的地方,似乎也能很不在意,很自然的告訴別人;別人內向,在陌生,不認識的人面前會拘謹,話少,被動,顯得很安靜,內斂,順從;而我不是這樣。
  • 《怦然心動》世界上最美的事情莫過於我喜歡你,你也喜歡我
    世界上最美的事情莫過於我喜歡你,而你也喜歡我。影片中《怦然心動》,講的是勤勞活潑,自來熟的小女孩朱莉在第一次見到小男孩布萊斯的時候就對他一見鍾情,之後在接下來的上學生活中一直圍著布萊斯團團轉。直到有一次發現布萊斯嘲笑自己的舅舅的智商也開始對自己喜歡的這個男孩產生了懷疑。不過最終小男孩也發現自己喜歡上了朱莉。在爺爺的幫助下,小男孩的勇敢的像小女孩朱莉呢表白了。之後,王子和公主就幸福地生活在一起了。
  • 世界最美十大貓咪排行榜,看見第一名,我愛了!
    喵星人大多數顏值都非常的高,那麼,你知道世界最美的貓咪排行裡的前十名是哪些貓咪嗎?接下來,我就來給大家盤點下最美貓咪排行榜的前十名!第九名:異國短毛貓雖然鼻子上有明顯的凹陷,但是還是非常可愛,甚至像個也很溫和!第八名:伯曼這種貓體型比較長,長的還算比較有特點的。
  • 像我這樣孤單的人,像我這樣不甘平凡的人,世界上有多少人
    並列的兩張床上躺著我和他兩個人,有一句沒一句地聊著天。十分鐘後,我說出他的想法,他背過身去不再說話。我承認我很聰明,能夠輕易看透每個人的想法。不喜歡欺騙別人,更不喜歡被人欺騙,最後只能假裝不知道。還好還能允許自己欺騙自己。
  • 胰臟物語:世界上最美的告白情話,大概就是「我想吃掉你的胰臟」
    胰臟物語:世界上最美的告白情話,大概就是「我想吃掉你的胰臟」在去年的一月份,一個帶著「我想吃掉你的胰臟」的名字的劇場版動漫預告出現在大家的眼前,因為名字的獵奇和原作的名氣所以很多人非常的期待這部小說改編成動漫的作品
  • 暗戀的女同事問我,這算不算豐滿,是不是在暗示我什麼?
    4、妹子盛飯的技巧好嫻熟5、媳婦,看我的,過肩摔!6、大哥,這個平頭您覺得夠不夠平7、城裡來的小侄子喜歡這樣玩耍,雖然這騾子還小,但我也不好意思多說什麼。8、廢了半天的功夫,終於把手機給拿了出來9、好高興10、什麼化妝筆,太牛了11、千萬不要惹犀牛,否則後果很嚴重~12、第一次相親時,我就是這麼手足無措的13、當伴娘也不容易啊
  • 理解並實現 ResNet(Keras)
    我是在Andrew Ng的 DeepLearning.AI 課程上學習到關於編寫ResNet的內容的,非常推薦大家觀看這個課程。在我的Github repo上,我分享了兩個Jupyter Notebook,一個是如DeepLearning.AI中所述,從頭開始編碼ResNet,另一個在Keras中使用預訓練的模型。