图像分类pytorch-image-models-master代码目录解析

代码来源:https://github.com/rwightman/pytorch-image-models

其目录结构:

 该源代码主要实现功能为CV经典三剑客中的图像分类。2012年人工智能出现爆发式增长,离不开深度神经网络的产生。经典的有Alexnet,VGG,GeogLeNet,RestNet等,本次主要对RestNet做深层次阐述。

一、README解读

最新版的ResNet来到2021年10月19日,根据README文件阐述,自2021年1月起,已经更新了23次,其更新速度确实让人满意。其次,PyTorch Image Models 是一个图像模型、层、实用程序、优化器、调度器、数据加载器/增强和参考训练、验证脚本的集合,目的是将各个SOTA模型组合在一起,得以重现ImageNet训练效果。最后,这是一个很不错的PyTorch资源,它可以和对象检测、实例和语义分割、计算机视觉/图像增强、知识蒸馏、度量学习很好的结合在一起。具体的参考论文可看

二、代码目录详解

2.1  convert文件夹里主要包含mxnet和flax,其功能分别是从mxnet和nest_flax预训练模型到pytorch模型的转换,其原因是预训练模型在不同深度学习框架中的转换是一种常见的任务。

2.2 docs文件夹里主要是一些文档的.md文件,其中包括各种模型的参数,使用步骤,使用要求,代码来源以及在ImageNet上的Top1和Top5识别准确率。如果有需要使用某一个模型,可以在docs文件夹里查找相关信息。

2.3 notebooks文件夹主要是.ipynb,该文件是交互式笔记文件,具体的作用猜测是作者写的一些笔记,大家可以具体看一看。

2.4,results文件夹主要是放置一些结果文件。

2.5 test文件夹是一些测试程序,包括对于层数,模型,优化器,工具类的测试。读者可以根据自己的需要,在这个文件夹里,测试自己模型的参数,预测最好的效果。

 2.6 timm文件夹里有data,loss,model,option,scheduler,utils等python包。data包主要包含图片参数设置,可以导入路径,tar压缩包等,除此之外,还有对图片进行预处理的操作:自动增强,transforms结构等,可以使网络权重更加精确,识别效果更佳优秀。transform结构最开始来源于NLP,因为其self-attention的机制,应用于图片处理,效果也是很好,所以该结构在深度学习中,极受欢迎。

loss包中含有多标签之非对称损失函数,解决了多标签分类任务中,正负样本不平衡问题,标签错误问题。该方法,高效,容易使用。相比于最近的其他方法,该方法基于主流的网络结构,并且不需要其他的信息。当然,还有其他损失函数,比如binary_cross_entropy,cross_entropy,jsd等等。

models包中拥有很多模型的结构,具体的结构,读者可以自己看,因为很多,就不一一阐述了。如果有疑惑的地方,可以看docs文件夹里的文档说明。

optim包里是一些优化器的选择,优化器的作用是自动设置权重步长,里面有16个优化器的实现,每种优化器的作用仅仅是有小部分不同,如果读者感兴趣,可以复制python文件名字百度,拥有很多的介绍。

 scheduler包主要是学习率的设置,里面是学习率的python文件实现,主要有6中学习率设置方法,还有两个python自带的定时器包。

 utils包里是一些ResNet和MobileNet网络的一些工具类,主要还是为网络结构服务,请看图

 2.7 avg_checkpoint.py的作用是匹配指定路径上的所有模型权重的过滤器通配符。为了取得较好的结果,这些checkpoint必须来源于相同训练。

2.8 benchmark.py 是timm模型的推理和训练步骤基准的脚本。

2.9 inference.py 是一个示例推理脚本,将文件夹中的图像的top-k类id输出到csv中。

2.10  train.py  这是一个精简的、易于修改的ImageNet训练脚本,可以重新生成ImageNet,训练结果与一些最新的网络和训练技术。它倾向于规范的PyTorch和标准的Python风格,也就是说,提供了很多的训练速度和改进结果的PyTorch示例脚本,自己可以自由选择。

2.11 vaildate.py是一个精简且易于修改的ImageNet验证脚本,其功能与train.py类似。


 PyTorch版本的图像分类ResNet和MobileNet的代码目录大概就是这样的,下面开始主要讲解为什么用ResNet和MobileNet来作为图像分类的典例。


