语义分割:从早期探索到深度学习的突破

news2024/11/25 14:44:09

语义分割:从早期探索到深度学习的突破

  • 语义分割的端倪:从早期探索到深度学习的突破
    • 引言
    • 早期技术:图像处理与模式识别
      • 边缘检测
      • 区域生长
      • 图割(Graph Cut)
      • 聚类方法
    • 深度学习的兴起:CNN革命
      • 2012年 AlexNet的突破
      • 全卷积网络(FCN)
      • U-Net的创新设计
      • 深度学习卷积网络技术不断创新
    • 发展里程碑:端到端学习
      • 端到端全卷积网络(FCN)
      • Mask R-CNN的多任务学习
      • Transformer在视觉任务中的应用
      • 目前端到端学习的现状
    • 当下进展与未来展望
    • 参考文献

语义分割的端倪:从早期探索到深度学习的突破

引言

在经历了数十年的发展后,语义分割已经从一项边缘技术转变为计算机视觉领域中的基础任务之一。本文将回溯语义分割的发展历史,介绍关键技术的演变,以及深度学习是如何推动这一领域取得重大突破的。
在这里插入图片描述

早期技术:图像处理与模式识别

在深度学习兴起之前,语义分割的研究侧重于基于图像处理和模式识别的技术。这些方法主要基于像素颜色、纹理等低层次特征,通常涉及边缘检测、区域生长和图割等经典图像分割技术。

边缘检测

边缘检测算法,比如Sobel、Canny、Laplacian算子等,都被用来识别图像中物体的边缘。这些边缘信息有时可以用来区分图像中的不同对象。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.jpg', 0)

# Canny边缘检测
edges = cv2.Canny(image, 100, 200)

# 显示结果
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

区域生长

区域生长技术通过选择种子点并基于设定的规则将邻近像素合并到种子点所在的区域。这是一种自下而上的合并策略,可以用于发现图像中具有相似特征的区域。

图割(Graph Cut)

图割是一种基于能量最小化的分割方式,它通过建模像素与像素之间的关系(如相似性和空间接近度)来实现。

聚类方法

聚类算法如k-means和均值漂移被用于将像素根据颜色、纹理等特征划分到不同的类簇中,从而实现分割。

尽管这些方法在当时取得了一定的成果,但它们仍然受限于手工特征的设计以及对复杂图像内容的理解有限。随着机器学习技术的发展,更为复杂的模型和算法被提出来解决语义分割任务,推动了该领域的进步。

深度学习的兴起:CNN革命

卷积神经网络(CNN)的崛起标志着语义分割研究的新篇章。2012年的AlexNet的成功带来了深度学习的热潮,紧随其后的,包括但不限于FCN(全卷积网络)和U-Net,为解决更加复杂的图像语义分割问题提供了新思路。

2012年 AlexNet的突破

2012年,AlexNet在ImageNet挑战中取得历史性的胜利,证明了深度学习,特别是CNN在图像识别任务中的潜力。

全卷积网络(FCN)

Jonathan Long等人在2015年提出的FCN[6]模型标志了语义分割的另一个重要发展。FCN能够接受任意尺寸的输入,通过将全连接层转换为卷积层,使其能够输出像素级的预测图,实现端到端的语义分割。

U-Net的创新设计

U-Net采用了一种独特的U型结构,它包含一个收缩路径捕获上下文信息和一个对称的扩张路径确保精确的定位。这种设计在医学图像分割中取得了巨大成功。

深度学习卷积网络技术不断创新

随后研究者们提出了许多基于CNN的语义分割模型,如DeepLab系列[7]、SegNet[8] 以及PSPNet等。这些模型通过引入注意力机制、多尺度处理和增强的特征提取等方式进一步提升了模型的性能。

发展里程碑:端到端学习

DeepLab系列、SegNet以及更多端到端的语义分割框架,通过融合深层的语义信息和浅层的细节信息,不仅在性能上取得了突破,也极大简化了训练流程,并且提高了模型的灵活性。

端到端全卷积网络(FCN)

全卷积网络的提出是端到端学习的起点。不同于以往需手动设计特征的模型,FCN通过学习能够直接从原始图像进行像素级预测,这是一个重要的突破。

Mask R-CNN的多任务学习

Mask R-CNN[9]是在Faster R-CNN的基础上进一步发展的,它不仅可以进行目标检测,还能输出高质量的分割掩码,实现了检测与分割的多任务学习。

Transformer在视觉任务中的应用

随后,如ViT[10]和DETR[11]等基于Transformer的模型在视觉领域展现出强大的性能,这些模型利用自注意力机制在端到端的框架下进行特征学习,为语义分割带来了更多可能。

目前端到端学习的现状

