语义分割是像素级别的分类,其常用评价指标:

像素准确率(Pixel Accuracy,PA)、
类别像素准确率(Class Pixel Accuray,CPA)、
类别平均像素准确率(Mean Pixel Accuracy,MPA)、
交并比(Intersection over Union,IoU)、
平均交并比(Mean Intersection over Union,MIoU),
其计算都是建立在混淆矩阵(Confusion Matrix)的基础上。

1 混淆矩阵

混淆矩阵就是统计分类模型的分类结果,即:统计归对类,归错类的样本的个数,然后把结果放在一个表里展示出来,这个表就是混淆矩阵

对于二分类问题,将类别A称为正例(Positive),类别B称为反例(Negative),分类器预测正确记作真(True),预测错误记作(False),由这4个基本组合,构成混淆矩阵的4个基础元素,为:

TP(True Positive):真正例,模型预测为正例,实际是正例(模型预测为类别1,实际是类别1)
FP(False Positive):假正例,模型预测为正例,实际是反例 (模型预测为类别1,实际是类别2)
FN(False Negative):假反例,模型预测为反例,实际是正例 (模型预测为类别2,实际是类别1)
TN(True Negative):真反例,模型预测为反例,实际是反例 (模型预测为类别2,实际是类别2)

在这里插入图片描述假设有13种动物的样本-8只猫和5只狗
在这里插入图片描述
混淆矩阵中,系统预测了8只实际的猫,系统预测了3只是狗,而5只狗中,则预测有2只是猫。所有正确的预测都位于表格的对角线(以粗体突出显示)中,因此很容易从视觉上检查表格中的预测错误,因为它们将由对角线之外的值表示。

在这里插入图片描述
在这里我们假设猫是positive,非猫是negative (这里指的是狗)

  1. TP:表示测试样本中猫能够被准确地预测成猫
  2. TN: 表示测试样本中非猫(狗)能够被准确地预测成非猫(狗)
  3. FP:表示测试样本中非猫能够被准确地预测成猫
  4. FN:表示表示测试样本中猫能够被准确地预测成非猫

这里只要记住:T开头就是表示能准确预测, 后面接的P跟N 分别表示准确地预测了猫(P) 和非猫(N)
而 F 开头表示不能准确预测,FN可以理解成猫被错误得预测成了非猫,因为N 代表的是非猫。 相反, FP 可以理解为非猫被错误地预测称了猫。
准确率(Accuracy),对应:语义分割的像素准确率 PA
公式:Accuracy = (TP + TN) / (TP + TN + FP + FN)
意义:对角线计算。预测结果中正确的占总预测值的比例(对角线元素值的和 / 总元素值的和)
精准率(Precision),对应:语义分割的类别像素准确率 CPA
公式:Precision = TP / (TP + FP) 或 TN / (TN + FN)
意义:竖着计算。预测结果中,某类别预测正确的概率
召回率(Recall),不对应语义分割常用指标
公式:Recall = TP / (TP + FN) 或 TN / (TN + FP)
意义:横着计算。真实值中,某类别被预测正确的概率

举个例子:
在这里插入图片描述
以类别1为例,计算公式为:

准确率:Accuracy = (a + e + i) / (a + b + c + d + e +f + g + h + i)
精准率:P1 = a / (a + d + g)
召回率:R1 = a / (a + b + c)

不管进行分类的是动物,还是图片像素点,其混淆矩阵的获取、评价指标公式的计算都是一样的!

PA:像素准确率

对应:准确率(Accuracy)
含义:预测类别正确的像素数占总像素数的比例
混淆矩阵计算:对角线元素之和 / 矩阵所有元素之和PA = (TP + TN) / (TP + TN + FP + FN)

像素精度是图像分割的最简单指标,它是正确分类的总像素除以总像素,可以理解为图像中正确分类的像素的百分比。
下面我们举一个简单的例子


