IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 欢迎入坑单目深度估计 -> 正文阅读

[人工智能]欢迎入坑单目深度估计

目录

1.介绍深度估计

2.深度值的预处理

3.train

4. 损失函数

5.可视化

6.评估准则


1.介绍深度估计

深度估计目的的从一张2D图像中获取每个点距离拍摄源的位置远近(通常用颜色的深浅可视化)。

?常用的数据集
室内数据集NYU-V2-Depth, 包含464个场景,120k个尺寸为?? ? 480*640RGB图像与深度图对。249个训练? 场景,215测试场景。距离拍摄源的距离? [0 - 10] m
室外数据集kitti 包含61个场景,32个场景 用于训练,29个场景697张图片用于测试。距离拍摄源的距离为[0 - 80]m

2.深度值的预处理

本文以NYU为例,在我们使用PIL读取的image and depth 中,用OpenCV读取需要转化BGR to RGB,我们首先需要对它做一下标准化处理,PIL to Tensor 图像的像素值会分布在 0 - 1之间(opencv 读取的结果也需要转化为tensor? 在torchvision.transforms包里有封装好的py函数),这也是现在学习率普遍为1e-4的原因。有的文章还采用image的标准化处理,将 tensor值分布在 -1 - 1之间。
为了防止网络过拟合,通常对image进行处理(翻转,明暗,色调,大小)。
用OpenCV的包里测试一下

import albumentations as A

basic_transform = [
   A.HorizontalFlip(),
   A.RandomBrightnessContrast(),
   A.RandomGamma(),
   A.HueSaturationValue()
]

我们先用从cv2得到下面这张图像

import cv2
import matplotlib.pyplot as plt
image = cv2.imread(r"F:\Datasets\nyu_depth_v2\test\office\rgb_00008.jpg")
# image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.imshow(image)
plt.show()
# image-BGR to RGB. Then augment of images and to tensor

?

image = A.HorizontalFlip(p=1)(image=image)["image"]
plt.imshow(image)
plt.show()

# albumentations need (image = 'name of image') to convert (key-value)

3.train

训练过程都大同小异, contrary between predict of model and GT , lr的更改 需要在 for 循环里更改

input_RGB = batch['image']
depth_gt = batch['depth']
pred = model(input_RGB)
optimizer.zero_grad()
loss_d = criterion_d(pred, depth_gt)
loss_d.backward()

4. 损失函数

这一部分的改变基本不大,大部分都是基于尺度不变损失进行微改的,也可以用L1,L2 hurb损失。

少数有使用 grad and normal 作为辅助损失让model 更加关注相关部分学习情况。
[1]使用了三种损失 L1+grad+normal。[2]使用了回归+尺度不变

5.可视化

很多文章都会放可视化的结果,毕竟在人的视觉感知里,带有色彩的图像远远比数据更加吸引注意力。在可视化中,需要注意的是,如果我们对图像进行了标准化处理,我们在可视化之前需要反标准化,并且乘以相应的距离(255),不然得到的结果可能有色彩的差距,毕竟 plt.show(cmp='jet')显示的只是相对差异。贴一下目前的sota BinsFormer。

6.评估准则

前三者是误差评估,Lower is better 最后一个是准确度评估 higher is better
对于准确性评估,只测量 GT 中的非零值,也就是我们首先需要用mask将预测值和真实值的非零值对应起来(避免分母为0 出现nan值),可以用逻辑与作为mask.

valid_mask = torch.logical_and(gt_depth > min_depth_eval, gt_depth < max_depth_eval)
比较 pred[valid_mask] 与 gt_depth[valid_mask] 避免nan值

Thresholded accuracy :
thresh = torch.max((target / pred), (pred / target))
d1 = torch.sum(thresh < 1.25).float() / len(thresh)
d2 = torch.sum(thresh < 1.25 ** 2).float() / len(thresh)
d3 = torch.sum(thresh < 1.25 ** 3).float() / len(thresh)

误差值计算:
diff = pred - target
REL = torch.mean(torch.abs(diff) / target)
RMSE = torch.sqrt(torch.mean(torch.pow(diff, 2)))
log10 = torch.mean(torch.abs(torch.log10(pred) - torch.log10(target)))

Reference

1.Revisiting Single Image Depth Estimation Toward Higher Resolution Maps

2.Adabins

3. BinsFormer: Revisiting Adaptive Bins for MDE

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:15:35  更:2022-10-22 21:20:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:32:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码