2015-04-05 70 views
0

我想查找類似於其他圖像的圖像。所以,研究後,我發現兩種方法首先在兩個由它的屬性表示圖像像查找相似圖片

length = full pattern = check color = blue

但這種方法的侷限是,我將無法得到詳盡的數據集的全部功能標記。

我發現的第二種方法是提取特徵並進行特徵映射。 所以我決定使用caffe深層卷積神經網絡,通過使用任何現有的模型,我可以學習特徵,然後執行特徵匹配或其他操作。我只想提出一個普遍的建議,其他的方法可以是很好的,值得一試。而且,因爲我剛剛開始與caffe,所以任何人都可以給出一個通用的指導方法來解決caffe的問題? 在此先感謝

我看着phash只是好奇,它會發現圖像是相同的,就像有輕微的強度變化和一些其他變化wiill它也可以爲同樣的類型(語義)像t恤與藍色和紅色條紋它會給黑色和白色條紋類似,並會考慮像襯衫的長度,領風格等

回答

4

這是事實證明,這是真的,使用提取的特徵之間的歐氏距離ConvNets對於同一類的圖像更接近,而對於不同類的圖像則更接近 - 但瞭解您尋找的是什麼樣的相似性非常重要。

可以定義許多類型的相似性度量,並且您使用的特徵類型(在ConvNets的情況下,它被訓練的數據類型)會影響您將獲得的類似圖像的類型。例如,也許給狗的圖像,你想找到其他的狗的照片,但不是特定的那隻確切的狗,或者,你可能有一張教堂的照片,你想找到另一個完全相同的教堂的圖像,但從不同的角度 - 這是兩個非常不同的問題,用不同的方法可以用來解決它們。

您可以查看一種特定類型的卷積神經網絡,即Siamese網絡,它是爲了學習兩張圖像之間的相似性而構建的,給出了具有相同/不同名標籤的圖像對的數據集。您可以在Caffe中查找此方法的實現here

一種不同的方法,是採取上訓練ImageNet數據(see here for options)一個ConvNet,和使​​用Python/MATLAB接口進行分類的圖像,然後提取第二到最後層,並用其作爲該圖像的表示。現在你可以把這些表示的歐氏距離,這將是你的相似性度量。

與Caffe無關,您還可以使用OpenCV(an example tutorial of such method)等開放源代碼庫中包含的「老派」功能匹配方法。