三、ResNet的优势

ResNet的主要特点增加了恒等映射,随着网络的结构加深,就不会使深度网络退化。比如,我们都知道,当网络层数的增加,会导致梯度消失或者爆炸的问题,即使训练出来模型,其识别效果反而不好。有学者证明其原因是由于反向传播导致计算复杂,参数增多等问题。于是有学者就提出当网络在某一个层数时,精确度达到最高,如果我们在下面的几层什么都不学习,仅仅复制浅层网络的特征,这样就不会造成网络退化。这样既增加了层数又提高了精度,然后,ResNet网络结构本来也是在VGG-19上做的修改,所以VGG的优势,它也有,这也是为什么选用ResNet的原因。(如果有不懂ALexNet,VGG,GeogLeNet的同学,可以看看其他人的文章,我就不多说了)

 

四、MobileNet的优势

训练过模型的同学都知道,无论是AlexNet还是VGG等网络模型,其参数都是很庞大的,往往一个模型都有几百兆。假如我们想要移植到一些轻便的中控机上,那么是很难实现的,于是一种轻量级网络被提出来。轻量级网络,顾名思义,就是参数少,模型小,那么,减少了参数,怎么保持识别率不会下降呢。MobileNet的基本单元是深度级可分离卷积,是一种可分解的卷积操作,与GeogLeNet类似,可以将卷积核分离成2个小的卷积核,减少了参数,但是感受野也就是特征并没有少获取。其次,将平均池化变成feature变成1*1,根据预测类别大小加上全连接层,最后一层是softmax。

 


五、总结

这篇博客主要通过代码引出CV里面三剑客之一的图像分类算法ResNet和部署于轻便式的MobileNet。

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pytorch-multi-label-classifier-master是一个基于PyTorch的多标签分类器项目。该项目旨在使用PyTorch框架构建一个能够对具有多个标签的数据样本进行分类的模型。 PyTorch是一个流行的深度学习框架,能够实现多种深度学习模型的构建与训练。它提供了丰富的工具和函数,简化了模型的复杂性,并提供了高效的计算能力。 在这个项目中,multi-label指的是数据样本可以被分为多个标签。与传统的单标签分类不同,每个样本可以被分为多个类别,这增加了分类问题的复杂性。模型需要学习如何给每个样本分配正确的标签。 pytorch-multi-label-classifier-master项目提供了一个设置多标签分类模型的基础架构。它包含了数据预处理、模型构建、训练和评估等步骤。用户可以根据自己的数据集和需求,对该项目进行定制。 通过使用pytorch-multi-label-classifier-master项目,用户可以快速搭建一个多标签分类器,用于解决具有多个标签的数据分类问题。同时,该项目还提供了一些示例数据和模型,帮助用户更好地理解和使用多标签分类技术。 总而言之,pytorch-multi-label-classifier-master是一个基于PyTorch框架用于多标签分类的项目,为用户提供了一个简单且灵活的搭建多标签分类器的框架,方便用户解决多标签分类问题。 ### 回答2: pytorch-multi-label-classifier-master是一个基于PyTorch的多标签分类器项目。它提供了一种使用神经网络模型来处理多标签分类任务的解决方案。 该项目的主要目标是通过深度学习技术来提高多标签分类问题的准确度。它使用PyTorch作为深度学习框架,该框架提供了丰富的工具和功能来构建和训练神经网络模型。 在pytorch-multi-label-classifier-master中,你可以找到许多工具和函数来进行数据预处理、模型构建、训练和评估。它支持常见的多标签分类算法,如卷积神经网络(CNN)和递归神经网络(RNN)。你可以根据自己的需求选择合适的模型,并通过简单的配置来进行训练。 该项目还提供了一些示例数据集和预训练模型,以帮助你更快地开始。你可以使用这些数据集来测试和调试你的模型,或者使用预训练模型来进行迁移学习。 pytorch-multi-label-classifier-master还支持一些常见的性能评估指标,如准确率、精确率、召回率和F1值。你可以使用这些指标来评估你的模型在多标签分类任务上的性能。 总的来说,pytorch-multi-label-classifier-master是一个方便易用的项目,旨在帮助你构建和训练用于多标签分类的深度学习模型。它提供了丰富的功能和工具,使你能够快速搭建一个准确度较高的多标签分类器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值