目前,端到端学习模型仍在不断进化,研究人员致力于更深层次的模型结构优化和算法创新,以应对不同场景下语义分割任务的挑战。这些研究不仅推动了计算机视觉的发展,也对自动驾驶、医疗影像分析等领域的应用产生了重要影响。

以下是一个示例使用PyTorch实现的Mask R-CNN的代码片段:

import torchvision
from torchvision.models.detection import MaskRCNN
from torchvision.models.detection.rpn import AnchorGenerator

# 加载预训练的Mask R-CNN模型
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)

# 修改模型,以适应不同数量的类别
num_classes = 2  # 1 类(人) + 背景
in_features = model.roi_heads.box_predictor.cls_score.in_features
model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)

# 对掩码预测器进行同样的修改
in_features_mask = model.roi_heads.mask_predictor.conv5_mask.in_channels
hidden_layer = 256
model.roi_heads.mask_predictor = MaskRCNNPredictor(in_features_mask,
                                                    hidden_layer,
                                                    num_classes)

当下进展与未来展望

随着研究的不断深入,语义分割技术在效率和精度上都有显著提高。Transformer、GAN等新兴技术的应用,为语义分割的发展带来了新的活力。未来,如何处理小样本学习、弱监督学习以及跨域适应等问题,将是该领域研究的热点。

参考文献

[1] Y Guo, Y Liu, T Georgiou, MS Lew. “A review of semantic segmentation using deep neural networks”. International journal of multimedia information retrieval, 2018 - Springer. 链接.
[2] AN de la Hidalga, PL Rosin, X Sun, L Livermore, and others. “Cross-validation of a semantic segmentation network for natural history collection specimens”. Machine Vision and Applications, 2022 - Springer. 链接.
[3] V Lempitsky, A Vedaldi. “Pylon model for semantic segmentation”. Advances in neural information processing systems, 2011 - proceedings.neurips.cc. 链接.
[4] J Canny. “A computational approach to edge detection”. IEEE Transactions on pattern analysis and machine intelligence, 1986 - ieeexplore.ieee.org. 链接.
[5] Y Boykov, O Veksler, R Zabih. “Fast approximate energy minimization via graph cuts”. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2001 - ieeexplore.ieee.org. 链接.
[6] J Long, E Shelhamer, T Darrell. “Fully convolutional networks for semantic segmentation”. Proceedings of the IEEE conference on computer vision and pattern recognition, 2015 - openaccess.thecvf.com. 链接.
[7] L Chen, G Papandreou, I Kokkinos, K Murphy, A - L Yuille. “DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs”. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017 - ieeexplore.ieee.org. 链接.
[8] V Badrinarayanan, A Kendall, R Cipolla, “SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation”. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017 - ieeexplore.ieee.org. 链接.
[9] K He, G Gkioxari, P Dollár, R Girshick, “Mask R-CNN”. IEEE International Conference on Computer Vision (ICCV), 2017 - openaccess.thecvf.com. 链接.
[10] A Dosovitskiy, L Beyer, A Kolesnikov, D Weissenborn, X Zhai, T - Unterthiner, M Dehghani, M Minderer, G Heigold, S Gelly, J Uszkoreit, N Houlsby, “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale”. arXiv, 2021. 链接.
[11] N Carion, F Massa, G Synnaeve, N Usunier, A Kirillov, S Zagoruyko, “End-to-End Object Detection with Transformers”. ECCV, 2020. 链接.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入解剖指针篇(2)

目录 指针的使用 strlen的模拟实现 传值调用和传址调用 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 个人主页(找往期文章):我要学编程(ಥ_ಥ)-CSDN博客 指针的使用 strlen的模拟实现 库函数strlen的功能是求字符串…

校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

JAVA操作Rabbitmq-原理讲的很详细

这篇文章来源于稀土掘金,来源:https://juejin.cn/post/7132268340541653005,主要用来收藏学习。 常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列,这篇文…

菜鸡后端的前端学习记录-2

前言 记录一下看视频学习前端的的一些笔记,以前对Html、Js、CSS有一定的基础(都认得,没用过),现在不想从头再来了,学学Vue框架,不定时更新,指不定什么时候就鸽了。。。。 忘了记一下…

【蓝桥杯51单片机入门记录】LED

目录 一、基础 (1)新建工程 (2)编写前准备 二、LED (1)点亮LED灯 (2)LED闪烁 延时函数的生成(stc-isp中生成) 实现 (3)流水灯…

无法在 word 中登录 Grammarly

目录 1. 情况描述 2. 解决方法 3. 原因分析 1. 情况描述 在浏览器中可以登录 Grammarly,但是在 word 中登录失败,大致如下图所示: 我自己没有截图,这是网上别人的图,但差不多都长这个样子。 2. 解决方法 我点击了…

Nucleosome, Recombinant Human, H2BK120ub1 dNuc, Biotinylated

