Chat with Milvus #17- Milvus tutorials與Phantoscope圖像搜索引擎上線啦!

點擊觀看完整視頻實錄

本週的 Milvus 線上會議中,我們與參加者分享了兩個好消息,一個是 Milvus 教程上線。以後你就可以更輕易的在 Milvus 官網上找到開發需的資源啦!

第二個好消息是大家期待已久的一個功能更強大的以圖搜圖系統 Phantoscope 推出了第一個版本。

Phantoscope 是一個基於 Milvus 與深度學習的雲原生圖像搜索引擎:十億級別的圖像的高性能搜索。完全兼容 Tensorflow、Pytorch、TensorRT、ONNX,XGBoost 等主流深度學習框架。提供 GUI 展示搜索效果、管理 Phantoscope 資源。原生支持 Docker 與 Kubernetes。

想知道更多的朋友, 歡迎點擊文章左下角的 “閱讀原文” 直接跳轉 GitHub:

https://github.com/zilliztech/phantoscope

那這個 Phantoscope 是什麼意思, 它應該怎麼念呢?貼心的小編都幫你準備好啦~

沒有時間看視頻的朋友, 也可以看看下面的部分文字實錄。

| Milvus Q&A 部分文字實錄

Attendee= 參會者

 時間戳

09:17-16:41 Attendee A;  16:47-24:00 Attendee B

24:20-31:40 Attendee C;  31:50-39:57 Attendee D

Attendee A:

我看到你們新開放了一個 Phantoscope, 那如果我想做一個以圖搜圖的功能,我是基於 Milvus Bootcamp 的示例還是 Phantoscope 來搭建?

Ryan@Milvus:

是這樣,因爲我們 Phantoscope 裏面其實它會包含比較強大的一些功能,比如講說你可能只是簡單的想去找到比較相近的一些照片,並沒有一些特定的場景,那其實你用我們之前提供的 Milvus 以圖搜圖的系統也是可以做的。

 

但是我是建議您可以嘗試一下 Phantoscope ,因爲 Phantoscope 這裏面會有比較強大的一些對象提取的功能,比如說您要搜圖片裏的一個內容的話,像是把裏面的一些動物專門提出來,通過 Phantoscope 你可以通過配置 pipeline,可以把圖片裏面具體的某一個物體給它提取出來,然後我們再對它進行相似性檢索。這樣的話你檢索的準確性,包括你整個檢索的效率,都會比之前我們 Milvus repo 裏面放的以圖搜圖的效果會好很多,但是如果你只是說想找一些相近的照片,並沒有一些特別的場景,你也可以先試一下我們 Milvus demo 裏面的內容。

 

Attendee A:

還有一個問題想請教一下,因爲我們搜索的結果其實是會跟業務相關聯,比如說我舉個例子:我收到這張圖片如果是一個人的話,可能我上傳一個頭像,這個頭像對應的是系統裏面的他的姓名或者是他的用戶 ID 什麼。這塊的話我看之前的示例的話,它那塊其實是向量算完以後,我們是自己去存儲業務關係對吧?你是這麼建議的對吧?

 

Ryan@Milvus:

是的。

 

Attendee A:

我搜完結果以後,我等於說還要反向的去從我相對來說還比較龐大的數據裏面,再去反向按 ID 搜回搜索結果,要多做一次這樣的操作。不過還好,因爲就按組件 ID 去搜,應該還好。

 

Ryan@Milvus:

是。我們之前做過一些測試,即使你在 10 億這個量級的話,你使用一個比如說結構化數據庫的話,加一個組件的話,其實你反向去搜效率其實非常快,大概就是幾個毫秒。我們之前做過一些驗證,所以說這個應該是對效率上沒有什麼特別的影響,應該是非常快的。

 

Attendee A:

還有第三個問題是想請教一下開發語言的問題,因爲像我們自己本身是做 Java 開發的,Python 懂一點點。但是我看整個技術上好像都是比較傾向於 Python,那我是不是應該用 Python 來做這樣的一個以圖搜圖的開發會更合理一點,還是說可以用 Java 來做?

 

Ryan@Milvus:

對,因爲我們提供的示例目前主要是以 Python 來做的,但是您看 Phantoscope 裏面,其實我們這裏面提供的接口就是 RESTful API 所以說你只要說是用一個 RESTful API 來調用的話,其實可能跟你的開發語言並沒有直接的關係。

其實我們 Milvus 本身也是有 Java 的 SDK 的,就看你怎麼喜歡,但是我覺得像可能目前在機器學習或者是在人工智能相關的一些應用的層面上面 Python 應該還是比較主流吧,然後您也可以選擇在 Python 方面去再多做一些嘗試。

 

Attendee B:

我試了一下搭一下你們的系統,然後以圖搜圖也能搜了,但是我們可能那個場景也有那種文字搜圖和以圖搜圖那種相結合的情況。你們這邊是不是隻是說以圖片這種形式來做?有沒有類似的這種比如說文字結合圖片一起搜?

 

Ryan@Milvus:

我理解您的文字搜圖,您的意思是說比如說我輸入一個火車,然後就可以把這個火車的圖片搜出來對吧?

 

Attendee B:

對,是不是技術棧也不太一樣?

 

Ryan@Milvus:

對。您講的場景用我們理解來講,可能是上一代的這種技術,就是我們在處理圖片的時候,其實是對圖片它先可能是做一些分類,有些模型對這些圖片進行一個對象提取和分類,然後分完類之後我們對這個圖打上一些標籤。我們在做的時候其實是很多的實現方法,可能就是通過一個倒排索引來加速對文本的搜索。你輸入一個火車就可以說通過它倒排索引找到它相應的圖片,然後把相應的火車給你拿出來。

 

