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

购物网站的建设的好处装修企业网站源码

购物网站的建设的好处,装修企业网站源码,wordpress cms 制作,搜狗seo刷排名软件图像嵌入在现代计算机视觉领域扮演着明星角色#xff0c;它使得计算机能够像人类一样识别出各种各样的图像。由于计算机只能处理数字信息#xff0c;我们需要将图像转换成数字向量#xff0c;并存储在向量数据库中#xff0c;这样就能迅速地检索到它们。 谈到嵌入技术它使得计算机能够像人类一样识别出各种各样的图像。由于计算机只能处理数字信息我们需要将图像转换成数字向量并存储在向量数据库中这样就能迅速地检索到它们。 谈到嵌入技术它们的种类繁多。过去我们不得不手动为图像添加数字标签但随着深度学习技术的出现计算机已经能够自动完成这项工作并且做得越来越好。它甚至可以根据一个文本提示创造出一张图像。 本文我们将探讨这些技术并讨论在不同情况下应该选择哪种技术。文章的后半部分我们将一起动手构建一个图像搜索系统亲自体验这些技术的实际应用。 理解图像嵌入 图像嵌入就像是给图像做了一个全方位的数字快照把图像的所有信息都打包成一个密集的向量。这个向量里头包含了图像的各种特征比如它的形状、纹理、颜色和构图等等。有了这个向量计算机就能做很多事情比如给图像分类、搜索信息或者把图像里的东西分开。 图 1将图像表示为数值或嵌入图像 这个向量可以在一个特定的空间里表示图像它可以是稀疏的也可以是密集的。更多向量嵌入的细节可参见《LLM向量嵌入知多少》或《大话LLM之向量嵌入》。稀疏向量只保留那些非零的信息这样能节省内存但有时候可能会漏掉一些细节。而密集向量则包含了所有细节对于处理复杂的任务特别有帮助。 以前的图像模型都得靠人手工去编码那可是个累活。但现在不一样了我们有了深度学习的算法可以让计算机自动去学习和理解图像中的复杂数据和模式。这些神经网络能捕捉到图像的细节还能建立起各种细微的联系让整个处理过程更高效结果也更准确。 传统的图像处理技术比较有限一般只适用于小规模或者特定的数据集。早期的技术会用到颜色直方图和视觉词汇袋这样的概念。 颜色直方图就是把图像里每种颜色的像素数量给统计一下然后画出来。用这个来认图像或者找相似的图像挺有用的因为差不多的图像颜色直方图也差不多。不过呢这个方法虽然挺厉害的但也不是万能的。有时候两个完全不同的东西颜色直方图却可能差不多这就容易产生误会了。而且颜色直方图它只管颜色不管图像里的空间关系所以有时候用它来做分类就不太靠谱。 图 2颜色直方图如何映射不同颜色通道的值以及整个图像中每种颜色的像素数量 视觉词汇袋Bag of Visual Words这个概念挺有意思的。它就像是一本字典里面收录了图像里最显眼的特征。这些特征被分成不同的类别每个类别都代表一种特定的特征集合。然后我们用这本字典来给图像打分看看图像里哪些特征出现得最频繁就用这些特征来描述这张图像。 不过这个方法也有它的问题。有时候那些出现次数很多的特征其实跟图像的真实内容没啥关系。如果咱们只盯着这些特征看就可能会误解图像的意思得到错误的信息。所以虽然视觉词汇袋听起来很酷但用起来还得小心点儿。 图 3视觉词汇袋的工作原理展示了如何使用距离矩阵比较区域 虽说这些技术算不上大获全胜但它们绝对是图像嵌入技术发展史上的重要里程碑。 现在咱们有了像CNN这样的深度学习模型可以在ImageNet这种巨大的数据集上进行训练。ImageNet这个数据集包含了数百万张已经标注好的图片这些图片被分成了各种各样的类别和子类别用WordNet数据集来标注。通过在这么大的数据集上训练CNN模型能够生成非常精确的图像嵌入这对于图像识别和分类任务来说简直是神器。 图 4VGG-16 的架构这是一个在 2014 年引入的 CNN 模型 CNN模型由两部分组成卷积块和分类块。卷积块的职责是把复杂的图像转换成一个低维的密集向量更多关于密集向量详见《密集向量Dense Vectors最大化机器学习中数据的潜力》这个向量里头包含了图像的所有重要信息比如空间特征、颜色、纹理等等。卷积块处理完之后就会生成一个包含图像精髓的密集向量。然后这个向量就会进入分类块给图像打上正确的标签。分类的过程就是把分类块的结果和实际的标签进行比较。 还有一种叫做ViT的模型也就是视觉变换器它用了自注意力和位置嵌入技术来处理图像数据。ViT把图像切成一小块一小块的然后把这些小块送进模型里计算出向量再和其他向量比较生成对齐分数。ViT的这种设计允许模型同时处理多个数据这样训练起来就快多了也能在大型数据集上进行预训练。预训练好的模型还可以根据需要进行微调以适应不同的应用场景。 图 5ViT 模型概述 CNN处理图像的方式是仔细检查每个像素而ViT则是把图像切成一小块一小块的补丁来处理。CNN生成的向量信息量很大包含了图像的方方面面而ViT则是用这些小补丁的向量来计算它们之间的对齐分数。ViT的好处在于它能够快速处理整个图像因为它是按顺序来的而CNN得一个像素一个像素地处理相比之下ViT就快多了。 然后咱们再聊聊CLIP这是一个超酷的机器学习模型它可以用文本和图像来识别图片。CLIP有两个变换器一个处理文本数据另一个处理图像数据。这两类数据在向量空间里是相似的所以它们能对应上相似的文本和图像内容。 CLIP的训练方式也很特别它是用那些意思相近的文本和图像对来训练的。比如如果给CLIP一张红苹果的图片再给它一段描述这个苹果的文本比如“一个甜美的红苹果”CLIP就能通过它的文本和图像变换器生成相似的向量。这个技术对于改进图像搜索功能来说可是个大大的进步哦。 图 6CLIP 模型的工作简单插图可以看到如何使用文本-图像对进行训练 CLIP这个模型它能做零样本学习也就是说它不需要事先训练就能识别和分类物体。这给图像搜索系统带来了很多新的可能性 比如说CLIP可以根据一段纯文本的描述在图像中找到并且识别出相应的物体哪怕这些物体类别它之前没有专门训练过。 它的零样本学习能力还能帮助我们通过文本查询来检索图像这对于图像搜索系统来说简直是个神器。 另外计算机视觉领域里还有个超级有趣的突破就是扩散模型。这种模型可以根据给定的文本描述或者参考图像生成全新的图像。 图 7在每一步向输入数据添加噪声然后尝试通过执行去噪算法构建原始数据 扩散模型的训练过程有点像玩一个游戏每过一关就给输入的数据加点噪声。到了最后一关模型就得用它学到的本事通过去噪把原始的数据或者类似的数据给还原出来。 嵌入模型做的事情就是把输入的数据转换成一串串数字这些数字就像是数据的身份证号码。这些身份证号码就存在一个特别的地方叫做向量数据库。比如说我们可以用Milvus这样的向量数据库来存图像的身份证号码然后根据这些号码来找到对应的图像。 传统数据库和向量数据库在搜索上有个很大的不同。传统数据库就像是去找一个完全匹配的身份证而向量数据库则是去找长得差不多的身份证。这种找相似的方法用的是近似最近邻ANN算法。向量数据库用这个算法来找到那些空间上比较接近的向量。所以对于同一个查询我们可以得到好几个结果这些结果都和查询的图像挺像的。 向量数据库还有一个好处就是能帮我们存储和索引那些不容易整理的数据比如图片或者视频。这些数据库里的特殊算法能让我们几乎立刻就找到和查询相关的信息。 接下来我们要用Milvus和Timm这两个工具从零开始搭建一个图像搜索系统。Milvus是一个超级厉害的开源向量数据库能帮我们处理几百万条数据的最近邻搜索。而Timm是一个深度学习库里面有很多模型可以帮助我们生成图像的身份证号码。 要搭建一个图像搜索系统首先得安装一些必要的库。就像下面这样得用命令来安装 !pip install pymilvus --upgrade !pip install timm !pip install gdown装这些之前还得确保你已经装好了其他一些需要的东西比如 Torch Numpy sklearn pillow接下来要开始写代码得先导入一些必要的模块 import torch import gdown import os import timm from sklearn.preprocessing import normalize from timm.data import resolve_data_config from timm.data.transforms_factory import create_transform from pymilvus import MilvusClient from PIL import Image在这篇文章里我们会用到Caltech-101数据集。这个数据集包含了101个不同类别的物体图像每个图像都只标了一个物体。每个类别大概有40到800张图像总共加起来大约有9000张图像。这些图像大小不一但通常边长在200到300像素之间。 数据集的文件夹排列得整整齐齐的看起来大概是这样 ---Caltech-101\---test\---ant\---0.jpg\---1.jpg\---....jpg\--train\---aeroplane\---0.jpg\---1.jpg\---....jpg下载这个数据集之前得先处理一下包括准备好数据集和一个CSV文件之后会用这个CSV文件来检索图像。可以用下面的命令来下载和解压数据集 url  drive_url output  Caltech-101.zip gdown.download(url, output, quietFalse)下载好了之后就这样解压 !unzip -q -o Caltech-101.zip接下来可以用Pandas这个库来查看一下数据集代码如下 df  pd.read_csv(Caltech-101/image_search.csv) df.head()运行后你会看到类似这样的表格 IDPathLabel0./train/ant/image_0033.jpgant1./train/ant/image_0037.jpgant2./train/ant/image_0013.jpgant……… 这样数据集就准备得差不多了。接下来我们可以在Milvus里创建一个集合用来存放和搜索图像了。 就像我们用的传统数据库一样Milvus也允许我们创建数据库还能给不同的用户设置权限来管理这些数据库。 这个MilvusClient是Pymilvus的一个更友好的版本它让我们用起来更简单也隐藏了原始SDK里的一些复杂操作。用这个客户端的create_collection API我们可以创建一个新的集合就像下面这样 client  MilvusClient(uriexample.db)client.create_collection(collection_nameimage_embeddings,vector_field_namevector,dimension512,auto_idTrue,enable_dynamic_fieldTrue,metric_typeCOSINE, )这段代码就是用来设置集合的名字、向量字段的名字还有向量的维度是512。集合的ID会自动生成这个维度512的向量会作为嵌入字段的主键。 我们的文本-图像搜索系统会用到深度神经网络从图像和文本里提取出嵌入向量然后再和存在Milvus里的那些向量做个比较。 为了做到这一点我们会用到Timm这个库它是PyTorch图像模型的简称也是PyTorch生态系统里很流行的一个库。Timm提供了很多最先进的预训练图像分类模型还有训练和评估时会用到的工具。 接下来我们会用Timm里的Resnet-34模型来从图像中提取嵌入向量。下面的代码里我们会定义一个FeatureExtractor类这个类会加载模型和必要的配置然后处理图像最后把处理好的图像送给模型去提取特征。 class FeatureExtractor:def __init__(self, modelname):# 加载预训练模型self.model  timm.create_model(modelname, pretrainedTrue, num_classes0, global_poolavg)self.model.eval()self.input_size  self.model.default_cfg[input_size]config  resolve_data_config({}, modelmodelname)self.preprocess  create_transform(**config)def __call__(self, imagepath):input_image  Image.open(imagepath).convert(RGB)input_image  self.preprocess(input_image)input_tensor  input_image.unsqueeze(0)with torch.no_grad():output  self.model(input_tensor)feature_vector  output.squeeze().numpy()return normalize(feature_vector.reshape(1, -1), norml2).flatten() 现在我们要用之前定义好的FeatureExtractor来让模型干活了就是对指定文件夹里的图像进行处理。 extractor  FeatureExtractor(resnet34) root  ./Caltech-101/trainfor dirpath, foldername, filenames in os.walk(root):for filename in filenames:if filename.endswith(.jpg):filepath  dirpath  /  filenameimage_embedding  extractor(filepath)client.insert(image_embeddings,{vector: image_embedding, filename: filepath},)这段代码会遍历Caltech-101/train目录下的所有.jpg文件为每张图片生成一个嵌入向量然后把这个向量和图片的文件路径一起插入到Milvus数据库的image_embeddings集合中。 好了我们已经把图像的嵌入向量都存到Milvus里了。接下来我们要在测试数据集上检验一下效果。 在这一部分我们要用Milvus的搜索API来查东西。我们会告诉Milvus我们想要搜索的集合、要查询的图像还有我们用余弦距离作为搜索的度量标准。这样我们就能看看当我们输入一个图像查询时Milvus能不能找到最相似的图像了。 query_image  ./test/laptop/image_0001.jpgresults  client.search(image_embeddings,data[extractor(query_image)],output_fields[filename],search_params{metric_type: COSINE}, ) 测试和优化您的图像搜索系统 在行业中对图像搜索进行测试是一个艰难的过程但有几个步骤可以帮助我们进行测试 多样化数据集选择得选一个包含各种类型、风格、清晰度和光线条件的图像的数据集这样才能全面测试系统处理图像的能力。 真实标注为了让检索系统的准确性有据可依我们需要用真实的标签或注释来标注数据集这些可以包括类别、标签或描述等元数据。 基准测试把系统的性能和现有的标准或者最先进的方法比一比看看我们的系统效果如何哪里还需要改进。 现实场景在模拟真实使用环境的情况下测试系统要考虑不同类型的查询输入、复杂度和用户的行为模式。 用户反馈把用户的反馈也考虑进来这样可以帮助我们不断改进系统。 测试完系统后可能还需要做一些优化这里有几条建议 选择有效的数据类型在存储嵌入时为了存储效率我们要充分利用数据类型的全部容量。比如在Milvus中使用FLOAT16_VECTOR这样的数据类型可以存储半精度的嵌入从而优化内存和带宽的使用。 在更好和平均模型之间找平衡有时候选择一个过于强大的模型并不实用因为可能难以扩展。我们要选一个既能胜任工作又容易扩展的模型。比如CLIP的两个变体ViT-B/16和ViT-B/32我们可能会选择尺寸较小的ViT-B/16来快速生成嵌入。 总是使用GPUGPU在处理并行任务时效率很高可以显著提升系统效率。这使得训练过程可以分布式进行也能显著加速嵌入操作。 创建索引数据库索引可以帮助我们快速访问数据库中的记录。我们可以在Milvus中为嵌入列创建IVF_FLAT类型的索引这是一种基于量化的索引使用近似最近邻搜索ANNS来提供快速搜索。创建索引的代码大概长这样 index_params  MilvusClient.prepare_index_params() index_params.add_index(metric_typeCOSINE, Index_typeIVF_FLAT, params{nlist:512} ) client.create_index(collection_name你的集合名,index_paramsindex_params)根据你的具体情况Milvus还支持许多其他的索引类型供你选择。 用例和现实世界的应用 图像嵌入在图像搜索系统中确实扮演了超级英雄的角色它在很多地方都能大显身手比如 在电子商务领域通过图像嵌入我们可以像在淘宝、京东这样的App里那样用一张图片来搜相似的产品。这些App的图像搜索系统能够让用户通过上传一张图片就找到他们想要的商品。 图像嵌入和向量数据库还能在制造过程中帮忙检测图像异常。如果发现相似性分数很低那就说明可能存在质量问题这有助于我们控制产品的质量。 对于文本到图像的搜索图像嵌入为用户提供了一个非常宝贵的工具。比如Airbnb就利用图像嵌入和向量数据库把用户的文本描述转换成相关的租赁物业图片。 在这篇文章里我们聊了图像嵌入和它的各种技术。像颜色直方图和视觉词汇袋这样的老方法虽然有它们的局限性但也催生了像CNN和变换器这样的先进技术。这些新方法在图像搜索领域表现得相当不错为大多数现代嵌入模型打下了坚实的基础。 再后来像DALL-E和Imagen这样的扩散模型也加入了这场竞赛。这些模型能够根据文本描述生成逼真的图像从头开始创造简直是魔法一样 总之人工智能这个领域正在飞速发展无论是文本、图像还是视频各种类型的数据都在变得越来越智能。
http://www.dnsts.com.cn/news/27728.html

