Py学习  »  机器学习算法

深度估计相关原理(计算机视觉和深度学习基础)

小白学视觉 • 3 年前 • 365 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

编者荐语

 

今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础。

转载自丨3D视觉工坊


一、计算机视觉基础

1.1. 针孔相机模型


相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面的过程。其中,最简单的模型就是针孔相机模型。
针孔相机模型中一共涉及到四个坐标系,分别为世界坐标系(world),相机坐标系(camera),图像坐标系(image)和像素坐标系(pixel)。相机模型描述的就是四个坐标系中间的转换关系。
为了获得更好的成像结果,相机前方加了透镜,透镜的加入会对成像过程中光线的传播产生新的影响,这种影响我们称之为畸变。结合畸变的纠正,我们就可以找到相机坐标系中某点在像素平面上的正确位置。


1.2. 对极几何


对极几何是研究立体视觉中重要的理论,描述了两张图片之间存在的几何对应关系。
本质矩阵和基本矩阵就反映了两个视图的对极几何约束。如果知道一副图像中的某个点和基本矩阵,就能求得另一张图像上的对应点所在的对极线,这样就约束了两视角下图像中的空间位置关系。
我们可以将左右相机的坐标系旋转至在同一平面(共面),并计算视差图。
根据视差,我们就可以估计像素与相机之间的距离,也就是深度。


1.3. 图像重构原理


图像重构是图像领域的重要应用,也是3D视觉中重要的一个知识点。在基于深度学习的深度估计方法中,会采用图像重构损失来作为其中的约束条件,如自监督学习方法。常见的方法有两种,前向warping和反向warping。
正向Warping
反向Warping

二、深度学习基础

2.1. 相关网络模型


在深度估计中,常用的网络模型有ResNet、UNet和Autoencoder。ResNet的思想,是使用恒等映射直接将前一层传到更深的网络层。
UNet是深度估计中一个比较常用的网络结构,包括下采样和上采样过程。
Autoencoder可以用来提取图像的特征,其训练方式是无监督的。


2.2. 深度估计中的损失函数


损失函数是深度学习中的重要环节,如何设计或选择合适的损失函数,是深度学习的关键。深度估计中,比较常见的损失函数有:
1)用于计算图像重构误差 / 图像相似度
2)用于计算像素梯度的平滑度
3)交叉熵损失函数,用于有监督学习


2.3. 深度估计的评价指标


深度估计的评价指标有很多,比如AbsRel、SqRel、RMSE等等。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/154445