计算机视觉五大技术——深度学习在图像处理中的应用

深度学习是利用"多层神经网络"实现人工智能的一种方式

计算机视觉:"对图像中的客观对象构建明确而有意义的描述",识别图片中的含义进行处理

1.图像分类------"图里有狗"

判断整张图片属于哪个类别,判断图片是"猫"还是"狗"

思路:输入不同类别的图像,给每个相同类别的图像打上相同标记,训练一个分类器来学习每个类别的外部特征。

目前较为流行的图像分类架构是卷积神经网络(CNN)------将图像送入网络,然后网络对图像数据进行分类。

输入数据首先经过卷积层,在卷积层中每次只关注图像中的一个小局部区域, 每个节点只需要处理离自己最近的邻近节点。 一点一点看完了就能组成大概的轮廓,每次只看一点点像扫描仪一样滑动的过程就是滑动窗口。

经过卷积层后再通过池化层, 池化层是简化图像、减小数据量 的,它会从每一小块区域中选出一个最"突出的"像素(最大值), 只看重要的信息。

2.目标检测------"图里有狗,狗在哪个位置"

识别图像中存在的物体,并给出这些物体的位置和边界, 识别并框出图像中的"人"、"车"、"狗"等多个物体

第一种模型是基于区域的卷积神经网络( R-CNN ):图像太大了,不能一个像素一个像素去搜索,所以我们就先找"可能有物体的区域" ,再用 CNN 进行识别。

模型进化历程:R-CNN → Fast R-CNN → Faster R-CNN

(1)R-CNN

原理流程:

  1. 选择性搜索提取大约 2000 个区域(region proposals)
  2. 每个区域都单独送入 CNN 提取特征
  3. 然后将特征送入:
    • SVM分类器(判断类别)
    • 边界框回归器(微调位置)

问题:

  • 每个区域都要单独跑一次 CNN,太慢!
  • 所有区域都要存储特征,占用硬盘!
  • 推理速度很慢,无法实时!

(2) Fast R-CNN

两大改进点:

  1. 整张图只跑一次 CNN,生成一个大的特征图!
  2. 所有的区域建议直接在这张特征图上进行提取(用 ROI pooling 层)

此外:

  • Softmax 替代 SVM 进行分类
  • 整个网络是端到端训练

效果:

  • 更快、更省空间
  • 区域建议(selective search)仍然太慢

(3)Faster R-CNN 真正意义上的"端到端目标检测模型"

核心创新:引入 RPN(Region Proposal Network)

  • 不再用传统的"选择性搜索"了
  • RPN 是一个小的 CNN 网络,能自动从特征图中生成"候选框"
  • 每个位置输出 k 个框,每个框预测:
    • 是否包含目标(分类)
    • 框的位置(回归)

好处:

  • 快得多!RPN 速度远胜选择性搜索
  • 可端到端训练(共享卷积层)

进化小结表:

模型 特征提取 区域提议方式 分类方式 是否端到端 速度
R-CNN 每个区域单独提取 选择性搜索 SVM + 回归
Fast R-CNN 整图提特征 选择性搜索 Softmax + 回归 中等
Faster R-CNN 整图提特征 RPN(神经网络) Softmax + 回归

3.语义分割( 像素级的图像理解任务 )"图里每个像素属于哪个类别"------区分狗的每个像素,背景的每个像素

对图像中每个像素分割("语义"层面),不同类别区域的像素赋不同标签,把图中"人"、"树"、"地面"分别涂上不同颜色。 因此,与分类不同,我们需要用模型对密集的像素进行预测。

解决方案就是加州大学伯克利分校提出的全卷积网络( FCN ),它提出了端到端的卷积神经网络体系结构,在没有任何全连接层的情况下进行密集预测

(1)传统方式:滑动窗口 + 分类

  • 对每个像素,取它周围一块图像(patch)送入分类网络
  • 每个像素一个窗口,分类后拼起来就是分割图

好处:简单直接

问题:

  • 重叠太多,特征不能共享,效率极低
  • 无法处理大图和复杂结构

(2)全卷积网络(FCN,全称 Fully Convolutional Network)

加州大学伯克利分校提出,开创了现代语义分割范式

核心思想:

  • 把分类网络里的全连接层全部取消!
  • 卷积 + 上采样实现"像素级分类"
  • 不管输入图像大小如何,输出都是对应大小的 mask 图

优点:

  • 端到端训练
  • 比滑动窗口快很多
  • 支持任意尺寸图像

缺点:

  • 由于池化层损失了空间细节,结果很模糊、边界不清晰

(3) FCN 优化:SegNet

  • 是 FCN 的一个改进版
  • 引入了编码器-解码器结构
    • 编码阶段(下采样):抽取高层特征
    • 解码阶段(上采样):逐步还原像素分布
  • 同时在解码阶段加入了 skip connections(跳跃连接)
    • 保留原始分辨率信息,辅助边界还原

更高精度

更强细节还原能力

模型稍微更复杂

(4)更进一步:DeepLab 系列 & RefineNet

  • DeepLab
    • 使用了 空洞卷积(Dilated Convolution)
      • 保留大感受野,不损失分辨率
    • 引入了 CRF 后处理增强边界质量
  • RefineNet
    • 利用多层 skip connection 汇聚多尺度特征
    • 更加强调边界对齐和细节保持

