济南智能网站建设电话/外包服务公司
一、前言
如何快速搭建图像分割网络? 要手写把backbone ,手写decoder 吗? 介绍一个分割神器,分分钟搭建一个分割网络。
仓库的地址:
https://github.com/qubvel/segmentation_models.pytorch
该库的主要特点是:
- 高级 API(只需两行即可创建神经网络)
- 用于二元和多类分割的 9 种模型架构(包括传奇的 Unet) 124 个可用编码器(以及 timm 的 500 多个编码器)
- 所有编码器都有预先训练的权重,以实现更快更好的收敛
- 训练例程的流行指标和损失
二、快速引入—使用 SMP 创建您的第一个分割模型
分割模型只是一个 PyTorch nn.Module,创建起来很简单:
import segmentation_models_pytorch as smpmodel = smp.Unet(encoder_name="resnet34", # choose encoder, e.g. mobilenet_v2 or efficientnet-b7encoder_weights="imagenet", # use `imagenet` pre-trained weights for encoder initializationin_channels=1, # model input channels (1 for gray-scale images, 3 for RGB, etc.)classes=3, # model output channels (number of classes in your dataset)
)
三、Architectures
我们可以用到的 model 有:
- Unet
- Unet++
- MAnet
- Linknet
- FPN
- PSPNet
- PAN
- DeepLabV3
- DeepLabV3+
3.1 UNet
UNet是一种常用于图像分割任务的深度学习架构。它由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年在他们的论文《U-Net: Convolutional Networks for Biomedical Image Segmentation》中提出。
UNet的名字来自其U形的网络结构。它的设计目标是从输入图像中捕获低层次和高层次特征,然后利用这些信息生成像素级别的分割掩码。UNet在医学图像分析中特别受欢迎,因为它对于分割器官、肿瘤和其他感兴趣的结构非常有效。
UNet架构主要由两个部分组成:
-
收缩路径:该部分类似于典型的卷积神经网络架构,包含多个卷积和池化层。它被称为"收缩路径",因为每个卷积层减小空间维度,同时增加特征通道数量。
-
扩展路径:该部分涉及将特征映射进行上采样,恢复原始空间维度。它被称为"扩展路径",因为它增加空间维度,同时减少特征通道数量。
在U形架构的中心,有一个瓶颈层,它保留了局部和全局的上下文信息。
收缩路径和扩展路径是对称的,并通过跳跃连接相连接。这些跳跃连接有助于在上采样过程中保留细粒度的空间信息,使UNet特别适合图像分割任务。
在原始的UNet论文中,作者将该架构应用于生物医学图像分割任务,例如在电子显微镜数据中分割神经结构。然而,自那时以来,UNet架构已广泛应用于其他领域的图像分割任务,如自然图像、卫星图像等。
由于其有效性,UNet已成为各种扩展和改进的基础,并且在深度学习领域仍然是图像分割任务的热门选择。
3.2 UNet++
Unet++是对UNet进行改进和扩展的深度学习架构。它是由Zhou et al.于2018年在论文《UNet++: A Nested U-Net Architecture for Medical Image Segmentation》中提出的。
Unet++在原始UNet的基础上增加了一些重要的结构来提高图像分割的性能。主要的改进是引入了多层级的嵌套结构,使得模型能够更好地捕获不同尺度下的特征信息。以下是Unet++的主要特点:
-
多层级嵌套:Unet++采用了一种层级嵌套的结构,将UNet的每个阶段进行进一步细分。这样可以在不同的阶段获取更多的细节和语义信息,从而提高了分割的准确性。
-
密集跳跃连接:Unet++引入了密集的跳跃连接,将不同层级的特征图进行融合。这样可以使低层级的特征图能够直接参与到高层级的特征表示中,有助于更好地整合多尺度的信息。
-
自适应选择性上采样:在Unet++的解码器部分,采用了自适应选择性上采样技术,根据不同特征图的重要性进行选择性地上采样。这样可以减少计算量,并且避免了不必要的信息传递。
通过这些改进,Unet++在医学图像分割等任务中取得了较好的性能,相对于原始UNet,它能够更准确地定位和分割感兴趣的目标结构。
需要注意的是,自从Unet++的提出以来,还可能有其他进一步的改进和扩展,因为深度学习领域一直在不断发展和演进。
3.3 FPN
**FPN是"Feature Pyramid Network" 的缩写,是一种用于目标检测和语义分割任务的深度学习架构。它由Tsung-Yi Lin、Piotr Dollár、Ross Girshick和Kaiming He于2017年在论文《Feature Pyramid Networks for Object Detection》中提出。
FPN的目标是解决多尺度信息的问题。在许多计算机视觉任务中,目标可能在图像的不同尺度下出现,而且较小的目标可能在较低层级的特征图中丢失细节。FPN通过构建特征金字塔来解决这个问题。
FPN的主要思想是将不同层级的特征图进行融合,以提取多尺度的特征信息。它包含以下主要组件:
- 底层特征:从卷积神经网络的底层获得的特征图。这些特征图具有高分辨率但缺乏语义信息。
- 顶层特征:从网络的顶层获得的特征图。这些特征图具有较低的分辨率但包含丰富的语义信息。
FPN的构建过程如下:
-
首先,通过一个卷积层,将顶层特征图的通道数降低,使其与底层特征图的通道数相同。
-
然后,将降低通道数的顶层特征图与底层特征图相加,产生一组新的特征图,这些特征图在不同的层级上融合了多尺度的信息。
-
接下来,将融合后的特征图通过上采样操作(通常使用插值方法)增加分辨率,得到高分辨率的多尺度特征金字塔。
FPN的特征金字塔允许目标检测器或分割器在不同尺度下检测或分割目标,从而显著提高了算法的性能。由于其有效性和简单性,FPN已成为许多目标检测和语义分割任务的常用组件,并被广泛应用于许多深度学习模型中。
3.4 DeepLabV3
DeepLabV3是用于图像语义分割的深度学习模型,由Google于2018年推出。它是DeepLab系列模型的第三个版本,是对前两个版本的改进和扩展。
DeepLabV3的目标是对输入图像的每个像素进行分类,将每个像素标记为属于不同类别的某个目标或背景。该模型在图像分割任务中取得了很好的性能,尤其在细粒度的分割和边界细化方面表现出色。
主要的改进点包括:
-
空洞卷积(Atrous Convolution):DeepLabV3引入了空洞卷积来增大感受野,允许模型在保持计算效率的同时,获取更大范围的上下文信息。这有助于识别更大和更细微的目标。
-
多尺度信息融合:为了解决多尺度信息的问题,DeepLabV3使用了多尺度空洞卷积,将不同尺度的信息进行融合,从而提高了模型的语义分割性能。
-
引入特征金字塔池化(ASPP):ASPP模块进一步增加了感受野,帮助模型更好地理解图像中的上下文信息。ASPP模块由一组并行的空洞卷积层组成,每个卷积层的空洞率不同,从而捕获不同尺度的信息。
-
使用深度可分离卷积:为了减少模型的参数量和计算量,DeepLabV3采用了深度可分离卷积,这是一种将标准卷积分解为深度卷积和逐点卷积的方法。
DeepLabV3模型在PASCAL VOC 2012和Cityscapes等图像分割数据集上取得了显著的性能提升,成为当时图像语义分割领域的先进模型。其优秀的性能使得DeepLabV3被广泛应用于许多图像分割任务,特别是在需要准确分割细节的场景中。
四、Encoders
以下是 SMP 中支持的编码器列表。 选择适当的编码器系列,然后单击展开表格并选择特定的编码器及其预训练权重(encoder_name 和encoder_weights 参数)。
- ResNet
- ResNeXt
- ResNeSt
- Res2Ne(X)t
- RegNet(x/y)
- GERNet
- SE-Net
- SK-ResNe(X)t
- DenseNet
- Inception
- EfficientNet
- MobileNet
- DPN
- VGG
- Mix Vision Transformer
- MobileOne
我这里只展示其中一个,以 ResNet 为例:
更多权重详见我的kaggle数据集:
https://www.kaggle.com/datasets/holmes0610/pretrained-resnet-resnext
https://www.kaggle.com/datasets/holmes0610/timm-pretrained
Pytorch 图像模型(又名 timm)有很多预训练模型和接口,允许使用这些模型作为 smp 中的编码器,但是,并非所有模型都受支持。
- 并非所有 Transformer 模型都实现了编码器所需的 features_only 功能
- 一些模型的步幅不合适
支持的编码器总数:549
https://smp.readthedocs.io/en/latest/encoders_timm.html
这个网址里面总结了所有可用的 Encoders。
五、Models API
- model.encoder:预训练主干提取不同空间分辨率的特征
- model.decoder:取决于模型架构(Unet / Linknet / PSPNet / FPN)
- model.segmentation_head:最后一个块产生所需数量的掩模通道(还包括可选的上采样和激活)
- model.classification_head:在编码器顶部创建分类头的可选块
- model.forward(x):按顺序将 x 通过模型的编码器、解码器和分段头(以及分类头,如果指定)
六、安装
PyPI version:
pip install segmentation-models-pytorch
Latest version from source:
pip install git+https://github.com/qubvel/segmentation_models.pytorch
相关文章:

