收藏 | 图像分割2020总结:结构,损失函数,数据集和框架
点上方蓝字计算机视觉联盟获取更多干货
在右上方 ··· 设为星标 ★,与你不见不散
仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:作者丨Derrick Mwiti
来源丨AI公园
AI博士笔记系列推荐
周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接
导读
本文总结了2020图像分割的相关内容,包括架构,损失函数,数据集,框架的整理,内容非常详细完整,适合入门者阅读上手。
在这篇文章中,我们将进入使用深度学习进行图像分割的世界。我们将讨论:
图像分割是什么以及图像分割的两种主要类型
图像分割结构
图像分割中使用的损失函数
你可以使用的框架
就让我们一探究竟吧。
什么是图像分割?
顾名思义,这是将图像分割为多个部分的过程。在这个过程中,图像中的每个像素都与一个对象类型相关联。图像分割主要有两种类型:语义分割和实例分割。在语义分割中,所有相同类型的对象都使用一个类标签进行标记,而在实例分割中,相似的对象使用各自的标签。
图像分割结构
图像分割的基本结构包括编码器和解码器。编码器通过滤波器从图像中提取特征。解码器负责生成最终输出,该输出通常是包含对象轮廓的分割掩码。大多数架构都有这种架构或它的变体。
让我们来看几个例子。
U-Net
U-Net是一种卷积神经网络,最初是为分割生物医学图像而开发的。当它被可视化的时候,它的架构看起来像字母U,因此被命名为U-Net。其体系结构由两部分组成,左侧为收缩路径,右侧为扩展路径。收缩路径的目的是获取上下文,而扩展路径的作用是帮助精确定位。U-Net是由右侧的扩张路径和左侧的收缩路径组成的。收缩路径由两个3乘3的卷积组成。卷积之后是一个ReLU和一个2x2的最大池计算用于下采样。
你可以在这里找到U-Net的完整实现:https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/。
FastFCN —Fast Fully-connected network
在这个架构中,使用一个联合金字塔上采样(JPU)模块来替换膨胀卷积,因为它们消耗大量的内存和时间。在应用JPU进行上采样时,其核心部分采用全连接网络。JPU将低分辨率的feature map采样到高分辨率feature map。如果你想动手实现一些代码,看这里:https://github.com/wuhuikai/FastFCN。
Gated-SCNN
这个架构由一个 two-stream CNN架构组成。在该模型中,使用一个单独的分支来处理图像的形状信息。利用形状流来处理边界信息。实现参考代码:https://github.com/nv-tlabs/gscnn
DeepLab
在这种架构中,上采样滤波器的卷积用于涉及密集预测的任务。多尺度的目标分割是通过空间金字塔池实现的。最后,利用DCNNs来改进目标边界的定位。通过对滤波器插入零进行上采样或对输入特征图进行稀疏采样来实现卷积。实现参考代码:https://github.com/fregu856/deeplabv3,https://github.com/sthalles/deeplab_v3
Mask R-CNN
在这个架构中,使用边界框和语义分割将每个像素划分为一组类别,对对象进行分类和局部化。对每个感兴趣的区域得到一个分割掩码,生成一个类标签和一个边界框作为最终输出。该架构是Faster R-CNN的扩展。Faster R-CNN由regions proposer和深度卷积网络和利局部检测器组成。这里是COCO测试集中的一张图像的结果:
图像分割损失函数
语义分割模型在训练过程中通常使用一个简单的交叉分类熵损失函数。但是,如果你对获取图像的细粒度信息感兴趣,那么你需要用到稍微高级一点的损失函数。我们来看看其中的几个。
Focal Loss
这种损失是对标准交叉熵的改进。这是通过改变它的形状来实现的,这样分配给分类良好的样本的损失就降低了。最终,这确保了没有类别不平衡。在这个损失函数中,交叉熵损失被缩放,随着对正确类的置信度的增加,缩放因子衰减为零。在训练时,比例因子会自动降低简单样本的权重,并聚焦于困难样本。
Dice loss
这个损失是通过计算smooth dice coefficient得到的。这种损失是最常用的分割损失。
Interp over Union (IoU)-balanced Loss
IoU平衡分类损失的目的是增加高IoU样本的梯度,降低低IoU样本的梯度。这样提高了机器学习模型的定位精度。
Boundary loss
边界损失的一种变体应用于分割高度不平衡的任务。这种损失的形式是空间等高线上的距离度量,而不是区域。这种方法解决了高度不平衡的分割任务中区域损失的问题。
Weighted cross-entropy
在交叉熵的一种变体中,所有正样本都用一定的系数进行加权。它用于类别不平衡的场景。
Lovász-Softmax loss
该损失是对基于子模块损失凸Lovasz扩展的神经网络平均IoU损失的直接优化。其他值得一提的损失包括:
TopK loss,其目的是确保网络在训练过程中聚焦于困难样本上。
距离惩罚交叉熵损失,引导网络难以分割的边界地区。
敏感性-特异性(SS)损失,计算特异性和敏感性的均方差的加权和。
Hausdorff distance(HD) loss,估计了卷积神经网络的Hausdorff距离。
这只是在图像分割中使用的几个损失函数。想了解更多内容,看这里:https://github.com/JunMa11/SegLoss。
图像分割数据集
从哪里可以得到一些数据集来开始?让我们来看几个例子。
Common Objects in COntext — Coco Dataset
COCO是一个大型物体检测、分割和图像描述数据集。数据集包含91个类。它有25万个人标注了关键点。它的大小是37.57 GiB。它包含80个物体类别。它遵循Apache 2.0许可,下载链接:http://cocodataset.org/#download。
PASCAL Visual Object Classes (PASCAL VOC)
PASCAL有9963个图像和20个不同的类。训练/验证集是一个2GB的tar文件。数据集下载:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/。
The Cityscapes Dataset
此数据集包含城市场景的图像。它可以用来评估城市场景中视觉算法的性能。 数据集下载:https://www.cityscapes-dataset.com/downloads/。
The Cambridge-driving Labeled Video Database — CamVid
这是一个基于运动的分割和识别数据集。它包含32个语义类。数据集下载:http://mi.eng.cam.ac.uk/research/projects/VideoRec/CamVid/。
图像分割框架
现在你已经有了数据集,让我们介绍一些工具/框架,你可以使用它们来开始。
FastAI library - 给定一幅图像,该库能够创建该图像中对象的mask。
Sefexa Image Segmentation Tool - Sefexa是一个免费的工具,可以用于半自动图像分割,图像分析,创建ground truth
Deepmask - Deepmask由Facebook Research开发,是Deepmask和SharpMask的Torch实现。
MultiPath - 这是来源于A MultiPath Network for Object Detection的物体检测网络的Torch实现。
OpenCV - 这是一个开源的计算机视觉库,有超过2500个优化算法。
MIScnn - 这是一个医学图像分割开源库。它使用最先进的卷积神经网络和深度学习模型建立管道,只需几行代码。
Fritz - Fritz提供多种计算机视觉工具,包括用于移动设备的图像分割工具。
总结
本文为你提供了一些图像分割的背景知识,并为你提供了一些工具和框架,可以用于入门。我们讨论了:
什么是图像分割,
图像分割架构,
图像分割损失,
图像分割工具和框架。
要了解更多信息,请查看每个架构和框架的链接。
英文原文:https://neptune.ai/blog/image-segmentation-in-2020
end
这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习
目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟
王博的公众号,欢迎关注,干货多多
王博的系列手推笔记(附高清PDF下载):
博士笔记 | 周志华《机器学习》手推笔记第一章思维导图
博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”
博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”
博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”
博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”
博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)
博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)
博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)
博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)
博士笔记 | 周志华《机器学习》手推笔记第八章(上)
博士笔记 | 周志华《机器学习》手推笔记第八章(下)
博士笔记 | 周志华《机器学习》手推笔记第九章
点个在看支持一下吧
收藏 | 图像分割2020总结:结构,损失函数,数据集和框架相关推荐
- 图像分割2020总结:结构,损失函数,数据集和框架
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Derrick Mwiti 编译:ronghuaiyang 编辑:AI公园 导读 一个很好的入门 ...
- 【CV】图像分割2020,架构,损失函数,数据集,框架的整理和总结
作者:Derrick Mwiti 编译:ronghuaiyang 正文共:3651 字 18 图 预计阅读时间:11 分钟 导读 包括架构,损失函数,数据集,框架的整理和总结. 在这篇文章中,我们将 ...
- 图像分割 2020 最新进展
正文字数:3004 阅读时长:4分钟 该文章由Derrick Mwiti发表在Neptune blog,在这篇文章中,我们将会探讨深度学习在图像分割领域的应用. Posted by Jakub Cz ...
- 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查
目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...
- YOLOV3林业病虫害数据集和数据预处理-paddle教程
林业病虫害数据集和数据预处理方法介绍 在本课程中,将使用百度与林业大学合作开发的林业病虫害防治项目中用到昆虫数据集. 读取AI识虫数据集标注信息 AI识虫数据集结构如下: 提供了2183张图片,其中训 ...
- titanic数据集_TF2.0结构化数据建模流程范例
尽管TensorFlow设计上足够灵活,可以用于进行各种复杂的数值计算.但通常人们使用TensorFlow来实现机器学习模型,尤其常用于实现神经网络模型. 从原理上说可以使用张量构建计算图来定义神经网 ...
- 基于结构化数据的文本生成:非严格对齐生成任务及动态轻量的GCN生成模型
作者|邴立东.程丽颖.付子豪.张琰等 单位|阿里巴巴达摩院.香港中文大学等 摘要 基于结构化数据生成文本(data-to-text)的任务旨在生成人类可读的文本来直观地描述给定的结构化数据.然而,目前 ...
- 【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.自然语言处理与智能 自然语言处理技术是智能客服应用的基础,在自然语言处理过程中,首先需要进行分词处理,这个过程通常基于统计学理论,分词的精细化 ...
- 【TF2基础教程1】结构化数据建模流程
note 文章目录 note 一.数据处理 1.1 tf.data 1.2 tf.keras: 1.3 tf.distribute: 二.tf2结构化数据建模流程 一,准备数据 二,定义模型 三,训练 ...
最新文章
- 力扣(LeetCode)刷题,简单+中等题(第35期)
- 5 zabbix 添加host_运维监控实战篇,zabbix自动发现和自动注册图文详解
- 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML
- MFC控件的绘制与响应顺序——ZOrder
- oracle ob 使用基础之基础
- oracle record 遍历,ORACLE中RECORD、VARRAY、TABLE的使用详解
- 使用nodejs应用查询SAP HANA Express Edition里的数据
- [css] css中的baseline,你知道吗?
- jmeter生成html报告修改,Jmeter生成html报告(示例代码)
- dataguard switchover的自动化脚本实现
- 通过双击运行linux脚本
- chromium thirt_party skia编译shared_liberary
- CSS font-family常见中文字体对应的英文名称
- HDU 6232 2017 哈尔滨 Confliction
- 基于二叉树的家谱系统
- html元素全屏右键显示覆盖,HTML表单元素覆盖样式元素问题及其补救之道
- 爬虫练习(2)-- 使用正则匹配爬取果壳问答
- 论BTC恐惧贪婪指数在基于有限价值平均策略的量化定投中的应用
- DB2 TSA资源查看
- Android 为底部Tab BottomNavigationView 添加未读数目
热门文章
- pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)
- python消费kafka逻辑处理导致cpu升高_大数据技术之一次KAFKA消费者异常引起的思考...
- list遍历_Qt 容器类之遍历器和隐式数据共享
- core控制器属性注入的用处_理解 ASP.NET Core 依赖注入
- 计算机硬件外围设备介绍,天津2012年自考“计算机外围设备使用与维护”课程考试大纲...
- python是一种面相什么语言_Python面相对象编程的知识总结
- c# 整数除法取整_Java 如何取整整数除法的结果?
- windows 下后台启动 redis
- Java问题定位之如何借助线程堆栈进行问题分析
- Spark记录-Scala记录(基础程序例子)