最后強調一點,圖片的風格很重要。有幾個長得絕對好看的人依舊排在了榜單的末尾,就是因為構圖不行,或者是光線不行等等。
探索自拍空間
我們還嘗試了另一種有趣的可視化方法t-SNE,來展示這些自拍圖。t-SNE是一種非常美妙的算法,由于它非常通用而且高效,我喜歡在幾乎所有數據上先試試用這個來一次。它需要輸入一些東西(這個例子里就是圖片),然后將他們按照相似相鄰的原則排列。
事實上,用t-SNE可以排列很多東西,像是Netflix的電影,單詞,Twitter的個人資料,ImageNet的圖片,任何東西只要量足夠而且可比較就行。在這里,我們將自拍圖按照卷積神經網絡認為的相似程度來排列。用專業(yè)術語來說,我們采用了最后一個全連接層中的fc7激活的L2范數來確定每張圖的得分進而比較其相似程度。下面是可視化結果:
自拍 t-SNE可視化
從而大家可以看出自拍圖以一種有趣的方式聚成了組:比如說,左上方是自拍合照,中左方是戴太陽鏡/眼鏡的自拍,左下是大頭照,右上有不少是對著鏡子來的全身照。我覺得這種現(xiàn)象還挺有趣的。
如何對自拍圖做最優(yōu)剪裁?
我們還做了另一個有趣的實驗,用卷積神經網絡自動找出一張自拍圖的最優(yōu)裁剪。我們先拍一張照片,隨機對其進行許多種可能的裁剪,然后把卷積神經網絡認為最好的一張選出來。下面是4組實驗結果,左側是原圖,右側是最好的裁剪圖:
四個對中的每一對顯示原始圖像(左)和ConvNet選擇為最佳(右)的圖像
注意到沒有,卷積神經網絡還是喜歡那種頭占據圖片1/3大小,額頭被切掉一部分的自拍。有趣的是,在右下這組實驗中,卷積神經網絡覺得沒有人的圖反而好,完全不對勁了有沒有。下面還有一些類似的例子,卷積神經網絡做出了不講道理的選擇:
原圖在左,裁剪圖在右
在一些行家提問之前,我先回答了:是的,我試過在原始圖像之后,卷積神經網絡之前插入一層空域變換層。我希望能得到了一個用6個參數表達任意裁剪的模型。不幸的是,這種方法不可行——優(yōu)化有時候會卡住,或者任意偏向一個位置。我還嘗試過對變換加一些約束,只做放縮和平移,可惜還是沒用。幸運的是,如果這變換有三個有界的參數,那我們還是可以承受得起全局搜索最優(yōu)解的。
你的自拍能打幾分?
是不是想看看你的自拍能得幾分?我們已經將這個網絡做成了一個Twitter機器人,方便大家來自測。(這個機器人大概只有150行的Python代碼,還包括了所有用到的Caffe/Tweepy代碼)。將你的圖片(或者鏈接)放在推文中,[email protected]
機器人會看下你的照片給出一個打分!為了得到最佳結果,自拍圖最好是正方形的,否則機器人會先將它壓成正方形,這會讓最終的得分變低。機器人會在一分鐘內回復你,如果沒出問題的話(出問題的時候,等一會兒再試一次)。