课程笔记
🗒️笔记-计算机视觉
00 分钟
2024-1-19
2024-5-14
type
status
date
slug
summary
tags
category
icon
password
🆕
上传了目标检测的相关知识

Ch0 数学基础

线性几何变换

notion image
notion image
  1. Rotation
    1. notion image
      只有旋转,唯一的自由度为旋转角
  1. Euclidean
    1. notion image
      旋转+平移,旋转角(1)+平移方向(2)
  1. Similarity
    1. notion image
      旋转+平移+缩放,旋转角(1)+平移方向(2)+缩放因子(1)
  1. Affine
    1. notion image
      旋转+平移+缩放+反射,对其进行奇异值分解后可以获得如下的式子
      notion image
      整个过程的理解:把该图形绕原点旋转,再沿着X和Y方向进行缩放(缩放因子为),之后再旋转为原来的位置,最后再旋转,之后再发生平移。当时,图像的方向会改变。
  1. Projective
    1. notion image
      由于齐次坐标不具有唯一性,故可以用c表示缺少的一个自由度,整体是8自由度。

变换群与几何学

判定:封结幺逆
notion image

线性几何变换群

  1. 前面提到的 5 种几何变换都构成群
  1. 旋转变换群⊂欧氏变换群⊂相似变换群⊂仿射变换群⊂射影变换群
  1. projective保交比,affine保简单比值,similarity保相似比

矩阵微分与拉格朗日乘子法

notion image

线性最小二乘问题

齐次线性最小二乘问题

采用用拉格朗日乘子法求出极值点
可以求出闭式解,The global minimum of is and the global minimizer of is the unit eigen‐vector of associated with its least eigen value.
notion image

非齐次线性最小二乘问题

无约束优化只需要是驻点就行
也可以可以求出闭式解
notion image

射影几何

向量运算

混合积(mixed product)
notion image
共平面的判定:
  1. 混合积=0
    1. notion image
  1. 线性相关
    1. notion image

射影平面

【无穷远】在射影平面中,两平行线交于无穷远点(infinity points),两平行面交于无穷远直线(infinity line)
补充了无穷远点的欧式平面叫做扩大的欧氏平面,也可以叫做射影平面
在有关射影平面上的几何结论中,我们会对射影平面上的所有点(直线)做一致性的对待,而不会刻意区分通常点(直线)和无穷远点(直线)

齐次坐标

notion image
可以看作直线Om在平面上的交点;当Z=0时,即表示无穷远点
notion image

点与直线的表示

线的齐次坐标表示:先从二维取两点,得到其齐次坐标,再将其齐次坐标叉乘,化成线的齐次坐标(点齐次→线齐次)
相关计算【射影平面上关于点与直线的命题都存在对偶性】:
  1. 已知两点求两点形成的线:两点的齐次坐标叉乘结果
  1. 已知两线求其交点:两线的齐次坐标叉乘的结果
    1. notion image
消失点(vanishing point)是无穷远点(infinite point)在成像平面的像
notion image

单应矩阵

notion image
任意两个射影平面之间确实存在射影变换,而且在没有退化情况下,射影矩阵是唯一的,该射影矩阵又被称作单应矩阵。

非线性最小二乘问题

notion image

雅可比矩阵

notion image

非线性最小二乘问题

其中F(x)是矢量函数,由一系列的f(x)所构成
其中F(x)是矢量函数,由一系列的f(x)所构成
notion image
对于连续可微函数求其最小值点就是找到所有的驻点(stationary point)与端点,全部求出来,找到最小值就行
notion image
但现实中,很少有闭式解,故需要采用迭代(iterative)优化(下降方法,descent method)的方法找到局部极小值点
下降方法的迭代步骤:
  1. 【方向】找到合适的下降方向descent direction
    1. 梯度下降的方向,应该是满足下面的式子
      notion image
  1. 【步长】找到合适的步长step length
