精华内容
下载资源
问答
  • pytorch语义分割

    万次阅读 2018-04-05 00:19:13
    Pytorch语义分割最近整合了部分pytorch实现的图象语义分割模型,简单做一下总结,代码在git:pytorch-semantic-segmentation一、简介 基于深度的图象语义分割任务不同于分类与检测任务,分类任务利用深度模型提取...

    Pytorch语义分割

    最近整合了部分pytorch实现的图象语义分割模型,简单做一下总结,代码在git:pytorch-semantic-segmentation

    一、简介

        基于深度的图象语义分割任务不同于分类与检测任务,分类任务利用深度模型提取特征后输出特征向量并计算各类概率,简单理解为“一图对应一标记”。检测则在分类任务基础上增加了候选框的生成和回归的任务,模型同时做物体区域定位与区域分类任务,结果可以理解为“一图对应多标记”。而语义分割则属于密集分类任务,分类的对象为每一个像素点,直观理解为"All  in, all out"。模型的输入为图象,输出为与原图同样大小的预测图,每一个像素点的值则对应原图相应点的类别。

        如下图所示,左边为原图,右边为分割标记图,被划分为3个区域,黑色背景为一个类别,粉色人为一类别,摩托车为一类别,具体在训练的时候可以转化为{'background':0, 'person':1, 'motobicycle':2},也就是将现在看到的rgb图象转化为灰度标记图,灰度图中每一个像素点的值均为该点的类别。

               


    二、模型

        主要通过模型介绍来理解语义分割流程。

    2.1 FCN

        FCN的提出打开了基于深度的语义分割思路。FCN模型前面部分用VGG16提取特征,后面将VGG的全连接改为卷积层,最后直接对卷积输出特征图进行upsampling就得到了分割结果。

        模型结构没什么说的,解释一下语义分割训练的过程和loss的计算。

        假设我的数据包含21个类别,反映到灰度图上也就对应了0-20个灰度值. 图片进入网络搅拌后输出,最后的输出层请注意 :

                                                      nn.Conv2d(Input-Channel, NUM_CLASSES)  

        输出的通道数为类别个数,即会输出21个通道的特征图,每一个特征图对应于相应类别的概率值。例如第5个特征图,每一个像素值就表示原图对应像素为第5类别的概率值(称为概率不太准确,最后特征图会进行log_softmax处理)。

        最后用cross-entropy计算loss,pytorch中给出的公式为:

                                                        loss(x,class)= x[class], x为最后输出特征图,class为该像素点标记的类别

        一句话说明,对最后loss有贡献的只是像素点标记类别所对应的特征图的值,早死语!咩有画图不好解释。这位小哥解释的蛮好loss解释

                                  

    2.2 Encoder-Decoder

        之后的分割网络很多都是基于编解码的结构。优美又有效,大体来讲decoder过程将upsampling替换为transpose-conv,

    前面采用dilation卷积,以扩大感受野。(大概是可解释性立足于效果,有效就能解释)


                              

    三、结语

        小白的简单的记录,并不完善完整。有新想法再来分享。

        git代码有包括fcn、segnet、unet、erfnet,模型在继续完善,也在修改代码让她尽量简单干净。

        不足、有误的地方请提出,欢迎讨论。

    展开全文
  • pytorch语义分割-源码

    2021-02-17 00:37:25
    pytorch语义分割
  • 语义分割火炬 author is leilei Restart this project from 2017-10-01 TODO The latest version of the code cannot be executed and is still being updated. 环境 python: 3.6+ ubuntu16.04 or 18.04 ...
  • pytorch加加载载自自己己的的图图像像数数据据集集实实例例 这篇文章主要介绍了pytorch加载自己的图像数据集实例具有很好的参考价值希望对大家有所帮助 一起跟随 小编过来看看吧 之前学习深度学习算法都是使用网上...
  • 点击我爱计算机视觉标星,更快获取CVML新技术今天跟大家介绍一款新出的基于PyTorch语义分割开源库semseg:https://github.com/hszhao/semseg其开...

    点击我爱计算机视觉标星,更快获取CVML新技术


    今天跟大家介绍一款新出的基于PyTorch的语义分割开源库semseg:

    https://github.com/hszhao/semseg

    其开发者为香港中文大学的博士生Hengshuang Zhao。

    https://hszhao.github.io/

    介绍

    semseg用PyTorch实现的语义分割/场景解析开源库。 它可以方便帮助开发者用于各种语义分割数据集的训练和测试。

    该库主要使用ResNet50 / 101/152作为主干网,也可以很容易地改成其他分类网络结构。

    目前已经实现了包括PSPNet和PSANet在内的网络,其在2016年ImageNet场景解析挑战赛@ ECCV16,LSUN语义分割挑战赛2017 @ CVPR17和WAD可驾驶区域分割挑战赛2018 @ CVPR18中排名第一。 示例实验数据集包括主流的ADE20K,PASCAL VOC 2012和Cityscapes。

    ps. 该库开发者即PSPNet和PSANet算法的一作。

    亮点

    1. 同时支持多线程训练与多进程训练,并且后者非常快(该库比较重视训练)。

    2. 重新实现的算法取得更好的结果,而且代码结构清晰(说明代码质量高)。

    3. 所有初始化模型、训练得到的模型和预测的结果都能够下载(https://drive.google.com/open?id=15wx9vOM0euyizq-M1uINgN0_wjVRf9J3),方便开发者直接使用或者研究比较。

    作者推荐的软硬件环境:

    (要4到8块显卡,看来没有多卡,语义分割是玩不起了~)

    训练简单

    该库的训练非常简单,简单配置后只需要一条命令

    sh tool/train.sh ade20k pspnet50
    

    测试简单

    简单配置数据集和模型路径后,也只需要一条命令:

    sh tool/test.sh ade20k pspnet50
    


    在单幅图像上测试也很简单,示例:

    PYTHONPATH=./ python tool/demo.py --config=config/ade20k/ade20k_pspnet50.yaml --image=figure/demo/ADE_val_00001515.jpg TEST.scales '[1.0]'
    

    Performance

    在三个数据集上的结果如下:

    注意,作者列出的时间是在8个GeForce RTX 2080 Ti上训练得到的。

    感谢作者的分享~

    再发一遍地址:

    https://github.com/hszhao/semseg

    图像分割专业交流群

    关注最新语义分割、实例分割等技术,欢迎加入52CV-图像分割专业交流群,扫码添加CV君拉你入群(如果你已经加CV君为好友,请直接私信就好了,不必重复添加),

    (请务必注明:分割):

    喜欢在QQ交流的童鞋可以加52CV官方QQ群:702781905。

    (不会时时在线,如果没能及时通过还请见谅)


    长按关注我爱计算机视觉

    展开全文
  • 路径为anaconda下的python.exe 例F:\conda\python.exe 点击导入即可 完成上述三步后开始安装pytorch包 以管理员模式进入cmd,输入一下代码 安装pytorch命令行 conda install pytorch torchvision cuda100 -c pytorch...

    本方法采用
    一、Python3.7+Anaconda5.3.1
    二、CUDA10.0
    三、Pycharm
    anaconda负责配置环境
    cuda提供gpu支持
    pycharm编写代码

    一、首先从官网上下载anaconda-py3.7-64版本,勾选这两项方便环境配置
    在这里插入图片描述
    二、从此链接下载cuda10.0
    链接:https://pan.baidu.com/s/1TjMR-NbWm1XJG9D3cVsirQ
    提取码:so3z
    下载完成直接双击运行选择自定义安装!!!
    之后参考链接https://blog.csdn.net/zzpong/article/details/80282814
    说明:
    此博客中遇到的基础解决方案需要安装vs2015 or vs2017进行编译
    直接进入此目录下C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0
    选择对应版本的解决方案,双击打开,即可编译
    其他步骤按照该博客操作即可
    进入cmd 输入nvcc -V 检查是否安装成功
    在这里插入图片描述
    三、安装pycharm
    可以选择免费版或其他方式激活
    之后进入file->settings->project->python interpreter
    在这里插入图片描述
    点击此处 add 添加解释器
    在这里插入图片描述在这里插入图片描述
    路径为anaconda下的python.exe
    例F:\conda\python.exe
    点击导入即可

    完成上述三步后开始安装pytorch包
    以管理员模式进入cmd,输入一下代码
    安装pytorch命令行

    conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch
    

    如果pytorch1.0.0下载一直卡0
    解决方法
    1、科学上网(亲测有效。。。)
    在这里插入图片描述
    2、参考此文,使用清华大学镜像,https://www.jianshu.com/p/eaf22fb56891
    3、更换其他版本,pytorch官网,寻找之前版本,https://pytorch.org/get-started/previous-versions/
    在这里插入图片描述
    完成安装

    打开pycharm进行测试

    import torch
    print(torch.cuda.is_available())
    print(torch.__version__)
    

    输出True
    即表示安装成功,GPU可用
    在这里插入图片描述

    展开全文
  • pytorch语义分割计算mIoU

    千次阅读 2020-04-27 20:06:51
    版本:python3 pred为模型预测的label,像素0表示背景,像素1表示类别1,像素2表示类别2,以此类推。 target为groundtruth,这里读入格式为PIL image,格式不一样的请自行修改 这里的n_classes是目标物类别数。...

    版本:python3
    pred为模型预测的label,像素0表示背景,像素1表示类别1,像素2表示类别2,以此类推。
    target为groundtruth,这里读入格式为PIL image,格式不一样的请自行修改
    这里的n_classes是目标物类别数。比如,对于只有背景和一个检测物类别的二分类问题,n_classes=1
    因为pythonfor循环的range(a,b),范围其实为[a,b),所以循环终点为n_classes+1

    import numpy as np
    import torch
    
    def iou_mean(pred, target, n_classes = 1):
    #n_classes :the number of classes in your dataset,not including background
    # for mask and ground-truth label, not probability map
      ious = []
      iousSum = 0
      pred = torch.from_numpy(pred)
      pred = pred.view(-1)
      target = np.array(target)
      target = torch.from_numpy(target)
      target = target.view(-1)
    
      # Ignore IoU for background class ("0")
      for cls in range(1, n_classes+1):  # This goes from 1:n_classes-1 -> class "0" is ignored
        pred_inds = pred == cls
        target_inds = target == cls
        intersection = (pred_inds[target_inds]).long().sum().data.cpu().item()  # Cast to long to prevent overflows
        union = pred_inds.long().sum().data.cpu().item() + target_inds.long().sum().data.cpu().item() - intersection
        if union == 0:
          ious.append(float('nan'))  # If there is no ground truth, do not include in evaluation
        else:
          ious.append(float(intersection) / float(max(union, 1)))
          iousSum += float(intersection) / float(max(union, 1))
      return iousSum/n_classes
    
    展开全文
  • 由于最近目标是完成基于深度学习的脑肿瘤语义分割实验,所以需要用到自定义的数据载入,本文参考了一下博客:https://blog.csdn.net/tuiqdymy/article/details/84779716?utm_source=app,一开始是做的眼底图像分割,...
  • 什么是Batch Normalization? Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解
  • 最近在尝试使用pytorch深度学习框架实现语义分割任务,在进行loss计算时,总是遇到各种问题,针对CrossEntropyLoss()损失函数的理解与分析记录如下: 1.数据准备 为了便于理解,假设输入图像分辨率为2x2的RGB格式...
  • 最近项目需要用到物体分割思路进行开展,因为自己一直使用的是tensorflow1.x版本进行模型训练,故而分割模型训练之初便选用了tensorflow框架进行模型训练,整个训练过程是很顺利的,但项目落地过程中需要用到opencv...
  • Pytorch 语义分割DeepLabV3+ 训练自己的数据集

    千次阅读 热门讨论 2021-02-10 09:00:49
    照葫芦画瓢总结记录了一下DeepLab分割系列,并对Deeplab V3++实现 一、DeepLab系列理解 1、DeepLab V1 原文:Semantic image segmentation with deep convolutional nets and fully connected CRFs...
  • 项目需求:本人接触项目要求实现砂石级配,因此第一步是实现砂石语义分割,将平铺的砂石个体分割出来。 步骤:获得分割样本->制作标签,VOC2012格式打包-> 利用DeepLabV3+完成语义分割工作->进一步研究 ...
  • 另一方面,该方法同样适用于多类别的语义分割任务,通用性更强。 参考资料 [1]https://blog.csdn.net/longshaonihaoa/article/details/105253553 [2]https://cuijiahua.com/blog/2020/03/dl-16.html 原帖:...
  • 语义分割任务中,根据数据的分布情况可选择不同的损失函数对网络输出和标签进行数值运算,以达到较优的训练效果。特别,在数据样本不均衡以及样本难易程度不同时,选择FocalLoss和DiceLoss往往能起到事半功倍的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,748
精华内容 2,299
关键字:

pytorch语义分割