wordpress做网站教程,互联网公司市值,国内简洁大气网站推荐,wordpress主页底端添加图片1. Ohem Cross Entropy Loss 的定义
OhemCrossEntropyLoss 是一种用于深度学习中目标检测任务的损失函数#xff0c;它是针对不平衡数据分布和困难样本训练的一种改进版本的交叉熵损失函数。Ohem 表示 “Online Hard Example Mining”#xff0c;意为在线困难样本挖掘。在目…1. Ohem Cross Entropy Loss 的定义
OhemCrossEntropyLoss 是一种用于深度学习中目标检测任务的损失函数它是针对不平衡数据分布和困难样本训练的一种改进版本的交叉熵损失函数。Ohem 表示 “Online Hard Example Mining”意为在线困难样本挖掘。在目标检测任务中由于背景类样本通常远远多于目标类样本导致了数据分布的不平衡问题而且一些困难的样本对于网络的训练很有挑战性。OhemCrossEntropyLoss 就是为了解决这些问题而设计的。
这个损失函数的核心思想是在训练过程中只选择那些具有较高损失值的困难样本进行梯度更新从而更加关注于难以分类的样本有助于网络更好地适应这些样本提高模型的性能。
数学上OhemCrossEntropyLoss 的定义可以用以下公式表示 OhemCrossEntropyLoss − 1 N ∑ i 1 N { log ( p target ) if y target 1 (目标类样本) log ( 1 − p target ) if y target 0 (背景类样本且损失高于阈值) 0 otherwise \text{OhemCrossEntropyLoss} - \frac{1}{N} \sum_{i1}^{N} \begin{cases} \text{log}(p_{\text{target}}) \text{if } y_{\text{target}} 1 \text{ (目标类样本)} \\ \text{log}(1 - p_{\text{target}}) \text{if } y_{\text{target}} 0 \text{ (背景类样本且损失高于阈值)} \\ 0 \text{otherwise} \end{cases} OhemCrossEntropyLoss−N1i1∑N⎩ ⎨ ⎧log(ptarget)log(1−ptarget)0if ytarget1 (目标类样本)if ytarget0 (背景类样本且损失高于阈值)otherwise
其中 N N N 是 Batch 中样本的数量 p target p_{\text{target}} ptarget 是模型预测目标类的概率 y target y_{\text{target}} ytarget 是真实标签1 表示目标类0 表示背景类损失计算根据标签的情况进行不同的处理。背景类样本中损失值高于一个预定义的阈值的样本会被选中进行梯度更新这样网络更关注于难以分类的样本有助于提高性能。
需要注意的是OhemCrossEntropyLoss 需要在训练过程中动态地筛选困难样本所以相比于传统的交叉熵损失它的计算相对复杂。但在处理不平衡数据和困难样本时它能够提升模型的鲁棒性和泛化能力。
2. OHEM 步骤流程 给 OhemCE Loss 取一个阈值 thresh 那么该像素点的预测概率 0.7则该像素点可以看成是简单样本不参与损失计算那么该像素点的预测概率 0.7则该像素点可以看成是困难样本参与损失计算 确定忽略的像素点值 lb_ignore一般我们将背景的值设置为 255即如果像素点值的大小是 255那么就不参与损失计算。 设置最少计算的像素点个数 n_min至少有 n_num 个像素点参与损失计算不然网络有可能停止更新了。
简单来说OHEM CrossEntropy Loss 的目的是挖掘困难样本忽略简单样本。
3. 代码实现
import random
import numpy as np
import torch
from torch.autograd import Variable
import torch.nn as nndef setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)class OhemCELoss(nn.Module):def __init__(self, thresh, lb_ignore255, ignore_simple_sample_factor16):Args:thresh: 阈值超过该值则被算法简单样本 - 不参与Loss计算lb_ignore: 忽略的像素值(一般255代表背景), 不参与损失的计算ignore_simple_sample_factor: 忽略简单样本的系数该系数越大最少计算的像素点个数越少该系数越小最少计算的像素点个数越多super(OhemCELoss, self).__init__()这里的 thresh 和 self.thresh 不是一回儿事儿①预测概率 thresh - 简单样本①预测概率 thresh - 困难样本②损失值 self.thresh - 困难样本②损失值 self.thresh - 简单①和②其实是一回儿事儿但 thresh 和 self.thresh 不是一回儿事儿self.thresh -torch.log(inputtorch.tensor(thresh, requires_gradFalse, dtypetorch.float))self.lb_ignore lb_ignoreself.criteria nn.CrossEntropyLoss(ignore_indexlb_ignore, reductionnone)self.ignore_simple_sample_factor ignore_simple_sample_factorreduction 参数用于控制损失的计算方式和输出形式。它有三种可选的取值1. none当设置为 none 时损失将会逐个样本计算返回一个与输入张量相同形状的损失张量。这意味着输出的损失张量的形状与输入的标签张量相同每个位置对应一个样本的损失值。2. mean当设置为 mean 时损失会对逐个样本计算的损失进行求均值得到一个标量值。即计算所有样本的损失值的平均值。3. sum : 当设置为 sum 时损失会对逐个样本计算的损失进行求和得到一个标量值。即计算所有样本的损失值的总和。在语义分割任务中通常使用 ignore_index 参数来忽略某些特定标签例如背景类别。当计算损失时将会忽略这些特定标签的损失计算以避免这些标签对损失的影响。如果设置了 ignore_index 参数none 的 reduction 参数会很有用因为它可以让你获取每个样本的损失包括被忽略的样本。总之reduction 参数允许在计算损失时控制输出形式以满足不同的需求。def forward(self, logits, labels):# 1. 计算 n_min(至少算多少个像素点)n_min labels[labels ! self.lb_ignore].numel() // self.ignore_simple_sample_factor# 2. 使用 CrossEntropy 计算损失, 之后再将其展平loss self.criteria(logits, labels).view(-1)# 3. 选出所有loss中大于self.thresh的像素点 - 困难样本loss_hard loss[loss self.thresh]# 4. 如果总数小于 n_min, 那么肯定要保证有 n_min 个像素点的 lossif loss_hard.numel() n_min:loss_hard, _ loss.topk(n_min)# 5. 如果参与的像素点的个数 n_min 个那么这些点都参与计算loss_hard_mean torch.mean(loss_hard)# 6. 返回损失的均值return loss_hard_meanif __name__ __main__:setup_seed(20)# 1. 生成预测值(假设我们有两个样本每个样本有 3 个类别高度和宽度均为 4)logits Variable(torch.randn(2, 3, 4, 4)) # [N, C, H, W], s.t. C - num_classes# 2. 生成真实标签(每个样本的标签是一个 4x4 的图像)labels Variable(torch.randint(low0, high3, size(2, 4, 4))) # [N, H, W]# 3. 初始化创建 OhemCELoss 的实例阈值设置为 0.7ohem_criterion OhemCELoss(thresh0.7, lb_ignore255, ignore_simple_sample_factor16)# 4. 计算 Ohem 损失loss ohem_criterion(logits, labels)print(fOhem Loss: {loss.item()}) # Ohem Loss: 1.3310734033584595知识来源
https://www.bilibili.com/video/BV12841117yohttps://www.bilibili.com/video/BV1Um4y1L753 文章转载自: http://www.morning.bylzr.cn.gov.cn.bylzr.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.lgtcg.cn.gov.cn.lgtcg.cn http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn http://www.morning.psgbk.cn.gov.cn.psgbk.cn http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn http://www.morning.hpspr.com.gov.cn.hpspr.com http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.wmmtl.cn.gov.cn.wmmtl.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn http://www.morning.hkswt.cn.gov.cn.hkswt.cn http://www.morning.rfbq.cn.gov.cn.rfbq.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn http://www.morning.hjwxm.cn.gov.cn.hjwxm.cn http://www.morning.ysybx.cn.gov.cn.ysybx.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn http://www.morning.lgwjh.cn.gov.cn.lgwjh.cn http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.nzxdz.cn.gov.cn.nzxdz.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn http://www.morning.zfxrx.cn.gov.cn.zfxrx.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.cpmwg.cn.gov.cn.cpmwg.cn http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn http://www.morning.tzcr.cn.gov.cn.tzcr.cn http://www.morning.cffwm.cn.gov.cn.cffwm.cn http://www.morning.cdlewan.com.gov.cn.cdlewan.com http://www.morning.tngdn.cn.gov.cn.tngdn.cn http://www.morning.ltrms.cn.gov.cn.ltrms.cn http://www.morning.zcwzl.cn.gov.cn.zcwzl.cn http://www.morning.wclxm.cn.gov.cn.wclxm.cn http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn http://www.morning.lbqt.cn.gov.cn.lbqt.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.qfqld.cn.gov.cn.qfqld.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.nrqtk.cn.gov.cn.nrqtk.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.nwgkk.cn.gov.cn.nwgkk.cn http://www.morning.ywrt.cn.gov.cn.ywrt.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.qnypp.cn.gov.cn.qnypp.cn http://www.morning.jftl.cn.gov.cn.jftl.cn http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn http://www.morning.pqppj.cn.gov.cn.pqppj.cn http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn http://www.morning.joinyun.com.gov.cn.joinyun.com http://www.morning.rwfp.cn.gov.cn.rwfp.cn http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn http://www.morning.pwksz.cn.gov.cn.pwksz.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.fqssx.cn.gov.cn.fqssx.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.hptbp.cn.gov.cn.hptbp.cn http://www.morning.tbksk.cn.gov.cn.tbksk.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn