语义分割代码实现细节:CE_Loss

  • 前言
    • 内容
      • 原理及公式
      • 代码实现
      • 数据类型的要求
      • 数据维度的要求
      • 常犯的错误
      • 原理及公式
      • 代码实现
    • 评价指标
      • PR曲线
    • 功能快捷键
    • 合理的创建标题,有助于目录的生成
    • 如何改变文本的样式
    • 插入链接与图片
    • 如何插入一段漂亮的代码片
    • 生成一个适合你的列表
    • 创建一个表格
      • 设定内容居中、居左、居右
      • SmartyPants
    • 创建一个自定义列表
    • 如何创建一个注脚
    • 注释也是必不可少的
    • KaTeX数学公式
    • 新的甘特图功能,丰富你的文章
    • UML 图表
    • FLowchart流程图
    • 导出与导入
      • 导出
      • 导入

前言

本人入门cv快一年了,也参加过很多比赛,获得过名次(后面会慢慢公布比赛方案)但笔者发现:现在的水平仅仅只算是一个调参侠,对于框架内部的数理知识,仅有大概的了解,现阶段准备一遍夯实基础,一遍积累实战比赛经验。

内容

该文章主要从几个方面讲解分类任务中最常见的损失函数:交叉熵损失。

原理及公式

nn.CrossEntropyLoss()

概念:

