当前位置: 首页 > news >正文

dz比wordpress速度快惠州网站seo收费

dz比wordpress速度快,惠州网站seo收费,石家庄有什么好玩的地方,wordpress加站点描述我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如#xff0c;我可以拍一双鞋或其他产品的照片#xff0c;然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目#xff0c;只要有合适的工具。如果我们可以将问题定义为…我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如我可以拍一双鞋或其他产品的照片然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目只要有合适的工具。如果我们可以将问题定义为向量搜索问题那么我们就可以使用 Postgres 来解决它 在这篇博文中我们将使用Postgres构建一个基本的图像搜索引擎。我们将使用预先训练的模型为图像和文本生成嵌入然后将这些嵌入存储在 Postgres 中。pgvector扩展将使我们能够使用图像和原始文本作为查询对这些嵌入进行相似性搜索。 使用 CLIP 和 Postgres 进行图像搜索 2021 年OpenAI 发表了一篇论文和CLIP对比语言-图像预训练的模型权重该模型经过训练可以预测给定图像的最相关文本片段。通过一些巧妙的实现此模型还可以用作搜索引擎的主干该搜索引擎接受图像和文本作为输入查询。我们可以将图像转换为向量嵌入将图像的嵌入存储在 Postgres 中使用扩展对这些向量进行相似性搜索并使用它在 Postgres 之上构建图像搜索引擎。Hugging Face 上有许多CLIP 模型的开源变体但我们将使用 OpenAI 的clip-vit-base-patch32 模式进行演示。 在之前的博客中我们写过关于为语义文本搜索生成嵌入的内容。其中一些原则也适用于此。我们将为数据存储库生成嵌入在本例中是图像目录。然后我们将这些嵌入存储在 Postgres 中。当我们查询数据时我们需要使用相同的模型来为查询生成嵌入。不同之处在于在这种情况下我们的模型将为文本和图像生成嵌入。 在本示例中我们将使用 OpenAI 在 Hugging Face 上提供的开源CLIP模型之一。请注意 CLIP 在生产中的使用存在限制。使用这些模型非常方便因为它们的接口可在transformers Python 库中找到。 使用图像嵌入加载 Postgres 首先我们需要获取原始图像。我们使用来自 Kaggle 的 Amazon Products 数据集。该数据集包含每个示例产品的图像 URL因此我们将下载图像并将其存储在目录中。 在本例中我们将把图像文件存储在本地但在生产系统中您可以将它们存储在 S3 等云存储服务中。 import pandas as pddf pd.read_csv(data/amazon_product.csv)for i, row in df.iterrows():url row[product_photo]asin row[asin]response requests.get(url)img Image.open(BytesIO(response.content))if img.mode RGBA:img img.convert(RGB)img.save(f./data/{asin}.jpg)接下来我们需要为获取的图像生成嵌入。我们将在 Postgres 中设置一个表来存储嵌入。 CREATE TABLE IF NOT EXISTS image_embeddings (image_path TEXT PRIMARY KEY,embeddings VECTOR(512) );我们将使用 CLIP 模型为每个图像生成嵌入并将它们保存到 Postgres 表中。并创建一些辅助函数来加载图像、生成嵌入并将它们插入到 Postgres 中。 from pydantic import BaseModel from transformers import (CLIPImageProcessor,CLIPModel, )MODEL openai/clip-vit-base-patch32image_processor CLIPImageProcessor.from_pretrained(MODEL) image_model CLIPModel.from_pretrained(MODEL)class ImageEmbedding(BaseModel):image_path: strembeddings: list[float]def get_image_embeddings(image_paths: list[str], normalizeTrue ) - list[ImageEmbedding]:# Process image and generate embeddingsimages []for path in image_paths:images.append(Image.open(path))inputs image_processor(imagesimages, return_tensorspt)with torch.no_grad():outputs image_model.get_image_features(**inputs)image_embeddings: list[ImageEmbedding] []for image_p, embedding in zip(image_paths, outputs):if normalize:embeds F.normalize(embedding, p2, dim-1)else:embeds embeddingimage_embeddings.append(ImageEmbedding(image_pathimage_p,embeddingsembeds.tolist(),))return image_embeddingsdef list_jpg_files(directory: str) - list[str]:# List to hold the full paths of filesfull_paths []# Loop through the directoryfor filename in os.listdir(directory):# Check if the file ends with .jpgif filename.endswith(.jpg):# Construct full path and add it to the listfull_paths.append(os.path.join(directory, filename))return full_pathsdef pg_insert_embeddings(images: list[ImageEmbedding]):init_pg_vector CREATE EXTENSION IF NOT EXISTS vector;init_table CREATE TABLE IF NOT EXISTS image_embeddings (image_path TEXT PRIMARY KEY, embeddings VECTOR(512));insert_query INSERT INTO image_embeddings (image_path, embeddings)VALUES (%s, %s)ON CONFLICT (image_path)DO UPDATE SET embeddings EXCLUDED.embeddings;with psycopg.connect(DATABASE_URL) as conn:with conn.cursor() as cur:cur.execute(init_pg_vector)cur.execute(init_table)for image in images:cur.execute(insert_query, (image.image_path, image.embeddings))我们的辅助函数是这样的让我们按顺序执行它们。 # get the paths to all our jpg images images list_jpg_files(./images) # generate embeddings image_embeddings get_image_embeddings(images) # insert them into Postgres pg_insert_embeddings(image_embeddings)快速验证嵌入是否已插入 Postgres。我们应该看到 psql postgres://postgres:postgreslocalhost:5433/postgres \x select image_path, embeddings from image_embeddings limit 1;image_path | ./data/B086QB7WZ1.jpg embeddings | [0.01544646,0.062326625,-0.03682831,0 ...使用pgvector搜索相似图片 现在我们有了为文本生成嵌入的函数我们可以在向量相似度搜索查询中使用这些嵌入。pgvector 支持多种距离运算符但在本例中我们将使用余弦相似度。我们要搜索的嵌入存储在Postgres中因此我们可以使用 SQL 进行余弦相似度搜索1 - 余弦相似度并找到嵌入与文本查询的嵌入最相似的图像。 def similarity_search(txt_embedding: list[float]) - list[tuple[str, float]]:with psycopg.connect(DATABASE_URL) as conn:with conn.cursor() as cur:cur.execute(SELECTimage_path,1 - (embeddings %s::vector) AS similarity_scoreFROM image_embeddingsORDER BY similarity_score DESCLIMIT 2;,(txt_embedding,),)rows cur.fetchall()return [(row[0], row[1]) for row in rows]与使用原始文本对数据进行向量搜索类似我们将使用嵌入来搜索相似的图像。让我们抓取一张Cher的图像我们可以从她的维基百科页面使用该图像。将其保存到./cher_wikipedia.jpg。 现在我们可以将单个图像传递到我们的get_image_embeddings()函数中然后使用“similarity_search()”搜索相似的图像。 search_embeddings get_image_embeddings([./cher_wikipedia.jpg])[0].embeddings results similarity_search(search_embeddings)for image_path, score in results[:2]:print((image_path, score))(B0DBQY1PKS.jpg, 0.5851975926639095) (B0DBR4KDRF.jpg, 0.5125825695644287)产品B0DBQY1PKS和B0DBR4KDRF雪儿的“Forever”专辑是与我们的雪儿形象最相似的两种产品。 使用原始文本查询图像 在搜索产品时搜索相似的图片非常有用。但是有时人们会希望根据给定的文本字符串来搜索图片。例如Google 早就具备了搜索猫图片的功能。 from transformers import (CLIPTokenizerFast,CLIPTextModel,CLIPImageProcessor )MODEL openai/clip-vit-base-patch32processor CLIPProcessor.from_pretrained(MODEL) clip_model CLIPModel.from_pretrained(MODEL)def get_text_embeddings(text: str) - list[float]:inputs processor(text[text], return_tensorspt, paddingTrue)text_features clip_model.get_text_features(**inputs)text_embedding text_features[0].detach().numpy()embeds text_embedding / np.linalg.norm(text_embedding)return embeds.tolist()最后我们可以使用这些函数生成嵌入然后使用原始文本查询搜索我们的图像。我们将在产品目录中搜索“电话”的图像。 text_embeddings get_text_embeddings(telephones)results: list[tuple[str, float]] similarity_search(search_embeddings)for image_path, score in results[:2]:print((image_path, score))(./data/B086QB7WZ1.jpg, 0.26320752344041964) (./data/B00FRSYS12.jpg, 0.2626421138474824)产品B086QB7WZ1和B00FRSYS12是与文本查询“电话”最相似的两幅图像。 Postgres 上的多模式搜索 我们已经从概念上展示了如何在 Postgres 上构建多模式搜索引擎。提醒一下本博客中的代码可在Tembo Github 存储库中找到。我们使用 CLIP 模型为图像和文本生成嵌入然后将这些嵌入存储在 Postgres 中。我们使用扩展pgvector对这些嵌入进行相似性搜索。这是一个强大的工具可用于构建可以接受文本和图像查询的搜索引擎。关注 Tembo 博客了解有关 Postgres 上矢量搜索用例的更多信息。 其他阅读材料 如果您对此主题感兴趣请查看geoMusings博客上有关使用 pgvector 进行图像相似性分析的内容。另请阅读《视觉表征对比学习的简单框架》ICML2020Ting ChenSimon Kornblith、Mohammad Norouzi、Geoffrey E. Hinton。 #PG证书#PG考试#postgresql培训#postgresql考试#postgresql认证
http://www.hkea.cn/news/14287093/

