3

最近,我開始與tensorflow玩,同時努力學習流行的算法,我在一個情況下,我需要找到圖像之間的相似性。圖片相似度檢測與TensorFlow

圖片A由我提供給系統,並且用戶X提供圖像B和系統應檢索圖像A到用戶X如果圖像B是相似的(顏色和類)。

現在我有幾個問題:

  1. 難道我們認爲這種情況下被監督的學習?我問 ,因爲我不認爲這是一個分類問題(混淆!)
  2. 我應該使用什麼算法來訓練等。
  3. 再培訓應該經常做的,我應該怎麼解決這個 問題,所以我不會從頭開始訓練,每次(微調?)
+0

我無法理解圖像A.圖像A的作用是什麼? – cagatayodabasi

+0

圖像A由我提供給系統,並且userx提供圖像B,並且如果圖像B與A(顏色和類)相似,則系統應該向用戶x檢索圖像A. – iNDicator

回答

1
  1. 這可能是一個監督的學習。您可以將圖像分類爲兩個圖像,如果兩個圖像處於相同的類別(或關閉某個類別),則可以將它們視爲相似。

  2. 可以使用傳統的深層神經網絡的imagenet如inception model。初始模型輸出1000個類別的概率圖(這是一個其值總和爲1的向量)。您可以計算兩幅圖像的矢量的距離以獲得它們的相似度。

  3. 在成立之初模型的同一頁,你還可以找到的說明重新訓練模型:https://github.com/tensorflow/models/tree/master/inception#how-to-fine-tune-a-pre-trained-model-on-a-new-task

+0

謝謝,我會看看最初的模型,看看我可以如何將它用於我的目的 – iNDicator

3

難道我們認爲這種情況下被監督的學習?

當你有標籤來優化你的模型時,它是監督學習。所以對於大多數神經網絡來說,它是受監督的。

但是,你也可以看看完整的任務。我猜你對圖像對沒有任何基礎事實,並且你的模型應該輸出的「期望」相似度值?來解決這個問題,其聽起來固有無監督

的一種方法是取訓練(在監督方式)一個CNN(卷積神經網絡)上的1000級圖像淨的。爲了得到兩幅圖像的相似度,可以簡單地取出輸出概率分佈的歐氏距離。這不會導致出色的結果,但可能是一個很好的先發。

  • 什麼算法,我應該使用培訓等。
  • 首先,你應該定義什麼是 「相似」 是指你。當兩個圖像包含相同的對象(類)時,它們是否相似?如果圖像的一般顏色相同,它們是否相似?

    例如,如何相似的以下3個圖像對?

    enter image description here

    enter image description here

    enter image description here

    看一看FaceNet並搜索 「基於內容的圖像檢索」(CBIR):

    +0

    謝謝你的回答。基本上,當我說「相似」時,我正在談論圖像的類和它的顏色。例如在你的例子中,最後一個球應該與我的情況下的第二個圖像「相似」! – iNDicator

    +0

    @iNDicator在這種情況下,分類方法(對ImageNet進行預培訓並比較概率分佈)應該給出可接受的結果。 –

    +0

    如上所述,初期v3似乎是一個好的開始。我也注意到,很少有人申請最近的鄰居搜索,但我關注其性能/緩慢。 – iNDicator