【图像分类】 基于Pytorch的细粒度图像分类实战

图像分类_【图像分类】 基于Pytorch的细粒度图像分类实战 基于pytorch的细粒度图像分类实战来啦!作者&编辑 | 郭冰洋1 简介针对传统的多类别图像分类任务,经典的CNN网络已经取得了非常优异的成绩,但在处理细粒度图像数据时,往往无法发挥自身的最大威力。这是因为细粒度图像间存在更加相似的外观和特征,同时在采集中存在姿态、视角、光照、遮挡、背景干扰等影响,导致数据呈现类间差异性大、类内差异性小的现象,从而使分类更加具有难度。为了改善经典CNN网... 阅读详情

欢迎大家来到《图像分类》专栏,今天讲述基于pytorch的细粒度图像分类实战!

作者&编辑 | 郭冰洋

1 简介

针对传统的多类别图像分类任务,经典的CNN网络已经取得了非常优异的成绩,但在处理细粒度图像数据时,往往无法发挥自身的最大威力。


这是因为细粒度图像间存在更加相似的外观和特征,同时在采集中存在姿态、视角、光照、遮挡、背景干扰等影响,导致数据呈现类间差异性大、类内差异性小的现象,从而使分类更加具有难度。


为了改善经典CNN网络在细粒度图像分类中的表现,同时不借助其他标注信息,人们提出了双线性网络(Bilinear CNN)这一非常具有创意的结构,并在细粒度图像分类中取得了相当可观的进步。


本次实战将通过CUB-200数据集进行训练,对比经典CNN网络结构和双线性网络结构间的差异性。

2 数据集

640?wx_fmt=png

首先我们回顾一下在多类别图像分类实战中所提出的图像分类任务的五个步骤。其中,在整个任务中最基础的一环就是根据数据集的构成编写相应的读取代码,这也是整个训练的关键所在。


本次实战选择的数据集为CUB-200数据集,该数据集是细粒度图像分类领域最经典,也是最常用的一个数据集。共包括annotations、attributes、attributes-yaml、images、lists五个文件夹。


此次实战中,我们只利用数据集提供的类别标注信息。因此只需要关注lists文件夹下的train.txt和test.txt文件即可。

640?wx_fmt=png

通过图片我们可以看到,两个txt文件中给出了不同图片的相对路径,而开头数字则代表了对应的标记信息,但是pytorch中的标签必须从0开始,因此我们只需要借助strip和split函数即可完成图像和标签信息的获取。

# txt文件路径

path = '/media/by/Udata/Datasets/bird/lists/train.txt'

txt = open(path,'r')

imgs = []

# 读取每行信息

   line = line.strip('\n')

   # 将每行内容以'.'为标记划分

   # 添加至列表

输出结果示例如下图所示:

640?wx_fmt=png

此时我们只需要将上述模块融合进pytorch的数据集读取模块即可,代码如下:

class cub_dataset(Dataset):

   def __init__(self, transform):

        '/media/by/Udata/Datasets/bird/lists/train.txt', 'r')

        '/media/by/Udata/Datasets/bird/images/' + fn)

3 网络搭建

本次实战主要选取了经典Resnet 50网络结构和基于Resnet 50的双线性网络结构。

Resnet 50作为经典的分类网络,其结构不再赘述,在此详细介绍一下双线性网络的构建。

640?wx_fmt=png

如上图所示,双线性网络包括两个分支CNN结构,这两个分支可以是相同的网络,也可以是不同的网络,本次实战使用Resnet 50做为相同的分支网络,以保证对比的客观性。

在此网络下将图像送入两个分支Resnet 50之后,把获取到的两个特征分支进行相应的融合操作。

具体代码如下:

class Net(nn.Module):

                                                      resnet50().bn1, 

                                                      resnet50().relu, 

                                                      resnet50().maxpool, 

                                                      resnet50().layer1,

                                                      resnet50().layer2,

                                                      resnet50().layer3,

                                                      resnet50().layer4)

       torch.transpose(x, 1, 2)) / 28 ** 2).view(batch_size, -1)

              torch.sqrt(torch.abs(x) + 1e-10))

       x = self.classifiers(x)