相关文章:

  • 网站设计素材免费下载网站建设定制设计
  • 柳州做网站的企业alexa的网站排名主要分为哪两种
  • 莆田外贸自建网站交互设计是什么意思
  • 丽江网站建设南昌网站开发模板
  • 网站的术语产品推广广告
  • 最优的网站建设wordpress 安全选项
  • 在线开发网站建设江西门户网站建设
  • 英文免费网站模板吕梁营销型网站建设费用
  • 网站与网站自动跳转代码西青网站建设
  • 网站地图深度做多少合适如何组做网站
  • 如何架设个人网站wordpress joomla
  • 全美网站建设企业文化馆展厅设计
  • tp框架做餐饮网站东莞建设监督网站
  • 网站底部版权信息西宁建一个网站公司
  • 可以更改上传到网站的文件内容吗wordpress大学主
  • 网站开发应注意哪些问题推广宝
  • 静态网站结构如何更新最便宜的域名注册商
  • 前端如何做响应式网站做网站用什么程序比较好
  • 桂林 网站建站网络营销包括哪些内容
  • 旅游网站建设方案背景描述做设计素材网站有哪些
  • 网站广告调词平台公众号开发者id
  • 建设跨境电商网站深圳网页设计师工资是多少
  • 上海网站建设选缘魁-企查建设宁夏分行互联网站
  • 找人做网站上线后被投诉侵权网页设计制作详细流程
  • 福建省建设干部网站免费的短视频app大全下载软件
  • 网站建设谈单技巧小程序开发接单
  • 营销型网站建设公司比较专业经典网站设计欣赏
  • 房县建设局网站千锋培训价目表
  • 图片站wordpress模板怎么做企业推广
  • 广西建设主管部门网站大良建站公司行业现状