1.[CV - 像分类 - 论文复现] 深度学习之像分类经典模型 - MMClassification(二)- 初步认识
2.如何学习视频识别技术?
3.经典网络结构搜索算法 SPOS,快速完成模型压缩
4.从安防业务视角看国产视觉芯片 AX620A
[CV - 像分类 - 论文复现] 深度学习之像分类经典模型 - MMClassification(二)- 初步认识
本文将深入探讨深度学习中图像分类的经典模型,从理论到实践,以期复现实用的图像分类算法。
首先回顾上一期内容,了解图像分类的985源码基本框架。输入为图像,经过深度学习模型(如卷积神经网络CNN或自注意机制Transformer)自动提取特征,然后通过全连接层(MLP)加上Softmax分类器,最终输出类别标签。
代码实现方面,项目源码位于github.com/open-mmlab/m...。以@OpenMMLab为代表的代码框架,包括配置文件、数据集、模型、训练策略和运行设置等组件,为实现图像分类任务提供了全面的支持。
具体而言,配置文件包含模型、数据集等参数设置;数据集格式支持多种,例如ImageNet和自定义CustomDataset;模型包含经典的ResNet、VGG、MobileNet系列、DenseNet等;训练策略定义优化器、学习率等参数;运行设置控制模型运行方式;工具包则提供了训练、测试、tableau 源码推理等接口。
综上,深度学习图像分类算法主要包括CNN机制、Transformer机制、数据增强方法、激活函数选择和细粒度分类技术。从AlexNet到ResNet、MobileNet、DenseNet、RepVGG等模型,再到ViT、MobileViT、DeiT等新兴模型,展示了深度学习在图像分类领域的不断进步。
在具体实现中,使用工具包中的train.py、text.py等命令,可实现单张GPU或多张GPU的训练、测试和推理操作。数据增强方法如Mixup、Cutout和CutMix,以及激活函数SiLU等,有助于提升模型性能。
图像分类的应用广泛,例如生物医学图像分类,用于识别COVID-。ssms源码通过对这些模型的复现与应用,可以更好地理解图像分类技术,推动相关领域的发展。
如何学习视频识别技术?
了解视频识别技术,推荐您关注MMAction2。该框架已经复现了多个经典论文的算法,如TSN, C3D, I3D, TSM, SlowFast, NonLocal等。阅读论文时,同步实践MMAction2中的算法,借助其提供的全面实验功能,如训练数据下载、标注文件处理、视频采帧、图像增强和模型训练等,降低研究门槛。MMAction2还附有多样化demo,如摄像头动作识别和长视频多标签识别。
深入学习,阅读经典论文代码,重点关注于mmaction.models中的模型骨架(backbone)结构。许多论文基于这些结构进行改进,以更好地提取视频的时空特征。此外,了解基于弱监督学习的Omini-sourced等方法,通过MMAction2源码进行深入探索。
掌握MMAction2的源码追踪使用,可访问colab.research.google.com...获取教程,了解如何使用MMAction2 model zoo中的模型进行推理,并在新数据集上进行微调。尝试将模型应用于您的数据集,并通过调整超参数来优化模型性能。
MMAction2支持多模态动作识别与时序动作检测任务,并在开发时空动作检测任务相关的模型。对这些领域感兴趣的开发者,可加入MMAction2和OpenMMLab的开源项目,与社区成员交流,共同提升。
经典网络结构搜索算法 SPOS,快速完成模型压缩
Single Path One Shot(SPOS)算法是一种高效、低成本的神经网络结构搜索方法,相较于传统的基于强化学习、进化算法等方法,SPOS算法显著降低了搜索成本。MMRazor是一个深度学习模型压缩算法库,支持包括网络结构搜索、剪枝、蒸馏在内的主流技术方向,为OpenMMLab其他算法库提供即插即用、可自由组合的模型压缩算法,使得模型轻量化更为简便快捷。本文将对SPOS算法原理、搜索空间、欢迎源码MMRazor以及在MMRazor中的实现进行详细的解读,内容干货满满。1. SPOS算法介绍
1.1 原理介绍 SPOS算法在ECCV年提出,针对传统NAS算法中网络权重耦合度过高的问题,SPOS提出将网络权重的训练与网络结构的搜索进行解耦。首先训练超网络的权重,然后从超网络中搜索最优的子网络架构,最后对最优子网进行从头开始的训练。整个运行过程分为三个步骤:超网权重训练:使用单路径候选网络构成的超网络,通过优化每层的选择会构建一条单路径子网络。通过优化整个超网的权重完成整个优化过程。
网络结构搜索:从训练好的超网中通过进化算法找到最优的子网络。
重训练子网:在找到最优子网络后,从头开始训练。
1.2 搜索空间介绍 SPOS论文中提到的搜索空间丰富,包括choiceblock搜索、通道搜索和混合精度量化搜索。当前官方源码中仅提供了choiceblock搜索部分。SPOS的搜索空间结构如下表所示,CB代表choiceblock,共包含个CB。CB内部操作主要受ShuffleNetv2启发,提供了四种操作。2. MMRazor简介
MMRazor是一个深度学习模型压缩算法库,支持网络结构搜索、剪枝、蒸馏等主流技术方向,为OpenMMLab其他算法库提供即插即用、可自由组合的模型压缩算法,实现模型轻量化更为简便快捷。MMRazor的整体设计思想与OpenMMLab保持一致,支持多种算法库。其组织架构分为组件层、算法层和应用层。3. MMRazor中超网的构建方式
神经网络结构搜索算法中,超网的实现至关重要。算法框架至少需要具备以下功能:搜索对象是可变化的,如SPOS中的不同候选操作;搜索算法能够指定选择某个候选操作的功能。MMRazor通过引入Mutable和Mutator对象实现上述功能:通过PlaceHolder提供占位符功能,用户定义的可变位置,在调用Mutator中的convert方法后转化为Mutable对象。通过这种方式使超网变成可搜索对象Mutable,后续与Mutator进一步完成NAS任务。4. SPOS在MMRazor中的实现
4.1 环境安装
安装教程请参考:[MMRazor文档链接]。以cuda.1、pytorch1.9为例,首先安装cuda、torch、mmcv包,其中mmcv-full表示采用预编译包的安装方式,还需注意对应cuda以及torch的版本。mmcv安装详细方式以及cuda、torch、mmcv版本对应关系可见:[mmcv文档链接]。以torch1.9为例进行环境安装。 安装MMRazor推荐使用MIM安装或直接使用pip安装:pip install MMRazor。也可以通过源码安装。4.2 Config介绍
由于训练SPOS分为三个阶段,对应三个config: 以spos_supernet_shufflenetv2_8xb_in1k.py为例,config中主要有model、algorithm、mutator三个对象,其中algorithm中包含architecture对象,architecture对象中则包含model。在初始化algorithm的过程中,algorithm会初始化architecture,并根据是否传入mutator、pruner、distiller来决定是否初始化这三个对象。4.3 超网权重训练(Pre-training)
完成以上准备工作后,进行第一个阶段训练:超网权重训练。这个过程需要不断地从超网中采样子网,迭代优化子网参数,最终得到优化后的超网。训练命令如下所示,SPOS中超网训练通过随机采样的方式优化网络,每次前向训练一个batch的过程中会随机采样一个子网络。4.4 网络结构搜索(Evolution search)
此过程初始化候选池,从预训练好的SuperNet中得到Subnet在测试集上的结果,根据得分更新候选池的Topk并执行Mutation和CrossOver操作,得到最优子网的网络结构。训练命令如下所示,这里需要用到上一步超网权重的路径$STEP1_CKPT。具体Searcher选择的是EvolutionSearcher。4.5 重训练子网(Retrain)
在上一步通过进化算法得到最优子网结构后,将其对应的子网络从头进行训练,得到最终的可用网络模型。训练命令如下所示,需要将algorithm.mutable_cfg参数传入,该参数为上一步得到的yaml文件位置。训练过程与训练普通分类网络完全一致。5. 总结
本文详细解读了经典的网络结构搜索算法SPOS及其在MMRazor中的实现流程。SPOS算法能够与各类代码库搭配使用,如与MMDetection库的配合,实现便捷的DetNAS算法。MMRazor不仅包含NAS相关算法,还有蒸馏和剪枝等功能。欢迎体验,如对您有帮助,欢迎点个star。更多内容可查看[相关链接]。从安防业务视角看国产视觉芯片 AXA
国产视觉芯片AXA在安防业务中的性能评估 作者@白牛指出,尽管国产化浪潮已席卷安防行业多年,但芯片替换过程并非一帆风顺。在"雪亮工程"等项目推动下,芯片的实际性能对集成商至关重要。本文将通过业务部门的视角,测试并评价AXA在模型设计、推理和SDK等方面的能力,提供测试源码和运行日志,为芯片选型提供参考。 AXA由爱芯元智推出,配置4核Cortex-A7 CPU和3.6Tops@int8 NPU,int4模式下可提升至.4 Tops。测试中,我们使用Maix-III AXera-Pi开发板,基于AXA,配备全功能模块,便于测试。通过megpeak工具,我们对CPU性能进行了测量,优化后的代码执行时间下限可通过计算数据进行预估。 后续,我们评估了NPU性能,AXA支持1_1模式,我们针对安防场景进行了测试,结果需乘以2与同类芯片比较。针对种onnx算子,我们进行了单算子测试,转换和运行了个模型,发现能效比存在差异。 在模型测试中,AXA支持OpenMMLab算法的个固定尺寸模型,其中个模型成功转换。尽管存在部分算子缺失,但resnet系列模型在AXA上的运行速度提升明显,显示出高性价比。 SDK测评部分,我们关注视频解码和图像处理。AXA在视频解码上稳定在fps,而图像处理算子虽不全面,但人脸识别这类应用可能需要调整实现。总结来看,AXA在某些方面仍有提升空间,期待爱芯元智的下一代产品AXN在性能优化上的表现。