4 训练及参数调试

损失函数选择交叉熵损失函数,优化方式选择SGD优化。初始学习率设置为0.01,batch size设置为8,衰减率设置为0.00001,迭代周期为20,采用top-5评价指标

最终的训练结果如下图所示:

640?wx_fmt=png

Resnet 50最终取得的准确率约52%左右,而基于Resnet 50的双线性网络取得了近80%的准确率,由此可见不同的网络在细粒度分类任务上的性能差异非常巨大。

项目代码:发送“细粒度分类”到有三AI公众号后台可获取。

总结

以上就是整个细粒度图像分类实战的过程,本次实战并没有进行精细的调参工作,因此双线性网络的性能与原文中具有一定的差异,同时也期待大家去发掘更有效、更精准的细粒度分类网络哦!

有三AI夏季划

640?wx_fmt=png

有三AI夏季划进行中,欢迎了解并加入,系统性成长为中级CV算法工程师。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

PyTorch实战:如何用SoftTriple Loss提升细粒度图像分类效果(附代码) 本文详细介绍了如何利用SoftTriple Loss提升细粒度图像分类任务的性能。该损失函数源自ICCV高引论文,通过为每个类别引入多个可学习的中心,并采用软最大聚合机制,有效增强了特征的判别性,避免了传统Triplet Loss复杂的采样过程。文章提供了完整的PyTorch实现代码,并分享了关键的超参数调优技巧与实战经验,帮助开发者轻松应对类内差异大、类间差异微妙的分类挑战。 阅读详情

相关推荐

手写签名识别:细粒度图像分类的PyTorch实战

手写签名识别本质上是细粒度图像分类任务,而非OCR文字识别——其核心在于建模同一人书写风格的视觉一致性,对笔画粗细、起收笔、连笔形变等局部特征高度敏感。基于卷积神经网络(CNN)的空间感知能力与全连接层的判别映射能力,构建轻量级CNN-FC混合模型,可有效克服小样本、低分辨率、类别不平衡等现实挑战。该技术广泛应用于银行身份核验、嵌入式边缘部署及高校课程设计等场景,兼顾精度、效率与可复现性。本文聚焦PyTorch框架下的模型设计、Kaiming初始化、裁剪优先预处理及ONNX-TensorRT部署全流程。

weixin_42521856的博客 84

细粒度分类数据集汇总

CUB-200-2011 鸟类数据集: 数据集地址:http://www.vision.caltech.edu/visipedia/CUB-200-2011.html Caltech-UCSD Birds-200-2011 (CUB-200-2011) 是 CUB-200 dataset 的一个扩充版本,每个类的图像数量大约增加两倍和新的部位注释。 (1)类别数目: 200 (2)图像总数目: ...

Leong Blog 9404

ResNet植物识别实战:PyTorch实现细粒度图像分类

卷积神经网络(CNN)是图像分类领域的基础架构,而ResNet通过引入残差结构有效解决了深层网络退化问题,使模型能够提取更细粒度的视觉特征,成为细粒度图像分类的常用骨干网络。在植物识别这类相似类别多、差异细微的任务中,ResNet结合迁移学习可在数据量有限时获得良好精度。本文以PyTorch为工具,从数据集的目录整理、预处理与增强参数设置,到ResNet分类头的替换、训练循环与超参数调整,再到loss曲线分析和混淆矩阵排查,系统梳理了一套完整可落地的植物类别识别流程。无论手头图片数量多少,只要遵循迁移学习与

weixin_29048775的博客 264

细粒度图像分类(FGVC)---综述

一、概述 什么是细粒度图像分类 细粒度图像分类问题是对大类下的子类进行识别。细粒度图像分析任务相对通用图像(General/Generic Images)任务的区别和难点在于其图像所属类别的粒度更为精细。 以图1为例,通用图像分类其任务诉求是将“袋鼠”和“狗”这两个物体大类(蓝色框和红色框中物体)分开,可见无论从样貌、形态等方面,二者还是很容易被区分的;而细粒度图像的分类任务则要求对“狗”该类类别......

