干货 | 图像分割概述 ENet 实例

news2024/9/25 2:38:03

本文为 AI 研习社编译的技术博客,原标题 :
Image Segmentation Overview & ENet Implementation
作者 | Aviv Shamsian
翻译 | sherry3255、alexchung
校对 | 邓普斯·杰弗 审核 | 酱番梨 整理 | 立鱼王
原文链接:
https://medium.com/@mista2311/image-segmentation-overview-enet-implementation-8394ff71cf26

在这篇博文中,我将概述图像分割并介绍ENet论文。

论文链接:

https://s3-us-west-2.amazonaws.com/mlsurveys/54.pdf

⭐库链接:

https://github.com/iArunava/ENet-Real-Time-Semantic-Segmentation

图像分割概述

在计算机视觉领域中,将一幅数字图像分割为多个组成部分(一系列像素,或所熟知的超像素)的过程即为图像分割。分割的目标就是简化并/或变换可以将图像转换为更有意义和更易分析的内容的表达。图像分割通常被用来定位图像中目标和边界(线、曲面)的位置。更准确地说,图像分割是为图像中的每一个像素打上标签,其中具有相同标签的像素具有相同特征。在图像分割领域中有多种技术:

  • 基于区域的分割技术
  • 边界检测分割技术
  • 基于聚类的分割技术

图像分割的经典算法

过去,提出了很多不同的算法来进行图像分割,有:

  1. 阈值技术–该技术的主要目的在于确定图像的最佳阈值。强度值超过阈值的像素其强度将变为1,其余像素的强度值将变为零,最后形成一个二值图。用于选择阈值的方法有:Otsu,k均值聚类,和最大熵法。

在这里插入图片描述

  1. 运动与交互分割–该技术基于图像中的运动来进行分割。其思想很直观,在假设目标是运动的情况下找出两幅图中的差异,那么不同之处一定就是目标位置。
  2. 边界检测–包含多种数学方法,其目的在于标出数字图像中处于图像亮度变化剧烈,或者更正式的讲,具有不连贯性的区域中的点。由于区域边界和边具有很高关联性,因此边界检测通常是另一种分割技术的前提步骤。
  3. 区域增长方法–主要建立在同一区域中相邻像素具有相近像素值的假设之上。常见步骤为将像素与其近邻像素作比较,如果满足相似性标准,则该像素就可以被划分到以一个或更多其近邻点组成的聚类中去。相似性标准的选择很关键,并且在所有实例中其结果易受到噪声影响。

还有很多用于图像分割的方法在上文中未提及,比如双聚类方法、快速匹配法、分水岭变换法等等。

用于图像分割的深度学习模型

UNet–u-net是用来快速准确的分割图像的一种卷积神经网络结构。到目前为止,在ISBI挑战中,该网络较先前最好的模型(一种基于滑动窗口的卷积网络)已在分割电子显微镜下神经元结构的任务中取得了更好的效果。在2015年ISBI大会上,它赢得了计算机自动检测咬翼片中重龋病的大挑战,并且在很大程度上(参见我们的公告)可被认为是两个最具挑战性的透射光显微镜类别上(相位对比度和DIC显微镜),赢得了细胞跟踪的挑战。

在这里插入图片描述

SegNet–SegNet由编码器和解码器构成,但没有全连接层。SegNet是一个包含全卷积网络(FCN)的13 VGG16卷积层。
在这里插入图片描述

Mask R-CNN–Faster R-CNN采用一个CNN特征提取其来提取图像特征。然后使用CNN区域建议网络来生成感兴趣区域(Roi)。我们应用RoI池化层将它们打包以形成固定维度。然后将其作为全连接层的输入来进行分类和边界框预测。

在这里插入图片描述

全分辨率残差网络(FRRN)–FRRN通过执行必要的额外处理步骤来获取全图像分辨率下像素精度的分割掩码。

在这里插入图片描述

金字塔场景解析网络(PSPNet)–全分辨率残差网络的计算非常密集,应用在全尺度照片上非常缓慢。为了解决这个问题,PSPNet采用了4种不同的最大池化操作,这些操作分别对应4种不同的窗口大小和步长。使用最大池化层可以更有效地提取不同尺度中特征信息。