后续需要构造辅助函数来对原函数进行逼近,常用的是二次函数
notion image

阻尼法

damped method
notion image
  • 引入阻尼项来使得更加近似
  • 引入了增益比(gain ratio,越大越好)来决定是调整μ值,还是前进到下一迭代点
    • 马夸尔特阻尼系数 μ 调整算法
    • 尼尔森阻尼系数 μ 调整算法

高斯牛顿法

notion image

列文伯格-马夸尔特法

notion image

凸优化基础

凸优化问题

对偶

SVM

感知器算法

线性可分SVM

软间隔与线性SVM

非线性SVM与核函数

针对多分类问题的SVM

Ch1 图像的全景拼接 Panorama Stitch

问题的定义及方案

有两张图像,这两幅图像之间满足:①coplanar(共平面)②no-distortion(没有镜头畸变,可以用线性变换来表示)③uniform light up(不存在太大光照变化)则可以将I1与I2通过线性几何变换联系起来:
方案分成以下五步:
  1. 【特征点检测】key points detection
      • 好特征点的特点:repeatability(几何变换稳定性)、saliency(distinctive,对光照变化稳定性)、locality(局部性)、compactness and efficiency(稀疏性)
      • 方法:Harris、LoG极值、ORB
  1. 【创建特征点描述子】feature descriptor
      • block、SIFT
  1. 【特征点匹配】correspondence pairs
      • 三个原则
  1. 【几何变换估计】solve H
      • homography matrix 单应矩阵
  1. 【坐标变换】apply H to I2

特征点检测

特征点的作用

  1. 运动跟踪 motion tracking
  1. 图像对齐 image alignment
  1. 三维重建 3D reconstruction
  1. 对象识别 object detection
  1. 索引和数据库检索 indexing and database retrieval
  1. 机器人导航 robot navigation

Harris Corner Dectector

角点(移动窗口会有大变化large intensity change),基于该思想建立的方法,具有旋转不变性(椭圆的性质),但不具有尺度不变性,对于非图像整体的光照较为敏感。
notion image
公式推导过程中使用了一阶泰勒展开
notion image
 
notion image
 
 
固定S的值为定值,则S表示一个椭圆,描述的轨迹,对应的为其半长轴与半短轴,当都很大时,此时椭圆小,更接近角点
根据上述思路,可以总结Harris Corner Dectector的步骤如下:
  1. 【计算图像像素的一阶导数】image derivatives
  1. 【计算一阶导数的平方】square of derivatives
  1. 【高斯滤波】Gaussian filter
    1. 使得窗口中中间点的对特性的影响大一些
  1. 【计算角点程度】cornerness function
    1. 直接计算特征值代价较高,使用下面的公式计算速度较快 k作为超参数,一般为0.04-0.06
      notion image
  1. 【非极大值抑制】perform non-maximum suppression
    1. 在一个预设大小的局部范围内,只保留角点程度值最大的候选角点
notion image

Scale-Invariant Feature Transform

保障尺度不变性的方法
  1. 【穷举法】改变patch的大小,依次穷举。效率低下,需要一种能够与图像尺寸协变(covariant)的方法
  1. 【自动尺寸选择】思想:寻找一个能够产生一个峰值(unique sharp peak/valley)的尺寸选择方法,或者又称为斑点结构检测(blob structure detection),能够在每一个尺度上找到特征点的中心(特征点)以及特征点尺寸(特征尺度)尺度归一化LoG算子(scale-normalized Laplacian of Gaussian)/DoG算子=—0-
    1. notion image
      notion image
      把响应值中的极小值点的当作特征点中心,其对应的当作特征尺度
      在实际运算中,求laplacian的时间复杂度较高(要求二阶导),故使用DoG(Difference of Gaussians,高斯差分)来代替LoG进行卷积(可看作fliter)
