基于AWS的3D模型搜索服务实现

3D模型广泛应用于计算机游戏、电影、工程、零售业、广告等许多领域。市场上有很多制作3D模型的工具,但几乎没有工具可以直观地搜索3D模型数据库以找到类似的3D模型 因为开发好的 3D 模型搜索工具非常具有挑战性。 它需要复杂的计算和 AI/ML 框架来创建模型描述符并提取特征向量、数据库来保存和索引大量形状数据以及在大型数据集上进行近实时模式匹配。

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

1、要解决的业务问题

在这篇文章中,让我们了解 3D 模型业务中的实际业务问题,并了解如何在 AWS 云上实施该解决方案。

让我们从一个假设的业务问题开始。 工程设计公司 X 在旧数据存储中存储了大量 3D 模型,他们希望开展一项新业务来在线销售其模型。 公司希望提供使用照片、手绘或 3D 模型对象进行视觉搜索的服务,并找到匹配的 3D 模型,以便客户可以轻松选择和购买他们想要的模型。

在这里,X 公司在遗留数据库中拥有大量 3D 模型。 第一步是将模型下载到云存储(最好是 S3)并提取这些模型的形状和特征数据,然后对数据建立索引,以便将相似的模型分组在一起并实现高效搜索。

2、特征生成和索引

下图说明了形状和特征数据生成和索引的架构。
在这里插入图片描述

以下是实施该解决方案所需采取的步骤。

  • 配置提供无服务器批量计算平台的 AWS Batch 以运行连接到旧数据库并将 3D 模型文件下载到 S3 存储桶的服务。 可以安排它每晚运行。
  • 实施 AWS Lambda 函数来处理 S3 存储桶中下载的 3D 模型,并使用形状表示算法生成形状数据。 生成的形状数据应存储在 Amazon DynamoDB 中。 可以配置此 Lambda 函数以触发 S3 存储桶放置事件。
  • 实施另一个 AWS Lambda 函数,以不同角度创建 3D 模型的多个快照,并将它们作为图像存储在 S3 存储桶中。
  • 使用在众所周知的 ImageNet 数据集上预先训练的卷积神经网络 (CNN) 模型从生成的图像中提取特征,或者使用 Amazon SageMaker 训练和部署的模型
  • Amazon SageMaker 是一个完全托管的机器学习平台,允许创建、训练和部署 在 AWS 云中快速部署机器学习模型。 使用此模型,可以提取图像纹理、几何数据和元数据并将其存储在 Amazon DynamoDB 中。
  • 创建另一个 lambda 函数,以使用步骤 4 中提取的特征数据来丰富步骤 2 中生成的形状数据。现在形状数据已使用特征数据来丰富。 形状数据是一组浮点数。 下一步是将相似的形状分组在一起。
  • 使用 AWS lambda 函数,在 Amazon OpenSearch Service 上构建参考 k-NN 索引,这是一项完全托管的服务,可让你轻松、经济高效地大规模部署、保护和运行弹性搜索。 Amazon OpenSearch Service 提供 k-最近邻 (k-NN) 搜索,可以将形状数据存储为向量,并使用 k-NN 算法按欧几里得距离或余弦相似度对相似的形状数据进行分组。

现在,我们已经生成了富含特征的形状描述符,并使用 k 最近邻 (k-NN) 算法对它们进行了索引。 接下来,展示 3D 模型或模型的 2D 视图(你可以使用工具绘制前视图、顶视图和侧视图)以查询应用程序,以从 Amazon OpenSearch 中的索引数据中查找类似模型。

3、3D模型搜索

下图描述了从模型存储库中查找相似模型的实时 3D 模型搜索的架构。
在这里插入图片描述

  • 使用 S3 中托管的 Web 应用程序,你可以上传 3D 模型对象(如果有),也可以使用草图应用程序绘制模型的顶视图、前视图和侧视图,并将视图作为图像上传。 如果从不同角度呈现更多视图图像,将获得更准确的结果。
  • 上传的图像通过 Amazon API Gateway 发送到 AWS Lambda。
  • AWS Lambda 函数将为上传的模型/图像生成形状描述符,然后调用 Amazon SageMaker 实时端点来提取特征数据。
  • AWS Lambda 函数将利用特征数据丰富形状描述符。
  • AWS Lambda 函数将查询发送到 Amazon Elastic Search Service (Amazon OpenSearch Service) 索引中的 k 最近邻。 它将返回 k 个相似模型数据的列表,并返回模型各自的 Amazon S3 URI。
  • AWS Lambda 函数生成预签名的 Amazon S3 URL 以返回到客户端 Web 应用程序以可视化类似的模型。