xys430381_1的专栏 7万+

毒蘑菇识别实战:基于ResNet与PyTorch的细粒度图像分类系统搭建

细粒度图像分类是计算机视觉中极具挑战性的任务,其目标是对同一基础类别的细微差异进行精准区分,比如在数十种外观相近的蘑菇中识别出致命毒菌。传统卷积神经网络在处理菌盖颜色、菌褶密度等微小特征时容易失效,而ResNet凭借残差连接机制,有效缓解了深层网络的梯度消失问题,成为此类识别任务的主流骨干结构。本文将面向图像分类的工程实现路径,探讨小样本场景下的数据清洗与增强策略、基于预训练模型的迁移学习微调方法,并延伸到推理部署与置信度评估等落地环节。在具体实践中,以毒蘑菇识别为例,完整展示了如何利用ResNet50和P

weixin_32285357的博客 173

CUB-200-2011细粒度图像分类实战:PyTorch训练调参全攻略

细粒度图像分类是计算机视觉中极具挑战的方向,其核心难点在于类间差异细微、类内差异显著,例如CUB-200-2011鸟类数据集中的200个物种,仅靠喙型、翅斑等局部特征区分。传统手工特征在此场景下精度受限,而基于深度卷积神经网络的迁移学习,借助ImageNet预训练权重和注意力机制,能够有效提取判别性特征。在工程实践中,结合边界框裁剪、高分辨率输入、数据增强、标签平滑、EMA以及测试时增强等策略,可显著提升模型泛化能力。该技术广泛应用于生态监测、农业病虫害识别等需要细粒度辨识的领域。围绕PyTorch框架,系

weixin_29054399的博客 241

细粒度图像分类 fine-grained classification

细粒度图像分类又被称作子类别图像分类,是近年来计算机视觉、模式识别等领域的研究热点,其目的是对粗粒度的大类别进行更加细致的子类划分。但由于子类别间的细微差别以及较大的类内差异,较之普通的图像分类任务,细粒度图像分类的难度更大。 早期的基于人工特征的算法表达能力有限,分类效果也有很大的局限性。深度学习的兴起促进了该领域的发展,传统的人工标注信息制约了算法实用性,更多的算法不再依赖人工...

小星星专栏 2万+

花卉图片集(01)PyTorch实战:从数据预处理到细粒度图像分类训练

细粒度图像识别是计算机视觉中最考验数据质量与特征捕捉能力的任务,相较于普通图像分类,它需要模型精确区分形状、纹理等局部细节差异。训练这类模型的效果上限往往在数据预处理阶段就已决定——从清晰的目录结构、标签对齐到训练集与验证集的合理划分,每一环都直接影响模型的泛化能力。借助迁移学习可以高效起步,例如使用在ImageNet上预训练的ResNet作为骨干网络,再针对性微调,而PyTorch提供的数据集工具与Transform流程则能大幅简化从数据装载到重构分类层的工程路径。这种技术组合已广泛落地于植物识别、智能农

weixin_32678995的博客 299

深度学习: 细粒度图像分类 (fine-grained image recognition)

向AI转型的程序员都关注了这个号????????????人工智能大数据与深度学习 公众号:datayx细粒度图像识别 (fine-grained image recognition),...

datayx的文章 1万+

ResNet+CBAM细粒度图像分类实战:从原理到PyTorch落地

细粒度图像分类是计算机视觉中识别相似子类的关键任务,其核心挑战在于建模局部判别性区域与通道重要性的协同关系。CBAM(卷积块注意力模块)通过通道注意力与空间注意力的双路设计,在ResNet等主干网络上实现可解释的特征增强,显著提升对犬种、宠物、鸟类等高度相似类别间的区分能力。相比SE模块的单维压缩或自注意力的高计算开销,CBAM以轻量结构兼顾精度与效率,特别适合Stanford Dogs、Oxford-IIIT Pets等细粒度数据集。本文基于PyTorch原生实现,覆盖CBAM模块构建、ResNet主干适

weixin_34246529的博客 146

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1767