关键术语解释

名词 含义
FCN 全卷积网络,端到端的语义分割框架
上采样 将低分辨率特征图还原为高分辨率,用于逐像素输出
反卷积 / 转置卷积 一种常用的上采样操作,用于图像放大
空洞卷积(dilated conv) 在卷积核之间插入空洞,扩大感受野不增加计算
跳跃连接(skip connection) 保留原始特征用于后期融合,提升细节还原能力

4.实例分割------ "图里有狗,狗在哪,且区分不同的狗"

结合目标检测和语义分割, ------ 在图像中,实例分割不仅要识别出物体的类别(比如狗、车、人等),还要将同一类别的多个实例分开,并为每个实例的每个像素生成准确的边界。

实例分割将不同类型的实例进行分类,比如用 5 种不同颜色来标记 5 辆汽车

(1)Mask R-CNN:

  • Mask R-CNN是实例分割领域的开创性工作,它是在Faster R-CNN(目标检测模型)基础上进行扩展的。
  • 在Faster R-CNN中,目标检测任务通过生成候选框(Region Proposal)来确定物体的位置,Mask R-CNN通过在每个候选框上添加一个分支,预测每个候选框对应物体的像素级别的分割掩膜(mask)。
  • 其网络架构包括:
    • Backbone:用于提取图像的特征(通常是ResNet或者其他强大的卷积网络)。
    • Region Proposal Network (RPN) :生成可能包含物体的区域(候选框)。
    • RoIAlign:用于精准地从每个候选区域中提取特征。
    • Mask Branch:通过FCN生成每个实例的像素级分割掩膜。
    • Bounding Box Branch:预测候选框的位置并进行微调。

优点

  • 高精度:能够同时进行目标检测和像素级的实例分割。
  • 端到端训练:Mask R-CNN可以同时训练目标检测、边界框回归和分割掩膜。
  • 可扩展性:易于在其他任务上进行扩展,比如人脸识别、姿态估计等。

缺点

  • 由于每个候选区域都需要生成一个掩膜,计算量较大。
  • 在复杂的场景中,可能会出现候选区域和物体边界不准确的情况,导致分割质量下降。

(2)PANet (Path Aggregation Network):

  • PANet是一种提升实例分割精度的网络,它在Mask R-CNN的基础上增加了路径聚合模块,通过细化信息流和多尺度特征融合来改善实例分割性能。PANet通过增强网络的特征提取能力,提高了分割掩膜的准确性。

(3)YOLACT:

  • YOLACT(You Only Look At Coefficients)是一种高效的实例分割方法,采用实时实例分割,具有较高的速度。YOLACT与Mask R-CNN不同,它通过将实例分割拆分成两个步骤:首先预测每个物体的特征(类似于目标检测的bounding box),然后通过系数与特定的原型进行结合,生成最终的分割掩膜。
  • 优点:速度较快,适用于实时任务。
  • 缺点:在复杂图像和小物体上分割效果较差。

5.关键点检测------ "图里有狗的头部、耳朵、尾巴位置"

检测图像中特定的关键点,如人体的"头部、手肘、膝盖"等。 用来做姿态识别、动作分析(如跳舞识别、体操评分)。

目标:检测图像中特定的关键点,通常是一些重要的结构点,例如人体的关节点、面部五官、物体的特征点等。

常见应用

  • 人体姿态估计:分析人的动作,比如姿势识别、跳舞动作分析、运动员动作评估等。
  • 人脸关键点检测:比如眼睛、鼻子、嘴巴等,应用于面部表情识别、面部识别解锁、表情分析等。
  • 手势识别:通过识别手指的关键点来实现手势操作(如VR、AR中的控制)等。

关键技术与方法

  • OpenPose:一个非常著名的实时多人姿态估计库,它能从图片中检测到多个人体的关节位置,并准确追踪每个人的动作。
  • HRNet(High Resolution Network) :一种高分辨率网络,通过保持较高的分辨率来提高关键点检测的精度,适用于人体姿态、面部标记等任务。

进展: 随着深度学习的进步,基于CNN的关键点检测技术得到了很大提升,尤其是在姿态估计、表情识别等领域表现得越来越成熟。

相关推荐
拉不动的猪6 小时前
# 关于初学者对于JS异步编程十大误区
前端·javascript·面试
熊猫钓鱼>_>8 小时前
Java面向对象核心面试技术考点深度解析
java·开发语言·面试·面向对象··class·oop
进击的野人10 小时前
CSS选择器与层叠机制
css·面试
T___T13 小时前
全方位解释 JavaScript 执行机制(从底层到实战)
前端·面试
9号达人13 小时前
普通公司对账系统的现实困境与解决方案
java·后端·面试
勤劳打代码13 小时前
条分缕析 —— 通过 Demo 深入浅出 Provider 原理
flutter·面试·dart
努力学算法的蒟蒻13 小时前
day10(11.7)——leetcode面试经典150
面试
进击的野人14 小时前
JavaScript 中的数组映射方法与面向对象特性深度解析
javascript·面试
南山安14 小时前
以腾讯面试题深度剖析JavaScript:从数组map方法到面向对象本质
javascript·面试
橘颂TA16 小时前
【剑斩OFFER】算法的暴力美学——二分查找
算法·leetcode·面试·职场和发展·c/c++