作者: 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越小时,表示模型所需计算量越小,运行起来时速度更快
PaddleClas学习<一>初探
作者: 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曲线。
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 作为一个评价标准,常和 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曲线.
优劣比较:
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
机器性能
: (Floating Point operations per second), S大写, 指每秒浮点运算的次数,可以理解为运算的速度,是衡量硬件性能的一个指标。MFLOPS, GFLOPS, TFLOPS, PFLOPS 意义同上。
一般计算FLOPs来衡量模型的复杂度,FLOPs越小时,表示模型所需计算量越小,运行起来时速度更快