一般在图像分割,都是label图像的像素点
这里我们假设R指的是道路线像素点,S 指的是背景像素点
所以R 是positive, 非R(S)就是negative,指的是像素点不属于道路线
从上面的图我们可以看出
道路线像素点能够地预测为道路线像素点有3 个(中间行前两个+第一行中间) ,所以TP=3
非道路线像素点能够地预测为非道路线像素点有4个(最后一整行+中间行最后一个),所以TN=4
道路线点被错误地预测为非道路线像素点有2个(第一行的左右两个角落上S),所以FN=2

在这里插入图片描述
我们能够计算出像素精度:
在这里插入图片描述

MPA:类别平均像素准确率

含义:分别计算每个类被正确分类像素数的比例,即:CPA,然后累加求平均
混淆矩阵计算:每个类别像素准确率为:Pi(计算:对角线值 / 对应列的像素总数)MPA = sum(Pi) / 类别数

IoU

IoU(intersection over union) 值得是像素的真实值与预测值的交集除以像素的真实值和预测值的并集

在这里插入图片描述
在图像分割中,我们的目标是把人物分割出来。
右边的图片是真实值(黄色部分), 左边(黄色部分)是预测值
所以我们可以计算IoU:
真实值跟预测值交集(红色部分):

在这里插入图片描述真实值与预测值的并集(红色部分):

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

import torch 
import pandas as pd  # For filelist reading
from torch.utils.data import Dataset
import myPytorchDatasetClass  # Custom dataset class, inherited from torch.utils.data.datasetdef iou(pred, target, n_classes = 37):
#n_classes :the number of classes in your datasetious = []pred = pred.view(-1)target = target.view(-1)# Ignore IoU for background class ("0")for cls in xrange(1, n_classes):  # This goes from 1:n_classes-1 -> class "0" is ignoredpred_inds = pred == clstarget_inds = target == clsintersection = (pred_inds[target_inds]).long().sum().data.cpu()[0]  # Cast to long to prevent overflowsunion = pred_inds.long().sum().data.cpu()[0] + target_inds.long().sum().data.cpu()[0] - intersectionif union == 0:ious.append(float('nan'))  # If there is no ground truth, do not include in evaluationelse:ious.append(float(intersection) / float(max(union, 1)))return np.array(ious)def evaluate_performance(net):Dataloader for test databatch_size = 1  filelist_name_test = '/path/to/my/test/filelist.txt'data_root_test = '/path/to/my/data/'dset_test = myPytorchDatasetClass.CustomDataset(filelist_name_test, data_root_test)test_loader = torch.utils.data.DataLoader(dataset=dset_test,  batch_size=batch_size,shuffle=False,pin_memory=True)data_info = pd.read_csv(filelist_name_test, header=None)num_test_files = data_info.shape[0]  #reture data.info's hangshu that means dots in dataset sample_size = num_test_files# Containers for resultspreds = torch.FloatTensor(sample_size, opt.imageSizeH, opt.imageSizeW)preds = Variable(seg,volatile=True)gts = torch.FloatTensor(sample_size, 1, opt.imageSizeH, opt.imageSizeW)gts = Variable(gts,volatile=True)dataiter = iter(test_loader) for i in xrange(sample_size):images, labels, filename = dataiter.next()images = Variable(images).cuda()labels = Variable(labels)gts[i:i+batch_size, :, :, :] = labelsoutputs = net(images)outputs = outputs.permute(0, 2, 3, 4, 1).contiguous()val, pred = torch.max(outputs, 4)preds[i:i+batch_size, :, :, :] = pred.cpu()acc = iou(preds, gts)return acc

MIoU

在语义分割中,MIoU 就是分别对每个类计算(真实标签和预测结果的交并比)IOU,然后再对所有类别的IOU求均值。MIoU是标准的准确率度量方法。
在这里插入图片描述
以求二分类的MIoU为例
MIoU = (IoU正例p + IoU反例n) / 2 = [ TP / (TP + FP + FN) + TN / (TN + FN + FP) ] / 2

F1 score (Dice score):

Dice score 是根据测试样本的准确性(precision)跟敏感度(也叫recall)计算出来的,就是平衡两个标准

precision:
用上面猫狗分类的例子解释
准确性就是 测试样本中准确地预测为猫的数除以测试样本准确预测的总数(包括猫和狗)

