其關於來自Frank Denis先生的php的libpuzzle libray(http://libpuzzle.pureftpd.org/project/libpuzzle)。我試圖瞭解如何索引和存儲我的MySQL數據庫中的數據。矢量的生成是絕對沒有問題的。Libpuzzle索引數百萬張照片?
例子:
# Compute signatures for two images
$cvec1 = puzzle_fill_cvec_from_file('img1.jpg');
$cvec2 = puzzle_fill_cvec_from_file('img2.jpg');
# Compute the distance between both signatures
$d = puzzle_vector_normalized_distance($cvec1, $cvec2);
# Are pictures similar?
if ($d < PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD) {
echo "Pictures are looking similar\n";
} else {
echo "Pictures are different, distance=$d\n";
}
這就是所有我清楚 - 但現在怎麼辦時,我有圖片> 1.000.000的大量我的工作?我計算矢量並將其與文件名存儲在數據庫中?如何現在找到相似的圖片?如果我將每個向量存儲在mysql中,我必須打開每條記錄並使用puzzle_vector_normalized_distance函數計算距離。這過程利用了大量的時間(打開每個數據庫條目 - 把它扔功能,...)
我讀的lib拼圖libaray自述,發現如下:
將它一起工作一個擁有數百萬張照片的數據庫?
典型的圖像簽名只需要182個字節,使用內置的 壓縮/解壓縮功能。
相似的簽名共享相同的「單詞」,即。相同位置處的值相同的 序列。通過使用複合索引(字+ 位置),可能類似向量的集合大大減少了 ,並且在大多數情況下,實際上並不需要向量計算得到 。
通過單詞和位置進行索引還可以很容易地將 數據拆分爲多個表和服務器。
所以,是的,拼圖庫與 項目需要索引數百萬張照片是完全不兼容的。
而且我發現這個描述關於索引:
------------------------分度----- -------------------
如何快速找到類似的圖片,如果他們是數百萬記錄?
原始紙張有一個簡單而有效的答案。
以固定長度的單詞剪切矢量。例如,讓我們考慮 以下矢量:
[ABCDEFGHIJKLMNOPQRSTU VWXYZ]
隨着字長(K)的10,就可以得到下面的話:
[ABCDEFGHIJ]在位置0找到[bcdefghijk] 發現在1位[cdefghijkl]發現在位置2等 直到位置N-1
然後,索引你與(字+位置)的化合物索引向量。
即使有數百萬的圖像,K = 10和N = 100也應該足以讓 只有很少的條目共享相同的索引。
這裏是一個非常基本的示例數據庫模式:
+-----------------------------+
| signatures |
+-----------------------------+
| sig_id | signature | pic_id |
+--------+-----------+--------+
+--------------------------+
| words |
+--------------------------+
| pos_and_word | fk_sig_id |
+--------------+-----------+
我建議拆分至少「字」表分成多個 表和/或服務器。
默認情況下(lambas = 9)簽名長度爲544個字節。爲了節省 的存儲空間,可以通過puzzle_compress_cvec()函數將它們壓縮到其原始大小的三分之一(原來的 大小)。在使用之前,它們必須使用puzzle_uncompress_cvec()進行解壓縮。
我認爲壓縮是錯誤的方式,因此我必須在比較之前解壓縮每個矢量。
我現在的問題是 - 如何處理數百萬張照片,以及如何快速有效地比較它們。我不能理解「切割矢量」應該如何幫助我解決我的問題。
非常感謝 - 也許我可以在這裏找到與libpuzzle libaray一起工作的人。
乾杯。
這是很好的信息 - 謝謝。爲了澄清一下,你是否真的嘗試了這個 - 或者它只是「理論上」?不會影響賞金,但有興趣看到正在實施的工作。特別是似乎您的索引可能需要調整才能運行有效的查詢。 – barryhunter 2012-03-21 14:28:38
這是理論,我對libpuzzle沒有直接的經驗,我只是想提供一些代碼來擴展libpuzzle文檔中的例子,主要是作爲練習。 – Jason 2012-03-21 15:20:32
快速提示...我們實際上實施了(稍加修改)以上......作品像魅力!和...低看,比較準確,然後運行拼圖比較函數圖像與圖像...到目前爲止,我們已經嘗試了20的實力......並且幾乎獲得了100%準確的結果,爲我們的400萬強大的圖像基地......謝謝! – 2013-03-25 11:50:56