SIFT的特征点尺度不变检测算法如下
  1. 【构建高斯尺度空间】
      • 每次滤波的标准差应该是(因为镜头会有低通滤波)
      • 定义每一层的,以保持恒定倍数关系
  1. 【构建DoG尺度空间】
      • 为了提升运算效率,需要分组(octave),每组的空间分辨率都是上一组的1/2,为了使得检测的 DoG 层在尺度空间上是等间隔连续的,我们需要在高斯尺度空间中每组的顶部增加额外的尺度层
        • notion image
      • 降采样:每个octave的第一层是上一个octave的第三层的降采样版本,这样就减少了像素数量,从而加速了后续的处理。
      • 组内相邻层做差从而得到DoG,之后与原始图像进行卷积,即可得到图像在DoG尺度空间的函数值
  1. 【DoG空间的特征点检测】
      • 在DoG空间中,某点比其26个邻居(3x3x3-1)都大/小,则该点为特征点,该尺度为特征尺度
  1. 【粗略极值点位置精化与DoG值估计】
      • 上述过程是离散的,需要到连续上的位置,利用二阶泰勒展开即可得到该值(类似于梯度下降)
      • 根据的值是否大于阈值来判断是否需要丢弃,太小则说明其不稳定,需要剔除掉
      • 同样,需要将边缘点映射到DoG上的位置剔除掉
  1. 的空间位置与特征尺度的最终估计】
      • 将其整理到原图上,共包含三部分信息
        • 输入图像的空间位置
        • 相对于输入图像空间分辨率的特征尺度
        • 在 DoG 尺度空间中与它离得最近的整数尺度层的层号
notion image
SIFT算法的完整流程:(前5点是特征点检测,后2点是特征点描述符构造)
  1. 构建高斯尺度空间
  1. 构建DoG尺度空间
  1. 特征点检测:在DoG空间中,某点比其26个邻居(3x3x3-1)都大/小,则该点为特征点,该尺度为特征尺度
  1. 精细化极值点位置
  1. 过滤掉边缘点与低对比度响应的点
  1. 取特征点的周围的点,获取直方图,确定主方向,并进行方向归一化
  1. 构建特征点描述符
notion image
 
SIFT的应用领域:
  1. 三维建模、识别、轨迹追踪
  1. 全景拼接
  1. 目标识别
  1. 机器人定位与寻路
  1. 人脑分析
 
  1. 运动跟踪 motion tracking
  1. 图像对齐 image alignment
  1. 三维重建 3D reconstruction
  1. 对象识别 object detection
  1. 机器人导航 robot navigation
  1. 索引和数据库检索

ORB特征点检测

#TODO

特征点匹配

块描述子

块描述子(block detector):固定窗口大小,直接把s×s的图像块 W 拉成一个列向量并进行单位化(即,使得该向量的 l2-范数为 1),不具有尺度不变性与旋转不变性
计算两个描述子之间距离时常用SSD(平方差之和)、SAD(绝对差之和)、NCC(规范化互相关)
notion image
notion image

SIFT描述子

SIFT描述子构造过程
  1. 【选择特征点周围的点】在高斯空间尺度层 上进行选择其周围的点
  1. 【方向归一化】包括计算梯度方向直方图、选择主方向、旋转到主方向,以保证旋转不变性
  1. 【将原区域划分为4x4的子区域,每个子区域划分为8个方向,由此可以构建128维的向量】
    1. notion image
      • SIFT最终可以得到:①(n,128)的描述符;②特征点对应的:n个尺度参数,nx2个二维点,n个主方向

FAST描述子

#TODO

BRIEF描述子

#TODO

特征点匹配的原则

  1. 【距离足够小】两描述子的距离应该小于预设的某个阈值
  1. 【双向确认】对方到自己的距离都是自己的集合中最小的
  1. 【无歧义匹配】最接近的距离/次接近的距离<某一阈值

射影矩阵(单应矩阵)的鲁棒估计