【计算机视觉】干货分享:Segmentation model PyTorch(快速搭建图像分割网络)
一、前言 如何快速搭建图像分割网络? 要手写把backbone ,手写decoder 吗? 介绍一个分割神器,分分钟搭建一个分割网络。 仓库的地址: https://github.com/qubvel/segmentation_models.pytorch该库的主要特点是&#…...
解析湖仓一体的支撑技术及实践路径
自2021年“湖仓一体”首次写入Gartner数据管理领域成熟度模型报告以来,随着企业数字化转型的不断深入,“湖仓一体”作为新型的技术受到了前所未有的关注,越来越多的企业视“湖仓一体” 为数字化转型的重要基础设施。 01 数据平台的发展历程…...

40.利用欧拉法求解微分方程组(matlab程序)
1.简述 求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。…...

OpenAI-Translator 实战总结
最近在极客时间学习《AI 大模型应用开发实战营》,自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator,在这里简单记录下开发过程和心得体会,供有兴趣的同学参考 功能概览 通过openai的chat API,实现一个pdf翻译器实现一个…...

【工业机器人】用于轨迹规划和执行器分析的机械手和移动机器人模型(MatlabSimulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

开源在线文档服务OnlyOffice
开源在线文档服务OnlyOffice应用启动与示例运行 - 掘金 ONLYOFFICE API 文档 - Example - IDEA运行Java示例 | ONLYOFFICE中文网 NEXTCLOUDonlyoffice的搭建和使用_nextcloud onlyoffice_莫冲的博客-CSDN博客 OnlyOffice java 部署使用,文件流方式 预览文件 | 言曌博…...

汽车基本常识
目录 电源KL30KL15 零部件简称 电源 KL30 KL15 零部件简称 VCU:整车控制器 直接网络管理节点 CDU:充电系统控制器 MCU:电机控制器 TCU:变速箱控制器 ABS:防抱死系统 EPS:助力转向 T-Box:远程…...

百度资深PMO阚洁受邀为第十二届中国PMO大会演讲嘉宾
百度在线网络技术(北京)有限公司资深PMO阚洁女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:运筹于股掌之间,决胜于千里之外 —— 360斡旋项目干系人。大会将于8月12-13日在北京举办,…...

为什么C++有多种整型?
C中有多种整型是为了满足不同的需求,提供更灵活和高效的整数表示方式。不同的整型具有不同的字节大小、范围和精度,可以根据应用的需求选择合适的整型类型。以下是一些原因解释为什么C有多种整型: 内存和性能优化:不同的整型在内存…...

玩一玩通义千问Qwen开源版,Win11 RTX3060本地安装记录!
大概在两天前,阿里做了一件大事儿。 就是开源了一个低配版的通义千问模型--通义千问-7B-Chat。 这应该是国内第一个大厂开源的大语言模型吧。 虽然是低配版,但是在各类测试里面都非常能打。 官方介绍: Qwen-7B是基于Transformer的大语言模…...

oracle积累增量和差异增量
积累增量和差异增量: 对于 RMAN 来说,积累增量备份和差异增量备份都是增量备份的一种形式,它们之间的区别在于备份的范围和备份集的方式。 积累增量备份:在进行积累增量备份时,RMAN 会备份自最后一次完全备份或增量备…...

利用C++nlohmann库解析json文件
json文件示例: 代码运行环境VS2019 一、git下载nlohmann库文件源代码 源代码文件目录 二、利用VS2019新建工程,并配置项目属性 配置VC目录---包含目录 三、项目源代码 #include <iostream> #include <fstream> #include <nlohmann/jso…...

OpenCV 中的光流 (C++/Python)
什么是光流? 光流是一项视频中两个连续帧之间每像素运动估计的任务。基本上,光流任务意味着计算像素的位移矢量作为两个相邻图像之间的对象位移差。光流的主要思想是估计物体由其运动或相机运动引起的位移矢量。 理论基础 假设我们有一个灰度图像——具有像素强度的矩阵。我…...

第9集丨Vue 江湖 —— 监测数据原理
目录 一、修改数据时的一个问题1.1 现象一1.2 现象二 二、Vue监测数据原理2.1 模拟一个数据监测2.2 数据劫持2.3 Vue.set()/vm.$set()2.4 基本原理2.4.1 如何监测对象中的数据?2.4.2 如何监测数组中的数据?2.4.3 修改数组中的某个元素 2.5 案例2.5.1 需求功能2.5.2 实现 一、…...

【YOLO】替换骨干网络为轻量级网络MobileNet3
替换骨干网络为轻量级网络MobileNet_v3 上一章 模型网络结构解析&增加小目标检测 文章目录 替换骨干网络为轻量级网络MobileNet_v3前言一、MobileNetV3介绍二、MobileNetV2&MobileNetV3三、MobileNetV3网络结构1. 结构查看2. 查看每层featuremap大小三、YOLOV5替换骨干…...

如何识别手机是否有灵动岛(dynamic island)
如何识别手机是否有灵动岛(dynamic island) 灵动岛是苹果2022年9月推出的iPhone 14 Pro、iPhone 14 Pro Max首次出现,操作系统最低是iOS16.0。带灵动岛的手机在竖屏时顶部工具栏大于等于51像素。 #define isHaveDynamicIsland ({ BOOL isH…...

Linux设备树简介
一、起源 减少垃圾代码 减轻驱动开发工作量 驱动代码和设备信息分离 参考Open Fireware设计 用来记录硬件平台中各种硬件设备的属性信息 二、基本组成 两种源文件: xxxxx.dts dts是device tree source的缩写 xxxxx.dtsi dtsi是device tree source include的…...

Ubuntu类IOS主题设置
1.依次执行下面三条命令: sudo apt install gnome-shell-extensions sudo apt install gnome-tweak-tool sudo apt install chrome-gnome-shell2.下载主题,也是命令: git clone <https://github.com/qingchendelaike/GNOME-OSX-II-Theme…...

RabbitMQ学习——发布订阅/fanout模式 topic模式 rabbitmq回调确认 延迟队列(死信)设计
目录 引出点对点(simple)Work queues 一对多发布订阅/fanout模式以登陆验证码为例pom文件导包application.yml文件rabbitmq的配置生产者生成验证码,发送给交换机消费者消费验证码 topic模式配置类增加配置生产者发送信息进行发送控制台查看 rabbitmq回调确认配置类验…...

Leetcode算法递归类—合并两个有序链表
目录 21. 合并两个有序链表 题解: 代码: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2&a…...

YOLOv5可视化界面
Pyside6可视化界面 安装Pyside6 激活之前的虚拟环境yolov5 在该环境的终端输入以下命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6输入where python找到当前使用的Python的路径 找到该路径下的designer.exe文件(/Lib/site-packages/PySi…...

C语言使用库函数实现大小写字母转换
功能;多行输入,输入大写字母,返回相应的小写字母;输入小写字母,返回相应的大写字母 需要用到的库函数: islower() -- 判断是否为小写,是,返回非0,…...

Redis简单学习
Redis是一个基于内存的key-value结构数据库 linux上面安装: Redis存储的是key-value结构的数据,其中key是字符串,value有常见的5中数据类型: 字符串 string哈希 hash列表 list集合 set有序集合 sorted set 字符串常用操作&am…...

《Python入门到精通》函数详解
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 函数 1、函数的调用2、函数的参数2.1、变量的就近原则2.2、传递参数2.3、形参和实…...

PHP流浪动物招领网站mysql数据库web结构apache计算机软件工程网页wamp
一、源码特点 PHP流浪动物招领网站 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 下载链接 nullhttps://download.csdn.net/download/qq_41221322/88190168视频演示 …...

android—ktor-client封装使用,请求网络
ktor-client封装使用步骤: 1.导入依赖: 设置版本号: buildscript {ext.ktor_version 2.3.1 }添加依赖: implementation "io.ktor:ktor-client-okhttp:$ktor_version"implementation "io.ktor:ktor-client-auth…...

GD32F103VE侵入事件
GD32F103VE的TAMPER引脚(PC13),当PC13输入低电平时,会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用? 一是防止被人开壳,抄袭。二是自毁功能。 直奔主题,多一句就是浪费时间。测试…...

将tp5项目、fastadmin项目部署到服务器宝塔面板
目录 一、将你的fastadmin或者tp5项目文件夹上传至你的服务器域名根目录下 二、修改你的网站目录指向,指向public目录,点击保存,并取消勾选防跨站攻击。 三、配置伪静态 四、fastadmin框架上传至服务器后如果想要访问后台可以进行重定向&am…...

Jenkins+Docker+SpringCloud微服务持续集成
JenkinsDockerSpringCloud微服务持续集成 JenkinsDockerSpringCloud持续集成流程说明SpringCloud微服务源码概述本地运行微服务本地部署微服务 Docker安装和Dockerfile制作微服务镜像Harbor镜像仓库安装及使用在Harbor创建用户和项目上传镜像到Harbor从Harbor下载镜像 微服务持…...

系统架构设计师-系统可靠性分析与设计
目录 一、可靠性相关基本概念 二、可靠性指标 1、串联系统与并联系统可靠性指标计算 2、混合系统 三、可靠性设计 1、影响软件可靠性的主要因素: 2、增加可靠性的解决方案 2.1 避错技术 2.2 降低复杂度设计 2.3 检错技术 2.4 容错技术 3、双机容错 一、可靠性相关…...