TensorFlow中的语义分割套件

描述

该存储库用作语义细分套件。目标是轻松实现,训练和测试新的语义细分模型!完成以下内容:

训练和测试方式
资料扩充
几种最先进的模型。轻松随插即用
能够使用任何数据集
评估包括准确性,召回率,f1得分,平均准确性,每类准确性和平均IoU
绘制损失函数和准确性

欢迎提出任何改进此存储库的建议,包括希望看到的任何新细分模型。

也可以签出Transfer Learning Suite。

引用

如果发现此存储库有用,请考虑使用回购链接将其引用:)

前端

当前提供以下特征提取模型:

MobileNetV2,ResNet50 / 101/152和InceptionV4

模型

当前提供以下细分模型:

基于SegNet的编解码器。该网络使用VGG样式的编码器/解码器,其中解码器中的升采样是使用转置卷积完成的。
具有基于SegNet的跳过连接的编解码器。该网络使用VGG样式的编码器/解码器,其中解码器中的升采样是使用转置卷积完成的。另外,采用从编码器到解码器的附加跳过连接。
用于语义分割的移动UNet。将MobileNets深度可分离卷积与UNet的思想相结合,以建立一个高速,低参数的语义分割模型。
金字塔场景解析网络。在本文中,通过金字塔池模块以及所提出的金字塔场景解析网络(PSPNet)来应用基于不同区域的上下文聚合的全局上下文信息的功能。请注意,原始的PSPNet使用具有扩展卷积的ResNet,但是一个是此存储库仅具有常规ResNet。
The One Hundred Layers Tiramisu:用于语义分割的完全卷积DenseNet。使用下采样-上采样样式的编码器-解码器网络。每个阶段(即池化层之间的阶段)都使用密集块。此外,还连接了从编码器到解码器的跳过连接。在代码中,这是FC-DenseNet模型。
对Atrous卷积语义图像分割的再思考。这是DeepLabV3网络。使用Atrous空间金字塔池通过使用多个atrous速率来捕获多尺度上下文。这产生了一个大的接受场。
RefineNet:用于高分辨率语义分割的多路径优化网络。一个多路径优化网络,该网络显式地利用降采样过程中的所有可用信息,以实现使用远程残差连接的高分辨率预测。这样,可以使用早期卷积中的细粒度特征直接完善捕获更深层的高级语义特征。
用于街道场景语义分割的全分辨率残差网络。通过使用网络中的两个处理流,将多尺度上下文与像素级精度结合在一起。残留流以全图像分辨率传输信息,从而可以精确地遵守分割边界。池化流经过一系列池化操作以获得可靠的功能以进行识别。两个流使用残差以全图像分辨率耦合。在代码中,这是FRRN模型。
大内核问题-通过全球卷积网络改进语义分割。提出了一个全球卷积网络来解决语义分割的分类和本地化问题。使用较大的可分离内核扩展接收场,并使用边界细化块进一步提高边界附近的定位性能。
AdapNet:不利环境条件下的自适应语义分段通过使用具有无规则卷积的多尺度策略执行较低分辨率的处理,来修改ResNet50体系结构。这是使用双线性放大而不是转置卷积的稍微修改的版本,因为发现给出了更好的结果。
ICNet用于高分辨率图像的实时语义分割。提出了一种基于压缩PSPNet的图像级联网络(ICNet),该网络在适当的标签指导下合并了多分辨率分支,以应对这一挑战。大多数处理都是在低分辨率下高速完成的,多尺度辅助损耗有助于获得准确的模型。请注意,对于此模型,已经实现了网络,但尚未集成其训练
带有可分解卷积的编解码器用于语义图像分割。这是DeepLabV3 +网络,在常规DeepLabV3模型的顶部添加了解码器模块。
DenseASPP在街道场景中的语义分割。使用膨胀卷积结合密集连接的多种不同尺度
用于单通语义分割的密集解码器快捷连接。在细分模型的解码器阶段使用密集连接的密集解码器快捷连接。注意:由于ResNeXt模块的构造,该网络需要花费一些额外的时间来加载
BiSeNet:用于实时语义分割的双边分割网络。BiSeNet使用步幅较小的空间路径来保存空间信息并生成高分辨率特征,同时使用具有快速下采样策略的并行上下文路径来获得足够的接收场。
或者自己制作并即插即用!

文件和目录

train.py:对选择的数据集进行训练。默认为CamVid
test.py:在选择的数据集上进行测试。默认为CamVid
predict.py:使用新近训练的模型对单个图像进行预测
helper.py:快速助手功能,用于数据准备和可视化
utils.py:用于打印,调试,测试和评估的实用程序
models:包含所有模型文件的文件夹。使用来构建模型,或使用预先构建的模型
CamVid:用于语义分割的CamVid数据集作为测试平台。这是32类版本
checkpoints:训练期间每个时期的检查点文件
Test:测试结果包括图像,每类准确性,准确性,召回率和f1分数