所以我們現在以向量,以我們現在看到圖像內容來做檢索的算法,其實現在來講基於這種深度學習的神經網絡這種算法,它是直接通過深度學習的算法,把圖片的一些特徵提取成了向量。您就可以理解成比如說我們用人眼去看這兩個圖片是不是很相似,我們其實也是通過深度學習訓練,把模型訓練得能夠具備人類的這種這種判斷的模式,所以說如果我們可以找到我們肉眼覺得很像的圖片,這個模型應該是把這樣的一個圖片放到這上面來告訴你,給最像的火車打分。所以就像您說的,兩邊的技術其實是不太一樣的,它從模型包括圖片的預處理,包含最後的檢索的部分其實這個技術確實是不太一樣。

 

Attendee B:

明白,還有您剛開始介紹的那個 Phantoscope 那個裏面是不是也有一層,比如說你之前說傢俱的那種識別,比如說我知道這是個凳子或什麼,是不是也有這麼一層那種識別的功能,就比如說我給你的照片你知道這裏面是傢俱的那種提取?

 

Ryan@Milvus:

沒錯,其實就是我們前面提到的, Phantoscope 它是一個相對比較靈活的一個以圖搜圖的這麼一個套件。我們可以通過配置我們數據流處理的方式,比如講我們有 pipeline 流水線,就是說根據咱們實際的業務產品,比如你講到說去專門對傢俱進行一個精確檢索。你在這一個圖片裏面除了傢俱以外的這些目標你可能都不太關注,那我們這裏面就會有一些這樣的一個對象識別的模型。你這張圖片進來之後就先經過提取的模型之後,我們會把裏面你關心的這些物體給它提取出來,提取出來之後再把提取出來的這部分的照片,然後通過我們後面的 encoder 比如像您之前也用過的 Milvus 裏面有 VGG,包括有 Xception 這樣的一些 encoder 的這種神經網絡的模型,把它轉換成一個向量,然後再做這種相似性的檢索。

 

所以如果說您是有特定場景的那種以圖搜圖搜索的需求的話,你可以用我們 Phantoscope 提供的這種更爲全面的功能來實現。

 

Attendee B:

這種萬花筒 (Phantoscope )是不是要標註圖片?

 

Ryan@Milvus:

不需要的,現在我們萬花筒裏面提供的這些模型都是一些開源的相對比較成熟的一些模型,這些模型其實是不需要您再去給它打標註的。比如說我們裏面有大概4種對象提取的模型,其中有一個是專門提人臉的,還有剩下三種是相對比較通用的,對於比較通用的大概能識別到100多種物體,您就可以根據自己的這種需求,可以選擇比如說我在這100多種裏面,我就只識別裏面其中的一部分,你通過對模型的一些調整,可以只把你感興趣的這些東西從圖片裏識別出來,然後對它進行相似性的檢測,所以就可以達到一種精準的一個效果。

 

 

Attendee C 的場景數據量比較大, 召回要求 top 1, 有興趣的朋友可以看看視頻中 24:20-31:40 的部分

 

Attendee D:

我曾經做了一下  Facebook (FAISS)包裝,我想問一下你們和 Facebook 的庫比較起來的話有什麼區別?我自己評估了一下 Facebook 庫,在一個 million 級別的這種向量數量情況下的話,他要 build 一個 index,大概需要兩分半鐘左右。那你們 Milvus 對這種切片大小有沒有什麼指導?

 

Ryan@Milvus:

這個問題其實是這樣的,我們的理解其實 FAISS 跟我們並不在一個維度上,因爲FAISS 只是一個庫,但我們這邊其實做的是一個數據服務,我們這邊會有很多的這種易於部署、易於生產的這樣的一些特性,我們對 FAISS 的改進其實可能有一兩百項吧。因爲其實我們是用了 FAISS 的一些核心的算法,但是其實我們在它上面的改進是非常多的。比如您前面提到的說像這種文件的管理,就是文件分片的管理 FAISS 是沒有的,反正你內存有多大就速度多大,也沒有做這種分片來做內存管理。

 

Attendee D:

分佈式你們也做了是吧?

 

Ryan@Milvus:

對,分佈式我們現在是有一個原型系統,我們其實現在也正在打造下一個真正的分佈式的版本,我們也是正在研發中。不知道您現在是已經在 FAISS 上做了一些系統了嗎?還是說現在還是在調研階段?

 

我覺得從 Milvus 的使用的情況來講,我覺得你會發現我們基本上把你需要去考慮的 FAISS 那些亂七八糟的非向量檢索部分的那些功能,應該是我們都已經在 Milvus 裏幫咱們用戶都已經做完了,您就可以專注的去做比如說模型的訓練或者做系統的這種設計和架構的設計,然後能更好的去幫助你去部署應用。

Attendee D:

你剛纔說的分佈式現在有文檔嗎?我想了解就是你們的架構怎麼樣?

 

Ryan@Milvus:

目前來講,我們還在 plan 的階段。我們後續這些相關的一些文檔和我們的計劃會陸續的在社區裏面跟大家一起來分享。

| 歡迎加入 Milvus 社區

github.com/milvus-io/milvus | 源碼

milvus.io | 官網

milvusio.slack.com | Slack 社區

zhihu.com/org/zilliz-11/columns | 知乎

zilliz.blog.csdn.net | CSDN 博客

space.bilibili.com/478166626 | Bilibili

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章