EpiCypher(国内授权代理商欣博盛生物)是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher生产的在E. coli中表达的重组人单核小体(组蛋白H2A、H2B、H3和H4各2个;accession numbers:H2A-P04908;H2B-O60814;H3.1-P68431;H4…

正点原子--STM32中断系统学习笔记(2)

引言 上篇帖子STM32中断系统学习笔记(1)是理论,这篇帖子开始实战,目标是通过按键实现LED的控制。 1.工程建立 以正点原子HAL库 实验1 跑马灯实验为基础,复制工程,在“Drivers--BSP”目录下建立EXTI文件夹,并创建ext…

mfc140.dll丢失的几种修复方式,有效的解决文件丢失问题

mfc140.dll是Microsoft Foundation Class (MFC)库中的一个非常重要的DLL文件。它承载了许多被执行程序使用的函数和资源。这个库主要被广泛应用于开发Windows操作系统上的应用程序。然而,有时候我们可能会遭遇到mfc140.dll缺失或损坏的情况,这会导致依赖…

力扣hot100 二叉树的右视图 DFS BFS 层序遍历 递归

Problem: 199. 二叉树的右视图 文章目录 思路&#x1f496; BFS&#x1f496; DFS 思路 &#x1f469;‍&#x1f3eb; 甜姨 &#x1f496; BFS ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) class Solution {public List<Integer&…

探究HMAC算法:消息认证与数据完整性的完美结合

Hash-based Message Authentication Code&#xff08;基于哈希的消息认证码&#xff0c;简称HMAC&#xff09;算法作为一种广泛应用的消息认证码&#xff08;MAC&#xff09;算法&#xff0c;在现代信息安全领域起着至关重要的作用。本文将从算法原理、优缺点、实际应用等方面&…

linux中vim的操作

(码字不易&#xff0c;关注一下吧w~~w) 命令模式&#xff1a; 当我们按下esc键时&#xff0c;我们会进入命令模式&#xff1b;当使用vi打开一个文件时也是进入命令模式。 光标移动&#xff1a; 1 保存退出&#xff1a;ZZ 2 代码格式化&#xff1a;ggG 3 光标移动&#xff…

【数据结构 07】AVL树

目录 一、二叉搜索树 二、AVL树 2.1 左单旋 2.2 右单旋 2.3 左右双旋 2.4 右左双旋 三、AVL.h 四、test.cpp 一、二叉搜索树 二叉搜索树&#xff0c;又称二叉排序树&#xff08;Binary Search Tree&#xff09;&#xff0c;相比于普通二叉树&#xff0c;BST的特性有&a…

springboot完成一个线上图片存放地址+实现前后端上传图片+回显

1.路径 注意路径 2.代码&#xff1a;&#xff08;那个imagePath没什么用&#xff0c;懒的删了&#xff09;&#xff0c;注意你的本地文件夹要有图片&#xff0c;才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么&#xff1f; ONLYOFFICE是一款功能强大的在线协作办公软件&#xff0c;可以创建编辑Word文档、Excel电子表格&#xff0c;PowerPoint&#xff08;PPT&#xff09;演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台&#xff0c;无论使用的是 Windows、…

vue3.0中从proxy中取值

使用vue3.0时&#xff0c;因为底层是使用proxy进行代理的所以当我们打印一些值的时候是proxy代理之后的&#xff0c;是Proxy 对象&#xff0c;Proxy对象里边的[[Target]]才是真实的对象。也是我们需要的 第一种获取target值的方式&#xff1a; import { toRaw } from vue; le…

【Jenkins】配置及使用|参数化|邮件|源码|报表|乱码

目录 一、Jenkins 二、Jenkins环境搭建 1、下载所需的软件包 2、部署步骤 3、其他 三、Jenkins全局设置 &#xff08;一&#xff09;Manage Jenkins——Tools系统管理->全局工具配置分别配置JDK、Maven、Allure、Git&#xff0c;可以配置路径或者直接选择版本安装 1…

[C++]继承(续)

一、基类和派生类对象赋值转换 在public继承时&#xff0c;父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用&#xff0c;我们认为是天然的&#xff0c;中间不产生临时对象&#xff0c;也叫作父子类赋值兼容规则&#xff08;切割/切片&#xff…

【C/C++ 03】堆排序

堆排序是选择排序算法的进阶&#xff0c;也就是通过二叉树节点存储数组&#xff0c;并通过root节点存储最值与二叉树最后一个节点进行交换完成排序&#xff0c;降低了时间复杂度。在大数据时代&#xff0c;堆排序常用于处理Top-K问题。 排序对象&#xff1a;数组时间复杂度&am…

Maya------创建多边形工具

配合导入图像使用 Tab键可以删除一个点&#xff01; 模型不能超过4边面&#xff01;多切割工具进行连接&#xff01; 15.maya常用命令5.创建多边形工具 反转 双显 挤出_哔哩哔哩_bilibili