在这里插入图片描述

DeepLabv3+ --先前的网络可以通过使用不同变化率的过滤器和池操作来编码多尺度上下文信息。更新的网络可以通过恢复空间信息来捕捉更清晰的目标边界。DeepLabv3+结合了这两种方法。DeepLabv3+同时采用了编码器、解码器和空间金字塔池化模块。

在这里插入图片描述

ENet 实现

ENet(Efficient Neural Network)提供了执行实时逐像素语义分割的能力。ENet的执行速度快了18倍,且需要的浮点运算次数少了75倍,同时参数减少了79倍,并且提供了与现有模型对比相似或更高的精度(根据2016年)。在CamVid, CityScapes 和SUN数据集执行测试。

在这里插入图片描述

模型体系结构由初始块和五个bottlenecks组成。 前三个bottlenecks用于编码输入图像,另外两个用于解码输入图像。

每个bottlenecks模块包含:

  • 1x1 投影可降低维度
  • 主卷积层(conv)(任意常规、膨胀或者全卷积)(3x3)
  • 1x1 扩张
  • 在所有卷积层之间进行批量标准化和PReLU

如果bottleneck是降采样,则将最大池化层添加到主分支。同时使用步长为2的 2x2 的卷积替换第一个 1x1的投影。

它们零填充激活以匹配功能图的数量。

卷积有时候是非对称卷积,例如一系列5 * 1 的卷积与1 * 5的卷积。

他们使用空间Dropout进行正则化:

  • p = 0.01,在 bottleneck2.0前
  • p = 0.1,之后

在这里插入图片描述

ENet 模型结果

在这里插入图片描述

如果你想要训练ENet模型并一次性复现结果,你可以通过阅读原文查看链接打开笔记本并运行它。无需下载既可运行和用。

如果喜欢, 不要忘记鼓掌, 标星 和 fork这个项目!!!
https://github.com/iArunava/ENet-Real-Time-Semantic-Segmentation

作者:AI科技评论
文章来源:腾讯云

推荐阅读

  • 图片、视频修复并超分 – Real-ESRGAN项目使用(一) | 机器学习
  • 计算机视觉( CV)的发展史
  • PSPNet :语义分割

更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

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

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

相关文章

Rolling Update

滚动更新是一次只更新一小部分副本,成功之后在更新更多的副本,最终完成所有的副本的更新,滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性 部署三副本的应用,初始镜像为…

Qt_事件的介绍

目录 1、理解事件 2、处理事件QEvent 3、键盘事件QKeyEvent 4、鼠标事件QMouseEvent 4.1 鼠标点击事件 4.2 鼠标释放事件 4.3 鼠标移动事件 5、滚轮事件QWheelEvent 6、定时器事件QTimerEvent 7、窗口事件QMoveEvent 8、事件分发器event 9、事件过滤器even…

C语言练习:通讯录

简单版代码讲解: 这个版本不涉及文件操作以及动态内存分配,有助于理解代码。 文件管理 这里我们分了三个文件,.h 文件里给出类型声明和函数声明,contact.c 文件是具体的实现,test.c文件里是游戏的实现逻辑。 test.c…

怎么一键更换PPT模板?2个做PPT必备的办公神器推荐!

在主打快节奏的当下,一份精美的PPT演示文稿往往能够为你赢得更多的关注和机会。但不可否认的是,制作一份高质量的PPT并非易事,特别是当你需要频繁更换PPT模板以应对不同场合时,根本抽不出时间来逐一修改。 本文将为大家介绍2款强…

ATTCK实战系列-Vulnstack靶场内网域渗透(二)

ATT&CK实战系列-Vulnstack靶场内网域渗透(二) 前言一、环境搭建1.1 靶场下载地址1.2 环境配置1.2.1 DC域控服务器:1.2.2 WEB服务器:1.2.3 PC域内主机:1.2.4 攻击者kali: 1.3 靶场拓扑图 二、外网渗透2.…

SpringCloud微服务实现服务熔断的实践指南