交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。假设概率分布p为期望输出,概率分布q为实际输出, H ( p , q ) H(p,q) H(p,q)为交叉熵,则
H ( p , q ) = − ∑ ( p ( x ) l o g q ( x ) + ( 1 − p ( x ) ) l o g ( 1 − q ( x ) ) H(p,q)=-\sum(p(x)log q(x)+(1-p(x))log(1-q(x)) H(p,q)=−∑(p(x)logq(x)+(1−p(x))log(1−q(x))

该损失函数结合了nn.LogSoftmax()和nn.NLLLoss()两个函数。

代码实现

首先笔者使用torch中自带的CE loss函数,在torch中的CE_loss 自带实现了带类别权重(class weight)label smooth 功能。

 import torchCE_loss = torch.nn.CrossEntropyLoss()

下面讲解CE_loss 超参数设置,和输入标签 预测的数据类型要求

weight:输入1D的Tensor,代表每一个类的权重,计算损失时会分配给每个类别。
ignore_index :用于忽略某个具体的类别
reduction : ‘none’ | ‘mean’ | ‘sum’ 三种选项代表对于每个batch的loss进行的操作

数据类型的要求

对于pred — > 需要 torch.float32
对于tar— > 需要 torch.int64

数据维度的要求
预测维度 标签
分类 C C
分割 CxHxW HxW

注:C是类别数

常犯的错误
  1. requires_grad == True

  2. label中只能用C类不同的数字

  3. 在语义分割任务中对于标签和输入图片的处理通常采用不同的Transform(记住不要对label采用多余的变换

该文章主要从几个方面讲解分割任务中最常见的损失函数:BCE损失。

原理及公式


概念区分

多标签的二分类( multi-label binary classification)c>1
单标签的二分类( single-label binary classification)c=1

图例:

相同点:
每一种标签分类情况都是互斥的------->该物体是游轮 或不是游轮 (如上图所示)

不同点:

多标签的二分类------->一个物体细分很多种标签:是或不是游轮 / 是或不是白色 / …
单标签的二分类------->只有上述分类的一种情况 -->是或不是游轮

代码实现
 import torchBCE_loss = torch.nn.BCEWithLogitsLoss()

超参数说明:

  1. 分清64 类别 和64 个物体
  2. 分清权重的作用点

weight (Tensor, optional) – a manual rescaling weight given to the loss of each batch element. If given, has to be a Tensor of size nbatch.

pos_weight (Tensor, optional) – a weight of positive examples. Must be a vector with length equal to the number of classes.

评价指标

AP值就是PR曲线下的与坐标轴包围的面积。其中P是Precision精确率,R是Recall召回率。

  • AP50指的是IOU的值取50%,AP70同理
  • AP@50:5:95指的是IOU的值从50%取到95%,步长为5%,然后算在在这些IOU下的AP的均值
  • 在比赛中 AP10 IoU 取值10%

PR曲线

首先按照置信度排序,根据准确率和召回率,就能绘制出PR曲线(横坐标是召回率,纵坐标是精准率):

参考链接:

  1. https://zhuanlan.zhihu.com/p/98785902
  2. https://blog.csdn.net/icamera0/article/details/50647465
  3. https://lixiaofeng.blog.csdn.net/article/details/80070514
  4. https://zhuanlan.zhihu.com/p/337429697
  5. https://blog.csdn.net/qq_19313495/article/details/115030614

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

#mermaid-svg-WmYhGrIShxv5S3ZN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN .error-icon{fill:#552222;}#mermaid-svg-WmYhGrIShxv5S3ZN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WmYhGrIShxv5S3ZN .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-WmYhGrIShxv5S3ZN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WmYhGrIShxv5S3ZN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WmYhGrIShxv5S3ZN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WmYhGrIShxv5S3ZN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WmYhGrIShxv5S3ZN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WmYhGrIShxv5S3ZN .marker.cross{stroke:#333333;}#mermaid-svg-WmYhGrIShxv5S3ZN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WmYhGrIShxv5S3ZN .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-WmYhGrIShxv5S3ZN text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-WmYhGrIShxv5S3ZN .actor-line{stroke:grey;}#mermaid-svg-WmYhGrIShxv5S3ZN .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN .sequenceNumber{fill:white;}#mermaid-svg-WmYhGrIShxv5S3ZN #sequencenumber{fill:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN .messageText{fill:#333;stroke:#333;}#mermaid-svg-WmYhGrIShxv5S3ZN .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-WmYhGrIShxv5S3ZN .labelText,#mermaid-svg-WmYhGrIShxv5S3ZN .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-WmYhGrIShxv5S3ZN .loopText,#mermaid-svg-WmYhGrIShxv5S3ZN .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-WmYhGrIShxv5S3ZN .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-WmYhGrIShxv5S3ZN .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-WmYhGrIShxv5S3ZN .noteText,#mermaid-svg-WmYhGrIShxv5S3ZN .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-WmYhGrIShxv5S3ZN .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-WmYhGrIShxv5S3ZN .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-WmYhGrIShxv5S3ZN .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-WmYhGrIShxv5S3ZN .actorPopupMenu{position:absolute;}#mermaid-svg-WmYhGrIShxv5S3ZN .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-WmYhGrIShxv5S3ZN .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-WmYhGrIShxv5S3ZN .actor-man circle,#mermaid-svg-WmYhGrIShxv5S3ZN line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-WmYhGrIShxv5S3ZN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

#mermaid-svg-cpiiy25xm8mCW9BA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .error-icon{fill:#552222;}#mermaid-svg-cpiiy25xm8mCW9BA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-cpiiy25xm8mCW9BA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-cpiiy25xm8mCW9BA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-cpiiy25xm8mCW9BA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-cpiiy25xm8mCW9BA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-cpiiy25xm8mCW9BA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-cpiiy25xm8mCW9BA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-cpiiy25xm8mCW9BA .marker.cross{stroke:#333333;}#mermaid-svg-cpiiy25xm8mCW9BA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-cpiiy25xm8mCW9BA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .cluster-label text{fill:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .cluster-label span{color:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .label text,#mermaid-svg-cpiiy25xm8mCW9BA span{fill:#333;color:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .node rect,#mermaid-svg-cpiiy25xm8mCW9BA .node circle,#mermaid-svg-cpiiy25xm8mCW9BA .node ellipse,#mermaid-svg-cpiiy25xm8mCW9BA .node polygon,#mermaid-svg-cpiiy25xm8mCW9BA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-cpiiy25xm8mCW9BA .node .label{text-align:center;}#mermaid-svg-cpiiy25xm8mCW9BA .node.clickable{cursor:pointer;}#mermaid-svg-cpiiy25xm8mCW9BA .arrowheadPath{fill:#333333;}#mermaid-svg-cpiiy25xm8mCW9BA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-cpiiy25xm8mCW9BA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-cpiiy25xm8mCW9BA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-cpiiy25xm8mCW9BA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-cpiiy25xm8mCW9BA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-cpiiy25xm8mCW9BA .cluster text{fill:#333;}#mermaid-svg-cpiiy25xm8mCW9BA .cluster span{color:#333;}#mermaid-svg-cpiiy25xm8mCW9BA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-cpiiy25xm8mCW9BA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

语义分割代码实现细节:CE_Loss 和 BCE_loss相关推荐

  1. 语义分割代码实现流程

    语义分割的整体实现代码大致思路很简单,但是具体到细节,就有很多可说的东西. 之前写过一篇文章,可能有些地方现在又有了新的思路或者感受,或者说之前没有突出重点. 作为一个小白,这里把自己知道的知识写一下 ...

  2. 图像分割技术语义分割代码_用5行代码对150类对象进行语义分割

    图像分割技术语义分割代码 It is now possible to perform segmentation on 150 classes of objects using ade20k model ...

  3. 基于深度学习的语义分割代码库

    截至: 2018-04-16 Awesome Semantic Segmentation Networks by architecture Semantic segmentation U-Net [h ...

  4. 【语义分割】评价指标:PA、CPA、MPA、IoU、MIoU详细总结和代码实现(零基础从入门到精通系列!)

    文章目录 引言 1 混淆矩阵 2 语义分割 PA:像素准确率 CPA:类别像素准确率 MPA:类别平均像素准确率 IoU:交并比 MIoU:平均交并比 3 综合实例 步骤一:输入真实.预测图片 步骤二 ...

  5. 语义分割MIoU代码解析

    1. MIoU 源码解析TensorFlow 和 PyTorch 源码解析 2.[语义分割]语义分割评估指标mIOU 3. 语义分割代码阅读-评价指标mIoU的计算 4. 深度学习计算机视觉图像分割领 ...

  6. PyTorch中的MIT ADE20K数据集的语义分割

    PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...

  7. Tensorflow C++ API调用Keras模型实现RGB图像语义分割

    我的实验是基于PSPNet模型实现二维图像的语义分割,下面的代码直接从得到的h5文件开始往下做... 也不知道是自己的检索能力出现了问题还是咋回事,搜遍全网都没有可以直接拿来用的语义分割代码,东拼西凑 ...

  8. MMSegmentation:标准统一的语义分割框架

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/164489668 写在前面 语义分割作为计算机视觉中一项基础任务,同时在自动驾驶/视频编辑等领域中 ...

  9. 深度学习高遥感影像语义分割

    深度学习遥感影像语义分割 深度学习大家都知道,在计算机视觉领域取得了很大的成功,在遥感影像自动解译方面,同样带来了快速的发展,我在遥感影像自动解译领域,也做了一些微薄的工作,发表几篇论文,我一直关注遥 ...

最新文章

  1. 为什么分布式一定要有一致性方案?
  2. 实战SSM_O2O商铺_42【前端展示】店铺列表页面View层的实现
  3. Hibernate学习笔记--核心编程
  4. 【springboot】静态资源设置缓存时间
  5. Android 11 限制反射,如何破解?
  6. 绘图的尺寸_Auto CAD机械绘图尺寸标注教程10(标注多重引线)
  7. 转换FlashFxp站点和FtpRush站点的好工具
  8. ffplay拿不到rtp流_苇名城都亡了,还跟我讲科学?- 苇名无心流秘籍解析
  9. canvas+websocket+vue做一个你画我猜小游戏
  10. 速锐得车载以太网的信息性能优势硬件及应用研究
  11. Git帝国之tag大臣
  12. 笔记本显卡天梯图2023 笔记本显卡性能天梯图2023年2月
  13. 匡威react是什么意思_react+zoom的神仙配置?这双如此牛掰的匡威似乎不如李宁?...
  14. 纯函数和副作用(大白话)
  15. springcloud微服务架构开发实战:分布式消息总线
  16. AI视频分析技术是如何工作的?原理是什么?
  17. JD Edwards 演进史
  18. MOVSB、MOVSW
  19. Salient Object Detection with Pyramid Attention and Salient Edges
  20. 【转载】崔庆才爬虫笔记

热门文章

  1. 定时关闭(程序)进程
  2. 如何生成Patch及打patch
  3. matlab 运算符
  4. 关于安装Python过程中 无法访问Windows Installer服务问题解决
  5. 用python处理水仙花数
  6. PHP 输出图像 imagegif 、imagejpeg 与 imagepng 函数(五)
  7. html1 初入html
  8. 毛头小子初学Java
  9. leetcode周赛,希望咸鱼,有一天可以薅到羊毛
  10. Freeswitch 默认配置