在这里插入图片描述

recall: 就是测试样本中准确地预测为猫的数除以测试样本猫总数

在这里插入图片描述

Dice score 的通用公式:
在这里插入图片描述

通常,我们认为recall的重要性跟precision的重要性一样,所以 belta=1
这就是所谓的 F1 score。
在这里插入图片描述

综合实例:
在这里插入图片描述 PA

PA = 对角线元素之和 / 矩阵所有元素之和 = (3 + 2 + 2) / (3 + 2 + 2 + 0 + 0 + 0 + 0 + 1 + 1)= 0.78

CPA

Pi = 对角线值 / 对应列的像素总数
P类别1 = 3 / ( 3 + 0 + 0) = 1
P类别2 = 2 / ( 0 + 2 + 1) = 0.67
P类别3 = 2 / ( 0 + 1 + 2) = 0.67

MPA

MPA = sum(Pi) / 类别数 = ( P类别1 + P类别2 + P类别3 ) / 3 = 0.78

IoU

IoUi = 对角线值 / 与该值有关元素的求和 [画线法]
第一种求法:(混淆矩阵,以对角线值画横、竖线,将相关元素求和)
IoU类别1 = 3 / (3 + 0 + 0 + 0 + 0) = 1
IoU类别2 = 2 / (0 + 2 + 1 + 0 + 1) = 0.5
IoU类别3 = 2 / (0 + 1 + 2 + 0 + 1) = 0.5

第二种求法:(代码中用的求法:SAUB = SA + SB - SA∩B)(参考链接)
IoU类别1 = 3 / [(3 + 0 + 0 ) + ( 3 + 0 + 0) - 3] = 1
IoU类别2 = 2 / [(0 + 2 + 1 ) + (0 + 2 + 1) - 2] = 0.5
IoU类别3 = 2 / [(0 + 1 + 2 ) + (0 + 1 + 2) - 2] = 0.5

MIoU

MIoU = sum(IoUi) / 类别数 = (1 + 0.5 + 0.5) / 3 = 0.67

"""
refer to https://github.com/jfzhang95/pytorch-deeplab-xception/blob/master/utils/metrics.py
"""
import numpy as np
__all__ = ['SegmentationMetric']"""
confusionMetric  # 注意:此处横着代表预测值,竖着代表真实值,与之前介绍的相反
P\L     P    N
P      TP    FP
N      FN    TN
"""
class SegmentationMetric(object):def __init__(self, numClass):self.numClass = numClassself.confusionMatrix = np.zeros((self.numClass,)*2)def pixelAccuracy(self):# return all class overall pixel accuracy#  PA = acc = (TP + TN) / (TP + TN + FP + TN)acc = np.diag(self.confusionMatrix).sum() /  self.confusionMatrix.sum()return accdef classPixelAccuracy(self):# return each category pixel accuracy(A more accurate way to call it precision)# acc = (TP) / TP + FPclassAcc = np.diag(self.confusionMatrix) / self.confusionMatrix.sum(axis=1)return classAcc # 返回的是一个列表值,如:[0.90, 0.80, 0.96],表示类别1 2 3各类别的预测准确率def meanPixelAccuracy(self):classAcc = self.classPixelAccuracy()meanAcc = np.nanmean(classAcc) # np.nanmean 求平均值,nan表示遇到Nan类型,其值取为0return meanAcc # 返回单个值,如:np.nanmean([0.90, 0.80, 0.96, nan, nan]) = (0.90 + 0.80 + 0.96) / 3 =  0.89def meanIntersectionOverUnion(self):# Intersection = TP Union = TP + FP + FN# IoU = TP / (TP + FP + FN)intersection = np.diag(self.confusionMatrix) # 取对角元素的值,返回列表union = np.sum(self.confusionMatrix, axis=1) + np.sum(self.confusionMatrix, axis=0) - np.diag(self.confusionMatrix) # axis = 1表示混淆矩阵行的值,返回列表; axis = 0表示取混淆矩阵列的值,返回列表 IoU = intersection / union  # 返回列表,其值为各个类别的IoUmIoU = np.nanmean(IoU) # 求各类别IoU的平均return mIoUdef genConfusionMatrix(self, imgPredict, imgLabel): # 同FCN中score.py的fast_hist()函数# remove classes from unlabeled pixels in gt image and predictmask = (imgLabel >= 0) & (imgLabel < self.numClass)label = self.numClass * imgLabel[mask] + imgPredict[mask]count = np.bincount(label, minlength=self.numClass**2)confusionMatrix = count.reshape(self.numClass, self.numClass)return confusionMatrixdef Frequency_Weighted_Intersection_over_Union(self):# FWIOU =     [(TP+FN)/(TP+FP+TN+FN)] *[TP / (TP + FP + FN)]freq = np.sum(self.confusion_matrix, axis=1) / np.sum(self.confusion_matrix)iu = np.diag(self.confusion_matrix) / (np.sum(self.confusion_matrix, axis=1) + np.sum(self.confusion_matrix, axis=0) -np.diag(self.confusion_matrix))FWIoU = (freq[freq > 0] * iu[freq > 0]).sum()return FWIoUdef addBatch(self, imgPredict, imgLabel):assert imgPredict.shape == imgLabel.shapeself.confusionMatrix += self.genConfusionMatrix(imgPredict, imgLabel)def reset(self):self.confusionMatrix = np.zeros((self.numClass, self.numClass))if __name__ == '__main__':imgPredict = np.array([0, 0, 1, 1, 2, 2]) # 可直接换成预测图片imgLabel = np.array([0, 0, 1, 1, 2, 2]) # 可直接换成标注图片metric = SegmentationMetric(3) # 3表示有3个分类,有几个分类就填几metric.addBatch(imgPredict, imgLabel)pa = metric.pixelAccuracy()cpa = metric.classPixelAccuracy()mpa = metric.meanPixelAccuracy()mIoU = metric.meanIntersectionOverUnion()print('pa is : %f' % pa)print('cpa is :') # 列表print(cpa)print('mpa is : %f' % mpa)print('mIoU is : %f' % mIoU)

测评截图:
步骤一:输入预测和标记图片 (4个类别分类,图片大小:512*512)
imgPredict = pic_predict # 预测图片
imgLabel = pic_label # 标注图片

步骤二:获取混淆矩阵 (特别注意:此代码混淆矩阵,行为预测值,列为真实值,因此:CPA的计算需要翻转一下)

在这里插入图片描述

可计算上述值的和为:262144,即:图片512 * 512的值,表示模型共预测了512 * 512个像素点的类别
步骤三:评估指标计算
在这里插入图片描述

【语义分割】评价指标代码函数:np.sum()、np.nansum()、np.nanmean()、np.diag()、np.bincount()

参考 : https://blog.csdn.net/sinat_29047129/article/details/103656465

综合代码:


