PaddleClas学习<一>初探

2023-09-30 14:36:20
标签: paddle python

作者: Sam(甄峰) sam_code@hotmail.com


0. 介绍:

PaddleClas是Paddle提供的一个图像识别和图像分类工具集。支持多种图像分类和识别相关算法。提供特色骨干网络PP-HGNet(High Performance GPU Net), PP-LCNetv2, PP-LCNet(专门针对 Intel CPU 做特定的优化)和SSLD半监督知识蒸馏方案。 在此基础上打造PULC超轻量级图像分类方案和PP-ShiTu图像识别系统。


1. PaddlePaddle 和 PaddleClas环境安装:

PaddlePaddle的安装,与Cuda,Cudnn的版本关系等,可见(https://blog.sina.com.cn/s/blog_602f87700102ylo4.html)

当前PaddleClas需要PaddlePaddle版本高于2.3. 


1.1:安装Anaconda:

可以使用Anaconda来管理包。相关内容与Pytorch GPU 在Windows上的安装类似。(https://blog.sina.com.cn/s/blog_602f87700102ynwr.html)

使用Anaconda管理包的好处是,可以创建多个虚拟环境,里面放置不同版本的package而互不影响。

例如: 某台机器安装Cuda11.7, cudnn8.5后。既需要安装Pytorch训练环境,又需要安装Paddle 以及tf.keras训练环境, 但这几个训练环境依赖的package版本不一致,则可以 创建pytorch anaconda虚拟环境和Paddle以及tf.keras虚拟环境。就可以同时在一台机器上维护多套训练环境了。

1.1.1: 创建Anaconda Paddle虚拟环境:

conda create -n paddle_env python=Python_VER

因为当前使用pyton 3.11. 所以:

conda create -n paddle_env python=3.11


1.1.2:进入Anaconda Paddle虚拟环境:

conda activate paddle_env

确认一下此环境下python版本:

python --version

python 3.11.5

 

1.2:安装Paddle:

因为使用cuda11.7 (之前安装pytorch训练环境时,它需要这个版本)。 所以选择cuda11.7版本的Paddle.


import paddle ,再输入 paddle.utils.run_check()

如果出现PaddlePaddle is installed successfully!,说明您已成功安装。


1.3: 安装PaddleClas:

git clone https://gitee.com/paddlepaddle/PaddleClas.git -b release/2.4


此外,还有个选择,直接拉取paddlepaddle+ paddleclas docker。

 

 

 

 

 


附1:图像分类评价指标:

评价指标中,二分类和多分类的有所不同,现在分开讨论:

A. 二分类评价指标:

准确率,精准度,召回率,F1-Sore, AUC, ROC, P-R曲线。

 

  • TP:被模型预测为正类的正样本
  • TN:被模型预测为负类的负样本
  • FP:被模型预测为正类的负样本
  • FN:被模型预测为负类的正样本



A1: Accuracy(准确率/精度):

分 类 正 确 的 样 本 数 占 总 样 本 数 的 比 例。


A2: Precision(精准率/查准率):

分类正确的正样本数占所有预测正样本的比例。 即模型判断为正例的里面,实际的正确的概率是多少。

Precision= TP/(TP+FP)


A3: Recall(召回率/查全率):

分类正确的正样本个数占实际正样本数的比例。

Recall = TP/(TP+FN)

A4: F1-Score:

精准率和召回率的调和平均值。当类别不平衡时,它能比Accuracy更好的评价。

F1-Score= (2*Precision*Recall)/(Precision+Recall)

最大值是1,最小值是0.


A5: ROC(Receiver Operation Characteristic):

准确率、精确率、召回率 和 F1-score 都是单一的数值指标,如果想观察分类算法在不同的参数下的表

现,此时可以使用一条曲线,即 ROC。ROC 曲线可以用评价一个分类器在不同阈值下的表现。

ROC曲线画法:

给定一个初始阈值(一半是从0%开始)

根据分类结果画上图中第一个表格,然后根据上面的式子算出TPR和FPR。由TPR和FPR可以确定一个点,

在图中画出;

给一个新的阈值(如每次加1%),并重复步骤2、3,直到阈值取到100%。

若干个点最后组成了ROC曲线。

横坐标是 FPR(False Position Rate):FPN = FP / (FP + TN),表示分类器预测的正类中实际负实例占

所有负例的比例,FPR越大,预测正类中的实际负类越多。

纵坐标是TPR(True position Rate):公式同召回率的,TPN = TP / (TP + FN),表示分类器预测的正类

中实际正实例占所有正例

的比例;

ROC 曲线有四个关键点(如下图):

(0,0)点:FPR=TPR=0,表示分类器预测所有的样本都为负样本;

(1,1)点:FPR=TPR=1,表示分类器预测所有的样本都为正样本;

(0,1)点:FPR=0,TPR=1,此时FN=0且FP=0,表示最优分类器,所有的样本都被正确分类;

(1,0)点:FPR=1,TPR=0,此时TP=0且TN=0,表示最差分类器,有所得样本都被错误分类;



 A6. AUC(Area Under Curve):

AUC为ROC曲线下的面积,这个面积的数值不会大于1。

  • AUC=1:在任何阈值下分类器都可以 100% 识别所有类别,这是理想的分类器;
  • AUC=0.5:相当于随机预测,此时分类器不可用;
  • 0.5
  • AUC<0.5:总是比随机预测更差;

AUC 作为一个评价标准,常和 ROC 曲线一起使用,可以看作是ROC的量化表现。


A7. P-R曲线:

以查准率(Precision)为纵轴、查全率(Recall)为横轴作图 ,就得到了查准率-查全率曲线,简称 "P-R曲线"。

绘制方法:

改变阈值比如设置阈值分别为0,0.01,.......0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, ..... 0.99就可以得到100组P和R的值,就可以由此绘画P-R曲线.

 

 

 优劣比较:

  • 若一PR曲线完全“包住”,可以断言后者的性能优于前者,像上图中学习器A的性能就优于学习器C;
  • 若是两个学习器的PR曲线发生交叉,像A和B,就比较难断言孰优孰劣,只能是在具体的查准率或查全率条件进行比较。这里引入平衡点(Break-Even Point,BEP)的概念,就是那么一个综合考虑查准率和查全率的性能度量,它是“查准率=查全率”时的取值,基于BEP进行比较,我们可以认为学习器A要比B好。

A.8 AP(average precision)

就是Precision-Recall 曲线下围成的面积,通常来说一个越好的分类器,AP值越高。而mAP(mean average precision)是多个类别AP的平均值。


 

B. 多分类指标:

B1. 混淆矩阵

B2.Accuracy 之 top1和top5

准确率:与二分类相同,预测正确的样本占总样本的比例。

改指标在很多论文中比较常见。所谓的Accuracy Top-1 是指排名第一的类别与实际结果相符的准确率,而TAccuracy op-5 是指排名前五的类别包含实际结果的准确率。

 

B3. macro 指标

B4.micro 指标

B5.mAP

mAP(mean Average Precision)一般而言,全类平均正确率(mAP,又称全类平均精度)是将所有类别的平均正确率(AP)进行综合加权平均而得到的。再目标检测领域使用更为普遍。



C. 性能指标 OPS FLOPS FLOPs

机器性能

  • OPS(Operations Per Second) ,每秒的操作次数
  • MOPS(Million Operation Per Second):每秒钟可进行一百万次(10^6)操作
  • GOPS(Giga Operations Per Second)每秒钟可进行十亿次(10^9)操作
  • TOPS(Tera Operations Per Second)每秒钟可进行一万亿次(10^12)操作
  • POPS(peta Operations Per Second)每秒钟可进行一千万亿(=10^15)操作
  • FLOPS

: (Floating Point operations per second), S大写, 指每秒浮点运算的次数,可以理解为运算的速度,是衡量硬件性能的一个指标。MFLOPS, GFLOPS, TFLOPS, PFLOPS 意义同上。


一般计算FLOPs来衡量模型的复杂度,FLOPs越小时,表示模型所需计算量越小,运行起来时速度更快

 

 

阅读(0) 收藏(0) 转载(0) 举报/Report
相关阅读

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有