人工智能深度估计技术(中文翻译版)

版权声明:本文翻译自CSDN博主「沾花把玖」的原创文章,已遵循CC 4.0 BY-SA版权协议并获得对方同意,转载请附上两篇原文出处链接及本声明。
原文链接:人工智能深度估计技术_沾花把玖的博客-CSDN博客

人工智(能)走起!!!

在Hugging Face中找到Depth Estimation的model,如下图:

Hugging Face——人工智能社区建设未来。 

 (上Hugging Face要翻墙!你翻不翻我不管。。。)

1.单目深度估计Monocular depth estimation

单目深度估计是一项计算机视觉任务,涉及从单个图像预测场景的深度信息。换句话说,它是从单个摄像机视点估计场景中物体距离的过程。

单目深度估计有多种应用,包括 3D 重建、增强现实、自动驾驶和机器人技术。这是一项具有挑战性的任务,因为它要求模型理解场景中物体之间的复杂关系以及相应的深度信息,这些关系可能受到光照条件、遮挡和纹理等因素的影响。

本教程中演示的任务由以下模型架构支持:

DPTGLPN数据传输协议) 

在本指南中,您将学习如何: 

  • 创建(depth estimation pipeline)
  • 手动运行深度估计推理(depth estimation inference by hand)

在开始之前,请确保已安装所有必需的库:

pip install -q transformers

2.深度估计管道Depth estimation pipeline

尝试使用支持深度估计的模型进行推理的最简单方法是使用相应的 pipeline()  checkpoint on the Hugging Face Hub上实例化管道 :

from transformers import pipeline
 
checkpoint = "vinvino02/glpn-nyu"
depth_estimator = pipeline("depth-estimation", model=checkpoint)

 接下来,选择要分析的图像:

from PIL import Image
import requests
 
url = "https://unsplash.com/photos/HwBAsSbPBDU/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MzR8fGNhciUyMGluJTIwdGhlJTIwc3RyZWV0fGVufDB8MHx8fDE2Nzg5MDEwODg&force=true&w=640"
image = Image.open(requests.get(url, stream=True).raw)
image

 繁忙街道的照片

 将图像传递到pipeline。 

predictions = depth_estimator(image)

该管道返回一个包含两个条目的字典。第一个称为 predicted_depth,是一个张量,其值是每个像素以米为单位表示的深度;第二个,depth,是一个 PIL 图像,可视化深度估计结果。

我们看一下可视化结果:

predictions["depth"]

深度估计可视化 

3.手动深度估计推断Depth estimation inference by hand

现在您已经了解了如何使用Depth estimation pipeline,让我们看看如何手动复制相同的结果。

首先从checkpoint on the Hugging Face Hub加载模型和关联的处理器 。这里我们将使用与之前相同的checkpoint:

from transformers import AutoImageProcessor, AutoModelForDepthEstimation
 
checkpoint = "vinvino02/glpn-nyu"
 
image_processor = AutoImageProcessor.from_pretrained(checkpoint)
model = AutoModelForDepthEstimation.from_pretrained(checkpoint)

使用 准备模型的图像输入,image_processor它将处理必要的图像转换,例如调整大小和标准化:

pixel_values = image_processor(image, return_tensors="pt").pixel_values

将准备好的输入传递给模型:

import torch
 
with torch.no_grad():
    outputs = model(pixel_values)
    predicted_depth = outputs.predicted_depth

 可视化结果:

import numpy as np
 
# interpolate to original size
prediction = torch.nn.functional.interpolate(
    predicted_depth.unsqueeze(1),
    size=image.size[::-1],
    mode="bicubic",
    align_corners=False,
).squeeze()
output = prediction.numpy()
 
formatted = (output * 255 / np.max(output)).astype("uint8")
depth = Image.fromarray(formatted)
depth

记得点赞和关注哦~

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
点云是由一系列点的三维坐标表示的物体表面的离散化表示,可以被用于三维重建、目标检测、机器人导航等应用。深度学习技术可以用来实现点云的处理和分析,具体方法包括: 1. 使用PointNet网络处理点云。PointNet是一个端到端的深度学习网络,可以将点云直接输入网络中进行分类、分割等任务的处理。该网络的输入是一个点云的N个点的坐标和其他属性,输出是对点云的分类或分割结果。 2. 使用图卷积神经网络(GCN)处理点云。GCN是一种用于处理图数据的深度学习网络,也可以用于处理点云数据。具体来说,可以将点云看作一个无向图,每个点是一个节点,节点之间的边表示它们之间的邻接关系。GCN可以用来对点云进行分类、分割等任务的处理。 3. 使用自编码器(Autoencoder)进行点云重建。自编码器是一种无监督学习方法,可以用于点云的降维和重建。具体来说,可以将点云编码为一个低维向量,然后再解码为点云。这种方法可以用于点云的去噪、增强等任务的处理。 4. 使用生成对抗网络(GAN)进行点云生成。GAN是一种用于生成新数据的深度学习网络,可以用于点云的生成。具体来说,可以让GAN学习如何从随机噪声生成点云。这种方法可以用于点云的合成、增强等任务的处理。 以上方法是深度学习技术用于点云处理和分析的常用方法,具体选择哪种方法取决于具体应用场景和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值