细粒度图像分类研究综述

细粒度图像分类问题是计算机视觉领域一项极具挑战的研究课题, 其目标是对子类进行识别,如区分不同种类的鸟。由于子类别间细微的类间差异和较大的类内差异, 传统的分类算法不得不依赖于大量的人工标注信息。近年来, 随着深度学习的发展, 深度卷积神经网络为细粒度图像分类带来了新的机遇。大量基于深度卷积特征算法的提出, 促进了该领域的快速发展。概述定义细粒度图像分类(Fine-Grained Categori...

z止于至善的博客 2万+

一文搞懂雷达脉冲压缩和匹配滤波器

为了解决传统单频脉冲雷达面临的作用距离和空间分辨力之间的矛盾,脉冲压缩理论被提出。在接收端设计一个和发射信号能够“共轭匹配”的网络来实现脉冲压缩。接收到的回波信号通过匹配滤波器时,滤波器的增益在信号越强的频率点越大;在信号越弱的频率点,增益越小,通过这样的方式使信号在时域更加集中。脉冲压缩技术大致可分为线性调频(LFM)和相位编码。其中LFM信号易于通过硬件或各种技术产生,但是进行匹配滤波后主旁瓣比高达13.2dB,在检测多个目标时,强目标的回波旁瓣可能会把弱小信号覆盖,导致弱小信号的检测受到影响。

FPGA入门到跑路 9939

pytorch resnet50_【图像分类】 基于Pytorch的细粒度图像分类实战

基于pytorch的细粒度图像分类实战来啦!作者&编辑 | 郭冰洋1 简介针对传统的多类别图像分类任务,经典的CNN网络已经取得了非常优异的成绩,但在处理细粒度图像数据时,往往无法发挥自身的最大威力。这是因为细粒度图像间存在更加相似的外观和特征,同时在采集中存在姿态、视角、光照、遮挡、背景干扰等影响,导致数据呈现类间差异性大、类内差异性小的现象,从而使分类更加具有难度。为了改善经典CNN网...

weixin_39907922的博客 2595

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2497

Halcon深度学习实战:基于异常值检测的工业缺陷精准识别方案

本文详细介绍了Halcon深度学习中的异常值检测技术在工业缺陷识别中的应用。该方法仅需少量正常样本即可训练,能有效应对未知、多变的缺陷类型,显著降低项目启动门槛。文章提供了从数据准备、模型训练、参数调优到产线部署的完整实战指南,并分享了关键的性能优化与避坑经验。

weixin_29042035的博客 243

细粒度图像分类_【图像分类】 基于Pytorch的细粒度图像分类实战

欢迎大家来到《图像分类》专栏,今天讲述基于pytorch的细粒度图像分类实战!作者&编辑 | 郭冰洋 1 简介针对传统的多类别图像分类任务,经典的CNN网络已经取得了非常优异的成绩,但在处理细粒度图像数据时,往往无法发挥自身的最大威力。这是因为细粒度图像间存在更加相似的外观和特征,同时在采集中存在姿态、视角、光照、遮挡、背景干扰等影响,导致数据呈现类间差异性大、类内差异性小的现...

weixin_39887961的博客 817

R语言pls包实战:手把手教你用偏最小二乘(PLS)搞定高维数据回归(附完整代码与数据标准化避坑指南)

本文详细介绍了如何使用R语言的pls包进行偏最小二乘(PLS)回归分析,特别针对高维数据回归问题。通过完整的代码示例和数据标准化避坑指南,帮助读者掌握从数据预处理到模型优化的全流程,解决实际应用中的常见问题。

weixin_42662605的博客 352

【项目实战课】人人免费可学,基于Pytorch的BCNN鸟类细粒度图像分类实战

欢迎大家来到我们的项目实战课,本期内容是《基于Pytorch的BCNN鸟类细粒度图像分类实战》。所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲解,要求大家有较好的基础知识。本次课程内容细粒度图像分类是一个粒度较小的图像分类问题,它往往是同一个大类中的子类的分类,以不同鸟类的细粒度分类任务为例,比较著名的数据集是Caltec...

hacker_long的专栏 1563

基于环形槽谐振器与PIN二极管的频率可重构Vivaldi天线设计与CST仿真研究

摘要 本文设计了一种基于FR4基板的频率可重构Vivaldi天线,通过集成环形槽谐振器(CSRR)和PIN二极管开关实现超宽带(UWB,2-8 GHz)与窄带(2.4/3.5/5.2 GHz)模式的电控切换。天线采用指数渐变槽线结构,结合CSRR的滤波特性和PIN二极管的开关功能,利用CST仿真优化参数。结果表明,UWB模式下S11<-10 dB,窄带模式下目标频点谐振显著,其他频段抑制良好,验证了设计的可行性。该方案为多频段无线通信系统提供了紧凑、低成本的可重构天线解决方案。 关键词:频率可重构天线

huanghm88的专栏 220

YOLOv11的QAT(训练感知量化)实战

本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。

as1225120794的博客 510

细粒度图像分类实战:从原理到PyTorch代码全解析

图像分类是计算机视觉的基础任务,而细粒度图像分类(FGVC)则要求模型在极小的类间差异中实现精准辨别。其核心原理在于通过注意力机制与多尺度特征融合,引导模型聚焦判别性区域,从而克服类内差异大、类间差异小的挑战。这一技术价值在于,它能将通用识别能力提升至专业鉴别水平,广泛应用于商品识别、医学影像分析、工业质检等场景。本文围绕细粒度分类的完整实操流程,从数据构建、模型设计到损失函数与训练策略,结合PyTorch代码与调参经验,为读者提供一套可落地的技术方案。

weixin_29032337的博客 271

YOLOv11-Pose部署RK3588实战:人体姿态识别精度翻倍,边缘推理速度突破瓶颈

本教程从YOLOv11-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

m0_64661770的博客 138

PyTorch运动鞋细粒度图像分类实战:从数据到ONNX部署

图像分类是计算机视觉的基础任务,而细粒度图像分类要在高度相似的类别间区分局部差异,核心在于用卷积神经网络提取可判别特征,并结合迁移学习复用通用视觉表征。其技术价值在于以较低标注和算力成本提升商品图审核、品类识别与检索的自动化水平,典型场景包括电商运动鞋品类审核、型号细分和端侧推理。工程落地时,数据构建与增强策略决定上限,ResNet50等预训练骨干配合分阶段微调可平衡精度与成本,训练后还需关注混淆矩阵分析与ONNX推理部署。围绕运动鞋识别这一细粒度分类任务,从数据清洗、标注规范、增强参数、训练调优到模型导出

weixin_30952479的博客 263

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PyTorch实战:手把手教你用SoftTriple Loss搞定细粒度图像分类(附代码)

本文提供了使用SoftTriple Loss进行细粒度图像分类的PyTorch实战指南。该损失函数源自ICCV高引论文,无需复杂的三元组采样,通过为每个类别设置多个类中心,有效提升模型对细微差异的判别力。文章包含从原理理解、代码实现、参数调优到评估部署的完整流程,并附有详细的代码示例和实战技巧。

http9protocoller的博客 412

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

PyTorch运动鞋识别实战:细粒度图像分类全链路落地

图像分类是深度学习的基础任务,其核心在于让模型从像素中学习可区分的特征表达;当类别差异集中在局部纹理与配色时,细粒度分类对数据质量和预处理一致性提出更高要求。借助迁移学习,预训练骨干网可将通用视觉特征迁移到垂直品类,以较低样本成本提升收敛速度与泛化能力,技术价值体现在缩短训练周期、降低标注依赖并保证推理一致性。该思路适用于鞋服识别、商品分类、质检等场景。围绕PyTorch运动鞋识别,从类别粒度、数据清洗、骨干网选型、训练稳定性到评估复核与推理部署形成可复现链路,帮助小样本图像分类项目稳定落地。

weixin_29044713的博客 276

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 【知识星球】为什么图像分类任务要从256*256中裁剪出224*224
下一篇: 【知识星球】ElementAI提出超复杂多尺度细粒度图像分类Attention模型
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值