国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
目錄
學(xué)習(xí)目標(biāo)
用例:T恤和Polos的視覺建議
步驟1:了解圖像嵌入
什麼是圖像嵌入?
嵌入方式是如何生成的?
步驟2:獲取數(shù)據(jù)集
步驟3:用QDRANT存儲(chǔ)和搜索向量
搜索類似的圖像
步驟4:用反饋創(chuàng)建推薦引擎
步驟5:精簡(jiǎn)構(gòu)建UI
首頁 科技週邊 人工智慧 時(shí)尚推薦系統(tǒng)使用快速的QDRANT

時(shí)尚推薦系統(tǒng)使用快速的QDRANT

Jul 08, 2025 am 09:56 AM

推薦系??統(tǒng)無處不在。從Netflix和Spotify到Amazon。但是,如果您想構(gòu)建視覺推薦引擎怎麼辦?查看圖像的一個(gè),不僅是標(biāo)題或標(biāo)籤?在本文中,您將建立男士時(shí)尚推薦系統(tǒng)。它將使用圖像嵌入和QDRANT矢量數(shù)據(jù)庫(kù)。您將從原始圖像數(shù)據(jù)轉(zhuǎn)到實(shí)時(shí)視覺建議。

目錄

  • 學(xué)習(xí)目標(biāo)
  • 用例:T恤和Polos的視覺建議
    • 步驟1:了解圖像嵌入
    • 步驟2:獲取數(shù)據(jù)集
    • 步驟3:用QDRANT存儲(chǔ)和搜索向量
    • 步驟4:用反饋創(chuàng)建推薦引擎
    • 步驟5:精簡(jiǎn)構(gòu)建UI
  • 結(jié)論
  • 常見問題

學(xué)習(xí)目標(biāo)

  • 圖像嵌入如何表示視覺內(nèi)容
  • 如何將快速播放用於矢量生成
  • 如何使用qdrant存儲(chǔ)和搜索向量
  • 如何構(gòu)建反饋驅(qū)動(dòng)的推薦引擎
  • 如何使用簡(jiǎn)化創(chuàng)建簡(jiǎn)單的UI

用例:T恤和Polos的視覺建議

想像一下用戶點(diǎn)擊時(shí)尚的polo襯衫。您的時(shí)尚推薦系統(tǒng)不使用產(chǎn)品標(biāo)籤,而是會(huì)推薦看起來相似的T恤和Polos。它使用圖像本身來做出決定。

讓我們探索如何。

步驟1:了解圖像嵌入

什麼是圖像嵌入?

嵌入圖像是向量。它是數(shù)字列表。這些數(shù)字代表圖像中的關(guān)鍵特徵。兩個(gè)類似的圖像具有嵌入在矢量空間中的嵌入。這使系統(tǒng)可以測(cè)量視覺相似性。

例如,兩種不同的T卹在像素方面看起來可能不同。但是,如果它們具有相似的顏色,圖案和紋理,它們的嵌入將接近。這是時(shí)尚推薦系統(tǒng)的關(guān)鍵能力。

時(shí)尚推薦系統(tǒng)使用快速的QDRANT

嵌入方式是如何生成的?

大多數(shù)嵌入模型都使用深度學(xué)習(xí)。 CNN(卷積神經(jīng)網(wǎng)絡(luò))提取視覺模式。這些模式成為矢量的一部分。

在我們的案例中,我們使用快速培訓(xùn)。這裡使用的嵌入模型是:QDRANT/UNICOM-VIT-B-32

從快速培訓(xùn)的導(dǎo)入imagembedding
從輸入導(dǎo)入列表
來自dotenv import load_dotenv
導(dǎo)入操作系統(tǒng)

load_dotenv()
型號(hào)= imagembedding(os.getenv(“ image_embedding_model”))

def compute_image_embedding(image_paths:list [str]) - > list [float]:
    返回列表(model.embed(image_paths))

此功能獲取圖像路徑的列表。它返回捕獲這些圖像本質(zhì)的向量。

步驟2:獲取數(shù)據(jù)集

我們使用了大約2000個(gè)男性時(shí)尚圖像的數(shù)據(jù)集。您可以在Kaggle上找到它。這是我們加載數(shù)據(jù)集的方式:

導(dǎo)入Shutil,OS,KaggleHub
來自dotenv import load_dotenv