安装

该项目具有以下依赖性:

Numpy的 sudo pip install numpy
OpenCV Python sudo apt-get install python-opencv
TensorFlow sudo pip install --upgrade tensorflow-gpu

用法

唯一要做的就是按照以下结构设置文件夹:

├── “dataset_name”

|
├── train

|
├── train_labels

|
├── val

|
├── val_labels

|
├── test

|
├── test_labels

将一个文本文件放在数据集目录下,称为“class_dict.csv”,其中包含类列表以及R,G,B颜色标签,以可视化分割结果。这种字典通常随数据集一起提供。这是CamVid数据集的示例:

name,r,g,b

Animal,64,128,64

Archway,192,0,128

Bicyclist,0,128, 192

Bridge,0, 128, 64

Building,128, 0, 0

Car,64, 0, 128

CartLuggagePram,64, 0, 192

Child,192, 128, 64

Column_Pole,192, 192, 128

Fence,64, 64, 128

LaneMkgsDriv,128, 0, 192

LaneMkgsNonDriv,192, 0, 64

Misc_Text,128, 128, 64

MotorcycleScooter,192, 0, 192

OtherMoving,128, 64, 64

ParkingBlock,64, 192, 128

Pedestrian,64, 64, 0

Road,128, 64, 128

RoadShoulder,128, 128, 192

Sidewalk,0, 0, 192

SignSymbol,192, 128, 128

Sky,128, 128, 128

SUVPickupTruck,64, 128,192

TrafficCone,0, 0, 64

TrafficLight,0, 64, 64

Train,192, 64, 128

Tree,128, 128, 0

Truck_Bus,192, 128, 192

Tunnel,64, 0, 64

VegetationMisc,192, 192, 0

Void,0, 0, 0

Wall,64, 192, 0

注意:如果使用的是依赖于预训练的ResNet的任何网络,则需要使用提供的脚本下载预训练的权重。当前是:PSPNet,RefineNet,DeepLabV3,DeepLabV3 +,GCN。

然后,可以简单地运行train.py!查看可选的命令行参数:

usage: train.py [-h] [–num_epochs NUM_EPOCHS]

[–checkpoint_step CHECKPOINT_STEP]

[–validation_step VALIDATION_STEP] [–image IMAGE]

[–continue_training CONTINUE_TRAINING] [–dataset DATASET]

[–crop_height CROP_HEIGHT] [–crop_width CROP_WIDTH]

[–batch_size BATCH_SIZE] [–num_val_images NUM_VAL_IMAGES]

[–h_flip H_FLIP] [–v_flip V_FLIP] [–brightness BRIGHTNESS]

[–rotation ROTATION] [–model MODEL] [–frontend FRONTEND]

optional arguments:
-h, --help show this help message and exit
–num_epochs NUM_EPOCHS Number of epochs to train for
–checkpoint_step CHECKPOINT_STEP How often to save checkpoints (epochs)
–validation_step VALIDATION_STEP How often to perform validation (epochs)
–image IMAGE The image you want to predict on. Only valid in “predict” mode.
–continue_training CONTINUE_TRAINING Whether to continue training from a checkpoint
–dataset DATASET Dataset you are using.
–crop_height CROP_HEIGHT Height of cropped input image to network
–crop_width CROP_WIDTH Width of cropped input image to network

–batch_size BATCH_SIZE Number of images in each batch
–num_val_images NUM_VAL_IMAGES
The number of images to used for validations

–h_flip H_FLIP Whether to randomly flip the image horizontally for data augmentation

–v_flip V_FLIP Whether to
randomly flip the image vertically for data augmentation
=–brightness BRIGHTNESS Whether to randomly
change the image brightness for data augmentation.
Specifies the max bightness change as a factor between 0.0
and 1.0. For example, 0.1 represents a max brightness change of
10% (±).

–rotation ROTATION Whether to randomly rotate the image for data augmentation. Specifies the max rotation angle in degrees.

–model MODEL The model you are using. See model_builder.py
for supported models

–frontend FRONTEND The frontend you are using. See frontend_builder.py for supported models

结果

这些是带有11个类的CamVid数据集的一些示例结果(先前的研究版本)。

在训练中,使用的批处理大小为1,图像大小为352x480。以下结果适用于训练了300个纪元的FC-DenseNet103模型。使用RMSProp的学习速率为0.001,衰减率为0.995。没有像本文中那样使用任何数据增强。也没有使用任何类平衡。这些只是一些快速而肮脏的示例结果。