在Math部分,可知使用(非)齐次线性最小二乘对优化问题进行求解,即可求出H。但现在的问题在于,无法保证所有的点对关系都正确 ,即有可能存在外点(outlier),此时使用RANSAC进行随机采样,以保障鲁棒性。

随机采样一致性算法RANSAC

Random Sample Consensus
  1. 【模型初始化】随机选取一对点(拟合模型所需要的最少数据点个数,对于算H来说,是4个点,提供八个自由度),构造模型
  1. 【扩充一致集】将符合距离threshold的点加入模型调整集合点集
  1. 【终止与重来】中点的个数大于要求的threshol的时候,终止,并输出模型;小于时则回到1重来
  1. 【计算拟合】最后,使用一致集(consensus set)中所有的元素,构造最小二乘来拟合直线
notion image

图像的插值

  • 最近邻插值法
  • 双线性(bilinear)插值法
  • 双三次(bicubic)插值法
双线性插值
双线性插值
双三次插值
双三次插值

Ch2 单目测量 Measurement with Single Camera

问题的定义及方案

给图像中的目标赋予“度量”信息
前提:①待测量的目标要位于一个物理平面之上;②图像平面与该物理平面之间满足线性几何变换的关系
  1. 相机内参标定
      • 内参仅仅与相机自身的物理属性有关,与相机位姿无关
      • 相机参数包括:内参(intrinsic)、畸变参数(distortion coefficients)、外参(extrinsic)
      • 内参标定可以用于:
          1. 去畸变
          1. 构建双目/多目立体视觉系统
          1. 基于视觉的三维重建
          1. 基于视觉的空间定位
  1. 镜头去畸变
      • 包括径向畸变与切向畸变
      • 使相机的成像过程严格满足针孔(pin-hole)相机成像模型,从而使得物理空间中的平面与成像平面之间满足线性几何变换关系
  1. 计算出目标物体所在平面与相机(去畸变后)成像平面之间的单应变换(线性几何变换)矩阵
  1. 可以生成鸟瞰视图
      • 鸟瞰视图与它所代表的物理平面之间是相似变换关系

相机成像模型

  • 世界坐标系:World coordinate system (3D space)
  • 相机坐标系:Camera coordinate system (3D space)
  • 成像平面坐标系:Retinal coordinate system (2D space)
  • 归一化成像平面坐标系:Normalized retinal coordinate system (2D space)
    • 可以在这个坐标系中进行畸变处理
  • 像素坐标系:Pixel coordinate system (2D space)
notion image

相机内参标定

notion image
平面间的射影变换的自由度为8,可以通过4个点对关系进行确定
为了要执行相机内参标定,至少需要拍摄两张标定板图像。但在实际操作中,由于要考虑到噪声的存在,还要考虑到解的稳定性,一般往往需要拍摄10~20张标定板图像。

设置合理的初始化估计

  1. 【5】设置畸变参数为0(这样才可以构造单应矩阵)
  1. 【2】cx、cy初始化为像素平面的宽和高的一半
  1. 【2】寻找两对垂直线的灭点,构造所有照片的方程,如此便可以采用非齐次线性最小二乘,得到fx、fy的闭式解
    1. notion image
      notion image
  1. 【6M】根据归一化成像平面世界坐标系的单应矩阵可以计算出[R t]
    1. notion image

模型参数的迭代优化

使用高斯牛顿与用列文伯格-马夸尔特法求解关键都在于获得雅各比矩阵J(x),从而对参数进行迭代优化
notion image

镜头畸变的去除

去畸变像素平面鱼眼成像平面的变化过程:
故从鱼眼成像平面去畸变像素平面需要根据去畸变的像素位置到鱼眼平面中做双线性插值得到最后的像素。
notion image
notion image

鸟瞰图生成