"""
refer to https://github.com/jfzhang95/pytorch-deeplab-xception/blob/master/utils/metrics.py
"""
import numpy as np
import cv2__all__ = ['SegmentationMetric']"""
confusionMetric  # 注意:此处横着代表预测值,竖着代表真实值,与之前介绍的相反
P\L     P    N
P      TP    FP
N      FN    TN
"""class SegmentationMetric(object):def __init__(self, numClass):self.numClass = numClassself.confusionMatrix = np.zeros((self.numClass,) * 2)  # 混淆矩阵(空)def pixelAccuracy(self):# return all class overall pixel accuracy 正确的像素占总像素的比例#  PA = acc = (TP + TN) / (TP + TN + FP + TN)acc = np.diag(self.confusionMatrix).sum() / self.confusionMatrix.sum()return accdef classPixelAccuracy(self):# return each category pixel accuracy(A more accurate way to call it precision)# acc = (TP) / TP + FPclassAcc = np.diag(self.confusionMatrix) / self.confusionMatrix.sum(axis=1)return classAcc  # 返回的是一个列表值,如:[0.90, 0.80, 0.96],表示类别1 2 3各类别的预测准确率def meanPixelAccuracy(self):"""Mean Pixel Accuracy(MPA,均像素精度):是PA的一种简单提升,计算每个类内被正确分类像素数的比例,之后求所有类的平均。:return:"""classAcc = self.classPixelAccuracy()meanAcc = np.nanmean(classAcc)  # np.nanmean 求平均值,nan表示遇到Nan类型,其值取为0return meanAcc  # 返回单个值,如:np.nanmean([0.90, 0.80, 0.96, nan, nan]) = (0.90 + 0.80 + 0.96) / 3 =  0.89def IntersectionOverUnion(self):# Intersection = TP Union = TP + FP + FN# IoU = TP / (TP + FP + FN)intersection = np.diag(self.confusionMatrix)  # 取对角元素的值,返回列表union = np.sum(self.confusionMatrix, axis=1) + np.sum(self.confusionMatrix, axis=0) - np.diag(self.confusionMatrix)  # axis = 1表示混淆矩阵行的值,返回列表; axis = 0表示取混淆矩阵列的值,返回列表IoU = intersection / union  # 返回列表,其值为各个类别的IoUreturn IoUdef meanIntersectionOverUnion(self):mIoU = np.nanmean(self.IntersectionOverUnion())  # 求各类别IoU的平均return mIoUdef genConfusionMatrix(self, imgPredict, imgLabel):  #"""同FCN中score.py的fast_hist()函数,计算混淆矩阵:param imgPredict::param imgLabel::return: 混淆矩阵"""# remove classes from unlabeled pixels in gt image and predictmask = (imgLabel >= 0) & (imgLabel < self.numClass)label = self.numClass * imgLabel[mask] + imgPredict[mask]count = np.bincount(label, minlength=self.numClass ** 2)confusionMatrix = count.reshape(self.numClass, self.numClass)# print(confusionMatrix)return confusionMatrixdef Frequency_Weighted_Intersection_over_Union(self):"""FWIoU,频权交并比:为MIoU的一种提升,这种方法根据每个类出现的频率为其设置权重。FWIOU =     [(TP+FN)/(TP+FP+TN+FN)] *[TP / (TP + FP + FN)]"""freq = np.sum(self.confusion_matrix, axis=1) / np.sum(self.confusion_matrix)iu = np.diag(self.confusion_matrix) / (np.sum(self.confusion_matrix, axis=1) + np.sum(self.confusion_matrix, axis=0) -np.diag(self.confusion_matrix))FWIoU = (freq[freq > 0] * iu[freq > 0]).sum()return FWIoUdef addBatch(self, imgPredict, imgLabel):assert imgPredict.shape == imgLabel.shapeself.confusionMatrix += self.genConfusionMatrix(imgPredict, imgLabel)  # 得到混淆矩阵return self.confusionMatrixdef reset(self):self.confusionMatrix = np.zeros((self.numClass, self.numClass))# 测试内容
if __name__ == '__main__':imgPredict = cv2.imread('1.png')imgLabel = cv2.imread('2.png')imgPredict = np.array(cv2.cvtColor(imgPredict, cv2.COLOR_BGR2GRAY) / 255., dtype=np.uint8)imgLabel = np.array(cv2.cvtColor(imgLabel, cv2.COLOR_BGR2GRAY) / 255., dtype=np.uint8)# imgPredict = np.array([0, 0, 1, 1, 2, 2])  # 可直接换成预测图片# imgLabel = np.array([0, 0, 1, 1, 2, 2])  # 可直接换成标注图片metric = SegmentationMetric(2)  # 2表示有2个分类,有几个分类就填几hist = metric.addBatch(imgPredict, imgLabel)pa = metric.pixelAccuracy()cpa = metric.classPixelAccuracy()mpa = metric.meanPixelAccuracy()IoU = metric.IntersectionOverUnion()mIoU = metric.meanIntersectionOverUnion()print('hist is :\n', hist)print('PA is : %f' % pa)print('cPA is :', cpa)  # 列表print('mPA is : %f' % mpa)print('IoU is : ', IoU)print('mIoU is : ', mIoU)