请注意,检查点文件未上传到此存储库,因为对于GitHub太大(大于100 MB)

TensorFlow中的语义分割套件相关推荐

  1. TensorFlow语义分割套件开源了ECCV18旷视科技BiSeNet实时分割算法

    (欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) Github上的开源工程Semantic Segmentation Suite(语义分割套件),由来自美国建筑智能 ...

  2. CV之IS:计算机视觉中图像分割(语义分割)最diao炸(完)天(整)的思维导图

    CV之IS:计算机视觉中图像分割(语义分割)最diao炸(完)天(整)的思维导图 导读:此语义导图为某大牛精心整理,感谢无私分享. 目录 语义分割思维导图(完整) 相关文章 CV之IS:计算机视觉之图 ...

  3. Tensorflow keras中实现语义分割多分类指标:IOU、MIOU

    在TF1.x版本中 miou指标可以使用tf.metrics.mean_iou 进行计算: tf.metrics.mean_iou(labels, predictions, num_classes) ...

  4. 汇总 | 深度学习中图像语义分割基准数据集详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 汇总图像语义分割那些质量最好的数据集与常用benchmark数据集 ...

  5. 一、深度卷积神经网络中图像语义分割研究总结

    时间:20220410 内容:语义分割研究进程总结 参考:深度卷积神经网络图像语义分割研究进展 http://www.cjig.cn/html/jig/2020/6/20200601.htm 语义分割 ...

  6. 从Kaggle HuBMAP 比赛中学习语义分割

    最近有很多学员问我,怎么快速提高项目实战能力? 毫无疑问,打一场顶级大赛才是真香!更重要的是,拥有一个完整的大赛经验能帮你更深层次的加深理解知识点! 众所周知,不管是国外的Kaggle,还是阿里天池. ...

  7. 用TensorFlow.js在浏览器中进行实时语义分割 | MixLab算法系列

    语义分割是监测和描绘图像中每个感兴趣对象的问题 当前,有几种方法可以解决此问题并输出结果 如下图示: 语义分割示例 这种分割是对图像中的每个像素进行预测,也称为密集预测. 十分重要且要注意的是,同一类 ...

  8. 利用NVIDIA-NGC中的MATLAB容器加速语义分割

    利用NVIDIA-NGC中的MATLAB容器加速语义分割 Speeding Up Semantic Segmentation Using MATLAB Container from NVIDIA NG ...

  9. 语义分割-Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述

    Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述 0.摘要 1.介绍 1.1.语义分割 ...

最新文章

  1. 用Construct 2制作入门小游戏~
  2. 这届架构师成功的理由,它排第一……
  3. 任务间共享资源问题总结
  4. 分布式数字签名令牌TokenProvider
  5. 在JDK 10中不可变与不可修改
  6. vue vue的table表格自适应_响应式表格,HTML表格自适应(responsive table)
  7. 【PAT - 甲级 - 1018】Public Bike Management (带权最短路,多条最短路中加条件,DFS)
  8. store 存取数据数组对象_如何从Firestore文档中获取对象数组
  9. installshield 脚本 在卸载过程执行_Linux下运行Jmeter脚本
  10. 探讨一下,数据库里账号的密码,怎样存放更加安全?
  11. python用来自动修改pdf_python实现从pdf文件中提取文本,并自动翻译的方法
  12. 【写作技巧】毕业论文结构一文通
  13. 打印机加粉出现的问题:打印机m7206清零
  14. 服务器信号标识是什么意思,手机信号栏的这些“符号”是什么意思,你知道吗?...
  15. android按住录音按钮_Android仿微信录音功能
  16. 世界七大数学难题的提出(转载)
  17. 国产服务器(麒麟操作系统),springboot应用并发访问redis数据错乱解决方案
  18. 个人对GDT、GDTR、LDT、LDTR的理解
  19. 公共计算机课件,全国计算机等级考试二级ACCESS公共基础知识课件.ppt
  20. 悟空CRM-11.0正式开源发布!

热门文章

  1. 使用python愉快地做高数线代题目~
  2. 2021-2027年中国一次成型光学玻璃行业市场分析及投资潜力研究报告
  3. Go 学习笔记(72)— Go 第三方库之 pkg/errors 带堆栈的错误处理
  4. python实现二叉树的重建1 之由前序遍历和中序遍历重建
  5. 2018年终总结:自由而独立
  6. 【Design pattern】设计模式思路总结(三)
  7. 基于Android和SpringBoot的购物App
  8. Vue登录切换中的问题及解决
  9. SpringBoot配置文件YAML配置注入(详解)
  10. error: Can not locate config makefile for product “xx“.