本文的目的是解释使用 AWS 服务在 AWS 云上进行 3D 模型搜索服务的架构和高级实现细节。 添加了下面的常见问题解答部分以提供更多详细信息。

4、常见问题解答

  • 什么是 3D 形状描述符?

3D 形状描述符是一组数字,用于表示 3D 模型表面上的点,以捕获 3D 对象的几何本质。 它是 3D 对象的紧凑表示,描述符形成具有有意义的距离度量的向量空间。

  • 如何生成 3D 形状描述符?

有许多算法可用于生成 3D 形状描述符。 他们生成一组 2D 视图数据,这些数据是通过以不同角度旋转 3D 模型而生成的。 更多视图产生更高的准确性。 流行的算法是光场描述符(LFD)和多视图卷积神经网络(MVCNN)。

  • 什么是预训练 CNN 模型?

预训练模型是由某人创建和训练的模型,用于解决与我们遇到的问题类似的问题。 在我们的例子中,我们可以使用预先训练的 resnet50 卷积神经网络,该网络经过 ImageNet 数据库中超过一百万张图像的训练。 resnet50 可作为 SageMaker 中的内置算法使用。

  • 什么是 SageMaker?

它是一项完全托管的机器学习服务,可快速轻松地构建和训练机器学习模型,然后直接将其部署到生产就绪的托管环境中。

  • Amazon Elastic Search Service 与 Amazon OpenSearch Service。

Amazon Elastic Search Service 现在更名为 Amazon OpenSearch Service,它提供最新版本的 OpenSearch 以及由 OpenSearch 仪表板和 Kibana 提供支持的可视化功能。 它使你能够轻松摄取、保护、搜索、聚合、查看和分析大量数据。

  • Amazon OpenSearch Service 的 k-NN 是什么?

它允许你在向量空间中搜索点,并通过欧几里得距离或余弦相似度找到这些点的“k 个最近邻”。


原文链接:基于AWS的3D模型搜索 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/104227.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【React源码实现】元素渲染的实现原理

前言 本文将结合React的设计思想来实现元素的渲染,即通过JSX语法的方式是如何创建为真实dom渲染到页面上,本文基本不涉及React的源码,但与React的实现思路是一致的,所以非常适合小白学习,建议跟着步骤敲代码&#xff…

Docker consul的容器服务注册与发现

前言一、服务注册与发现二、consul 介绍三、consul 部署3.1 consul服务器3.1.1 建立 Consul 服务3.1.2 查看集群信息3.1.3 通过 http api 获取集群信息 3.2 registrator服务器3.2.1 安装 Gliderlabs/Registrator3.2.2 测试服务发现功能是否正常3.2.3 验证 http 和 nginx 服务是…

CRM系统如何定制?定制哪些功能?

虽然市场上有许多成熟的CRM系统供企业选择,但很多时候,现有的标准化CRM系统无法满足企业的特殊需求。这时就需要进行CRM系统定制。那么,什么时候需要CRM系统定制,CRM系统定制怎么弄?下面我们就说一说。 什么时候需要C…

缓存的设计方式

问题情况: 当有大量的请求到内部系统时,若每一个请求都需要我们操作数据库,例如查询操作,那么对于那种数据基本不怎么变动的数据来说,每一次都去数据库里面查询,是很消耗我们的性能 尤其是对于在海量数据…

【Winform学习笔记(九)】Winform窗体程序延迟函数

Winform窗体程序延迟函数 前言正文1、具体代码2、使用示例 前言 Winform 窗体程序开发时,有时需要程序延迟或休眠几秒,如果直接使用 Thread.Sleep() 方法,会造成程序的假死,UI 界面停止响应; 本文中主要介绍一种方法&…

VB.NET调用VB6封装在OCX控件中的函数

将功能函数封装于OCX之中在VB6平台上可以简单化,在默认模板中直接考贝贴入那些函数即可。在博文【将《VB6编程IEEE浮点算法实践》中的Function封装成OCX】将《VB6编程IEEE浮点算法实践》中的Function封装成OCX_Mongnewer的博客-CSDN博客中对VB6的OCX封装做了具体实践…