load_dotenv()
kaggle_repo = os.getEnv(“ kaggle_repo”)
路徑= kagglehub.dataset_download(kaggle_repo)
target_folder = os.getEnv(“ data_path”)

def getData():
    如果不是OS.PATH.EXISTS(target_folder):
        shutil.copytree(路徑,target_folder)

該腳本檢查目標(biāo)文件夾是否存在。如果沒有,它將復(fù)制那裡的圖像。

步驟3:用QDRANT存儲(chǔ)和搜索向量

嵌入後,我們需要存儲(chǔ)和搜索它們。這是Qdrant進(jìn)來的地方。這是一個(gè)快速且可擴(kuò)展的矢量數(shù)據(jù)庫(kù)。

這是連接到QDRANT矢量數(shù)據(jù)庫(kù)的方法:

來自qdrant_client導(dǎo)入qdrantclient

客戶端= qdrantclient(
    url = os.getEnv(“ qdrant_url”),
    api_key = os.getEnv(“ qdrant_api_key”),,
)
這就是如何將圖像與嵌入到Qdrant集合中的圖像:
班級(jí)矢量店:
    def __init __(self,embed_batch:int = 64,upload_batch:int = 32,parallel_uploads:int = 3):
        #...(簡(jiǎn)短省略了初始化代碼)...

    def insert_images(self,image_paths:list [str]):
        def塊(可見,大小):
            對(duì)於我的範(fàn)圍(0,len(iTable),大?。?                產(chǎn)生效果[i:我尺寸]

        對(duì)於塊中的批次(image_paths,self.embed_batch):
            嵌入= compute_image_embedding(批次)#批處理
            點(diǎn)= [
                models.pointStruct(id = str(uuid.uuid4()),vector = emb,有效載荷= {“ image_path”:img})
                對(duì)於EMB,IMG在zip中(嵌入,批次)
            這是給出的

            #批次上傳每個(gè)子批次
            self.client.upload_points(
                collection_name = self.collection_name,
                點(diǎn)=點(diǎn),
                batch_size = self.upload_batch,
                並行= self.parallel_uploads,
                max_retries = 3,
                等待= true
            )

此代碼獲取圖像文件路徑的列表,將它們分批地變成嵌入式,然後將這些嵌入到QDRANT集合中。它首先檢查集合是否存在。然後,它使用線程並行處理圖像以加快速度。每個(gè)圖像都會(huì)獲得獨(dú)特的ID,並將其嵌入和路徑包裹在“點(diǎn)”中。然後將這些點(diǎn)上傳到QDRANT中。

搜索類似的圖像

def search_similar(query_image_path:str,limit:int = 5):
    EMB_LIST = Compute_image_embedding([query_image_path])
    hits = client.search(
        collection_name =“ fashion_images”,
        query_vector = emb_list [0],
        限制=限制
    )
    返回[{“ id”:h.id,“ image_path”:h.payload.get(“ image_path”)for HITS中的h]

您提供查詢圖像。該系統(tǒng)返回使用餘弦相似性指標(biāo)在視覺上相似的圖像。

步驟4:用反饋創(chuàng)建推薦引擎

我們現(xiàn)在走得更遠(yuǎn)。如果用戶喜歡一些圖像並不喜歡其他圖像怎麼辦?時(shí)尚推薦系統(tǒng)可以從中學(xué)習(xí)嗎?

是的。 Qdrant允許我們提供正面和負(fù)面的反饋。然後,它返回更好,更個(gè)性化的結(jié)果。

班級(jí)推薦Engine:
    def get_recommendations(self,likeed_images:list [str],defiked_images:list [str],limit = 10):
        推薦=客戶端。
            collection_name =“ fashion_images”,
            正=喜歡的_images,
            負(fù)=不喜歡的_images,
            限制=限制
        )
        返回[{“ id”:hit.id,“ image_path”:hit.payload.get(“ image_path”)} for在推薦中的命中]

這是此功能的輸入:

  • Liked_images:代表用戶喜歡的項(xiàng)目的圖像ID列表。
  • 不喜歡的_images:代表用戶不喜歡的項(xiàng)目的圖像ID列表。
  • 限制(可選):一個(gè)整數(shù)指定要返回的最大建議數(shù)(默認(rèn)為10)。

使用前面提出的嵌入矢量相似性,這將返回推薦的衣服。

這使您的系統(tǒng)適應(yīng)。它可以快速學(xué)習(xí)用戶偏好。

步驟5:精簡(jiǎn)構(gòu)建UI

我們使用簡(jiǎn)化來構(gòu)建接口。這很簡(jiǎn)單,快速,用python寫成。

時(shí)尚推薦系統(tǒng)使用快速的QDRANT

時(shí)尚推薦系統(tǒng)使用快速的QDRANT

用戶可以:

  • 瀏覽衣服
  • 喜歡或不喜歡物品
  • 查看新的,更好的建議

這是簡(jiǎn)化的代碼:

導(dǎo)入簡(jiǎn)報(bào)為ST
從PIL導(dǎo)入圖像
導(dǎo)入操作系統(tǒng)

來自SRC.Recommendation.Engine Import Repucionation Engine
來自src.vector_database.VectorStore Import VectorStore
來自src.data.get_data import getData

#--------------- config -------------------------------------------------------------------------------
st.set_page_config(page_title =“?男士時(shí)尚推薦”,佈局=“ wide”)
images_per_page = 12

#----------------確保存在數(shù)據(jù)集(一次)-------------------------------------------------------------------------------------------
@st.cache_resource
Defitize_data():
    getData()
    return vectorstore(),推薦engine()

vector_store,depusendation_engine = initialize_data()

#------------------會(huì)話狀態(tài)默認(rèn)----------------------------------------------------------------------------
session_defaults = {
    “喜歡”:{},
    “不喜歡”:{},
    “ current_page”:0,
    “ pepusended_images”:vector_store.points,
    “ vector_store”:vector_store,
    “推薦_engine”:推薦_engine,
}

對(duì)於鍵,值session_defaults.items()中的值:
    如果不在st.Session_state中的關(guān)鍵:
        St.Session_state [key] =值

#-----------------------------------------------------------------------------------------------------------------------------------------------------------
與聖德巴爾:
    聖提特(“?男人時(shí)尚推薦”)

    St.MarkDown(“”
    **發(fā)現(xiàn)適合您口味的時(shí)尚風(fēng)格。 **  
    喜歡 ?還是不喜歡?服裝並收到為您量身定制的AI驅(qū)動(dòng)建議。
    ”“”)

    St.MarkDown(“ ###?數(shù)據(jù)集”)
    St.MarkDown(“”
     - 來源:[Kaggle  -  Virat164/fashion-database](https://www.kaggle.com/datasets/virat164/fashion-database)  
     -  ?2,000個(gè)時(shí)尚圖像
    ”“”)

    St.MarkDown(“ ###?它如何工作”)
    St.MarkDown(“”
    1。圖像嵌入到矢量空間中  
    2。您通過類似/不喜歡提供偏好  
    3。 QDRANT在視覺上找到相似的圖像  
    4。結(jié)果實(shí)時(shí)更新
    ”“”)

    St.MarkDown(“ ###???技術(shù)”)
    St.MarkDown(“”
     -  **簡(jiǎn)化** UI  
     -  ** qdrant **矢量數(shù)據(jù)庫(kù)  
     -  ** Python **後端  
     -  ** pil **用於圖像處理  
     -  ** Kaggle API **用於數(shù)據(jù)
    ”“”)

    St.MarkDown(“ ---”)
#-----------------核心邏輯功能-----------------------------------------------------------------------------------
def get_recommendations(喜歡_ids,feviked_ids):
    返回st.Session_state.recommendation_engine.get_recommendations(
        liked_images = liked_ids,
        不喜歡的=不喜歡的_ids,
        限制= 3 * images_per_page
    )

def refresh_recommendations():
    liked_ids = list(st.Session_state.liked.keys())
    defiked_ids = list(st.Session_state.disliked.keys())
    st.Session_state.Recommended_images = get_recommendations(liked_ids,defiked_ids)

#--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
def display_selected_images():
    如果不是st.Session_state.liked,而不是St.Session_state.disliked:
        返回

    St.MarkDown(“ ###?您的選擇”)
    cols =聖克洛姆(6)
    images = st.Session_state.vector_store.points

    對(duì)於我(img_id,狀態(tài))
        列表(st.Session_state.liked.items())列表(st.Session_state.disliked.items())
    ):
        img_path = next((img [“ image_path”)對(duì)於IMG中的img [img [“ id”] == img_id),無)
        如果img_path和os.path..exists(img_path):
            與COLS [I%6]:
                St.Image(img_path,use_container_width = true,字幕= f“ {img_id}({status})”)
                COL1,COL2 = St.Columns(2)
                如果col1.button(“?刪除”,key = f“ remove_ {img_id}”):
                    如果狀態(tài)==“喜歡”:
                        del St.Session_state.liked [img_id]
                    別的:
                        del St.Session_state.disliked [img_id]
                    refresh_recommendations()
                    St.Rerun()

                如果col2.button(“?switch”,key = f“ switch_ {img_id}”):
                    如果狀態(tài)==“喜歡”:
                        del St.Session_state.liked [img_id]
                        st.Session_state.disliked [img_id] =“不喜歡”
                    別的:
                        del St.Session_state.disliked [img_id]
                        st.session_state.liked [img_id] =“喜歡”
                    refresh_recommendations()
                    St.Rerun()

#----------------------------------------------------------------------------------------------------------------------------------
def display_gallery():
    St.MarkDown(“ ###?智能建議”)

    page = st.Session_state.current_page
    start_idx = page * images_per_page
    end_idx = start_idx images_per_page
    current_images = st.Session_state.Recommended_images [start_idx:end_idx]

    cols =聖克洛姆(4)
    對(duì)於IDX,枚舉中的IMG(current_images):
        與COLS [IDX%4]:
            如果OS.PATH.EXISTS(IMG [“ image_path”]):
                St.Image(img [“ image_path”],use_container_width = true)
            別的:
                聖沃寧(“未找到圖像”)

            COL1,COL2 = St.Columns(2)
            如果col1.button(“?like”,key = f“ bike_ {img ['id']}”):
                st.Session_state.liked [img [“ id”]] =“喜歡”
                refresh_recommendations()
                St.Rerun()
            如果col2.button(“?不喜歡”,key = f“不喜歡_ {img ['id']}”):
                st.Session_state.disliked [img [“ id”]] =“不喜歡”
                refresh_recommendations()
                St.Rerun()

    #分頁
    col1,_,col3 =聖克洛姆([1,2,1])
    與Col1:
        如果St.Button(“??上一個(gè)”)和頁> 0:
            st.Session_state.current_page- = 1
            St.Rerun()
    與Col3:
        如果St.Button(“ Next”)和END_IDX <len st.session_state.current_page="1" st.rerun display_selected_images st.divider display_gallery><h2>結(jié)論</h2>
<p>您剛剛建立了一個(gè)完整的時(shí)尚推薦系統(tǒng)。它可以看到圖像,了解視覺特徵並提出明智的建議。</p>
<p>使用快速培養(yǎng),QDRANT和簡(jiǎn)化,您現(xiàn)在擁有一個(gè)強(qiáng)大的推薦系統(tǒng)。它適用於T卹,Polos和任何男士服裝,但可以適應(yīng)其他基於圖像的建議。</p>
<h2>常見問題</h2>
<strong>圖像嵌入中的數(shù)字是否代表像素強(qiáng)度?</strong><p>不完全是。嵌入式中的數(shù)字捕獲語義特徵,例如形狀,顏色和紋理,而不是原始像素值。這有助於系統(tǒng)理解圖像背後的含義,而不僅僅是像素?cái)?shù)據(jù)。</p>
<strong>該建議系統(tǒng)需要培訓(xùn)嗎?</strong><p>否。它在嵌入空間中利用矢量相似性(例如餘弦相似性)來查找視覺上相似的項(xiàng)目,而無需從頭開始訓(xùn)練傳統(tǒng)模型。</p>
<strong>我可以微調(diào)或訓(xùn)練自己的圖像嵌入模型嗎?</strong><p>是的,你可以。訓(xùn)練或微調(diào)圖像嵌入模型通常涉及Tensorflow或Pytorch和標(biāo)記的數(shù)據(jù)集等框架。這使您可以根據(jù)特定需求自定義嵌入。</p>
<strong>是否可以使用文本查詢嵌入圖像?</strong><p>是的,如果您使用多模型將圖像和文本映射到同一向量空間中。這樣,您可以搜索帶有文本查詢的圖像,反之亦然。</p>
<strong>我應(yīng)該始終使用快速培養(yǎng)的嵌入嗎?</strong><p>快速培訓(xùn)是快速有效嵌入的絕佳選擇。但是有許多選擇,包括來自O(shè)penAI,Google或Groq的模型。選擇取決於您的用例和性能需求。</p>
<strong>我可以使用qdrant以外的矢量數(shù)據(jù)庫(kù)嗎?</strong><p>絕對(duì)地。受歡迎的替代品包括Pinecone,Weaviate,Milvus和Vespa。每個(gè)都有獨(dú)特的功能,因此請(qǐng)選擇最適合您的項(xiàng)目要求的功能。</p>
<strong>該系統(tǒng)是否類似於檢索增強(qiáng)發(fā)電(RAG)?</strong><p>否。儘管兩者都使用向量搜索,但RAG將檢索與語言生成集成在一起,以進(jìn)行問題回答等任務(wù)。在這裡,重點(diǎn)純粹是視覺相似性建議。</p></len>

以上是時(shí)尚推薦系統(tǒng)使用快速的QDRANT的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
Kimi K2:最強(qiáng)大的開源代理模型 Kimi K2:最強(qiáng)大的開源代理模型 Jul 12, 2025 am 09:16 AM

還記得今年早些時(shí)候破壞了Genai行業(yè)的大量開源中國(guó)模型嗎??jī)嵐蹹eepSeek佔(zhàn)據(jù)了大多數(shù)頭條新聞,但Kimi K1.5是列表中的重要名字之一。模型很酷。

Grok 4 vs Claude 4:哪個(gè)更好? Grok 4 vs Claude 4:哪個(gè)更好? Jul 12, 2025 am 09:37 AM

到2025年中期,AI“軍備競(jìng)賽”正在加熱,XAI和Anthropic都發(fā)布了他們的旗艦車型Grok 4和Claude 4。這兩種模型處?kù)对O(shè)計(jì)理念和部署平臺(tái)的相反端,但他們卻在

今天已經(jīng)在我們中間走了10個(gè)驚人的人形機(jī)器人 今天已經(jīng)在我們中間走了10個(gè)驚人的人形機(jī)器人 Jul 16, 2025 am 11:12 AM

但是我們可能甚至不必等10年就可以看到一個(gè)。實(shí)際上,可以被認(rèn)為是真正有用的,類人類機(jī)器的第一波。 近年來,有許多原型和生產(chǎn)模型從T中走出來

Leia的浸入式移動(dòng)應(yīng)用將3D深度帶入日常照片 Leia的浸入式移動(dòng)應(yīng)用將3D深度帶入日常照片 Jul 09, 2025 am 11:17 AM

基於Leia專有的神經(jīng)深度引擎,應(yīng)用程序流程靜止圖像,並添加了自然深度以及模擬運(yùn)動(dòng)(例如Pans,Zooms和Alallax Effects),以創(chuàng)建簡(jiǎn)短的視頻捲軸,從而給人以踏入SCE的印象

上下文工程是&#039; new&#039;及時(shí)的工程 上下文工程是&#039; new&#039;及時(shí)的工程 Jul 12, 2025 am 09:33 AM

直到上一年,迅速的工程被認(rèn)為是與大語言模型(LLM)互動(dòng)的關(guān)鍵技能。然而,最近,LLM在推理和理解能力方面已經(jīng)顯著提高。自然,我們的期望

7種AI代理的7種類型是什麼? 7種AI代理的7種類型是什麼? Jul 11, 2025 am 11:08 AM

想像一些複雜的東西,例如AI引擎準(zhǔn)備提供有關(guān)米蘭新服裝系列的詳細(xì)反饋,或者自動(dòng)市場(chǎng)分析用於全球運(yùn)營(yíng)的企業(yè),或者智能係統(tǒng)管理大型車隊(duì)。

這些AI模型沒有學(xué)習(xí)語言,他們學(xué)習(xí)了策略 這些AI模型沒有學(xué)習(xí)語言,他們學(xué)習(xí)了策略 Jul 09, 2025 am 11:16 AM

倫敦國(guó)王學(xué)院和牛津大學(xué)的研究人員的一項(xiàng)新研究分享了Openai,Google和Anthropic在基於迭代囚犯的困境基於的cutthroat競(jìng)爭(zhēng)中一起投擲的結(jié)果。這是沒有的

隱藏的命令危機(jī):研究人員遊戲AI將發(fā)布 隱藏的命令危機(jī):研究人員遊戲AI將發(fā)布 Jul 13, 2025 am 11:08 AM

科學(xué)家發(fā)現(xiàn)了一種巧妙而令人震驚的方法來繞過系統(tǒng)。 2025年7月標(biāo)誌著一項(xiàng)精心製作的戰(zhàn)略,研究人員將無形的指示插入其學(xué)術(shù)意見 - 這些秘密指令是尾巴

See all articles