相关文章:

  • 微信小程序定制开发报价方案杭州网站优化方案
  • qq空间刷赞推广网站正规网站开发文案
  • 韩城市网站建设局电话wordpress怎么下载文件
  • emulate wordpress无锡优化推广
  • 做玉的网站广东网页设计师的公司排名
  • 胶州建设信息网站制作logo免费网站
  • 公司门户网站建设公司商标logo创意免费一键生成
  • 郑州网站建设熊掌号专门代做毕设的网站
  • 做网站放哪个科目一键生成网站
  • 南宁网站seo推广优化公司厨具 技术支持东莞网站建设
  • 优质的南昌网站建设做平台网站怎么做
  • 北京优秀网站建设阿里建站价格
  • 在线买房网站建设 方案网站框架布局
  • 公司网站不备案吗青岛网站建设在哪
  • 北京北站苏州网站建设教程
  • 怎样建网站卖东西郑州网站设计费用
  • 网站三层结构示意图天津港建设公司官网
  • 做网站朋友圈广告的文案怎么写旅游网
  • 地方生活门户网站有哪些400网站建设价格
  • 建站网络公司页面设计的标准有哪些
  • 安庆做网站河北省永清县建设局网站
  • 网站建设规划方案ppt网站建设方案流程
  • 用jsp做网站有什么好处焦溪翠冠梨做的网站
  • 可做百度百科参考资料的网站市场策划方案
  • 电子政务系统网站建设的基本过程dede古风类网站源码
  • wordpress仿站难吗wordpress识图搜索代码
  • 二级域名网站怎么建设网站建设看什么书
  • 网站报价方案快站优惠券去哪里找
  • 仿制网站好的营销网站
  • 网站制作专业的公司重庆公司专业建站