输出:

hist is :[[  43466.   11238.][  11238. 2582058.]]
PA is : 0.991512
cPA is : [0.79456712 0.99566652]
mPA is : 0.895117
IoU is :  [0.65915502 0.99137043]
mIoU is :  0.8252627241326803

注:文中引用较多,忘记大多引用文档,如有被引用,可评论联系标明出处;共同进步!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. (暂定)python:【列表】的具体应用

    以学生通讯管理系统登录系统为例&#xff1a; 实现【添加学员信息→打印学员信息→删除学员信息→退出循环】的过程。 print(-*40) print("欢迎使用学生通讯管理系统v1.0") print("[1] 增加学员信息") print("[2] 删除学员信息") print("…...

    2024/4/24 15:25:46
  2. 【贪玩巴斯】每日一练——《力扣:LeetCode 算法入门》(C++)——「存在重复元素」

    题目四&#xff1a; 作者&#xff1a;力扣 (LeetCode) 链接&#xff1a;https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商…...

    2024/4/29 2:15:15
  3. Linux的进程命令

    1. ps查看进程信息 语法&#xff1a; ps [-auxle] 常用&#xff1a; ps -ef | grep init 查看指定进程信息 参数选项 a&#xff1a;显示所有用户的进程 u&#xff1a;显示用户名和启动时间 x&#xff1a;显示没有控制终端的进程 e&#xff1a;显示所有进程&#xff0…...

    2024/4/24 15:25:51
  4. unity小游戏的脚本

    好久没有正经写过东西 最近文思泉涌特地来水一篇 实在不想录屏以下全篇都是此游戏脚本 是脚本 模型需要自己创建 小游戏先做个见缝插针 第一步是控制中间圆的旋转 &#xff08;1&#xff09; 然后将所所用的针实例化出来 顺水获取鼠标点击 中间分数的显示 &#xff08;2&…...

    2024/4/24 15:25:46
  5. 学Java好不好 要避开哪些雷区

    历经数十年&#xff0c;在时间的考验下&#xff0c;Java依然用实力傲视群雄。Java如此优秀&#xff0c;自然吸引大家争先学习&#xff0c;但学Java好不好&#xff1f;要避开哪些雷区呢&#xff1f;下面跟着小千来看看学好Java要避开的五大致命雷区&#xff01; 1.研究太多&am…...

    2024/4/28 2:07:58
  6. java-map遍历

    //遍历map for (Map.Entry<String, Object> entry : holidayMap.entrySet()) { System.out.println("Key " entry.getKey() ", Value " entry.getValue());}...

    2024/4/29 14:24:41
  7. vue 动态加载路由刷新页面空白,进入不了router.beforeEach

    因为我在挂载el之后检查的路由&#xff0c;把路由放前面就好了 new Vue({ el: ‘#app’, router, store, template: ‘’, components: { App } }) 把上面的放在 router.beforeEach方法后面...

    2024/4/24 13:40:47
  8. js使用replace格式化字符串

    总是记不住这个格式化&#xff0c;每次都得查&#xff0c;就做个备注把 例子&#xff1a; let time 20211027134800 formatStr time. replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/, $1-$2-$3 $4:$5:$6); 最终显示效果&#xff1a;2021-10-27 13:48:00...

    2024/4/24 15:39:06
  9. js 按钮排他性 参考学习博主

    <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><input type"button" value"没点"/><input type"button" value"没点"/><…...

    2024/5/2 8:49:02
  10. 多线程-生产者消费者(笔记)

    * 线程通信的应用:经典例题:生产者/消费者问题 * 生产者(Productor)将产品交给店员(CLerk),而消费者(Customer)从店员处取走产品&#xff0c; * 店员- -次只能持有固定数量的产品(比如:20)&#xff0c;如果生产者试图生产更多的产品&#xff0c;店员 * 会叫生产者停一下&#x…...

    2024/4/24 15:38:52
  11. 万不要再centOS 7.6上装 python 3.9.1,有问题装不上

    千万不要再centOS 7.6上装 python 3.9.1&#xff0c;有问题装不上&#xff0c;换成3.9.2就好了。...

    2024/4/29 1:55:18
  12. RocketMQ

    环境准备 下载virtualbox和centos镜像&#xff0c;启动虚拟机&#xff0c;加载系统&#xff08;略&#xff0c;默认用户名root&#xff09; 确保centos系统已经安装了java和maven环境 sudo yum install java-11-openjdk.x86_64 sudo yum install maven下载RocketMQ 进入Roc…...

    2024/4/24 15:38:57
  13. 基于JAVA+SpringBoot+Mybatis+MYSQL的客户关系CRM系统

    项目功能&#xff1a; 用户管理 用户组管理 用户管理 资源管理 组织架构管理 系统管理 页面效果&#xff1a;...

    2024/4/28 17:57:28
  14. Android开发之ToolBar

    1、设置资源文件themse.xml <androidx.appcompat.widget.Toolbarandroid:id"id/toolbar"android:layout_width"match_parent"android:layout_height"wrap_content"app:navigationIcon"drawable/ic_baseline_arrow_back_ios_24"app…...

    2024/4/24 15:38:51
  15. Linux :ping命令无法成功 yum操作出错 解决办法

    可以在Linux系统中的终端输入命令&#xff1a;ping www.baidu.com&#xff0c;可以查看&#xff0c;如果报错&#xff0c;则是网络的问题&#xff0c;大家可以先参考这篇文章&#xff1a;Linux CentOs7 ping网址 未知的名称或服务_等等waiting-CSDN博客_linuxping未知的名称或服…...

    2024/4/24 15:38:54
  16. redis主从复制无效 两个都是主机

    原因:vim redis.conf的replicaof时,#未删除,表示仍在注释状态 修改完成后,需重启redis,如果还是不行就重启一下Linux系统,基本就是这里的问题...

    2024/4/26 15:49:50
  17. MSQL之CRUD

    ...

    2024/4/24 3:18:32
  18. 手机调试本地vue项目

    vue 项目在手机上调试 cmd&#xff0c;打开自己电脑终端&#xff0c;输入ipconfig&#xff0c;就能看到自己电脑的ip地址了 标题vue.config.js文件 module.exports {devServer: {host: 192.168.1.6, // 将浏览地址的本地服务修改为本机ip地址&#xff0c;用来到手机上测试…...

    2024/4/24 15:38:51
  19. 科目性质与恒等式对应关系

    资产负债所有者权益收入-费用 会计科目分类&#xff1a; 1、资产类 2、负债类 3、共同类 4、权益类 6、损益类 7、表外类 恒等式中&#xff1a; 1、资产对应的是资产类 2、负债对应的是负债类 3、共同类一般作为过渡科目&#xff0c;有资产和负债的属性 4、所有者权益对应权益…...

    2024/4/30 2:25:07
  20. Android获取USB设备信息(名字) - UsbManager

    使用UsbManager获取插入手机的USB设备名字 import android.app.Activity; import android.content.Context; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.util.Log; import android.widget.Ed…...

    2024/4/24 15:25:59

最新文章

  1. 240 基于matlab的飞行轨迹仿真程序

    基于matlab的飞行轨迹仿真程序&#xff0c;多种不同的飞行轨迹&#xff0c;输出经度、纬度、高度三维轨迹&#xff0c;三个方向的飞行速度。程序已调通&#xff0c;可直接运行。 240 飞行轨迹仿真 三维轨迹 飞行速度 - 小红书 (xiaohongshu.com)...

    2024/5/2 10:53:55
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. c# wpf XmlDataProvider 简单试验

    1.概要 2.代码 <Window x:Class"WpfApp2.Window12"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…...

    2024/5/1 6:51:36
  4. java自动化学习-03-02java基础语法01

    1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名&#xff1a;源文件名必须和类名相同。当保存文件的时候&#xff0c;你应该使用类名作为 文件名保存&#xff08;切记 Java 是大小写敏感的&#xff09;&#xff0c;文件名的后缀为 .java。&#xff08;如果文…...

    2024/5/1 14:07:16
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57