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

基于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

相关文章:

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

3D模型广泛应用于计算机游戏、电影、工程、零售业、广告等许多领域。市场上有很多制作3D模型的工具,但几乎没有工具可以直观地搜索3D模型数据库以找到类似的3D模型 因为开发好的 3D 模型搜索工具非常具有挑战性。 它需要复杂的计算和 AI/ML 框架来创建模型描述符并提…...

pycharm远程连接docker容器

pycharm远程连接docker容器 1.根据镜像创建容器2.进入容器3.修改容器的root密码4. 容器安装openssh-server和openssh-client5.修改SSH配置文件6.重启ssh服务7. 退出测试8.配置pycharm并连接docker容器9. 选择docker环境 1.根据镜像创建容器 sudo docker run -itd --nameconn_t…...

开源全球地理空间数据可视化框架——Cesium学习(2023.8.21)

Cesium学习 2023.8.21 1、Cesium简介1.1 Github上的Cesium 2、Cesium下载安装使用2.1 方式一:页面在线引用2.2 方式二:页面离线使用2.3 方式三:完整项目使用 3、CesiumJS学习教程(快速上手 API文档)3、Cesium官方示例…...

RT-Thread学习日记——点亮LED

最近开始接触RT-Thread,后面会单独建立专栏以此记录我的学习过程,如果能给你的学习提供参考,本人倍感荣幸。 学习工具:正点原子战舰开发板 一、、点亮LED 在RT-Thread的配置项里搜索LED可以看到和LED相关的很多内容&#xff0c…...

粘包问题(TCP面向字节流批量发送数据导致)

粘包问题出现的原因 由于TCP协议网络传输数据的基本单位是字节流,所以当应用程序收到了传输的数据时,看到的是一连串的字节数据,而TCP协议网络传输数据有滑动窗口的机制(核心就是批量传输数据,推荐看TCP中窗口和滑动窗…...

selenium Chrome驱动下载地址

Chrome驱动官方最新版下载地址:https://googlechromelabs.github.io/chrome-for-testing/ 有稳定版,开发版等版本可以选择下载 选择 操作系统复制下载链接直接下载...

Linux命令200例:tar命令主要用于创建、查看和提取归档文件(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…...

【Django】Task4 序列化及其高级使用、ModelViewSet

【Django】Task4 序列化及其高级使用、ModelViewSet Task4主要了解序列化及掌握其高级使用,了解ModelViewSet的作用,ModelViewSet 是 Django REST framework(DRF)中的一个视图集类,用于快速创建处理模型数据的 API 视…...

FFMPEG RTMP流打开速度慢优化方法一

先上使用方法: codec_ctx->flags | AVFMT_FLAG_NOBUFFER; AVFMT_FLAG_NOBUFFER 标记如果没有设置,就会导致打开时探测的数据包丢AVFormatContext的缓存区中。 播放的时候,就从这些数据包开始,但是整个探测过程时间可能较长&…...

NextJs - Middleware(中间件)

中间件允许您在请求完成之前运行代码。然后,根据传入的请求,您可以通过重写、重定向、修改请求或响应标头或直接响应来修改响应。 中间件在缓存内容和路由匹配之前运行。 使用规则 使用项目根目录中的文件 middleware.ts(或 .js&#xff09…...

记录几个Hudi Flink使用问题及解决方法

前言 如题,记录几个Hudi Flink使用问题,学习和使用Hudi Flink有一段时间,虽然目前用的还不够深入,但是目前也遇到了几个问题,现在将遇到的这几个问题以及解决方式记录一下 版本 Flink 1.15.4Hudi 0.13.0 流写 流写…...

Go:测试框架GoConvey 简介

快速开始 GoConvey是一个完全兼容官方Go Test的测试框架,一般来说这种第三方库都比官方的功能要强大、更加易于使用、开发效率更高,闲话少说,先看一个example: package utils import (. "github.com/smartystreets/goconvey…...

JavaWeb-特殊文件(propertis与XML)

目录 Properties文件 一.properties介绍 二.properties使用 三.解决中文乱码问题 XML文件 一.XML介绍 二.XML文件的语法规则 三.XML的使用 Properties文件 一.properties介绍 1.什么是properties文件 Properties文件是一种常用的配置文件格式,用于存储键值…...

ffmpeg合并mp4视频文件

下载ffmpeg Download FFmpeg 2配置环境 右键此电脑-》属性-》高级系统设置 环境变量-》path 解压上面ffmpeg压缩包,找到bin目录,复制完整路径,添加到path环境变量中 测试ffmpeg ffmpeg合并MP4文件 创建一个文本文件,例如inpu…...

ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks使用分析

ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks使用分析 1 ATF的下载链接2 ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks处理流程2.1 ATF BL1/BL2 ufs_read_blocks2.2 ATF BL1/BL2 ufs_write_blocks 3 UFS System Model4 ufs_read_blocks/ufs_write_blocks详细分析4.1 ufs_re…...

Elasticsearch(十二)搜索---搜索匹配功能③--布尔查询及filter查询原理

一、前言 本节主要学习ES匹配查询中的布尔查询以及布尔查询中比较特殊的filter查询及其原理。 复合搜索,顾名思义是一种在一个搜索语句中包含一种或多种搜索子句的搜索。 布尔查询是常用的复合查询,它把多个子查询组合成一个布尔表达式,这些…...

解决Windows下的docker desktop无法启动问题

以管理员权限运行cmd 报错: docker: error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/create: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows,…...

LLM生成式 AI 项目生命周期Generative AI project lifecycle

在本课程的其余部分中,您将学习开发和部署LLM驱动应用所需的技巧。在这个视频中,您将了解一个能帮助您完成此工作的生成式AI项目生命周期。此框架列出了从构思到启动项目所需的任务。到课程结束时,您应该对您需要做的重要决策、可能遇到的困难…...

java高并发系列 - 第13天:JUC中的Condition对象

java高并发系列 - 第13天:JUC中的Condition对象 java高并发系列第13篇文章 本文内容 synchronized中实现线程等待和唤醒Condition简介及常用方法介绍及相关示例使用Condition实现生产者消费者使用Condition实现同步阻塞队列Object对象中的wait(),notify()方法,用于线程等待…...

【TTY子系统】printf与printk深入驱动解析

tty子系统解析 tty子系统是一个庞大且复杂,也是内核维护者所头大的子系统。 At a first glance, the TTY layer wouldn’t seem like it should be all that challenging. It is, after all, just a simple char device which is charged with transferring byte-o…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...