notion image
notion image
  1. 鸟瞰图像素坐标系→物理平面坐标系
    1. 根据相似变换获得(6DoF)
      notion image
  1. 物理平面坐标系→去畸变像素坐标系
    1. 满足射影变换,使用棋盘格标定法进行求解(4个点对关系)(8DoF)
  1. 去畸变像素坐标系→原始图像坐标系
notion image

Ch3 目标检测

classification,detection,segementation

目标检测经典模型

传统方法是使用SIFT、HOG等特征描述子进行图像的描述,手工设计特征

R-CNN

  • 经典版本:Rich feature hierarchies for accurate object detection and semantic segmentation
    • 2-stage:先图像剪裁(获得region proposal,通过selective serach算法),之后进行图像分类
    • 计算指标:根据ground truth与region proposal的差别,计算交并比(intersection over union),并有区间如下。
      • 若难例标记为正类,则包含了过多背景信息,这些proposal要被忽略。使用bounding-box regression对于gt的边界进行回归。
        notion image
    • 共需要训练proposal, classification, regression三个模型,导致重复计算过多的问题
  • Fast R-CNN【共享卷积】
    • 原版R-CNN的CNN在每个proposal上单独进行,提出在图片整体运行完了之后再通过R-CNN网络,从而实现计算的共享
      • notion image
    • Region of interest pooling (RoI pooling) :将候选区域(region proposal)划分为大小相等的部分(与想要的输出维度相同),之后找最大值,将整个输出到output buffer中,最后可以的得到等长的feature vector
      • notion image
    • 使用softmax代替one vs rest的SVM,效果表现更好
    • 将Proposal, Feature Extractor, Object Classification &Localization统一在一个整体的结构中,并通过共享卷积计算提高特征利用效率,是最有贡献的地方。
  • Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks【RPN端到端】
    • 使用RPN网络取代传统的selective search算法,将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一个网络
      • notion image
    • Region Proposal Networks(RPN)
      • 上面获得softmax得到anchors的分类,下面得到anchors的bounding box regression的计算
        notion image
        anchors的每行包含每个框左上和右下的角点坐标的四元组,一共有9个,包含长宽比为1:1,1:2,2:1的三种情况,对于每一个feature map上的点都进行都去匹配9个anchor
        notion image
        notion image
    • 最后会对于anchors进行bounding box regression的方式,对于框进行微调(平移和变换尺度)

YOLO

  • You Only Look Once: Unified, Real-Time Object Detection
  • one-stage:快;全局处理使得北京错误较少;泛化性能好
  • 缩放后生成B个box,计算置信度
    • notion image
      第一项网络预测,后两项每个box预测,故输出的预测值个数为
  • 损失函数
    • notion image

YOLO发展

YOLOV5

backbone-neck-head架构,backbone通过Conv+CSP提取基本特征,neck通过CSP+Conv+Upsamlping可以实现自顶向下提取高级语义信息,自底向上定位低级细节(增强特征)
notion image
notion image

YOLOV8

notion image
使用C2f代替C3进行信息的聚合,PAN的架构,在不同尺度有不同的检测投,大尺度特征的detect可以得到小的目标,小的则为大目标
notion image
notion image
notion image

YOLOV9

notion image
notion image
notion image
Programmable Gradient Information,训练时保留灰色部分,测试时可以删去(灵活,可编程,可拆卸)
Auxiliary Reversible Branch,缩短梯度回传路径,有效获得梯度信息以便进行权重更新
Multi-level Auxiliary Information,多级辅助信息,进行层聚合

Ch4 三维重建

notion image

RGB-D的重建

  • 基于深度相机(RGB-D camera),可以直接获得被测对象的三维信息(深度图)的相机
    • 包含结构光(Kinect v1)和ToF(Kinect v2)两种
    • 结构光:可以根据标记点进行区分,对透明玻璃与纯黑色物体有缺陷
      • notion image

KinectFusion