Spring Cloud是一套分布式系统的微服务框架,它提供了一系列的组件和工具,能够使我们更容易地构建和管理微服务架构。在实际开发中,由于各个服务之间的通信依赖,一旦某个服务出现故障或负载过高,可能会导致整个系统的性…

Growthly Quest 增长工具:助力 Web3 项目实现数据驱动的增长

作者:Stella L (stellafootprint.network) 在瞬息万变的 Web3 领域,众多项目在用户吸引、参与和留存方面遭遇重重难关。Footprint Analytics 推出 Growthly,作为应对这些挑战的全方位解决方案,其中创新性的 Quest(任务…

Maya学习笔记:物体的层级关系

文章目录 父子关系设置父子关系同时显示两个大纲视图 组 父子关系 设置父子关系 设置父子物体: 方法1 先选择子物体,按住shift再选中父物体,按P或者G键 方法2 在大纲视图中按住鼠标中间,拖动一个物体到另一个物体上 取消父子关…

HC32F460JETA使用串口DMA循环传输数据时遇到问题,只传输了一次就停止传输,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——STM32代码实现篇

STM32代码实现 开启本章节需要完成下方的前置任务: 点击跳转: 物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 目标 1.连接OneNET:STM32使用串口与ESP8266/01s连接发送…

基于Vue3组件封装的技巧分享

本文在Vue3的基础上针对一些常见UI组件库组件进行二次封装,旨在追求更好的个性化,更灵活的拓展,提供一些个人的思路见解,如有不妥之处,敬请指出。核心知识点$attrs,$slots 需求 需求背景 日常开发中,我们经…

PHP判断微信或QQ访问

PHP判断微信或QQ访问 若是微信或者QQ打开&#xff0c;提示图会覆盖网页&#xff0c;但网页功能仍在运行&#xff01; <meta name"viewport" content"initial-scale1, maximum-scale1, user-scalableno, widthdevice-width"><style> .top-gui…

leetcode第169题:多数元素

给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3 示例 …

OpenHarmony(鸿蒙南向)——平台驱动开发【ADC】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 ADC&#xff08;Analog to Digital Converter&…

LOGO设计新革命:5款AI工具让你秒变设计大师(必藏)

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 你是否曾因设计一个既独特又专业的LOGO而感…

JUC高并发编程2:Lock接口

1 synchronized 1.1 synchronized关键字回顾 synchronized 是 Java 中的一个关键字&#xff0c;用于实现线程间的同步。它提供了一种简单而有效的方式来控制对共享资源的访问&#xff0c;从而避免多个线程同时访问同一资源时可能出现的竞态条件&#xff08;race condition&am…

【Linux网络 —— 网络基础概念】

Linux网络 —— 网络基础概念 计算机网络背景网络发展 初始协议协议分层协议分层的好处 OSI七层模型TCP/IP五层(或四层)模型 再识协议为什么要有TCP/IP协议&#xff1f;什么是TCP/IP协议&#xff1f;TCP/IP协议与操作系统的关系所以究竟什么是协议&#xff1f; 网络传输基本流程…

【openwrt】 libubox组件——ustream

文章目录 ustream 核心数据结构struct ustreamstruct ustream_buf_liststruct ustream_bufstruct ustream_fd ustream 核心APIustream_fd_initustream_uloop_cbustream_fd_read_pendingustream_fill_read ustream_write_pendingustream_writeustream_fd_write ustream 应用示例…

Python画笔案例-059 绘制甩曲彩点动图

1、绘制甩曲彩点动图 通过 python 的turtle 库绘制 甩曲彩点动图,如下图: 2、实现代码 绘制甩曲彩点动图,以下为实现代码: """甩曲彩点动图.py """ import time import turtlecs = [red,orange,

CVPT: Cross-Attention help Visual Prompt Tuning adapt visual task

论文汇总 当前的问题 图1:在VTAB-1k基准测试上&#xff0c;使用预训练的ViT-B/16模型&#xff0c;VPT和我们的CVPT之间的性能和Flops比较。我们将提示的数量分别设置为1、10、20、50,100,150,200。 如图1所示&#xff0c;当给出大量提示时&#xff0c;VPT显示了性能的显著下降…