keepalived+lvs(DR)(四十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、作用 二、调度器配置 三、web节点配置 一、作用 使用keepalived解决lvs的单点故障 高可用集群 二、调度器配置 安装keepalived yum install -y k…

OVRL-V2: A simple state-of-art baseline for IMAGENAV and OBJECTNAV 论文阅读

论文信息 题目:OVRL-V2: A simple state-of-art baseline for IMAGENAV and OBJECTNAV 作者:Karmesh Yadav, Arjun Majumdar, Ram Ramrakhya 来源:arxiv 时间:2023 代码地址: https://github.com/ykarmesh…

whisper 语音识别项目部署

1.安装anaconda软件 在如下网盘免费获取软件: 链接:https://pan.baidu.com/s/1zOZCQOeiDhx6ebHh5zNasA 提取码:hfnd 2.使用conda命令创建python3.8环境 conda create -n whisper python3.83.进入whisper虚拟环境 conda activate whisper4.…

vue uniapp 同意验证码滑块验证

前言 &#xff08;vue-puzzle-vcode&#xff09; 发送验证码以及登录的时候会做验证&#xff0c;防止机刷等 效果图 一、安装依赖 npm install vue-puzzle-vcode --save二、使用步骤 1.html使用 <Vcode :show"isShow" success"onSuccess"/>2.j…

数据降维 | MATLAB实现T-SNE降维特征可视化

数据降维 | MATLAB实现T-SNE降维特征可视化 目录 数据降维 | MATLAB实现T-SNE降维特征可视化降维效果基本描述程序设计参考资料 降维效果 基本描述 T-SNE降维特征可视化&#xff0c;MATLAB程序。 T-分布随机邻域嵌入&#xff0c;主要用途是对高维数据进行降维并进行可视化&…

Anolis 8.6 下 Redis 7.2.0 集群搭建和配置

Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵…

SpringCloud学习笔记(六)_Ribbon服务调用

Ribbon介绍 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具 Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时、重试等。简单的说&#xff0c;就是…

java八股文面试[Spring]——如何实现一个IOC容器

什么是IOC容器 IOC不是一种技术&#xff0c;只是一种思想&#xff0c;一个重要的面向对象编程的法则&#xff0c;它能指导我们如何设计出松耦合&#xff0c;更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象&#xff0c;从而导致类与类之间高耦合&#xff0c;难于…

生成式人工智能的潜在有害影响与未来之路(三)

产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域&#xff0c;旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害&#xff1a;设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…

LinkedList的顶级理解

目录 1.LinkedList的介绍 LinkedList的结构 2.LinkedList的模拟实现 2.1创建双链表 2.2头插法 2.3尾插法 2.4任意位置插入 2.5查找关键字 2.6链表长度 2.7遍历链表 2.8删除第一次出现关键字为key的节点 2.9删除所有值为key的节点 2.10清空链表 2.11完整代码 3.…

聚观早报 | 云鲸扫拖机器人J4体验;芯科科技第三代无线开发平台

【聚观365】8月24日消息 云鲸扫拖机器人J4体验 芯科科技推出第三代无线开发平台 英伟达与VMWare宣布扩大合作 万物新生&#xff08;爱回收&#xff09;2023年二季度财报 充电桩需求增长带动汽车后服务市场 云鲸扫拖机器人J4体验 家庭卫生清洁是每个人都无法回避的事情&am…

Unity 类Scene窗口相机控制

类Scene窗口相机控制 &#x1f354;效果 &#x1f354;效果 传送门&#x1f448;

疫情下社区管理系统的设计与实现(论文+源码)_kaic

疫情下社区管理系统 摘 要&#xff1a;新冠疫情下的社区人员管理系统是基于SpringBoot搭建的一套前后端分离系统。面向疫情下的社区管理人员和社区用户&#xff0c;主要用于进行社区服务&#xff0c;进行高效的社区人员管理。具有一定的经济效益和社会效益。本文分析了新冠疫情…

上门服务系统|上门服务小程序如何提升生活质量?

上门服务其实就是本地生活服务的升级&#xff0c;上门服务包含很多行业可以做的。例如&#xff1a;厨师上门、上门家电维修、跑腿等等。如今各类本地化生活服务越来越受大家的喜爱。基于此市场愿景&#xff0c;我们来谈谈上门服务系统功能。 一、上门服务系统功能 1、预约服务…