notion image
输入深度图(需要转化成raw vertex和normal map)与相机的位姿,将其进行volumetric integration(体素估计,TSDF算法进行融合
缺点:位姿会漂移(误差累积导致不构成回环),体素网格内存占用大

BundleFusion

notion image
  1. 输入RGB+Depth
  1. 建立帧之间对应关系匹配(特征匹配)
  1. 得到local+global分层优化(使得两帧可以得到拼接)
  1. 最后进行模型的动态更新(实时更新)
特点:在GPU上实现实时的鲁班跟踪,解决漂移问题,取出时域根据依赖,无需进行回环检测(loop closure)

MVS的重建

  • MVS:multi-view stereo从一系列图像中重建3D模型,基于RGB的建模(刚体重建)
  • 包含如下几个步骤:
    • 图像采集
    • 位姿计算
      • 视频序列则可以使用SLAM进行计算(回环)
      • SfM可以计算离散的图片
    • 模型重建
        1. 稠密重建(深度图计算)
        1. 点云融合
        1. 曲面重建
    • 纹理贴图

经典开源框架

  • 位姿计算
    • SfMCOLMAP,MVE,OpenMVS
    • SLAM:ORB
  • MVS(基于图像建模)
    • COLMAP,MVE,PMVS,SMVS(需要根据光照信息来重建),OpenMVS
  • 综合性能来看,目前比较好的方案:COLMAP(计算位姿)+OpenMVS(后续稠密重建)

COLMAP

notion image
  1. 输入图片并提取2D的特征
  1. 进行图像2D的特征点匹配
  1. 从匹配中生成2D tracks
  1. 从2D tracks中建立SfM模型
  1. 使用BA(bundle adjustment)精进SfM模型
  • COLMAP-MVS
    • pixelwise view selection
      • occlusion prior,选有重合区域的帧作为参考帧进行计算
    • joint-normal-occlusion
      • 深度图的计算
    • multi-view geometric consistency
      • 优化计算:空间一致性,光度一致性
    • filtering and fusion
      • 帧间的滤波与融合(有多线程优化进行加速)

OpenMVS

notion image
  1. 【输入】图像和位姿
  1. 稠密重建:SGM,TSGM
  1. 点云融合
  1. 初始网格重建
  1. 网格优化:patch mesh(通用mesh优化)
  1. 【输出】纹理贴图:texture mesh

单帧图像重建mesh

基于3DMM重建

统计学原理,3D morphable model可变模型,用公式推出。获得平均人脸,取关键特征向量(人脸形状、肤色纹理、表情)进行求解,根据此与图像配准(生成进行脸生成),生成人脸3D
notion image
  • 基于深度学习的方法:
    • Nonlinear 3D Face Morphable Model
      • notion image
      • 特点:
          1. 学习了一个非线性3DMM模型,它比传统的线性模型具有更大的表示能力
          1. 弱监督学习:利用大量没有三维扫描的二维图像,共同学习模型和模型拟合算法
    • 2DASL
      • notion image
        自监督模型,克服3D标注数据不足问题(需要每个点对上),即可以直接将网上的数据直接使用来训练
    • PRNet
      • 端到端的方式(不借助3DMM),使得人脸对齐与三维人脸一起完成(UV图等标记处RGB到人脸的映射),不受低维解空间的限制
        运行速度超过100FPS的轻量级框架

      物体/人体重建

    • IF-Nets
      • 物体/人体,可以用于补全
    • PIFuHD
      • 人体,衣服纹理难以重建出来

      MVS框架

      经典开源框架

    • MVSNet:经典网络
    • P-MVSNet:从pixel-wise拓展到patch-wise cost volume
    • Unsupervised MVSNet:无监督网络,没有depth-gt,使用几何一致性计算帧间匹配
    • Fast-MVSNet:速度快(稀疏代价算了低分辨率的深度图)
    • JDACS-MS:无监督MVS网络效果较好
    • PatchMatchNet:有监督MVS网络效果较好
    • MVSNet

      notion image
      提特征点之后三角化
       

评论
Loading...