01理论
multiclass、fine-grained(一个类下不同品种)、一张图多个class
弱监督、零样本(模型没有见过的,但是可以用语言描述完,它能懂是这个)
精度是对于所有预测为正样本而言的,包括了实际是负样本,错误预测为正样本,召回是针对所有正样本而言的,包括了实际为正样本预测成负样本。
缺点也是优点。由于PR对于正样本考虑的更多,更在乎正样本的重要性,所以对于不均衡的样本检测通常用PR曲线能够更好的反应正确地识别出真实的正例(TP),并且尽量避免将负例判定为正例(FP)这两个性能
为啥PR曲线对正负样本敏感,但是ROC就不会呢
在PR曲线中,横轴是召回率R,纵轴是精度P。
ROC曲线则反映了真正例率与假正例率之间的关系。在ROC曲线中,横轴是假正例率(False Positive Rate, FPR,分母是负样本总数),纵轴是真正例率(True Positive Rate, TPR分母是正样本总数)。ROC曲线只关注正负样本的分类结果,而不考虑它们的数量比例。
混淆矩阵
熵
KL散度
2图像CNN简介
由边缘到线条到形状再到类
3transformer模型
自注意力(SA):Q是查询,K是键值,内积之后相当于看距离,之后得到索引,V是值(有点不明白)
ViT:有点没听懂,对输入图像分块
DeiT:使用蒸馏方式,减少数据量和计算时间
Swin :W-MSA,把输入图像分成不同窗口,只在窗口里面计算,所以图片大小变大,计算量只是线性的,但是没有窗口与窗口间的联系,所以引入了滑动窗口(shifted window)
02实践
报错:LabelSmoothLoss requires output and target to be same shape, but got output.shape: torch.Size([32, 14]) and target.shape: torch.Size([32, 100]),
原因:分类数没有全部改成14
模型评估出来了
先训练,再评估,再应用(应用分类)
创建模型,有一个地址,复制,打开终端
root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace# git clone https://www.modelscope.cn/liujixi/flower_classification.git root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace# cd flower_classification #进入 root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# git pull #更新一下 root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# cp ../vit_base_flower/pytorch_model.pt . root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# cp ../vit_base_flower/configuration.json . #上传 root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# git add -A root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# git commit -m 'update model' root@eais-bjg7s7rml27wo80obhur-b85957ffc-69dp6:/mnt/workspace/flower_classification# git push #上传
设置访问权限
from modelscope.hub.api import HubApi #YOUR_ACCESS_TOKEN = '请从ModelScope个人中心->访问令牌获取’ #api = HubApi() #api.login(YOUR_ACCESS_TOKEN)
访问令牌是SDK令牌,注意要改成双引号
报错,没有revision,除了model是自己的地址,还要加 model_revision="v1.0.0"
最终创空间